roadmap: Stage 1 COMPLETE — real build status (111 tests, CB-101..108 done + dogfooded)
The Stage-1 build-status snapshot was badly stale (34 tests; CB-103/104/105/107 marked undone). Reality: all Stage-1 tickets are done, the CB-107 e2e demo gate passes, and the bridge is dogfooded. Correct the count to 111 (105 unit/acceptance + 6 live-herdr contract), mark every Stage-1 ticket done, and add a 'Beyond Stage 1' note for the shipped delivery-reliability hardening — flagging that git's CB-106..114 numbering reuses this plan's CB-106/107/108 slots (config/e2e/placement).
+22
-5
@@ -128,18 +128,35 @@ comes in Stage 2). This is the thinnest end-to-end vertical slice.
|
||||
|
||||
**Definition of done for the stage:** `CB-107` demo passes.
|
||||
|
||||
> **Build status (in `bridged/`, Maven · Java 25 · 34 tests green — 29 unit/acceptance + 5 contract).**
|
||||
> **Build status — Stage 1 COMPLETE** (in `bridged/`, Maven · Java 25 · **111 tests green — 105
|
||||
> unit/acceptance + 6 live-herdr contract**). The `CB-107` end-to-end demo gate passes and the
|
||||
> bridge is **dogfooded**: an Opus primary delegates real tasks to off-subscription workers that
|
||||
> reply through it (delegated code reviews have produced committed bug fixes).
|
||||
> ✅ **CB-101** herdr client — connection-per-call, contract-tested vs live 0.7.0.
|
||||
> ✅ **CB-102** worker spawn — native `agent.*` with env injection, guard-checked, live-verified.
|
||||
> ✅ **CB-103** status-gated injector — per-target FIFO, one message per turn, TOCTOU closed.
|
||||
> ✅ **CB-104** blocking `bridge_send` — `POST /sessions/{id}/message` + reply rendezvous.
|
||||
> ✅ **CB-105** MCP adapter — `bridge_send`/`bridge_reply`/`bridge_status` over the REST core, with
|
||||
> connection-based caller identity (loopback peer PID → herdr pane).
|
||||
> ✅ **CB-106** config + logging — Jackson YAML + Logback.
|
||||
> ✅ **CB-107** e2e review demo (stage gate) — runs green end-to-end; the worker is verifiably the
|
||||
> off-subscription process, the primary's env has no `ANTHROPIC_BASE_URL`.
|
||||
> ✅ **CB-108** worker placement — one tab per worker in a dedicated, shared **worker space**
|
||||
> (`worker.placement/workspace/tabLabel`); unique per-worker names; single-pane-guarded, tolerant
|
||||
> teardown. Reviewed (high-effort multi-agent) and live-verified.
|
||||
> ✅ **CB-106** config + logging — Jackson YAML + Logback.
|
||||
> 🟡 **CB-104** REST core — `GET /healthz`, `/sessions`, `/agents`, `POST/DELETE /workers` done;
|
||||
> the **blocking `POST /sessions/{id}/message` + reply capture** is the remaining piece.
|
||||
> ⬜ **CB-103** status-gated injector · **CB-105** MCP adapter · **CB-107** e2e demo gate.
|
||||
> Two herdr wire facts pinned by contract test: **string ids**, and **one request per
|
||||
> connection**. `agent.start` env is the subscription-safe injection point (no shell prefix).
|
||||
>
|
||||
> **Beyond Stage 1 — shipped delivery-reliability hardening.** The implementation continued the
|
||||
> `CB-1xx` sequence past the skeleton for work that overlaps Stage 2–4 below. ⚠️ **These commit
|
||||
> numbers (CB-106…CB-114 in git) reuse the CB-106/107/108 slots this plan assigned above to
|
||||
> config/e2e-demo/placement — identify the items below by name, not number.** Shipped:
|
||||
> completion fallback (a confirmed `working→idle` turn resolves a send), async fire-and-poll
|
||||
> (`wait:false` + `bridge_poll`, beats the caller's MCP call timeout), fleet MCP tools
|
||||
> (`bridge_spawn`/`bridge_list`/`bridge_stop`/`bridge_profiles`/`bridge_poll`), failure detection
|
||||
> for wedged (`unknown`), vanished, and never-ready workers, multi-profile workers with
|
||||
> per-profile base_url guards, worker cwd inheritance (never `$HOME`), and a readiness gate that
|
||||
> holds delivery until the worker's Claude has connected the bridge MCP.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user