Mission
Execute a full package-management redesign in Vox with these non-negotiable constraints:
- Python/UV package/runtime lanes are fully retired.
vox installis removed as a package verb (Phase B — no CLI subcommand).- Package workflow uses a hybrid CLI model:
- top-level common dependency operations,
- advanced operations under
vox pm.
updateandupgradehave distinct, enforced semantics.
This plan is implementation-ready and ordered for execution efficiency.
Rulebook (must hold throughout implementation)
Verb ownership (authoritative)
add: declare dependency inVox.toml.remove: delete dependency fromVox.toml.update: update project dependency graph/lock state.lock: generate/refresh lock only.sync: materialize dependencies from manifest/lock policy.upgrade: upgrade Vox toolchain/binary/source, not project dependencies.pm: advanced package operations (registry, publish, verify, vendor, cache).
Forbidden behavior
installcannot mutate project dependency graph.upgradecannot modify project dependency graph.- Python/UV cannot be required for any supported PM flow.
Execution topology
flowchart TD
wp1[WP1 NamespaceAndCLIContract] --> wp2[WP2 WireTopLevelDepCommands]
wp2 --> wp3[WP3 BuildPmAdvancedTree]
wp3 --> wp4[WP4 RetireInstall]
wp4 --> wp5[WP5 SplitUpdateVsUpgrade]
wp5 --> wp6[WP6 RemovePythonUvSurfaces]
wp6 --> wp7[WP7 DockerLockAndReproGates]
wp7 --> wp8[WP8 ProvenanceAndPolicyChecks]
wp8 --> wp9[WP9 TestsDocsAndCompliance]
Preflight checklist (before WP1)
- Confirm repository builds on current branch baseline.
- Confirm no active long-running process depends on old PM command assumptions.
- Confirm command registry contract checks are runnable from current environment.
Work package index
- WP1: Namespace and CLI contract foundation.
- WP2: Wire top-level dependency commands (
add/remove/update/lock/sync). - WP3: Build
vox pmadvanced command tree. - WP4: Retire
vox install. - WP5: Implement
updatevsupgradesplit. - WP6: Hard-remove Python/UV package/runtime surfaces.
- WP7: Docker lock/reproducibility enforcement.
- WP8: Provenance and verification baseline.
- WP9: Tests, docs, compliance, and migration closure.
WP1 — Namespace and CLI contract foundation
WP1 goal
Define canonical command grammar in code, command registry, and docs so later wiring has one source of truth.
WP1 files to edit
crates/vox-cli/src/lib.rscrates/vox-cli/src/commands/mod.rscontracts/cli/command-registry.yamldocs/src/reference/cli.mdcrates/vox-cli/src/main.rs(CLI map comment table if needed)
WP1 implementation steps
- Add top-level CLI variants for
add/remove/update/lock/syncinClienum. - Add
Pmsubcommand root inClienum for advanced operations. - Reserve
Upgradevariant semantics for toolchain lane. Install/installare absent after WP4 Phase B (no migration alias in CLI or registry).- Register new paths and statuses in command registry.
WP1 behavior requirements
vox --helpmust show the new taxonomy clearly.- Top-level verbs and
pmverbs must not overlap semantically.
WP1 acceptance tests
- CLI parser tests compile and parse all new verbs.
- Command registry compliance passes.
WP1 rollback trigger
- If command parsing becomes ambiguous or collides with existing domain subcommands.
WP2 — Wire top-level dependency commands
WP2 goal
Make vox add/remove/update/lock/sync fully functional through a coherent PM lifecycle.
WP2 files to edit
crates/vox-cli/src/commands/add.rscrates/vox-cli/src/commands/remove.rscrates/vox-cli/src/commands/update.rscrates/vox-cli/src/commands(newlock.rs,sync.rs)crates/vox-cli/src/cli_dispatch/mod.rscrates/vox-cli/src/lib.rs(argument structs)crates/vox-pm/src/*as required for API completion
WP2 implementation steps
- Wire existing
add/remove/updatehandlers into dispatch. - Implement
lockcommand:- resolve graph,
- write deterministic
vox.lock, - honor
--lockedbehavior.
- Implement
synccommand:- read lock/manifest policy,
- fetch with verification,
- materialize local dependency store.
- Normalize output and error semantics across all five verbs.
WP2 behavior requirements
add/removemutate onlyVox.toml.updatemutatesvox.lockand resolved state.lockdoes not silently materialize runtime artifacts unless explicitly configured.synccan run from lockfile in frozen mode.
WP2 acceptance tests
- Command-level integration tests for each verb.
- Fixture test:
Vox.toml+ expectedvox.lockdiff. - Frozen mode tests with no network access.
WP2 rollback trigger
- If lock and sync semantics become conflated and non-deterministic.
WP3 — Build vox pm advanced tree
WP3 goal
Move advanced and operator workflows under vox pm while keeping common dependency verbs top-level.
WP3 files to edit
crates/vox-cli/src/lib.rs(Pmsubcommand enum)crates/vox-cli/src/commands/(pmmodule tree)- Existing advanced modules (for example search/publish/vendor handlers)
contracts/cli/command-registry.yamldocs/src/reference/cli.md
WP3 implementation steps
- Create
commands/pmmodule with subcommands for:search,info,publish,yank,vendor,verify,mirror(local index),cache.
- Rehome or wrap existing command files into the
pmtree. - Update dispatch and help text.
- Ensure no top-level advanced verbs remain unless intentionally aliased.
WP3 behavior requirements
vox pm ...is the only advanced PM surface.- Top-level PM verbs remain minimal and common.
WP3 acceptance tests
- Parsing and dispatch tests for all
vox pmsubcommands. - Docs parity checks for command rows.
WP3 rollback trigger
- If advanced actions leak back to top-level and reintroduce namespace overlap.
WP4 — Retire vox install
WP4 goal
Remove install as a package-management action and provide explicit migration guidance.
WP4 files to edit
crates/vox-cli/src/lib.rs(Phase B: noInstall/InstallRetiredvariant)crates/vox-cli/src/main.rs,crates/vox-cli/src/cli_dispatch/mod.rs,crates/vox-cli/src/commands/mod.rscontracts/cli/command-registry.yaml(noinstallrow)docs/src/reference/cli.md,pm-migration-2026.md, packaging research/plan cross-links- Any stale message paths (for example vendor/audit hints)
WP4 implementation steps
- Phase A (done earlier): hidden error-only alias with migration text.
- Phase B (closed in-tree): remove
Install*variant, removecommands/install.rs, drop registry row, refresh docs —vox installis an unrecognized subcommand (vox_cli_root_parsing::install_subcommand_removed_phase_b). - Replace stale references to “run vox install first”.
WP4 behavior requirements
- Operators use
pm-migration-2026.mdfor substitutions; clap errors list valid subcommands. - No
installpackage verb remains in CLI or registry.
WP4 acceptance tests
- Integration test:
vox installfails at parse time (removed subcommand). - Search-based guard:
check_operator_docs_no_legacy_vox_install_pm_nudgeinvox ci command-compliance(forbidsrun vox install/vox install firstoutside migration/arch pages).
WP4 rollback trigger
- If removal blocks critical workflows before equivalent replacement commands are shipped.
WP5 — Split update vs upgrade
WP5 goal
Enforce strict semantic separation between project dependency updates and Vox toolchain upgrades.
WP5 files to edit
crates/vox-cli/src/lib.rscrates/vox-cli/src/commands/update.rs- new
crates/vox-cli/src/commands/upgrade.rs contracts/cli/command-registry.yamldocs/src/reference/cli.md- command-compliance validators in
crates/vox-cli/src/commands/ci/command_compliance/validators.rs
WP5 implementation steps
- Keep/finish
updateas project dependency graph action only. - Implement
upgradeas toolchain lane:- source channel policy,
- preflight checks,
- explicit non-overlap with dependency graph.
- Add compliance guard that fails if docs/registry/code imply synonym use.
WP5 behavior requirements
vox updatenever upgrades Vox binary/tooling.vox upgradenever changesVox.toml/vox.lock.
WP5 acceptance tests
- Unit tests for command behavior boundaries.
- Compliance tests for wording and registry parity.
WP5 rollback trigger
- If self-upgrade semantics cannot be safely implemented in current release flow.
WP6 — Hard-remove Python/UV surfaces
WP6 goal
Fully retire Python/UV packaging/runtime support from active supported Vox flows.
WP6 files to edit
crates/vox-container/src/env.rscrates/vox-container/src/python_dockerfile.rscrates/vox-cli/src/commands/mens/populi/*and related docs/messages- Python-oriented docs under
docs/src/how-toanddocs/src/api(notablyhow-to-pytorch,vox-py) contracts/cli/command-registry.yamlfor status consistency
WP6 implementation steps
- Remove active UV/Python setup logic from supported lanes.
- Delete or hard-retire command paths tied to Python packaging.
- Rewrite docs to Rust-only supported state.
- Keep explicit historical notes only where needed.
WP6 behavior requirements
- No active command path requires Python or uv.
- No docs advertise Python package integration as supported.
WP6 acceptance tests
- Search guard in CI: forbidden python/uv package-management guidance strings in supported docs and command help.
- Build/test matrix without Python prerequisites.
WP6 rollback trigger
- If removal breaks release-critical workflow with no Rust replacement.
WP7 — Docker lock/reproducibility enforcement
WP7 goal
Make container packaging deterministic and lock-bound.
WP7 files to edit
Dockerfile- relevant
docker/*assets crates/vox-container/src/generate.rsand related emit logic- CI workflow gates (
.github/workflows/ci.yml, related CI command handlers)
WP7 implementation steps
- Require lock-aware dependency materialization in container build paths.
- Add frozen/locked lane checks for container builds.
- Ensure generated Docker workflows follow same policy.
WP7 behavior requirements
- Drift between manifest and lock fails in locked mode.
- Offline/frozen paths are operational when cache exists.
WP7 acceptance tests
- Docker contract/integration tests with lock drift fixtures.
- CI lane for lock-enforced container build.
WP7 rollback trigger
- If lock enforcement causes false positives from unrelated build layers.
WP8 — Provenance and verification baseline
WP8 goal
Add minimum artifact provenance and verification policy to PM publish/release lanes.
WP8 files to edit
- PM publish/registry handlers in
crates/vox-pmandcrates/vox-cli - CI commands in
crates/vox-cli/src/commands/ci/* - docs under
docs/src/cianddocs/src/reference
WP8 implementation steps
- Define minimal provenance payload shape for package/release artifacts.
- Emit provenance on publish/release.
- Add verify command and CI gate checks.
WP8 behavior requirements
- Release/publish operations include verifiable provenance artifact.
- CI gate can fail on missing/invalid provenance.
WP8 acceptance tests
- Unit tests for provenance serialization and verification.
- CI integration test for policy gate pass/fail.
WP8 rollback trigger
- If provenance generation breaks release cadence without fallback policy.
WP9 — Tests, docs, compliance, migration closure
WP9 goal
Finalize migration with enforceable parity between code, registry, and docs.
WP9 files to edit
contracts/cli/command-registry.yamldocs/src/reference/cli.mdcrates/vox-cli/tests/*command surface testscrates/vox-cli/src/commands/ci/command_compliance/*
WP9 implementation steps
- Update all command rows, statuses, and migration notes.
- Add regression tests for verb ownership and retired aliases.
- Run command-compliance and docs parity gates.
- Publish migration note summarizing old->new command mappings. Published:
reference/pm-migration-2026.md.
WP9 behavior requirements
- No command drift between parser, registry, and docs.
- Removed surfaces (e.g. package-management
vox install) are absent from the CLI/registry; operators usepm-migration-2026.md. - Retired surfaces still enumerated (e.g.
vox mens train-uv) return deterministic errors with replacement verbs and stayretiredincommand-registry.yaml.
WP9 acceptance tests
vox ci command-compliancepasses.- CLI baseline tests pass.
- Doc inventory/parity checks pass.
WP9 rollback trigger
- If command-compliance cannot be satisfied without unresolved semantic conflicts.
Implementation sequencing details (for low-capability agents)
Mandatory execution order
- WP1 before all other WPs.
- WP2 and WP3 before WP4 removal step.
- WP5 before final docs freeze.
- WP6 before final CI and docs parity gates.
- WP7 and WP8 before release readiness signoff.
- WP9 last.
Per-WP done definition
Each WP is complete only when all are true:
- code changes merged in target files,
- tests for that WP pass,
- command registry rows updated,
- docs updated,
- rollback trigger not active.
Implementation readiness checklist
- Namespace policy implemented and test-enforced.
- Top-level dependency verbs shipped.
-
Advanced
vox pmtree shipped. -
vox installretired with migration path then removed. -
update/upgradesemantics split and validated. - Python/UV lanes removed from active support.
- Docker lock/reproducibility gates active.
- Provenance baseline active in release/publish lanes.
- Command registry, docs, and parser are in parity.