test: enforce the presentation exclusion contract for approval digests

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
tegwick 2026-09-10 18:39:30 +02:00
parent 62233c7c52
commit adb5cb0a9a
4 changed files with 109 additions and 1 deletions

View file

@ -8,7 +8,7 @@ status: active
owner: codex
topic_slug: netkingdom
created: "2026-09-01"
updated: "2026-09-06"
updated: "2026-09-10"
reviewed_at: "2026-09-01"
reviewed_against_commit: "ebce5abb276c01ab29ce2526f3b8abb332dc9e90"
reviewed_note: >-
@ -237,6 +237,15 @@ here because this engine stores that object verbatim as the only downstream
record that MFA happened. T01 stays `progress`; the human client cannot be
registered until the tenant source is settled by its owner.
2026-09-10: GH-DEC-2026-016 supplies the previously missing NC-03 doctrine.
Approvals explicitly declared as discharging human-in-the-loop or dual-control
requirements must refuse non-human binds at issue. T01 owns the declaration,
engine/API enforcement, predecessor inheritance and negative legacy migration,
verified human identity provenance, tests and subsequent deployed proof. This
return changes neither existing rows nor production admission. The new rule is
not satisfied merely by the already-recorded principal_type field. The separate
R3 digest-exclusion condition is completed in T06 below.
## Harden durable storage and migrations
```task
@ -600,3 +609,27 @@ not the evidence of publication; the successful push and remote index lookup are
No StatefulSet rollout yet: live KeyCape registrations and audit sender/token
admission remain outstanding. APPROVAL-WP-0002-T03 stays wait for those gates.
## Make presentation exclusion a tested binding contract
```task
id: APPROVAL-WP-0002-T06
status: done
priority: high
```
GH-DEC-2026-015 §4 conditions informed-decision's nested binding.digest on an
explicit normative presentation exclusion and a regression that exposes widening.
The native digest MUST cover exactly the five act fields and MUST NOT acquire
presentation fields. Callers keep presentation outside effect scope; arbitrary
nested target scope is preserved, not silently filtered.
Completed 2026-09-10: docs/approval-claim.md states the rule. The durable issue/claim
regression varies view_hash, brief, packet, highlights, locale, UI release and a
presentation wrapper while proving the stored act/digest remain unchanged. It
also varies all five act fields independently and requires the digest to change.
A deliberate whole-binding canonicalization mutation fails the regression; the
production algorithm is unchanged. Evidence: docs/evidence/2026-09-10-presentation-exclusion.json.
This supplies the engine condition for INFD-IN-0004; actual informed-decision
adoption remains its existing work. T01 retains GH-DEC-2026-016 and native identity,
T03/T05 deployment/real consumption remain open. No live approval was issued.