Skip to main content
ctrlrun.InterruptApprovalProvider — class, defined at src/ctrlrun/adapter.py:209
An ApprovalProvider whose wait() routes through a framework’s own primitive. That is the whole mechanism of SPEC-v0.5 §3: @protect(wait=True) raises ApprovalRequired, catches it, calls wait(), and re-presents the same proposal under with_approval. The reservation is taken only on that second pass, which is why an approval gate needs none of Suspended’s machinery — a human deliberating for an hour pins nothing. The operator constructs it, on the line where they choose the policy, the store and the identity provider: control = Control(policy, store, approvals=InterruptApprovalProvider(store, MyInterrupt()), identity=…, authority=…) An adapter never constructs a Control (SPEC-v0.5 §2.3). Everything it must not choose — the identity provider, the authority document, the clock, the environment, the mode — is chosen there, by the person who deployed it.

Next