informed-decision/docs/evidence/2026-10-11-purpose-image-release/execution/receipt_safety.py
tegwick bc6494cd1b Bind concrete protected release executor and final owner-reviewed decision packet
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
2026-10-11 04:28:38 +02:00

15 lines
1 KiB
Python

"""Only structural count/hash receipts can leave the private execution phase."""
def counts(value):
if (set(value) != {'schema_version', 'lifecycle', 'outbox', 'submissions', 'integrity',
'read_only_pre_open', 'store_constructed'}
or value['schema_version'] != 5 or value['integrity'] != 'ok'
or value['read_only_pre_open'] is not True or value['store_constructed'] is not False
or set(value['lifecycle']) != {'records', 'events', 'pending'}
or not set(value['outbox']) <= {'pending', 'delivered', 'blocked'}
or not set(value['submissions']) <= {'prepared', 'in_flight', 'confirmed', 'unresolved'}):
raise ValueError('count-only receipt shape/state refused; values withheld')
for group in ('lifecycle', 'outbox', 'submissions'):
if any(type(number) is not int or number < 0 or number > 10**12
for number in value[group].values()):
raise ValueError('count-only receipt values refused')
return value