Skip to content

Hold the chain's Desk-facing combinations with four integration tests (#56) - #60

Merged
kikashy merged 1 commit into
mainfrom
fix/56
Oct 9, 2026
Merged

kikashy merged 1 commit into
mainfrom
fix/56

Conversation

@kikashy

@kikashy kikashy commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Fixes #56 (finding 5, MEDIUM, of the cross-vendor audit of the chain of runs, #57). Tests only: no file under internal/ other than _test.go files changes.

What changes

Four integration tests in internal/runner hold the combinations the audit found tested only apart:

  • TestACalculatedSignedAndWitnessedRunRefusesAnswerAndTableTimeTampering: a run with calculated exports, required signing and held checkpoints; the answer tampered and the table time tampered are each refused with their exact findings. Disabling the retained-disposition binding in a scratch copy makes it fail.
  • TestAFailedCalculationIsSignedAndWitnessedAndAMalformedReceiptPinIsRefused: a failed calculation (cannot-compute) is kept inside a signed and witnessed run; an identity-point receipt pin is refused. Replacing the curve validation with hex decoding makes it fail.
  • TestALiveKeyReplacementCannotPassDesksPublicKeyList: the listed key's run is accepted; the replacement key's run reports signature-invalid. Forcing signature verification to true makes it fail.
  • TestDeskCheckpointSinceHandsOverChangingChainSnapshotsExactly: both audit checkpoint --since batches are compared byte for byte against the published runtime, and the later snapshot is verified against both independently retained checkpoint files. Replacing the previous links with the empty digest makes the runtime refuse the snapshot and the test fail.

Checks

Drafted with an OpenAI model (Codex CLI) in a scratch clone (gofmt -l, go vet ./..., the four tests with the published runtime; two existing runtime-signed tests could not run there because its sandbox owns / as an unprivileged user, which the runtime refuses). Committed by the coordinator after gofmt -l, go vet ./... and go test ./... with the published runtime under the machine's memory cap. CI runs the suites.

Review

Tests only; no review round, by the rule for tests.

Closes #56

🤖 Generated with Claude Code

A calculated, signed and witnessed run refused on answer and table-time tampering; a failed calculation kept signed and witnessed with a malformed receipt pin refused; a live key replacement refused against Desk's public-key list; Desk's audit checkpoint --since hand-over across changing chain snapshots verified against independently retained checkpoints. Tests only. Drafted with an OpenAI model (Codex CLI); checked and committed by the coordinator.

Signed-off-by: kikashy <35789537+kikashy@users.noreply.github.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@kikashy
kikashy merged commit 561d8ca into main Oct 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Runner tests cover the primitives better than their Desk-facing combinations

1 participant