Full protocol surface audit across Colibri's 5 current protocols
(~5,324 lines). Key finding: A2A is an interoperability play, not a
complexity reduction play.
Replaced:
- Mother MCP-over-SSH bridge → A2A HTTP endpoint (−160 lines, +380 lines)
- External MCP discovery → Agent Card (future, zero adopters today)
- Ad-hoc cost format → typed A2A part (negligible code impact)
Not replaced: Unix socket (local IPC), spawner (process lifecycle),
glasspane (PTY observer), store (SQLite), MCP editor bridge (human↔tool).
Net delta: ~0 lines (moves code, doesn't shrink it). Protocol count: 5→6.
Recommendation: A2A is Phase 3 — not Phase 2, not 0.12. The current
MCP-over-SSH bridge (437 lines) works for 4 nodes. A2A pays off at 10+
nodes or when third-party tools ship A2A support. The Agent Card design
in HIVE-PANE.md stays as a north star.
Cross-linked from hive-pane.md + wiki index. 182 refs, clean lint.
Merges: HIVE-PANE.md (glasspane for hive), end-to-end cost capture test,
runtime-agnostic usage accumulation, test agent --emit-usage flag,
heartbeat() pub for tests.
Both wiki entries (hive-routing + hive-pane) preserved in index.
New integration test: spawn_agent_with_usage_captures_task_cost
- Spawns colibri-test-agent with --emit-usage flag
- Agent emits zot-compatible usage event (input=150, output=80, cost=0.0042)
- Calls heartbeat() manually to capture cost (was private, now pub)
- Verifies all 8 cost fields are persisted on the task
Test agent changes:
- New --emit-usage flag emits usage JSONL event with deterministic values
- New parses_emit_usage_flag unit test
Glasspane change: usage accumulation was Zot-only — now all runtimes
accumulate (Pi, Local included). This enables cost tracking for any agent
harness that emits usage events. Updated zot_usage_accumulates test.
Sam & Hermes
ProviderSmokeResult → ProviderTestResult
PROVIDER_SMOKE_SCHEMA → PROVIDER_TEST_SCHEMA
clawdie.provider-smoke.result.v1 → clawdie.provider-test.result.v1
(manifests, golden tests, wiki, zot_rpc comments)
Rationale: smoke is jargon; test is clear and consistent with
the project's naming conventions (avoid dead/fake/smoke labels).