Propose → Surface → Commit → Verify (all four required)
1. propose
intent + lineage +
permissions + blast +
rollback + idempotency
2. surface
durable store
(PostgreSQL, Redis,
Durable Object)
3. commit
challenge-and-response
checklist, positive ack
idempotent re-exec
4. verify
re-read target
confirm side effect
alert on mismatch
rubber-stamp (fails audit)
one "Approve?" button
no structured metadata surfaced
reviewer clicks in under 1s
approvals predict nothing
EU AI Act Article 14 is explicit: effective human oversight
excludes rubber-stamp patterns.
challenge-and-response (passes)
[ ] I understand what this touches
[ ] I verified the blast radius
[ ] I have a rollback plan
Approve enabled only when all three set
documented in Anthropic and MS compliance docs;
required by EU AI Act Article 14 for high-risk systems.
idempotency key = hash(thread_id, action, payload)
propose(P) + propose(P) -> same record (no duplicate)
commit(k) + commit(k) -> execute once, subsequent commits are no-ops
retry after transient failure: Stripe/AWS-style idempotency, reused for agent approvals
wall-clock in the key is a logging timestamp, not an idempotency key
LangGraph interrupt() · MS RequestInfoEvent · Cloudflare waitForApproval() — same shape, different names