Steps

Conceptual

The atomic unit of execution: inputs, effects, results and verification.

Steps are bounded. A step has declared inputs, at most one class of external effect, a result contract and an optional verification requirement.

Anatomy#

json
{
  class="tok-str">"id": class="tok-str">"s5",
  class="tok-str">"kind": class="tok-str">"tool",
  class="tok-str">"title": class="tok-str">"Apply the minimal fix to GuestCheckout",
  class="tok-str">"inputs": { class="tok-str">"files": [class="tok-str">"src/checkout/guest.ts"], class="tok-str">"hypothesis": class="tok-str">"h1" },
  class="tok-str">"tool": { class="tok-str">"name": class="tok-str">"files.write", class="tok-str">"idempotencyKey": class="tok-str">"s5-run_7c1a9d" },
  class="tok-str">"effect_class": class="tok-str">"workspace_write",
  class="tok-str">"budget": { class="tok-str">"wall_clock_seconds": class="tok-num">120, class="tok-str">"retries": class="tok-num">2 },
  class="tok-str">"verify": { class="tok-str">"check": class="tok-str">"compiles" },
  class="tok-str">"result": { class="tok-str">"status": class="tok-str">"completed", class="tok-str">"files_changed": class="tok-num">2, class="tok-str">"duration_ms": class="tok-num">38122 }
}

Effect classes#

ClassReversiblePolicy default
nonen/aAllowed
read_externalYesAllowed with scope
workspace_writeYes (checkpointed)Allowed with scope
external_writeSometimesApproval by default
communicationNoApproval by default
financialNoApproval always
dependency_writeNoApproval + provenance report always

Parallelism#

Steps with no dependency edge between them and no conflicting effect class may run concurrently. The scheduler serializes anything touching the same resource, and never parallelizes steps with irreversible effects.

s1 ──┬──▶ s2 ──┐
     ├──▶ s3 ──┼──▶ s6 ──▶ s7 (verify) ──▶ s8 (approve)
     └──▶ s4 ──┘
          s5 (irreversible) ── serialized, never parallel

Last updated 2026-09-06