research
docs://contents>
docs/verification-blocksdoc 09

Verification Blocks

Verification is the post-completion, pre-commit check of a step's output. Nothing a step produces becomes workflow state until verification passes — the gate sits between the executor and the Evidence Ledger's commit of the result.

The block

Field Type Required Semantics
prompt string yes Instruction to the verifier: what to check and how to render the verdict.
criteria array yes Conditions a passing output must satisfy, checked against the step's actual output.

Evaluation contract

Property Semantics
Timing After step completion, before commit.
Scope The verifier sees the step's actual input context and its output — verdicts are rendered against real inputs, not blind.
Verdict Pass, or fail with a critique.
Evidence Ledger Every verdict is recorded with its critique.
Back-edge A failed verdict's critique routes back to the planner within iteration bounds.

The back-edge

planner ──▶ verifier ──pass──▶ commit
   ▲            │
   └─ critique ─┘ fail
   (bounded: iterations per attempt)

The loop is bounded per attempt by the budget hierarchy. Iterations exhausted → escalation ladder → park. There is no unbounded retry anywhere in the loop; the shape is fixed.

The zero-case rule

Verification criteria must be satisfiable by every valid outcome of the step, including an empty one. When a step's input contains zero items meeting its selection criteria — honest scarcity — the correct output is the self-attesting empty result, and verification must treat that result as success.

{ "selected_count": 0, "hypotheses": [] }

Excerpt — hypothesis-selection output shape under zero selection, competitor_deep_dive DD10.

The engine does not invent data. Criteria that cannot pass on an empty result make the step unfinishable — a retry cannot create data that does not exist — which makes it an authoring defect, not a runtime condition.

Authoring rules

Rule Rationale
Criteria satisfiable by every valid outcome, including empty Otherwise the step cannot complete under honest scarcity
Prompt states the zero-case exemption explicitly The verifier must treat the self-attesting empty result as success
Criteria reference only data in verifier scope The verifier sees step input and output; it cannot verify claims about artifacts it cannot see
Criteria check the output, not the effort Verification judges the committed result, never the reasoning that produced it