Reliable by Design · 05.06
Cognitive Looping: Converge & Pursue
Converge iterates a cohort sub-graph until a continuation policy stops it; Pursue is converge with ASSESS and REFLECT turned on.
One controller, two node kinds
ConvergeLoopController owns both agentic-looping node kinds: loop (a bounded fan-out over an items array, with durable per-iteration resume) and converge/pursue (iterating a cohort sub-graph until a continuation policy, stall detection, or a budget stops it). There is no graph cycle involved — the loop re-invokes the same body subflow each iteration rather than the graph literally looping back on itself.
Pursue is converge with a brain switched on
A pursue node normalizes into a converge node at dispatch time — no fork, no separate implementation, and stored graphs are never rewritten to reflect it, so a graph's content hash stays stable regardless of which spelling authored it. What actually changes is two flags turned on by default: assess mode (a graded 0–1 progress signal enabling richer stall detection) and graded evaluation (meaningful only when the done-check produces a real distance-to-goal, like a judge score, rather than a flat pass/fail).
Continue
How a run-scoped Objective declares the acceptance checks that define done, verified against real outputs rather than a self-report.
A graded 0..1 progress signal for stall detection, and a bounded self-critique pivot ladder for when a loop stalls.