T-G6KG-co-locate-the-cli-substrate-suite-under-packages-cli
State: planning/proposed · Impact: medium · Complexity: large
The cli-substrate suite is one control unit, but its members are spread across packages/rust/
and packages/ts/. Moving them into packages/cli-substrate/ makes the suite a folder. Its
planning root becomes packages/cli-substrate/docs/planning/ and it needs no members: list. The
folder sits under packages/ because it is a library suite. Moving code is optional. The unit
exists by declaration; the move only changes where it lives.
| Moon id | Path today |
|---|---|
cli-tool | packages/ts/cli-tool |
command-seam | packages/ts/command-seam |
easy-git-ts | packages/ts/easy-git |
easy-gh | packages/ts/easy-gh |
detect-runners | packages/ts/detect-runners |
waypost | packages/ts/waypost |
waypost-docs | packages/ts/waypost/docs-site |
repo-cleaner | packages/ts/repo-cleaner |
sdlc-tool | packages/ts/sdlc-tool |
dev-ports | packages/ts/dev-ports |
fleet-ts | packages/ts/fleet |
cli-config | packages/rust/cli-config |
easy-git | packages/rust/easy-git |
fluent-git | packages/rust/fluent-git |
fleet | packages/rust/fleet |
fleet-tauri | packages/rust/fleet-tauri |
(data, no moon id) | packages/fleet-parity |
Proposed
Section titled “Proposed”Each member moves under packages/cli-substrate/ and keeps its moon project id. Rust and TS twins
share names, so the suite folder splits by language (for example
packages/cli-substrate/rust/<name> and packages/cli-substrate/ts/<name>). The exact layout is
settled at the start of the task. The move updates every moon.yml, the globs and sources in
.moon/workspace.yml, the root Cargo.toml members, the package.json workspaces, and every
import path, tsconfig path, and path dependency that names an old location. Publishing config is
unchanged: package names, registries, and mirror targets stay as they are. The planning root sits at
the suite folder, above its packages, so neither a package snapshot nor a crate archive picks it up.
The easy-git path named in the root CLAUDE.md changes with this move.
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
moon project-graphlists the same project ids and edges as before the move; only paths differ. - AC-2: All builds and tests for the moved projects and their dependents are green.
- AC-3: Published package and crate names are unchanged, and no mirror or crate archive
contains
docs/planning/. - AC-4:
packages/cli-substrate/docs/planning/exists and is registered inplanning_roots:in the rootsdlc.yaml, with nomembers:list. - AC-5:
docs/LIBRARIES.mdand the comments in.moon/workspace.ymlname the new paths.
Out of scope
Section titled “Out of scope”- API changes to any moved package.
- Renumbering entity ids, or moving entities into the new root. That is a separate triage.
Dependencies
Section titled “Dependencies”- T-N3RW-derive-the-structural-module-graph-from-existing-manifests, so the move is checked against the derived graph.
- T-EIZX-declare-this-repo-s-own-control-units-as-planning-roots registers the root once this move lands.
Depends on
Section titled “Depends on”T-N3RW-derive-the-structural-module-graph-from-existing-manifests