From 4304dc4128cd5815fc514e2c7eb5a3a56c7d3bf6 Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Thu, 16 Jul 2026 06:49:15 +0200 Subject: [PATCH] =?UTF-8?q?roadmap:=20Stage=201=20COMPLETE=20=E2=80=94=20r?= =?UTF-8?q?eal=20build=20status=20(111=20tests,=20CB-101..108=20done=20+?= =?UTF-8?q?=20dogfooded)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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). --- 8-Roadmap.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/8-Roadmap.md b/8-Roadmap.md index e12b94c..5900872 100644 --- a/8-Roadmap.md +++ b/8-Roadmap.md @@ -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. ---