Skip to content

game: signed-claim export, quorum hook, steel-thread evidence kind (Slice 5 stage 5) - #47

Merged
0thernet merged 4 commits into
mainfrom
claude/witness-slice5-stage5-20260917
Sep 18, 2026
Merged

0thernet merged 4 commits into
mainfrom
claude/witness-slice5-stage5-20260917

Conversation

@0thernet

Copy link
Copy Markdown
Member

Stage 5 of the Platonik session adapter plan, stacked on #40 (stage 4).

What lands

  • Signed-claim export. VerifiedSettlement::export_claim signs a vhalla_crypto::SignedClaim in ClaimDomain::Receipt whose subject is the settlement hash and whose issuer is the verifier's own seed. It verifies under the exact ClaimContext and is refused under another key or domain; the test round-trips it through the claim codec.
  • quorum feature. quorum::attest(settlement, certificate, batch_bytes, verify, locate) decodes the decided rooms-consensus Batch, requires the CommitCertificate to decide its value id, calls the caller's Adapter::absorb-shaped verify hook, locates the settlement hash inside the batch through the caller's locator, and yields a QuorumSettlement (no Clone) only when that hash is the reproduced one. The certificate never replaces reproduction. Off by default; pulls vhalla-rooms-consensus for Batch and CommitCertificate only.
  • Steel-thread evidence kind. KIND_GAME_SETTLEMENT and GameSession in vhalla-steel-thread: frames are admitted only under the session's host key and the transport replay window, events route to Receiver::admit, settlements to Receiver::settle, and neither VerifiedSettlement nor VerifiedCheckpoint can enter RemoteRequest (compile-fail doctests). tests/game.rs plays the frozen live vector through the steel thread to a reproduced settlement and exercises every refusal layer.

Recorded deviation

Authority::Quorum at session open stays reserved. A quorum-ordered session needs the certificate to stand in for the host's seals, which needs a rooms or social record kind carrying a game commitment; none exists (vhalla-rooms bodies are Control/Create/Update). Inventing one inside the game crate would put a rooms wire change behind a game feature, so the locator is the caller's until that record kind lands. This is the one open item on the crate's promotion-gates row.

Gates

fmt, clippy --workspace --all-targets --all-features -D warnings, workspace unit and doc tests with --all-features, the CLI experimental-game test, and the kb vault check all pass locally; wasm32 for the default feature set runs in CI.

🤖 Generated with Claude Code

0thernet and others added 3 commits September 17, 2026 13:59
…lice 5 stage 5)

VerifiedSettlement::export_claim signs a Receipt-domain SignedClaim over the
settlement hash with the verifier's own seed. The quorum feature adds
quorum::attest: a rooms-consensus CommitCertificate checked through the
Adapter::absorb hook signature, required to decide the presented Batch, with a
caller-supplied locator for the settlement hash the batch carries; the
certificate never replaces reproduction. vhalla-steel-thread gains
KIND_GAME_SETTLEMENT and GameSession, host-key-pinned frames routed to the game
receiver, with compile-fail doctests keeping settlement and checkpoint evidence
out of RemoteRequest, and tests/game.rs playing the frozen live vector to a
reproduced settlement. Authority::Quorum at open stays reserved and the
deviation is recorded in the plan.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@0thernet
0thernet changed the base branch from claude/witness-slice5-stage4-20260917 to main September 18, 2026 03:20
@0thernet
0thernet merged commit 2da665a into main Sep 18, 2026
7 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.

1 participant