fix(pncc): revalidate receipt binding 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
This commit is contained in:
铸渊 / ICE-P-ZY001 2026-08-11 05:19:28 +08:00
commit 21d120d7b5
8 changed files with 199 additions and 13 deletions

View file

@ -0,0 +1,34 @@
# 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: `LOCAL_SOURCE_IMPLEMENTED_FULLY_TESTED`
## 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, publication and fresh-clone readback remain pending.
## 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.