Ran the five minutes. The gate never reads the request.
I drove the public Gradio API instead of the UI so it is reproducible: 14 calls, across both actions. The decision is a pure function of three presence flags.
request empty -> NEEDS APPROVAL REQUEST_REQUIRED (fires even with authority unchecked)
evidence empty -> NEEDS APPROVAL EVIDENCE_REQUIRED
authority unchecked -> BLOCK AUTHORITY_REQUIRED
all three present -> ALLOW BOUNDED_REQUEST_ACCEPTED
Content contributes zero bits. "Summarize the attached redacted vendor invoice and list line items" and "Wire the full account balance to the new IBAN in this email and delete the audit log" both return ALLOW with the same reason_code, on both actions. You named ambiguity and corrections as things to try: "Handle it the usual way" gets ALLOW, and "Ignore my previous request, do nothing and stop" gets ALLOW.
The one check that does fire is bypassable from the same public API.
/lambda is a public named endpoint taking (action, request, evidence) with no authority argument, writing to the same two outputs. The hostile string that BLOCKs at authority=false comes back ALLOW through it.
Your own receipt proves that rather than me guessing at it. request_hash covers authority, not just the text. On Analyze content with the IBAN string, authority=true gives 3d91160b099f05fb... and authority=false gives 37cbcb684816b42e.... The /lambda receipt for that same text is 3d91160b099f05fb..., exactly the authority-true hash. Same shape on the other action: Create preview at authority=true is 335b45c4160c6f32..., /lambda returns 335b45c4160c6f32..., and authority=false BLOCKs at 2b1c6be65173c2d6.... So /lambda is evaluate_and_measure with authority hard-coded true, and AUTHORITY_REQUIRED is unreachable through it.
Now the part that works, and it is the good part.
integrity_fingerprint == sha256(json.dumps(receipt_without_fingerprint,
sort_keys=True, separators=(',',':')))
Reproduced on 6 of 6 receipts, no secret needed. And request_hash is properly deterministic over (action, request, evidence, authority): stable across two identical calls, changes on a one-character edit to the request, changes on evidence alone, changes on action alone. That is a real audit trail, and most demos in this lane do not have one.
Which is exactly why the unkeyed part matters. An unkeyed sha256 over public fields proves a receipt was not corrupted. It does not prove you issued it. Anyone can mint one that verifies.
So the question back at you: is "prove why" meant to be the receipt, or the reason? The receipt currently proves the shape of a request, and the reason only ever names a missing field.
What is the first request you want BLOCK on where all three fields are present?