CLI scope policy
Shipped binary
The vox executable built from crates/vox-cli is the minimal compiler CLI. Its command surface is defined in code (Cli in src/lib.rs, invoked from src/main.rs) and documented in ref-cli.md. The legacy monolithic dispatch source file was removed to avoid drift; extend the shipped surface only via lib.rs / commands/mod.rs and feature flags.
Canonical decision: The product ships this minimal surface by default. A larger command tree under crates/vox-cli/src/commands/** exists for future integration; most of it stays out of commands/mod.rs until wired into lib.rs / main.rs. commands::runtime (dev / info / tree / run+test shims / shell) and commands::info are compiled as library-visible modules for reuse; they do not add subcommands to the minimal Cli until explicitly dispatched.
Feature-gated commands (minimal Cli)
Some variants exist only when Cargo features are enabled (see crates/vox-cli/Cargo.toml):
ars—vox openclaw/oc(OpenClaw gateway client;vox-skills) andvox skill(ARS registry / promote / context). Build withcargo build -p vox-cli --features ars.extras-ludus—vox ludus(gamification;vox-ludus). Build withcargo build -p vox-cli --features extras-ludus.live—vox live(orchestrator demo bus).populi—vox populi status/vox populi serve(vox-populiregistry + HTTP control plane). Build withcargo build -p vox-cli --features populi.workflow-runtime— interpretedvox mens workflow run+commands::workflowwhen enabled; impliesmens-dei. Build withcargo build -p vox-cli --features workflow-runtime.
Documentation
- Shipped commands —
ref-cli.mdmust matchlib.rs(Cli) /commands/mod.rs. - Registry + parity —
contracts/cli/command-registry.yamlis the machine SSOT; runvox ci command-compliance(seecli-design-rules.md,command-compliance.md). - Broader narrative —
how-to-cli-ecosystem.mdmay describe workspace-wide or planned tooling; it must state clearly when a command is not in the minimal binary.
Tests and scripts
Integration tests and scripts must not assume subcommands that are absent from the minimal Cli enum. Prefer cargo run -p vox-cli -- … against documented commands only.
Script migration exceptions
- Allowed in GitHub workflows without Rust rewrite { paths under
scripts/that are data artifacts or explicitly allowlisted indocs/agents/workflow-script-allowlist.txt. CI enforces this viavox ci workflow-scripts. - Thin shell / PowerShell shims (
scripts/check_*.sh,scripts/populi/*_gate.*, legacyscripts/mens/release_training_gate.*, …) are delegates tovox ci …orcargo run -p vox-cli -- ci …— keep them one-liners to avoid drift. - Host-only tooling (GPU installers, external marketplace actions, third-party ML stacks) may stay outside
vox ci; record them indocs/agents/script-registry.jsonwithstatus: "external"when added.
Governance
- New
scripts/...references in.github/workflows/*.ymlmust either match the allowlist or the PR must updateworkflow-script-allowlist.txtwith an owner note. - Prefer extending
vox cifor new guards instead of adding long bash matrices.