Human-in-the-loop sequence

Approval is persisted before trusted execution.

Airlock separates request persistence, trusted validation, human approval, direct local execution, bounded failure state, and independent verification.

End-to-end timing

Where the human enters the loop

The reviewer inspects validated typed fields and the locally reconstructed executable/argv, then chooses Approve and execute or deny. Airlock persists approval plus a running attempt before direct local execution.

Open full-size SVG ↗
Sequence diagram showing typed request creation, trusted validation, approval reservation, direct execution, bounded failure state, receipts, and independent verification.
Persist before effect: an approved_for_execution receipt and running attempt are durable before Airlock invokes the configured absolute CLI.

Receipt semantics

What each state actually proves

StateWhat it provesWhat it does not prove
pendingThe requester persisted a typed request.Review, approval, or execution.
approved_for_executionA trusted reviewer authorized a persisted execution attempt.That the provider action ran or succeeded.
deniedThe trusted side or reviewer declined the request.Any external change.
executedThe trusted child returned success and terminal state persisted.That the provider accepted it or the intended effect exists.

Failure paths

Failures stop before authority drifts

  • Expired, replayed, malformed, or adapter-invalid requests are rejected before human review.
  • A reviewer can reject without exposing credentials or trusted action text to the requester.
  • Concurrent/replayed POSTs cannot create a second running provider invocation.
  • If execution fails or becomes uncertain, no executed receipt is emitted; the reviewer may explicitly retry and verify.
  • Receipts are sanitized and never include a reusable approval or executable command.
  • External verification remains independent of the human-entered outcome receipt.