Authoritative for: the phase sequence this project was built in, and what remains. Not authoritative for: what rungs does — that is the README — or any design decision, which is an ADR.
Roadmap
Seven phases, each gating the next. Phases 0–5 are complete; the sequence is kept because the order was the method: nothing was designed before the thing it depended on was measured.
| Phase | ||
|---|---|---|
| 0 | Initialize | ✅ Repo, docs skeleton, working rules |
| 1 | Extract, per repo | ✅ Four autopsies on one fixed template → research/repos/ |
| 2 | Synthesize | ✅ Convergences, divergences, eight failure modes, the maturity ladder, ~80 patterns |
| 3 | Product definition | ✅ Product brief + ADRs 0001–0005 |
| 4 | Module catalogue | ✅ Fifteen modules specified, then authored |
| 5 | CLI | ✅ Nine commands, 39 gates, ~2,800 lines |
| 6 | Dogfood | 🟡 Detection verified on all four; rungs runs on itself; a real install into a source repo is outstanding |
| 7 | Distribution | 🟡 Published as @rungs/cli (2026-08-14, v0.1.0; v0.1.1 current) · docs site builds and deploys (site/) · module registry outstanding |
What each phase produced that the next one needed
- 1 → 2. Four repos on one template, so they could be compared column by column rather than read as four essays.
- 2 → 3. The failure modes, which became module dependencies —
auditrequiresfindingsrequiresbacklogbecause one repo produced 268 audit documents with nowhere to close them. - 3 → 4. The module format, without which the catalogue could not be written. ADR-0005 was argued out of numeric order because it set the gate-shipping contract and Phase 4 could not proceed without it.
- 4 → 5. Fifteen authored modules, which produced sixteen corrections to the module format — every one found by writing a module, none by reading.
- 5 → 6. A CLI that runs, which produced fifteen more corrections, including four to the research itself.
What is left
Phase 6. rungs add has been dry-run against rift-forge (adopts 16
validators) and axiom-mesh (adopts 7 PowerShell validators, no root
package.json added). Neither has been written to. The remaining test is a real
install, diffed against what that repo built by hand.
Phase 7. Publishing and the docs site have landed: @rungs/cli is on npm
(v0.1.0 on 2026-08-14, v0.1.1 current) and site/ builds
from a pristine checkout and deploys. What remains is the module registry, so
third-party modules are possible — the format is a plain directory precisely so
that does not need a format change.
A second corpus — proposed, not a phase
WI-009, opened 2026-08-15, proposes extracting six public agent frameworks — SWE-agent, LangGraph, the OpenAI Agents SDK, Pydantic AI, the Microsoft Agent Framework and OpenHands.
It is deliberately not Phase 8. The seven phases are a sequence in which each gated the next; this gates nothing and nothing gates it. It is a second axis on work Phase 1 already did, and it is proposed rather than accepted — so it appears here as a pointer, not a row in the table above.
Why it exists: the four extracted repos share an author, so every convergence in
pattern-catalog.md is currently one operator
agreeing with themselves. Six independently-built repos are the cheapest test of
which patterns are portable and which are one person’s habits.
Two things distinguish it from Phase 1. The corpus is read for architecture,
which research/README.md names as the first corpus’s
explicit non-goal — so it gets its own directory and template rather than
redefining docs/research/ in place. And the sources move and are licensed:
every extraction pins a commit SHA, because a date alone does not make a count
reproducible when other people are pushing.
It ends at the catalogue. Any change to modules/ that
the evidence warrants is a separate item.
Known open items
docauth-scope-headersand the module docs: closed 2026-08-14.concurrency-no-integration-checkoutfires on any repo with its integration branch checked out. Correct by design; it stays red until a repo genuinely adopts worktrees.- ADR-0004’s
unknownstate is unreachable with the current signature model. Either a gap worth closing or a state worth deleting; not yet decided.