UI thin client, talks only to the control plane | None. The CLI and PRs stand in | M3: PR comments plus a chat CLI | M5: UI v1, where buttons map to PR actions |
Control governance, registries, API | pipeline.lock.yaml as the registry; litellm gateway | M3: command API (/answer, /revise…), CODEOWNERS gates | Policy decision point, identity per agent and human |
Orchestration reconciler, runner, gates | step-runner stands in: clean workspace, verify, repair | M2: calibrated eval gate. M3: reconciler v0 with loop limits | Containers, then microVMs; concurrency and kill switch |
Execution · graph engine actions as nodes, transitions and routes as edges | Step order and route: values on paper (workflow.md) | M3: v0 for the requirements phase. M4: design phase and back-edges | Execution-loop graphs (plan → code → QA) |
Execution · loop engine + harness the pi loop inside one action | pi sessions with guards, lint repair, pinned AGENTS.md. Done | M3: pi RPC for the intent chat (ask_user) | Shell-command guard, per-run credentials |
| Execution · skills, tools, MCP | validate_artifact, trace_link, term_lookup, kb_search/kb_get. Done | M3: cml_check. M4: design skills | MCP servers with tool allowlists |
| Cross-cutting · evidence | Artifact headers, trace.yaml, run folders | M3: commit trailers, one PR per phase, tags | Signed commits per agent |
| Cross-cutting · observability | run_id and cost on every call | M3: OpenTelemetry traces (D21) | M5: metrics dashboard, alerts |
Knowledge + memory placement open in #21 | File-based org KB (D18) | No change | Knowledge graph behind the same kb_search interface |