Invariants¶
Invariants are behavior guarantees bijux-cli should preserve across refactors
and feature additions.
Visual Summary¶
flowchart LR
parser["parser invariants"] --> route["route normalization invariants"]
route --> output["output and stream invariants"]
output --> exit["exit-classification invariants"]
exit --> docs["docs and tests remain aligned"]
Core Invariants¶
- parser and alias rewrites produce deterministic normalized paths
- help/version short-circuits stay consistent with root command grammar
- structured payload rendering does not mutate semantic meaning
- unknown-route suggestions remain bounded and deterministic
- plugin namespace conflict rules remain strict and explicit
Code Anchors¶
crates/bijux-cli/src/routing/parser.rscrates/bijux-cli/src/routing/model.rscrates/bijux-cli/src/interface/cli/dispatch.rscrates/bijux-cli/src/routing/registry.rscrates/bijux-cli/tests/routing/laws/
Invariant Rules¶
- invariant changes require explicit compatibility review
- invariants should be expressed as tests and docs, not prose alone
- do not silently relax invariants to unblock short-term changes