Reliable by Design · 05.07
ASSESS & REFLECT: How the Loop Grades and Corrects Itself
A graded 0..1 progress signal for stall detection, and a bounded self-critique pivot ladder for when a loop stalls.
Four stagnation signals, not one
The stall detector is a pure, dependency-free function fed only an iteration's observable facts: a structural signature of its output and a progress trajectory. Four signals can vote a loop stalled:
| Signal | Fires when | Requires |
|---|---|---|
structural_repeat | The exact same output signature repeats across a window of consecutive iterations. | Always on. |
oscillation | A signature seen before reappears, but not on the immediately prior iteration (A → B → A). | Assess mode. |
plateau | Progress stays essentially flat (within 0.02) across the window. | Graded done-check. |
regression | Progress drops by more than 0.05 versus the previous iteration. | Graded done-check. |
Plateau and regression only make sense with a graded (continuous) signal — a plain pass/fail done-check has no meaningful "distance to goal" to plateau or regress along, so those two stay off for it, avoiding false stalls on a deterministic check.
REFLECT: pivot, don't quit
When the loop is judged stalled, REFLECT feeds a self-critique of what's not working back into the next iteration's context and changes tack — up to a bounded number of pivots. This is the difference between a loop that silently keeps repeating a failing approach until it burns its whole budget, and one that notices it's stuck and tries something genuinely different before conceding.
Continue
Converge iterates a cohort sub-graph until a continuation policy stops it; Pursue is converge with ASSESS and REFLECT turned on.
The doctrine injected into both the synthesis and reviewer prompts, teaching agents to design for failure and control flow, not just structure.