the-custodian/docs/changes/netkingdom-target-2026-10-16/approval-confirmation
codex 3add9f8790
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 25s
docs: preserve reviewed NetKingdom session artifacts
2026-11-01 22:45:01 +01:00
..
canonical-integration.json docs: record verified NetKingdom source restructuring and remaining native gates 2026-10-16 09:25:50 +02:00
implementation.patch docs: preserve reviewed NetKingdom session artifacts 2026-11-01 22:45:01 +01:00
manifest.json docs: record verified NetKingdom source restructuring and remaining native gates 2026-10-16 09:25:50 +02:00
owner-dirty-baseline.patch docs: preserve reviewed NetKingdom session artifacts 2026-11-01 22:45:01 +01:00
patch-check.json docs: preserve reviewed NetKingdom session artifacts 2026-11-01 22:45:01 +01:00
progress-receipt.json docs: preserve reviewed NetKingdom session artifacts 2026-11-01 22:45:01 +01:00
README.md docs: preserve reviewed NetKingdom session artifacts 2026-11-01 22:45:01 +01:00
validation.json docs: record verified NetKingdom source restructuring and remaining native gates 2026-10-16 09:25:50 +02:00

Approval exact-binding confirmation repair

Approval owner source preparation from clean source commit 477c683991fda3c01e2af98a18f5a8719ee9dbc9, in an isolated temporary checkout. Pending canonical WP0004 closure changes, generated UUIDs and unrelated dirt remain untouched. owner-dirty-baseline.patch preserves that observed state; implementation.patch applies cleanly on top of it.

Reproduction on unchanged production client source: canonical binding dict equality accepts nested True/1, False/0, 1/1.0 and 1/True substitutions. Missing, wrong and boolean served native digests also went unchecked. Seven regression cases failed their expected refusal, while a valid nested/key-order case passed. This is client confirmation ambiguity, not proof of a production exploit or native acceptance failure.

The minimal fix reuses Approval's existing native binding_digest: recompute the served five-field act digest, compare it with the expected act digest, and require the served digest field to match. No new digest, API schema, authority, service or approval contract is introduced. Native binding, approval-free PDP and full consumed request digests retain their separate meanings.

Twelve added cases cover four Python-equal/JSON-distinct substitutions with stale and recomputed served digests, three missing/invalid digest cases, and valid nested types plus reordered keys. The final confirmation suite passes 36 tests. Final focused command including consume provenance and the unavailable-server case passes 44 tests. A broader earlier run passed 101 and failed one existing 200ms transport test because isolated child startup reached the total deadline instead of returning its expected unreachable text; both outcomes fail closed. Its focused retry passed. That transient failure is retained in validation.json.

New bounded low-risk source task: APPROVAL-WP-ADHOC-2026-10-16-T01. WP0004 closure is not reopened, and existing WP0002 native residuals remain open. This source preparation is not formal delegated-owner assent, signed approval or native acceptance. No live credential, approval service, OpenBao or protected operation was used. Coordinator review/integration/publication/sync remain pending.

After integration, Platform must pin the actual integrated confirmation client source. Prepared approval_engine/execution_confirmation.py SHA256 is afd4383d6785b12be9650d1cb3ef84ccbb1b57cd271d38d55e75875c46e85a79. Its actual mediator must retain independently authenticated provider transport, exact fresh claim/signed decision/body/operation checks and the same live one-shot journal admission. This historical confirmation fact never grants execution or retries uncertain protected work. Native validation must use the final pinned client, and prior disposable proof must state which earlier client it exercised.