Roadmap

The live build list β€” measured status per workstream, and the seams left.

Preamble β€” "live build list"

Everything between today and a full-fledged general-purpose agent runtime; status is measured, not aspirational. Legend: [x] done, [~] partial, [ ] not started, B blocks other work, ! known-false claim shipping today. Overall ~70% of the list (72 of 103 enumerated items), re-derived 2026-07-28 by executing every claim against the tree rather than reading the commit log β€” the percentage is the fraction of enumerated items verified done, this project's own definition of scope and not the industry's. At that point: pytest β†’ 1,381 passed, 10 deselected; ruff check . clean; the wheel imports all 94 submodules in a clean virtualenv. Four subsystems were once built, tested and reachable by nothing (planner/, policy/, the CLI's memory store, cost on trace events); all four are closed and one seam is left β€” server/ still ships its own in-process session runtime instead of the durable session/ one (Β§12.3).

Next five things

In order: (1) Put the HTTP API on the real session layer (Β§12.3) β€” the last seam; two session layers, one seam. (2) Let admission constrain arguments (Β§5.6) β€” ! the gap most likely to be over-read; a rule reaches a node's kind and never its args. (3) Route the tool plane through the document (Β§7.5 remainder) β€” nothing calls permission_policy(), so grapharc agent is still governed by Python objects rather than the TOML file. (4) ~~Publish to PyPI~~ (Β§11.1) β€” done, 0.1.0 is live; next is 0.1.1 to correct the __version__ the wheel carries, built only from a clean tree via the tag-driven release.yml rather than a local uv build. (5) ~~Decide the version~~ β€” decided: 0.1.0; a 1.0 would imply API stability that several days-old subsystems do not have.

0. Correctness debt β€” ship-blockers, section clear

Every item verified by running code; all shipped.

1. Graph kernel β€” [~] ~85%

No longer amputates LangGraph; async, Command returns and state access all came through, which unblocked the HTTP API and the session layer.

2. Model gateway β€” [~] ~80%

3. Tool plane β€” [~] ~55%

4. Agent node β€” [~] ~60%

5. Planner & admission β€” [~] ~85% β€” the crux, and it closed

6. Session runtime β€” [~] ~85%

7. Policy engine β€” [~] ~75% built, 0% wired

8. Memory & artifacts β€” [~] ~85%

9. Triggers & surfaces β€” [~] ~55%

10. Operations β€” [~] ~60%

11. Product & distribution β€” [~] ~35%

12. Seams β€” [~] ~80%

Each item is two working subsystems that do not know about each other; none is research, and all are worth more than another feature. Four of the five are closed.

Milestones

Five milestone rows, each with scope, a gate stated as a real task against a real model, and a measured status. V0 (Β§0 + Β§2.1 + Β§4.1 β€” an agent edits a file and runs tests, permission-gated and budgeted) passed. V1 (Β§5 + Β§1.1–1.2 β€” "Refactor this repo and run tests" plans its own fan-out; an over-budget plan is rejected with a recorded reason) mechanism done, gate not run. V2 (Β§6 + Β§8.1 β€” a session survives restart; a human approves a destructive action mid-run) mechanism done, gate not run, verified across two processes with a scripted model. V3 (Β§7 + Β§9 β€” incident response runs from a webhook, remediation gated on approval) blocked on Β§12.2 and Β§9.4. V4 (Β§10 + Β§11 β€” replay any production run; a stranger pip installs it) replay works; nobody can install it (dated against Β§11.7).