Repository navigation
Check a trusted receipt key as a curve point, and hold a run's retained answer to its signed record (#52, #53) - #58
Conversation
…ed answer to its signed record (#52, #53) A mapping profile's trusted receipt public key is parsed with the same curve, canonical-form and small-order checks Runner applies to its own record signatures, so a malformed pin can no longer authenticate a forged acquisition. verify-run always compares the export's retained disposition with the disposition in the signed audit record, before either input path and independently of the optional replay, and fails with audit-disposition-mismatch when they differ; the help and MAPPING-V2 name every export member the signature does not cover. Found by a cross-vendor audit of the chain of runs (runner #57); drafted with an OpenAI model (Codex) and verified by the coordinator's runs of the full test suite with sockets. Closes #52, closes #53 Signed-off-by: kikashy <35789537+kikashy@users.noreply.github.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Cross-vendor round started on head 214f279 (independent Claude reviewer — Anthropic — fresh context; the drafting model was OpenAI's, so this is the different-vendor round the interim review regime requires). One round; findings that change what the verifier establishes are fixed before merge, the rest filed. |
Round 1 result and dispositionsReviewed SHA:
Checked and holding: the key check runs on every path a trusted key enters, before any signature check; the comparison reads One round: the fixes land on this PR and it merges on green with no second round. |
…isposition sibling; test the CLI's disposition-differs report; truthful retainedDisposition; SECURITY.md and MAPPING-V2 corrected with an upgrade note; the parsed key passed into receipt verification Signed-off-by: kikashy <35789537+kikashy@users.noreply.github.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Round 1 fixes applied on head 74ccb19 (one commit; drafted with the OpenAI model that drafted the change, verified by the coordinator under the machine lock: vet, |
Two HIGH findings of the cross-vendor audit of the chain of runs at v0.6.0 (tracking #57).
What changes
ParsePublicKeyaccepts it (curve, canonical form, small-order rejection), as Runner's own record signatures already are. The identity point, a non-canonical and an off-curve pin are refused; valid keys pass.verify-runalways compares the export's retainedrun.result.dispositionwith the disposition inside the signed audit record, before either input-verification path and independently of the optional--runtimereplay; a missing or null answer is refused and a difference fails withaudit-disposition-mismatch(the CLI saysdiffers-from-audit, ormatches-auditwithout replay on success).--helpanddocs/MAPPING-V2.mdnow enumerate every export member the signature does not cover.Tests
The signed, witnessed version-5 vector passes unchanged; the same export with only the answer changed, missing or null fails with and without
--runtime; the three malformed pins are refused; the help and guide sentences are asserted. Scratch mutations removing the key validation, the disposition binding, a help line or a documented unsigned member each failed a named test.Checks
Drafted with an OpenAI model (Codex CLI) in a scratch clone (gofmt, vet, the socket-free tests:
internal/runner136 passed,cmd/jpack-runner24 passed). Committed by the coordinator after running, under the machine lock:go vet ./...,go test ./...with sockets, and-raceoninternal/runner. CI runs the rest with the pinned runtime.Review
Material: what a verification establishes. A cross-vendor round follows, run by the coordinator; the drafting model was OpenAI's, so the reviewer is Anthropic's.
🤖 Generated with Claude Code