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
This commit is contained in:
parent
4640c15bbd
commit
331d8c3979
2 changed files with 62 additions and 1 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
id: informed-decision.compact-sitting
|
id: informed-decision.compact-sitting
|
||||||
name: Compact sitting exact-record human review
|
name: Compact sitting exact-record human review
|
||||||
namespace: informed-decision:decision-memo
|
namespace: informed-decision:decision-memo
|
||||||
version: v3
|
version: v4
|
||||||
status: ready
|
status: ready
|
||||||
package: flexauth.informed_decision.compact_sitting
|
package: flexauth.informed_decision.compact_sitting
|
||||||
allow_ttl: 30s
|
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
|
- The KeyCape stale-timestamp defect (`INFD-IN-0005`) is **not** worked around
|
||||||
here. `read` stays strict; that defect is key-cape's to fix.
|
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,
|
The identity bar matches T03: authenticated informed-decision caller,
|
||||||
`net-kingdom-admins`, fresh KeyCape AAL2 MFA. No permission follows from
|
`net-kingdom-admins`, fresh KeyCape AAL2 MFA. No permission follows from
|
||||||
memo content or presentation state. TokenReview must admit
|
memo content or presentation state. TokenReview must admit
|
||||||
|
|
@ -89,6 +94,10 @@ records := {
|
||||||
"memo:infd-20260921-b01": {
|
"memo:infd-20260921-b01": {
|
||||||
"approval_id": "ba5ce2d8-8b6d-40be-af89-2e8c147029a3",
|
"approval_id": "ba5ce2d8-8b6d-40be-af89-2e8c147029a3",
|
||||||
"binding_digest": "sha256:e9eaf454e94871ec2060855fcfbd327bcaec873d2c61cae031bec9f95a34bcae"
|
"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]
|
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
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -134,5 +134,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"memo_version": 1
|
"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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue