Partitions Plan B's remaining phases (3-8) across three cycle-2 streams once cycle-1 Stream A and Stream B's bundled Phase 1+2 PR have merged. Stream A picks up Phase 3 (prompt_or_flag + builder compression), Stream B owns Phases 4/5/6 (after_manifest_change, ParamsFile, batched purge), Stream C owns Phases 7/8 (parser migration to relicario-core + WASM exports). Plan C (extension restructure) is not in cycle 2. Each kickoff bakes in cycle-1 lessons: prefer single-line relay body content, avoid the f-string footgun in Python inbox-monitor scripts, narration discipline (IN-PROGRESS updates at meaningful in-flight moments, not just phase boundaries). The PM prompt also captures cycle-1 outcomes (commits/PRs landed, the 17 pre-existing extension test failures pattern, DEV-B's option-(b) git_run choice) so the new PM picks up cold without relay history. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5.1 KiB
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.rsdocs,start.shfourth-window. Independent of B and C. - Stream B — Plan B Phases 1 + 2 only (mechanical
main.rssplit +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 pullreflects both merges - All cycle-1 worktrees torn down (
git worktree remove ../relicario.arch-followup-stream-aand*-stream-b); cycle-1 branches deleted locally if requested - Relay server still running on
localhost:7331(checkss -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<T> + 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/*.rsfiles but in disjoint ways. Stream A modifiescommands/add.rs(the sevenbuild_*_itembuilders). Stream B modifiescommands/init.rs(ParamsFile),commands/trash.rs(batched purge), and seven manifest-mutation sites scattered acrosscommands/{add,edit,trash,attach,settings,import}.rs. Conflict surface iscommands/add.rs(A modifies builders; B modifies theafter_manifest_changecallsite). Whoever opens their PR second rebases. - Stream B internal sequencing: Phase 6 (batched purge) depends on Phase 4 (
after_manifest_changewrapper) — 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/, andextension/src/wasm.d.tsonly. Zero overlap with Streams A and B. Internal sequencing: Phase 7 (parser migration to core) before Phase 8 (WASM exports +wasm.d.tsmirror). - 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 --workspacegreen on the stream's worktreecargo clippy --workspacesilentcargo build -p relicario-wasm --target wasm32-unknown-unknownclean (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_runitself (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).