hololake-system-architecture/engineering/operations/2026-08-11-hololake-pncc-safe-receipt-binding-terminal-revalidation.md
铸渊 / ICE-P-ZY001 85fc90bd52 fix(pncc): bind failure receipts to terminal evidence
Human-Responsibility: ICE-GL∞ / 冰朔

Persona-Author: ICE-P-ZY001 / 铸渊

Execution-Runtime: Codex desktop / DEV-20260810-014

Development-ID: DEV-20260810-014

Authorization-Scope: GH-PNCC persona runtime source and tests only; no UI, deployment, or execution limb

Source-Anchor: user instruction to continue GH-PNCC from repository facts and verifiable receipts
2026-08-11 05:46:12 +08:00

2.2 KiB

GH-PNCC safe receipt-binding terminal revalidation

  • Development ID: DEV-20260810-014
  • Persona cognitive author: ICE-P-ZY001 / 铸渊
  • Human responsibility subject: ICE-GL∞ / 冰朔
  • Starting repository head: e9ee0a8bb15447584a799d23c88653fe3ee3a53a
  • State: PUBLISHED_AND_READ_BACK

Corrected runtime fact

A successful lifecycle-request inspection is a point-in-time observation, not an enduring authorization to mutate the session record. Before an interrupted persisted receipt is bound, the kernel now re-derives the request identity and re-reads the receipt. It verifies the receipt schema, request id, semantic fingerprint, payload hash, outcome identity, persona and canonical repository again.

The binding transaction also re-verifies the event chain, final DORMANT event, matching dormant state, released primary lease, recorded Git head and clean worktree. Only after all evidence still agrees are the request id, request fingerprint and lifecycle receipt hash written into the session record.

Verification

  • PNCC focused Rust tests: 33 passed, 0 failed.
  • Full Rust suite: 1173 passed, 2 ignored; integration test: 1 passed.
  • Routing suite: 29 passed, 0 failed; cargo fmt, strict clippy, diff checks and native authority passed.
  • A receipt changed after safe inspection is rejected by its payload hash before session binding.
  • A persona Git advanced after safe inspection is rejected before session binding.
  • Both rejection paths leave request id, request fingerprint and lifecycle receipt hash unbound.
  • GHNQG passed twice for commit 21d120d7b5b929ad639f8035c15dd393b4be4d08; the persistent receipt SHA-256 is 6847bd4d48ac0bf8d5d8c5dadb7194f96905af33d2d178fc74669c55a51a85f7.
  • Publication queue PUB-20260810212655790-a9f1874c completed, and a fresh clone read back the same commit and tree with strict git fsck and a clean worktree.

Truth boundary

  • This stage hardens recovery; it does not add a new truth store or a second writer.
  • It does not repair a changed receipt or repository and does not activate EXECUTION_LIMB.
  • UI, human projection aesthetics, desktop integration, artifacts, deployment and runtime health remain out of scope.