From b2ae931459ac6af33874bd8eda782c1957ff96f1 Mon Sep 17 00:00:00 2001 From: escott- Date: Thu, 6 Aug 2026 01:24:52 +0000 Subject: [PATCH] docs: record verified Goose retrieval proof --- README.md | 14 ++++++++------ compatibility.json | 17 +++++++++++++---- reference.test.mjs | 12 +++++++++--- runtime-proof.md | 41 +++++++++++++++++++++++++++++------------ 4 files changed, 59 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 991fa6e..67d3ac2 100644 --- a/README.md +++ b/README.md @@ -28,12 +28,14 @@ This package was checked on 2026-08-06 against ContextStream service after normal ContextStream setup. Contract support and end-to-end proof are intentionally separate. Claude has -completed sourced ContextStream retrieval and a signed Buzz reply. Codex is -running and waiting for the deliberately approval-gated continuation. Goose -passes launcher and ACP startup checks, but its current ContextStream-backed -prompt remains an open interoperability finding rather than a claimed pass. -See [runtime-proof.md](runtime-proof.md) for versions, evidence, and the exact -pass criterion. +completed sourced ContextStream retrieval and a signed Buzz reply. Goose 1.45.0 +through `codex-acp` has now done the same with a distinct identity; its event +hash, BIP-340 signature, reply linkage, and cited ContextStream source IDs were +verified independently. Codex is running and waiting for the deliberately +approval-gated second-agent continuation. See +[runtime-proof.md](runtime-proof.md) for versions, evidence, the exact pass +criterion, and a separate intermittent-startup diagnostic that does not change +the verified Goose pass. Buzz records collaboration inside a Buzz community. ContextStream carries durable project understanding across agents, sessions, tools, and workspaces. diff --git a/compatibility.json b/compatibility.json index 0e39682..77c5a04 100644 --- a/compatibility.json +++ b/compatibility.json @@ -64,10 +64,19 @@ "launcher_preflight": "passed", "buzz_acp_startup": "passed", "canonical_contextstream_process_started": "passed", - "sourced_contextstream_retrieval": "not_yet_proven", - "signed_buzz_reply": "not_yet_proven", - "observed_stop": "An explicit Buzz mention reached Goose and Goose started the canonical ContextStream MCP process in the selected project directory, but the session remained in extension initialization and emitted no signed reply during the bounded proof run.", - "claim_policy": "Do not describe Goose end-to-end retrieval as verified until a signed reply satisfies proof.pass_standard." + "canonical_contextstream_mcp": "passed", + "sourced_contextstream_retrieval": "passed", + "signed_buzz_reply": "passed", + "passing_provider": "codex-acp via @agentclientprotocol/codex-acp 1.1.9", + "prompt_event_id": "7cd2bb8559f97c3039ad1b4b7b18f3d29b27559942d97b86d208ee287d8d0849", + "reply_event_id": "be9a51d597dc1514c3e93604f3f879fb1f5c6a3aadcdc3a16d9b2dc471f96401", + "retrieved_source_ids": [ + "31a6b6f7-099e-404f-b2e8-899d314c188d", + "2fbc4197-de18-43e6-8d23-1e5f25e53fc9", + "d1ff8fcc-cf4e-4478-96e9-e80edc1f1450" + ], + "event_verification": "Computed event hash matches the event ID, BIP-340 signature verifies, author matches the distinct Goose identity, and the reply tag references prompt_event_id.", + "diagnostic_note": "Separate later full-catalog and reduced-catalog runs did not finish within their observation windows. A complete 110,594-byte tools/list response was valid, and reducing it to 47,345 bytes did not make that later run complete; current evidence does not support a simple tool-list-size incompatibility." } } } diff --git a/reference.test.mjs b/reference.test.mjs index cbb0718..f1cabb3 100644 --- a/reference.test.mjs +++ b/reference.test.mjs @@ -61,11 +61,17 @@ test("runtime proof never conflates process startup with sourced retrieval", asy assert.equal(matrix.claude.sourced_contextstream_retrieval, "passed"); assert.equal(matrix.claude.signed_buzz_reply, "passed"); assert.equal(matrix.codex.cross_agent_continuation, "pending_explicit_human_approval"); - assert.equal(matrix.goose.sourced_contextstream_retrieval, "not_yet_proven"); - assert.equal(matrix.goose.signed_buzz_reply, "not_yet_proven"); + assert.equal(matrix.goose.sourced_contextstream_retrieval, "passed"); + assert.equal(matrix.goose.signed_buzz_reply, "passed"); + assert.match(matrix.goose.reply_event_id, /^[0-9a-f]{64}$/); + assert.match(matrix.goose.event_verification, /BIP-340 signature verifies/); assert.match(compatibility.proof.pass_standard, /signed Buzz reply/); assert.match(ledger, /Process startup.*not retrieval proof/is); - assert.match(ledger, /open compatibility finding/i); + assert.match(ledger, /The stored Nostr event was independently checked/i); + assert.match( + ledger, + /does not\s+support a simple tool-list-size incompatibility/i, + ); }); test("production and smoke clients remain separable for connector metrics", async () => { diff --git a/runtime-proof.md b/runtime-proof.md index 3d9619e..6f8dc01 100644 --- a/runtime-proof.md +++ b/runtime-proof.md @@ -19,7 +19,7 @@ diagnostics, but they are not retrieval proof. | --- | --- | --- | --- | --- | | Claude Code 2.1.221 through `claude-agent-acp` 0.65.0 | Pass | Pass | Pass | End-to-end proven; the disposable fixture passed 5/5 tests | | Codex CLI 0.146.1 through `codex-acp` 1.1.9 | Pass | Pass | Approval-gated | The second-agent continuation is deliberately waiting for explicit human approval | -| Goose 1.45.0 | Pass | MCP process starts | Not yet proven | An explicit mention enters the session, but the bounded run remains in extension initialization without a signed reply | +| Goose 1.45.0 through `codex-acp` 1.1.9 | Pass | Pass | Pass | End-to-end proven; the signed reply retrieved and cited the demo PRD, ADR, and constraint | The Buzz harness contract supports all three runtimes. The matrix above records what has actually completed with ContextStream rather than treating contract @@ -38,7 +38,7 @@ Buzz reply event: The later 30-minute admin-expiry proposal was neither preserved nor implemented. It remains behind the documented human-approval gate. -## Goose finding +## Goose evidence A clean Goose 1.45.0 binary passed `run-agent.sh --check`, initialized through the pinned Buzz `buzz-acp`, authenticated to the relay with a distinct identity, @@ -48,16 +48,33 @@ provider paths were exercised: - `claude-acp` through `@agentclientprotocol/claude-agent-acp` 0.65.0; - `codex-acp` through `@agentclientprotocol/codex-acp` 1.1.9. -For both, an explicit Buzz mention entered a new Goose session and Goose -started the executable named `contextstream` in the selected project working -directory. The bounded run then remained in extension initialization and did -not publish a signed answer. Changing the outer Buzz permission mode from -`dontAsk` to `acceptEdits` did not change that stop, so permission wiring alone -does not explain it. - -This is an open compatibility finding, not a successful retrieval. Keep Goose -in the launcher because Buzz supports it, but do not market Goose as -end-to-end verified until the signed-reply criterion below passes. +The passing run used `codex-acp`, Buzz `acceptEdits`, and Goose `approve`. An +explicit mention event +`7cd2bb8559f97c3039ad1b4b7b18f3d29b27559942d97b86d208ee287d8d0849` +asked Goose to retrieve the approved invitation expiry, signed-token decision, +and no-new-store constraint without editing or preserving anything. Goose used +the canonical `contextstream` MCP server and published reply event +`be9a51d597dc1514c3e93604f3f879fb1f5c6a3aadcdc3a16d9b2dc471f96401`. +The answer cited: + +- `DEMO — Invitation expiry requirements` + (`31a6b6f7-099e-404f-b2e8-899d314c188d`); +- `DEMO ADR — Signed single-use invitation tokens` + (`2fbc4197-de18-43e6-8d23-1e5f25e53fc9`); +- `DEMO constraint — no new invitation session store` + (`d1ff8fcc-cf4e-4478-96e9-e80edc1f1450`). + +The stored Nostr event was independently checked after retrieval: its computed +event hash matches its ID, its BIP-340 signature is valid, its author is the +distinct Goose identity, and its reply tag points to the explicit mention. + +Separate later diagnostic runs did not finish within their observation window. +A wire trace showed a valid MCP initialize exchange followed by a complete +30-tool, 110,594-byte `tools/list` response. Reducing that response to eight +tools and 47,345 bytes did not make the later run complete. The successful +full-catalog run above and the reduced-catalog stall mean the evidence does not +support a simple tool-list-size incompatibility. Keep the intermittent startup +behavior as a diagnostic follow-up; it does not erase the verified pass. ## Reproduction and pass criterion