Skip to content

Latest commit

 

History

History
285 lines (237 loc) · 27.5 KB

File metadata and controls

285 lines (237 loc) · 27.5 KB

Roadmap

Type: vision Status: Current (2026-06-07) Audience: principal, contributors, reviewers Last verified vs code: v1.0.808

TL;DR. The MVP target is the research demo from blueprint.md §9 Phase 4: a user writes a directive on phone → steward decomposes → fleet executes runs across hosts → briefing agent summarizes overnight → user reviews on phone. Everything else flows from that. Phases P0–P3 are shipped; P4 backend is feature-complete; current focus is reliability and UX polish from device walkthroughs.


Mission

Termipod is a mobile-first director's surface for orchestrating backend agents (claude-code, codex, …) across multiple remote hosts. The user is principal/director — they don't operate the system, they direct agents that operate it.

What makes us different from single-engine clients (Happy, claudecode-remote, …):

  • Multi-host — A2A relay routes agent ↔ agent across NAT'd boxes
  • Multi-session — sessions are first-class durable conversations, surviving agent respawn
  • Multi-engine — claude-code, codex, etc. are interchangeable per template
  • Steward-orchestrated — the steward agent is the entry point; user delegates project-shaped goals, not task-shaped commands

MVP commitment: superset, not replacement (no short-board effect)

The above bullets are the additional axes we ship. They are net-add, not substitutes for the table-stakes axes that single-engine remote-control apps already do well. The MVP must be at competitive parity in every axis those apps support — single-session chat, resume, list past sessions, fork to explore, sensible session vocabulary. A user switching from claudecode-remote / Codex remote / Happy should find their muscle memory works here, not be told "we don't do that yet."

A feature being weaker than what those apps ship is a bug, not a future enhancement. This is why decisions like ADR-009 (fork operator, scope-grouped session list, archive vocabulary) land in MVP rather than post-MVP — they aren't polish; they're the short-board fix.

The selling point is both directions: pick us up to keep the single-engine workflow you already know, and grow into the fleet / governance / multi-host capabilities when you need them.

North Star (next 90 days)

Run the locked Candidate-A demo end-to-end on hardware. Steward decomposes a nanoGPT-Shakespeare optimizer × size sweep, dispatches ml-worker spawns to a GPU host via A2A, briefing agent writes a takeaway doc that surfaces in the mobile Me tab — all driven from the phone with no laptop in the path.

Demo readiness is measured by discussions/run-the-demo (the dress-rehearsal harness covers the path without GPU; the hardware run is the actual milestone).


Phases (big picture)

The blueprint defines five phases. Status as of v1.0.808:

Phase Title Status
P0 Hub primitives (schema) ✅ Shipped
P1 Structured wire (protocols) ✅ Shipped
P2 App UI ✅ Shipped
P3 Integrations (trackio, A2A) ✅ Shipped
P4 Research demo 🟡 Backend feature-complete; UX hardening + hardware run remaining

Phase summaries

P0 — Hub primitives. All schema landed: projects evolution, plans + plan_steps, schedules, runs, documents, reviews, hosts.ssh_hint_json + capabilities_json. See spine/blueprint.md §9.0.

P1 — Structured wire. Multi-mode host-runner driver (M1 ACP, M2 stdio, M4 pane); plan-step executor; capability probe; mode resolver; hub MCP server (consolidated v1.0.298 — single service via mcp_authority.go); host-runner MCP gateway; AG-UI broker; structured input endpoint.

P2 — App UI. AgentFeed, AgentCompose, plan viewer, workflows tab, triage (Me), project / task / plan / run / review screens, templates browser, team settings (schedules, budgets, audit log).

P3 — Integrations. Trackio + wandb + tensorboard pollers in host-runner; mobile sparkline; A2A server with agent-cards; hub directory + reverse-tunnel relay; cross-host smoke test.

