Scope and Boundaries¶
bijux owns one root command contract across the Rust binary and Python
distribution. It normalizes intent, resolves command ownership, executes
built-ins or explicitly delegated extensions, and returns coherent payload,
stream, and exit semantics.
Runtime Boundary¶
flowchart LR
caller["Shell, automation,<br/>REPL, or Rust caller"]
root["bijux root contract"]
builtin["Built-in runtime"]
app["Mounted product"]
plugin["Trusted plugin process"]
external["Known external tool"]
result["Envelope, streams,<br/>and exit status"]
caller --> root
root --> builtin --> result
root --> app --> result
root --> plugin --> result
root --> external --> result
The root owns parsing and route selection for every edge. Execution authority then changes. Built-ins remain native. Mounted products own their product semantics. Plugins and external tools execute code outside the built-in trust boundary.
Supported Responsibilities¶
| Responsibility | Supported boundary |
|---|---|
| command grammar | deterministic parsing, normalization, aliases, help, suggestions, and usage failures |
| route ownership | built-in, official product, known-tool, app, and plugin namespaces resolved by one registry law |
| runtime policy | format, color, quiet, debug, config, and path inputs resolved before execution |
| built-in features | configuration, history, memory, plugins, apps, diagnostics, documentation, version, and REPL workflows |
| output | human, JSON, and YAML rendering with explicit stdout, stderr, and exit classification |
| persistent state | owned paths, atomic writes or rollback where promised, diagnostics, and explicit recovery |
| Rust integration | public api, contracts, and sdk roots |
| Python delivery | the same bijux root behavior through the packaged native bridge |
Delegated Ownership¶
| Surface | Root CLI owns | Delegated owner retains |
|---|---|---|
| mounted application | namespace, descriptor validation, invocation context, root-compatible result | domain commands and product behavior |
| plugin | manifest, namespace, compatibility, lifecycle, launcher policy | entrypoint code, dependencies, filesystem/network effects, domain output |
| known tool | discovery and explicit delegation route | executable installation, internal commands, and tool-specific contract |
bijux-dag |
optional command integration boundary | graph, run, replay, cache, backend, and evidence semantics |
Route integration does not merge compatibility promises. A plugin manifest can be structurally valid while its code remains unsafe. A known tool can be discoverable while absent from the current installation.
Explicit Limits¶
- Plugins are not sandboxed and execute with the invoking user's authority.
- A stable in-process ABI is not promised for arbitrary host integration; downstream Rust callers use the supported public facades.
- Complete Windows host support is not part of the current release contract.
- Installing the PyPI distribution does not install every delegated product executable.
- Repository gates, evidence generation, and release governance belong to
bijux-dev, not the public runtime.
Contract Change Test¶
A change is caller-visible when it alters any of these:
- accepted argv or normalized command identity;
- route precedence, namespace refusal, help, or suggestions;
- effective configuration or state location;
- public Rust imports or serialized contracts;
- human or machine payload meaning;
- stdout/stderr placement or exit classification;
- plugin/app lifecycle or delegated process policy.
Such changes require compatibility review, focused contract proof, reader guidance, and release notes where consumer action is needed. Internal movement behind a stable facade may remain implementation detail.
Ownership Anchors¶
crates/bijux-cli/src/routing/model.rscrates/bijux-cli/src/routing/registry.rscrates/bijux-cli/src/features/plugins/crates/bijux-cli/src/interface/cli/dispatch/policy.rscrates/bijux-cli/src/kernel/contracts/foundation/cli_dependency_direction.v1.jsoncontracts/foundation/workspace_product_map.v1.json