OpenChainGraph · Mandate loop Loop step: Run

A human signs the scope. The workflow can only do what the mandate says

This page walks the mandate loop end to end: how a person authors and signs a Work Mandate; how a compiler turns that mandate's clauses into literal gate objects on a workflow rather than prose describing them; how the workflow runs a routine case straight through while a trigger clause halts it and opens a record instead; how a human closes that record with a signed decision; and, when the party holding the mandate is itself a delegated agent, how its identity chain verifies back to a person. Four steps, one loop, nothing here asks you to take the workflow's word for what it was allowed to do.

A mandate authorizes exactly what its compiled gates enforce, nothing broader. The closing panel restates that boundary, and three more like it, as the first thing worth reading rather than the last.
1
Step 1 · The cycle

Authorize, run, escalate, close

A Work Mandate is a document a person writes and signs before any agent touches it: which tools or workflows it authorizes (its scope), the conditions that let a case continue automatically, the triggers that instead route a case to a human, and a validity window. An unsigned mandate is a draft. It carries no authority until a real signature exists over the whole artifact, and that signature's target, the mandate's own hash, becomes the identifier every later stage points back to.

authorize person signs mandate run compiled gates execute escalate trigger halts, opens record close: a signed decision resolves the record, then a fresh mandate can supersede

The loop is not four separate systems glued together. Every stage produces one hash-identified artifact the next stage reads: the mandate hash, then the run's own receipt, then, only on the escalation branch, a record hash and its closure. Each of the panels below walks one of those stages with a real, shipped example.

2
Step 2 · The compiler

A clause becomes a gate object rather than a sentence about one

The Work Mandate Compiler reads the mandate's scope and turns it into an ordered list of workflow steps. It reads the mandate's conditions and escalation triggers, which must all point at the same one field of the run's output, and turns each into a routing rule on the one checkpoint step where they apply. Escalation triggers compile first, each routing to the reserved target escalate; passing conditions compile after, routing to the next step. Whatever value matches neither, by construction, still needs somewhere to go: the compiler sets that fallback to escalate as well, so an unrecognized case defaults to a person rather than to silent continuation.

work_mandate scope.tool_ids: [assess_loan, record_outcome] conditions: [/decision/approved eq true] compile_work_ mandate assess_loan + gate record_outcome default: escalate rule[0]: approved==true → record_outcome everything else → escalate, by construction

That example is not illustrative shorthand: it is the compiler's own worked conformance fixture, proven under the suite's compute-integrity profile, so the diagram above is a real gate object, not a mockup of one. Mandates whose conditions and triggers disagree on which field they read are rejected outright at compile time, before a rule is ever generated, so a policy that cannot be expressed as one routing decision never silently becomes one anyway.

art-274 Work Mandate Compiler · compile_work_mandate · conformance-proven
3
Step 3 · Run

Step by step, until a gate says otherwise

A run under a mandate folds the mandate's hash into every step's inputs and into the run's own summary, a conditional field present only when a mandate actually governed that run, so the finished receipt proves which policy was in force rather than merely claiming one existed. Each step is one deterministic computation with its own hash; a passing case runs every step in order and finishes with one combined hash over the steps that ran.

A case that trips an escalation trigger does not finish that way. The gate routes to the reserved target, and the run halts immediately: no further step executes. Every step that would have followed is marked with a distinct status showing it was skipped because of an escalation rather than skipped because of an ordinary routing decision, and an open record is emitted describing exactly which decision fired and exactly which steps never ran.

mandate classify gate: grade=F HALT decision log skipped_by_escalation open escalation record {decision, halted_steps} record hash excludes wall-clock time: two identical escalations hash identically

The open record's hash is computed only over the deterministic parts, the triggering decision and the list of halted steps, never over the moment the halt happened. That single choice is what lets a verifier confirm two escalations were caused by the exact same input, independent of when either one occurred.

shipped examples · dora-escalation-demo · escalation-sla-supervised-autonomy-receipt
4
Step 4 · Management by exception

A person sees the record. A passkey closes it

An open record is where the loop hands control back to a person: the routine path never reaches a human at all, and the exception path never resolves without one. Closing a record means signing over its hash with a passkey, a WebAuthn assertion tied to one named device, and stating a decision of either approve or reject. That signed envelope is itself a receipted artifact, checkable the same offline way as anything else in the estate.

open record record_hash passkey signs approve / reject record_hash_recompute envelope_binds_record_hash signature_valid decision_valid closed alter the halted-step list, the decision, or the hash → any one check fails, closure invalid

Each of those four checks is independent: the recomputed record hash has to match what the record actually contains, the signed envelope has to name that exact hash, the passkey signature has to verify, and the stated decision has to be one of the two allowed values. Mutating the halted-step list, the triggering decision, or the record hash itself in isolation fails the corresponding check every time, which is what makes the closure tamper-evident rather than merely signed.

A closed record does not disappear. It stays exactly where it was, now carrying a second artifact, the closure, that any later reader can verify independently of trusting whoever ran the workflow.
5
Step 5 · When the principal is itself an agent

A delegated agent's authority still traces to a person

Nothing in the loop above requires the party holding a mandate to be a person acting directly. It can be an agent that was itself delegated authority by someone else, and when that is the case, the delegation has its own verifiable chain, separate from the mandate's own signature.

The identifier's own log

A did:webvh identifier is backed by a self-certifying, append-only log: each entry's own hash checks out, version numbers run in sequence with no gaps, every entry carries a signature from a key actually authorized to update it, and deactivation status is explicit rather than inferred.

The delegation chain

An ACDC credential chain links issuer to holder, edge by edge, each credential self-addressing under its own identifier, each schema matched against what it claims to be, terminating at a stated root identity rather than trailing off unverifiably.

Checking either chain never resolves a live document over the network and never operates the witness infrastructure that anchors the identifier in the first place; it verifies the log or the credential chain it is handed, structurally, the same offline discipline as every other check on this page. KERI, the identity model both formats build on, together with ACDC and its CESR encoding, was ratified by the Trust over IP Foundation in January 2026, the named precedent for delegated sponsorship this loop follows rather than invents.

art-284 did:webvh Log Verifier · art-285 ACDC Delegation Chain Verifier · verify-only
6
What is NOT claimed

Four boundaries this loop holds on purpose

The five panels above describe real, shipped mechanisms. None of them add up to more than what follows, and this panel is deliberately as prominent as the others rather than a footnote at the bottom of the page.

A mandate gates its own workflow, nothing wider

Compiled gates enforce exactly the scope, conditions, and triggers written into that one mandate. They say nothing about any tool, workflow, or agent action the mandate never named.

Closure is accountability, not correctness

A signed approve decision records that a named person reviewed the case and accepted responsibility for the outcome. It is not a claim that the underlying case was decided the right way.

Verification checks the record, not the judgment

The four closure checks confirm the closure was not tampered with. They cannot confirm the human read the case carefully; that remains a human act no machine check reaches.

No certified, guaranteed, or audited language

None of those words belong on this page or on the tools it describes. What is checkable is stated plainly instead, so a reader can verify the claim rather than trust the adjective.

All content on this page is static and processed locally in your browser. No data is transmitted. Do not enter real personal data into any OpenChainGraph tool. Use synthetic or anonymised inputs only.