From 331d8c397913faae2ef927986328af88db65debc Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 27 Sep 2026 18:44:59 +0200 Subject: [PATCH] Admit exact EUR 10 single-attempt proof memo for human review Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e387-534d-70e3-ad53-4ea05676db8c --- examples/informed-decision-sitting/policy.md | 46 ++++++++++++++++++- .../informed-decision-sitting/records.json | 17 +++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/examples/informed-decision-sitting/policy.md b/examples/informed-decision-sitting/policy.md index bb7d665..c46ff33 100644 --- a/examples/informed-decision-sitting/policy.md +++ b/examples/informed-decision-sitting/policy.md @@ -2,7 +2,7 @@ id: informed-decision.compact-sitting name: Compact sitting exact-record human review namespace: informed-decision:decision-memo -version: v3 +version: v4 status: ready package: flexauth.informed_decision.compact_sitting allow_ttl: 30s @@ -45,6 +45,11 @@ rule, not an extra member of the act set, and it changes nothing else: - The KeyCape stale-timestamp defect (`INFD-IN-0005`) is **not** worked around here. `read` stays strict; that defect is key-cape's to fix. +v4 (2026-09-27, REINAH-WP-0003-T06) adds exactly one record for the +EUR 10 single-attempt tool proof. Native pins come from informed-decision +`docs/evidence/2026-09-27-tool-budget-approval-create.json`. Existing records, +actions and identity requirements remain unchanged. + The identity bar matches T03: authenticated informed-decision caller, `net-kingdom-admins`, fresh KeyCape AAL2 MFA. No permission follows from memo content or presentation state. TokenReview must admit @@ -89,6 +94,10 @@ records := { "memo:infd-20260921-b01": { "approval_id": "ba5ce2d8-8b6d-40be-af89-2e8c147029a3", "binding_digest": "sha256:e9eaf454e94871ec2060855fcfbd327bcaec873d2c61cae031bec9f95a34bcae" + }, + "memo:infd-20260927-b01": { + "approval_id": "e9521804-8fce-4fbc-bfdf-8a1aa959fd61", + "binding_digest": "sha256:7aefcee9b79eb3285997066b323ae1772e13d58f875aacc6eb5e9407bd1c1185" } } @@ -194,4 +203,39 @@ test_t03_records_not_in_act_scope if { not compact_sitting.records[id] } } + +tool_proof_input := { + "tenant": "tenant:platform", + "subject": {"id": "test-human", "type": "human", "tenant": "tenant:platform", + "attributes": {"principal_type_source": "authentication-derived", + "tenant_source": "registration-supplied", "groups": ["net-kingdom-admins"], + "assurance": {"level": "aal2", "mfa": true, "source": "key-cape", + "methods": ["pwd", "otp"], "at": time.now_ns() / 1000000000}}}, + "resource": {"tenant": "tenant:platform", "system": "informed-decision", + "type": "decision-memo", "id": "memo:infd-20260927-b01"}, + "action": "accept", + "context": {"memo_version": 1, + "approval_id": "e9521804-8fce-4fbc-bfdf-8a1aa959fd61", + "approval_binding_digest": "sha256:7aefcee9b79eb3285997066b323ae1772e13d58f875aacc6eb5e9407bd1c1185"}, +} + +test_tool_proof_exact_record_allowed if { + compact_sitting.decision.effect == "allow" with input as tool_proof_input +} + +test_tool_proof_wrong_native_id_denied if { + compact_sitting.decision.effect == "deny" with input as tool_proof_input + with input.context.approval_id as "another-approval" +} + +test_tool_proof_wrong_digest_denied if { + compact_sitting.decision.effect == "deny" with input as tool_proof_input + with input.context.approval_binding_digest as "sha256:wrong" +} + +test_tool_proof_without_mfa_denied if { + compact_sitting.decision.effect == "deny" with input as tool_proof_input + with input.subject.attributes.assurance.mfa as false +} + ``` diff --git a/examples/informed-decision-sitting/records.json b/examples/informed-decision-sitting/records.json index f59ef05..d66d1d2 100644 --- a/examples/informed-decision-sitting/records.json +++ b/examples/informed-decision-sitting/records.json @@ -134,5 +134,22 @@ } }, "memo_version": 1 + }, + "memo:infd-20260927-b01": { + "approval_id": "e9521804-8fce-4fbc-bfdf-8a1aa959fd61", + "binding_digest": "sha256:7aefcee9b79eb3285997066b323ae1772e13d58f875aacc6eb5e9407bd1c1185", + "label": "20260927-b01", + "binding": { + "action": "accept", + "actor": "informed-decision", + "principal": "helixforge-factory", + "purpose": "Accept one EUR 10 metered tool proof; no retry or publication; 2026-09-27T16:35:00Z through 2026-09-27T17:35:00Z", + "target": { + "id": "spend-envelope:hfact-glas-tool-proof-20260927-one-attempt", + "system": "rein-aharness", + "type": "spend-envelope" + } + }, + "memo_version": 1 } }