ctrlrun.ScriptedApprovalProvider — class, defined at src/ctrlrun/approval.py:425
ctrlrun demo (SPEC-v0.1 §4.3).
Each wait() poll takes the next step. PENDING means “no answer yet”, so a script can
make wait=True genuinely block. The script is one sequence shared by every request, in
poll order. An exhausted script raises ApprovalTimeout: a scripted approver never
grants by accident, and a test can never hang waiting for a step that will not come.
The script does not outrank the clock. A step that lands after the request has expired
raises ApprovalTimeout and is not applied, so the double cannot grant something the
real provider would have refused (SPEC-v0.1 §4.3).