Appearance
A system that executes without verifying is unreliable by design — the only reliable shape is execute → validate → correct until an observable exit condition passes.
Principle
Closed Loop Systems Win
The structural shape
Open loops ship errors. Closed loops catch them at the boundary.
Open loop — fire and forget
→ → → ✗
1execute
2ship (no check)
Failure is invisible. Plausible output masks errors. They surface downstream — later, more expensive, harder to attribute.
Closed loop — verified
→ ⟲ ⟲ ✓
1execute
2validate
3correct
4repeat → exit ✓
Error has an address. Probabilistic components become a reliable system — the loop catches failure where it was created.
Agents are non-deterministic. The same prompt produces different outputs across runs. An open loop bets the system on a coin flip; a closed loop corrects until the coin lands the right way.
Same shape, three scales
The loop is fractal — it runs at task, plan, and pipeline.
Each scale has the same shape: execute, validate against external state, correct until exit.
Task
builder→Stop hook→retry (1/2/3)→exit 0
Plan
builder→validator vs spec→correction task→PASS
Pipeline
plan→build→test→review→all pass
Every phase validates the output of the prior phase. No scale trusts its predecessor on self-report.
What "verify" actually means
An agent grading itself is not a closed loop.
Not a loop
"Looks good to me — shipped."
Ground truth
agent's own assessment
Closed loop
"Stop hook ran. Disk matches filesExpected."
Ground truth
disk state · spec · test suite
Verification must be against observable, external state — disk contents, the spec, the test suite. A second agent prompt asking "did it work?" is just another probabilistic output — not a check.
How to measure the loop
Four KPIs quantify closed-loop health.
Optimize for movement, not a fixed threshold.
Size↑
Scale of work one agent can handle. Growing = more trust, larger task grants.
Attempts↓
Corrections per task. Shrinking = better context, less rework. Leading indicator of Streak collapse.
Streak↑
Consecutive one-shot successes without human intervention. Growing = the system is reliable.
Presence↓
Human involvement per shipped unit. Shrinking = autonomy increasing.
Optimize Size × Streak together — that's the compound metric. When Attempts starts creeping up, Streak has already begun to break before you notice.
The limit case — Size high, Attempts = 1, Streak unbroken, Presence near zero — is one-shot agentic coding. Drive the KPIs in the right direction. The loop is measured by its movement.
The discipline
Any step that ends without a check is a step you don't own.
Self-reported completion is a claim. External state is proof. Every execute must terminate at an observable exit condition — or it terminates at the user, as a bug.