# CLI Tail — Cycle 2 Coordinator **Date:** 2026-05-09 **Status:** Draft (launches once cycle-1 prerequisites land) **Theme:** parallelize the post-split tail of Plan B (the CLI restructure) across three independent streams. Plan B's eight phases are already defined in `docs/superpowers/specs/2026-05-04-cli-restructure-design.md`; this coordinator only partitions the remaining phases across cycle-2 streams and records the cross-stream contracts. ## What this is The cycle-1 four-agent run (`2026-05-04-arch-followup-*`) ships: - **Stream A** — Plan A (security + docs polish): `impl Drop for SessionHandle`, JS swallow removal, `recovery_qr.rs` docs, `start.sh` fourth-window. Independent of B and C. - **Stream B** — Plan B Phases 1 + 2 only (mechanical `main.rs` split + `helpers::git_run` + 16-site sweep). Stops after Phase 2 per a 2026-05-09 user-driven RESCOPE directive. - **Stream C** — Plan C (extension restructure). Did not launch in cycle 1 (DEV-C never acked); remains pending and is *not* picked up by cycle 2 (still its own multi-week effort, separate kickoff). The remaining six Plan B phases (3 through 8) are partitioned across three cycle-2 streams below. Each cycle-2 stream is independent of the other two once cycle-1 Stream B (Phase 1 + 2) has merged to `main`. ## Pre-launch checklist (cycle 2 cannot open until all green) - [ ] Cycle-1 Stream A merged to `main` - [ ] Cycle-1 Stream B PR (Phase 1 + 2 bundle) merged to `main` - [ ] Working tree clean on `main`; `git pull` reflects both merges - [ ] All cycle-1 worktrees torn down (`git worktree remove ../relicario.arch-followup-stream-a` and `*-stream-b`); cycle-1 branches deleted locally if requested - [ ] Relay server still running on `localhost:7331` (check `ss -ltn 'sport = :7331'`) - [ ] Cycle-2 kickoff prompts present in `docs/superpowers/coordination/2026-05-09-cli-tail-{pm,dev-a,dev-b,dev-c}-prompt.md` ## Stream partition | Stream | Branch | Worktree | Plan B phases | Theme | |---|---|---|---|---| | A | `feature/cli-tail-stream-a-prompt-helpers` | `/home/alee/Sources/relicario.cli-tail-stream-a` | Phase 3 | `prompt_or_flag` + `build_*_item` compression | | B | `feature/cli-tail-stream-b-session-manifest` | `/home/alee/Sources/relicario.cli-tail-stream-b` | Phases 4, 5, 6 | `Vault::after_manifest_change`, canonical `ParamsFile`, batched purge | | C | `feature/cli-tail-stream-c-core-wasm-seam` | `/home/alee/Sources/relicario.cli-tail-stream-c` | Phases 7, 8 | parser migration to `relicario-core` + base32 dedup + WASM exports | Phases reference the canonical definitions in `docs/superpowers/specs/2026-05-04-cli-restructure-design.md`. Devs do NOT redesign — they execute against that spec. ## Cross-stream dependencies (cycle 2) - **Stream A and Stream B**: both touch `crates/relicario-cli/src/commands/*.rs` files but in disjoint ways. Stream A modifies `commands/add.rs` (the seven `build_*_item` builders). Stream B modifies `commands/init.rs` (`ParamsFile`), `commands/trash.rs` (batched purge), and seven manifest-mutation sites scattered across `commands/{add,edit,trash,attach,settings,import}.rs`. Conflict surface is `commands/add.rs` (A modifies builders; B modifies the `after_manifest_change` callsite). Whoever opens their PR second rebases. - **Stream B internal sequencing**: Phase 6 (batched purge) depends on Phase 4 (`after_manifest_change` wrapper) — Phase 6's commit message logic uses the wrapper. Phase 5 (`ParamsFile`) is independent of 4 and 6 within Stream B; can ship first, last, or middle. - **Stream C**: touches `crates/relicario-core/`, `crates/relicario-wasm/`, and `extension/src/wasm.d.ts` only. Zero overlap with Streams A and B. Internal sequencing: Phase 7 (parser migration to core) before Phase 8 (WASM exports + `wasm.d.ts` mirror). - **No cross-stream interface contracts.** All three plans were finalized in cycle 1; the partition does not introduce new contracts. ## Pre-merge checklist (per cycle-2 stream) Same as cycle 1, plus a narration check: - [ ] Stream's owned phases all complete per Plan B's "Done criteria" - [ ] `cargo test --workspace` green on the stream's worktree - [ ] `cargo clippy --workspace` silent - [ ] `cargo build -p relicario-wasm --target wasm32-unknown-unknown` clean (always, but Stream C in particular) - [ ] No regression in CLI behaviour — existing `crates/relicario-cli/tests/*` tests pass without modification - [ ] Narration discipline observed — STATUS UPDATEs include in-flight beats, not just phase boundaries - [ ] PR description cross-references the corresponding Plan B phase numbers ## Out of scope for cycle 2 - Plan C (extension restructure) — multi-week effort, scheduled separately when DEV-C bandwidth available - The Plan B `helpers::git_run` itself (shipped in cycle 1 Stream B) - The cycle-1 P3 nits explicitly out-of-scope in Plan B - The eight "Open architectural decisions" from the synthesis ## Tag No release tag for cycle 2. Same as the cycle-1 architecture-review followup train — these are structural-cleanup bundles, not versioned releases. Each stream merges via `gh pr merge --merge` (preserve history; no squash per project convention).