P4 — Research demo. Templates shipped (steward.research, ml-worker, briefing); steward decomposition recipe; SOTA orchestrator-worker slice (agents.fanout / agents.gather / reports.post); dress-rehearsal harness (seed-demo + mock-trainer, no-GPU). The remaining work is verifying the path on real hardware and polishing the principal's UX.


Now / Next / Later (current focus)

The phase view is for big picture. This section is the active working list — what's actually moving this week or next.

Now (in flight)

Item Why Where
Multi-team isolation — on-device verification Implementation shipped (ADR-037 W1–W6, v1.0.760-765: path-team authorization gate, operator/principal split, team-provisioning endpoint, per-team template overrides, team-scoped workdir; mobile team management v1.0.801). Storage isolation extended physically in v1.0.808 (per-team event/digest shards, ADR-045). ADR-037 stays Proposed until an on-device multi-tester pass confirms no cross-team read/write/control or workdir collision. (decisions/037-multi-team-isolation-and-operator-principal-split.md) Pending: device walkthrough with two tester teams
Reliability hardening from device walkthroughs Hardware-demo gate is "two consecutive walkthroughs without principal-blocking bugs" per-version commits as device tests surface issues
On-device verification of v1.0.624-630 Seven follow-on releases closing spawn / wake / routing / UX gaps surfaced by 2026-05-18 smoke test. Each wedge unit-tested at its boundary; end-to-end on-device pass pending (especially the search MCP SQL error needs exact error string to diagnose). Pending: device walkthrough with smoke task
ADR-027 §11 on-device verification LocalLogTailDriver shipped v1.0.592 and is the M4 default for claude-code, but plan §11 verification scenarios (21-24 in the lifecycle test doc — idle/streaming pill, hook delivery, AskUserQuestion picker, /compact compaction card) still need a hardware pass with claude 2.1.x. (decisions/027-local-log-tail-driver.md, plans/local-log-tail-driver.md §11) Pending: tester device with claude 2.1.x installed
Kimi steward routing follow-up ADR-026 wedges W1-W7c shipped engine integration; the project-steward-routing fixes (Bug A in projects.steward_agent_id + Bug B in openStewardSession) are documented but not yet wired — workdir fix landed v1.0.595, UI routing held pending design review Deferred pending design review
ADR-032 / ADR-034 orchestration contract — on-device verification The message envelope + the loop-closure runtime shipped 2026-05-19 as the 10-wedge message-routing rollout (commits eb12a092a498df; hub build + full Go test suite green, mobile CI-verified). Both ADRs stay Proposed until an on-device pass — principal directs a mission, steward dispatches a worker, the loop closes, a deliberately stalled worker escalates within one sweep — flips them to Accepted. (decisions/032-message-routing-envelope.md, decisions/034-orchestration-loop-closure.md, plans/message-routing-rollout.md §4) Pending: device walkthrough
Project-lifecycle: inline-spec + early-bind (ADR-044 amend + ADR-046) Code-migration lifecycle testing (issues #21–#41) drove a model change: a project carries its full spec in its own config_yaml, create is a governed project.create whose approval materializes it (no template.install), presets are reference examples, and all phases early-bind with completion-gating (ratify/mark-met only in the active phase). Shipping as a ~5-PR program (WS0 ADRs done; WS1 materialize+gating, WS2 spec schema, WS3 presets, WS4 governed create+Start, WS5 prompt+governance). Four root-cause fixes (#38/#41/#21/#27/#29) already merged (PR #43). (decisions/044-…, decisions/046-projects-from-inline-spec.md) In flight: WS-by-WS PRs, CI-gated
Themed vocabulary overlay + i18n sweep (ADR-048) A tester found "steward" unfit for their domain — short-board bug. Role nouns (steward/agent/principal/…) become swappable by vocabulary preset (tech/business=company/political=policy/research=academy) × language via a VocabPack orthogonal to gen-l10n; this also closes #138 (~90 files of hardcoded English unlocalized in zh mode). Promotes the deferred vocabulary wedge to MVP. WS-A (preset picker + steward/principal/agent axes) ships first to unblock the tester, then the string sweep area by area. (decisions/048-themed-vocabulary-overlay.md, plans/themed-vocabulary-and-i18n-sweep.md) In flight: planned, coding starts next session; WS-by-WS PRs, CI-gated

Next (committed, not started)

Item Why Trigger
ADR-031 agent tool ergonomics — Phases 1+2 (MVP) Steward took 6 turns to read back a doc by ULID on 2026-05-18; root cause was no documents.get (fixed v1.0.630) + no discovery / depth / hint design. Locks in two-tier descriptions + tools.get meta-tool + structured hints + per-persona intent index. (decisions/031-agent-tool-ergonomics.md, plans/agent-tool-ergonomics-rollout.md) After ADR-028/029 phase work or whenever the agent-side UX wedge is prioritized
ADR-028 host control CLI — Phase 1 shutdown-all Hands-off binary upgrades need a way to drain stewards on host-runners + restart hosts from the principal's seat. (decisions/028-host-control-via-tunnel-and-cli.md, plans/hub-host-control-cli.md) Whenever the next host-runner upgrade is queued
Hardware run of Candidate-A demo The actual MVP milestone (decisions/001-locked-candidate-a.md) Two consecutive walkthrough-clean device tests
Cross-vendor integration smoke (slice 7 × 2) request_help end-to-end against a live codex binary AND a live gemini binary on a real test host — validates the vendor-neutral attention surface for both ADR-012 and ADR-013. Tests today use fakes for both protocols (JSON-RPC for codex, exec-per-turn JSONL for gemini); slice 7 closes the loop on real upstream binaries Real codex + gemini binaries available in a test host
Briefing agent overnight schedule Demo path needs the steward to schedule the briefing autonomously After hardware run smoke-tests the worker path
Anti-drift Layer 3 OpenAPI for hub REST + ADR backlinks from spine docs Triggers when surface drift bites — currently tractable by hand

Later (intent, no commitment)

These have design memos in discussions/ and may or may not be prioritized after the demo lands.

  • Simple/Advanced mode for the mobile UI — Activity / Hosts tabs are operator-shaped; less-technical principals would benefit from hiding or folding them (discussions/simple-vs-advanced-mode.md). Revisit post-demo.
  • CI-generated README screenshots — automate via integration_test + binding.takeScreenshot() against a seed-demo hub; eliminates the screenshot-drift problem (discussions/screenshot-automation.md). Defer until post-demo IA stabilizes.
  • Pending dependency upgrades — ~14 Dependabot PRs open as of v1.0.319, 5 majors deferred for individual review (riverpod 3.3, google_fonts 8, flutter_foreground_task 9, connectivity_plus 7, modernc.org/sqlite 1.50). Triage when post-demo bandwidth opens.
  • Domain packs / marketplace — content-pack extensibility (discussions/post-mvp-domain-packs.md)
  • Multi-steward wedge 3 — deferred per memory
  • Per-member stewards (F-1) — deferred until 2nd user
  • Code-as-artifact — deferred (discussions/code-as-artifact.md)
  • Agent fleet / squads — deferred (discussions/agent-fleet.md)
  • Monolith refactor — terminal_screen.dart, hub_client.dart (discussions/monolith-refactor.md)
  • Sandbox-style worker isolation — bwrap/Seatbelt + microVM
  • Cache eviction by bytes — switch HubSnapshotCache from row-cap to byte-cap
  • Selectable Postgres storage backend (ADR-045 D3) — the scale-out path beyond a single-box SQLite hub. Decided, not built; gated on a real multi-hub / high-team-count need. Sharding (D2, shipped v1.0.808) is the single-box win that makes this a choice rather than a forced migration. (decisions/045-hub-storage-scaling.md, plans/hub-storage-scaling.md)
  • iOS TestFlight distribution — Android APK suffices for demo
  • Cloud sync of mobile data — single-device works; cross-device is a transfer flow today

Done this quarter (rolling)

Most recent first. Major work units only — bug-fix releases roll up.

Version What
v1.0.808 ADR-045 P2 — hub storage scaling. Event + digest stores shard per team (<dataRoot>/teams/<team>/{events.db,digest.db}) behind an LRU-bounded connection registry; hub.db stays the global control plane. Per-team parallel fold worker (fold lag bounded by core count, not team count); Tier-1 SQLite pragma tuning (temp_store=MEMORY, 256 MiB mmap, writer-only cache); hub-server db split-teams offline migration. Measured ~+33 % aggregate ingest when sharded to core count (~1100 ev/s flat-out on 2 vCPU); ~1000 concurrent agents on a 2 GB VPS with no SQLITE_BUSY cliff. Follow-on probe-driven fixes (4407e12): insights cache-key + bounded per-team writer cache. ADR-045 Accepted (D1+D2 shipped; D3 selectable Postgres backend decided, not built)
v1.0.805-806 Channel-free agent comms + Me-page action boundary. Channels deferred to a future experiment (tools stay in tree, no prompt instructs their use); steward status routes 3 ways — chat reply / post_notice FYI (new answerless tool → Me-page Messages) / request_* decision → Requests. Me-page classifies Requests-vs-Messages by action (pending_payload); dismissable Messages via guarded /attention/{id}/resolve
v1.0.804 ADR-044 adaptive project lifecycle (P1–P3). The project lifecycle is a roadmap, not a fixed template contract: agents materialize deliverables, criteria editable via propose, AC-driven system-approved phase advance (human gating = gate criterion). P1 added criteria.list/phase.status MCP reads; P2 the propose verbs; P3 AC auto-advance. ADR-044 Accepted
v1.0.803 ADR-043 engine launch contract on the family (P1–P3). Mode-selecting argv moves off the persona onto the engine family — declarative per-mode launch block, launcher composes. Generalizes ADR-010 (frame-profiles-as-data) to the input side. ADR-043 Accepted
v1.0.800-802 Tech-debt cleanup + ADR-042 dense session ordinal + team management from mobile. WS1–WS3 internal cleanup; session_ordinal as canonical session-scoped identity (fixes resume/navigator wrong-row); operator team CRUD from the mobile app
v1.0.784-799 ADR-038/039/040/041 — the Insight workbench arc. Per-run event digest + agent_turns turn index (ADR-038) + OTLP trace export (P3); Insight transcript lens as a server keyset query (ADR-039); transcript surfaces decoupled by mode into LiveFeed + InsightTranscript (ADR-040); the card-filter / Navigator-outline / Sessions-rail workbench layout (ADR-041, R1–R4). Plus run-detail UI (trackio/wandb-style Overview/System/Config) and agent-surface consolidation onto one full-screen SessionChatScreen (retired the project-agent bottom sheet). Preceded by the v1.0.768-783 transcript-navigation arc (lens bar, minimap, turn stepper) that motivated the rebuild
v1.0.752-767 ADR-037 multi-team isolation W1–W6 + stop/terminate naming split. Path-team authorization gate (W1); operator/principal split (W2); team provisioning endpoint (W3); per-team template overrides (W5); team-scoped agent workdir (W6); cross-cutting isolation sweep. Naming: stop (resumable, paused) split from terminate (permanent, archived); agents.resume is the inverse of terminate. ADR-037 D1–D7
v1.0.704-728 ADR-036 Phase B polish + multi-engine telemetry parity + security hardening. statusLine cost/rate-limit/200K chips polished on-device; codex M2 + antigravity statusLine parity with claude-code M4; configurable principal-directive envelope templates with mobile hot-reload. Security sweep: agent-kind tokens refused as REST bearers, principal-override identity bound to the authenticated token, filesystem path-traversal closed on template install + project docs, cross-host blob read path hardened
v1.0.696-703 ADR-036 claude-code statusLine as authoritative M4 telemetry channel. Phase A (hub-side, v1.0.696-698): host-runner status-fire shim + UDS gateway status_line tool + adapter caches latest frame for in-process overrides + session_id rotation handler (fixes /clear blindness). Phase A.5 (v1.0.699): cold-open mobile bubble + busy-state regression fixed via testable kind-list sets. Phase B (v1.0.700-703): hub-side pricing infrastructure (operator-override YAML + //go:embed default, mtime hot-reload) + GET /sessions/{id}/cost endpoint + 5 mobile chips landing on the agent telemetry strip (process cost · session cost · 5h rate-limit · 7d rate-limit · 200K alarm) + AppBar session_name fallback. ~5,840 LOC + ~117 tests across 9 wedges. ADR-036 Accepted
v1.0.674-695 ADR-030 governed actions + propose verb — all phases complete. Generalises apply-on-approve from two bespoke branches to one MCP verb across 5 propose kinds (deliverable.set_state, phase.advance, task.set_status, agent.spawn, template.install) with Validate/DryRun/Apply/Rollback. 22 wedges across 24 commits: Phase 1 (hub, 11 wedges, ~2,775 LOC + ~85 tests) → Phase 2 (steward prompts + 3 scenarios) → Phase 3 (mobile cards + propose inbox + override sheet + policy viewer + stalled digest). ADR-030/032/033/034 all landed (envelope on fan-back, unified tool registry, questionAttentionKinds extension). Loop-closure audit catches every governed-action mutation. ADR-030 Accepted
v1.0.624-630 Seven-release follow-on series after the v1.0.620-623 spawn-robustness bundle: buildSpawnVars sibling-boundary fix (un-merged read); unbound {{project_id}} + {{parent.handle}} prompt refs + Layer-4 startup audit; steward wake never reached engine (unhandled input.task_completed kind across all drivers) → unified on input.text; worker/steward prompt blocked-protocol + validate-before-delegate; preserve blocked verdict on manual stop; mobile archive agent gets Feed tab; documents.get MCP tool + A2A sender attribution in relay body. Plus design landings: discussions + plans + ADRs 031/032 (Proposed) for the agent-tool-ergonomics and message-routing-envelope work the band-aids in this series motivated
v1.0.620-623 ADR-030 governed actions + spawn-robustness bundle. coder.v1 spawn incident class closed structurally: typed validators for 7 HIGH-severity free-form fields; agent-template naming spec + filename↔internal-id audit; steward prompt rewrite; MCP description hygiene rule; sync-wait three-state return for agents.spawn. ADR-030 Proposed (governed actions + propose verb)
v1.0.612-619 Eight follow-on fixes after the spawn-robustness bundle: project_steward_request resolution fans back to the general steward; A2A notification flipped to sender-side (a2a.sent); task close-out protocol footer in CLAUDE.md; per-engine context file (CLAUDE/AGENTS/GEMINI.md — codex/kimi/gemini stewards had been silently ignoring their prompt body); task-detail screen collapsed seven sections to three; permission_mode empty→skip default on MCP spawn + Library reset menu; host-runner terminate logging; abandoned-task auto-derive to cancelled + project-scoped agent history
v1.0.611-alpha ADR-029 Phase 1.5 + Phase 2 (tasks-first-class complete) + ADR-028 Phase 1. Worker delivery (task body → CLAUDE.md ## Task section + close-out footer) + auto-posted first input + tasks.complete verb + result_summary; task.notify / run.notify / a2a.sent system-event notifications into the receiver's session; mobile _TaskTile triad (assignee + assigner + relative time) + task detail screen (linked spawn feed + session + filtered audit timeline) + denormalized list joins + pull-to-refresh. ADR-028 P1: hub-server shutdown-all. ADR-029 fully shipped → Accepted
v1.0.610-alpha ADR-029 Phase 1 — tasks first-class. agents.spawn accepts task_id or inline task; flip-on-spawn + most-recent-spawn auto-derive on agent terminal status; tasks.delete MCP wrapper; cancelled terminal status (sticky against auto-derive); audit at six task-mutation sites; NoteKind.todoNoteKind.reminder rename with on-device migration; glossary entries for task/note/todo
v1.0.609-alpha Cross-scope session guard — three-layer fix to the StewardStrip-tap-creates-phantom-project-session bug (mobile route guard + hub 400 + scope-preferred lookup). Plus offline host chip color on the Hosts screen
v1.0.600-608 Library polish + project-steward UX + A2A audit + Sessions categories — Library tab clone-from-existing + project-templates + collapsible sections + search; Me-page template_proposal preview + inline project-steward action; agents.spawn MCP auto-injects parent_agent_id; pull-to-refresh on Agents tab; a2a.message_sent row in audit_events (sender attribution + 200-char body preview); Sessions screen grouped by general/project/domain stewards + detached; lifecycle test scenarios 17-24
v1.0.592-599 ADR-027 LocalLogTailDriver + template authoring surface — M4 swap to JSONL tail + --permission-prompt-tool approval channel + host-runner UDS gateway hook surface (9 MCP tools). Project-scoped stewards auto-derive workdir; mobile spawn-steward engine row reads YAML mode+model; template authoring scaffold tools + applicable_to scope filter
v1.0.580-583 Settings IA refactor — six-category Settings home (Display / Input / Files & Media / Data / System / About) + search bar + TeamSwitcher polish. Defines the device-vs-team scope model carried by later screens
v1.0.575-588 ADR-026 Kimi Code engine — fourth ACP engine. Engine family register + MCP config writer + cmd splice + ACP auth-required surfacing with engine-specific remediation + steward template + capability matrix doc. W6-W7c fixes for resume cursor splice, mode/model RPC synthesis, currentId capture
v1.0.564-574 ADR-025 project steward accountability — workers project-scoped + sessioned; one steward per engaged project (lazy, consent-gated); general steward delegates via request_project_steward; spawn-FAB reroutes through project steward; agents.spawn project-binding gate (W9); steward-mediated agent reconfig CTA
v1.0.531-547 Voice input Path C + deep-link router — Alibaba DashScope WebSocket ASR (PCM16 streaming via record ^6.0.0); Mode A puck long-press + Mode B panel mic; settings + session orchestrator. Deep-link router expansion routes hero / tiles / sub-routes (incl. project/<pid>/documents/<docId>) through the chassis
v1.0.489-530 ADR-024 project detail chassis + PDF viewer feature recovery — Wave 2 + canvas-app artifact viewer + hero consolidation + multi-run views. PDF viewer rebuilt on pdfrx 2.2.24 pin (after the 2.3.x native-assets regression): tappable links + page badge + TOC drawer + find-in-PDF + go-to-page. Deliverables show real component name + artifact kind
v1.0.473-488 ADR-023 agent-driven mobile UI — persistent overlay panel + URI intent channel; agent ↔ system wire format is URI strings (typed router stays internal). D1-D11 locked (cf. project memory)
v1.0.444-462 ADR-022 observability — /v1/hub/stats + scope-parameterized /v1/insights (project/team/agent/engine/host) + A2A relay throughput + 6 mobile entry points (Hosts tab Hub group, Hub Detail, Activity AppBar, Me Stats card, Agent Detail tab, Host Detail button) + Tier-2 drilldowns (engine arbitrage, multi-host distribution, tool-call efficiency, lifecycle flow). W5e ($/X) / W5f (snippet) / W6 (rollup trigger) deferred post-MVP
v1.0.430-435 ADR-021 Phase 4 — cross-engine image content block inputs (hub images:[] contract + claude/codex/ACP wire shapes + gemini-exec strip-and-warn + mobile attach UI w/ thumbnail strip)
v1.0.420-424 ADR-021 Phase 2 — mode/model picker (cross-engine wire-path fan-out: M1 ACP rpc / claude+codex respawn / gemini-exec per-turn argv) + mobile chip strip
v1.0.410-413 ADR-021 Phase 1 — session/load resume cursor + authenticate dispatch + mobile replay-event dedupe
v1.0.317 GitHub-ecosystem hygiene + changelog seed (Dependabot, CodeQL, PR template, stale-doc warning)
v1.0.316 Status-block linter wired to CI (anti-drift Layer 1)
v1.0.315 Spine docs reconciled with shipped state (sessions Tentative→Resolved, blueprint phase status, IA wedges marked)
v1.0.314 coding-conventions rewritten first-principles + memory body audit
v1.0.311 8 retroactive ADRs in decisions/
v1.0.310 docs/ reorganized into 7-primitive layout; sessions promoted out of DRAFT
v1.0.309 Foundation: README + roadmap + doc-spec
v1.0.308 Cancel button surfaces whenever agent is busy
v1.0.305 Cache coverage extended to all hot-path detail fetches
v1.0.304 Cache-first cold start (UI lights up before network)
v1.0.303 Cold-start refreshAll (Projects/Me/Hosts/Agents populate on launch)
v1.0.300 Steward composer matched to action-bar composer (parity)
v1.0.299 Steward chat polish — syntax-highlighted code, color-coded diffs, per-tool icons
v1.0.298 MCP consolidation — single service in spawn .mcp.json
v1.0.296 SOTA orchestrator-worker slice (fanout/gather/reports)
v1.0.293 Cache coverage for sessions list + channel events
v1.0.290 Multi-steward wedges 1+2 (handle suffix + domain templates)
v1.0.286 Egress proxy in host-runner (masks hub URL from spawned agents)
v1.0.285 Tail-first paginated transcripts + hub backup/restore
v1.0.281 Replace-steward keeps the session (engine swap continues conversation)
v1.0.280 Soft-delete sessions + agent-identity binding doc
v1.0.182 All 7 IA-redesign wedges shipped

Earlier history: git log --oneline from the v1.0.180 boundary or spine/blueprint.md §9 for the original phase commitments.


Open questions

Carried forward across the quarter; surfaced here so they're not lost in conversation history.

  • When do we actually run the hardware demo? Currently gated on reliability — defining the gate explicitly: two consecutive device walkthroughs with zero principal-blocking bugs.
  • Does steward-sessions graduate to first-party "done"? Yes — promoted out of DRAFT in this commit (now spine/sessions.md).
  • A2A vs MCP for orchestration — resolved per decisions/007-mcp-vs-a2a-protocol-roles.md. MCP for agent ↔ hub, A2A for agent ↔ agent. Today's agents.fanout posts via MCP; A2A fallback is a Later item.
  • Domain-pack commercialization — see discussions/post-mvp-domain-packs.md. Phase 1 (first-party packs as embedded data) is the validation step before any marketplace engineering.

How this doc evolves

  • Phases change rarely — when a new top-level workstream emerges beyond P0–P4 of the blueprint.
  • Now / Next / Later changes whenever the active work changes — expected churn is weekly during active development.
  • Done this quarter appends as releases ship. Truncate annually (current entries roll into a quarterly archive section if this list exceeds ~40 rows).
  • Open questions are loud reminders, not action items. Move into PLAN or DECISION when one becomes actionable.

References

  • Architecture: spine/blueprint.md §9
  • Decisions made: decisions/
  • Active work units: plans/
  • Demo path detail: discussions/run-the-demo.md (post-reorg) or current run-the-demo.md