2026-08-28·by Sijie Wang#cybernetics#engineering

loop-termination-is-a-gate

#thread/agent-loop

The agent loop (GPT and Claude share the skeleton): model → tool calls → feed results back → repeat → stop. They differ mainly in who owns the loop — raw API (you drive it: finish_reason/stop_reason) vs managed (OpenAI Assistants/Responses "runs", Anthropic Agent SDK / Claude Code).

The crux is termination: who decides "done"? In a vanilla loop, the executor (model) self-certifies completion (end_turn / finish_reason=stop). That is the unreliable point — the same nerve as this whole vault: a stochastic executor self-declaring success is exactly what you can't trust (gatekeeper-not-driver).

Three ways to control termination = three of the eight controls (control-methods):

  • trust the executor (vanilla loop)
  • meter it — max-iterations / timeout (StandMeet's force-final-answer; control #4)
  • gate it — keep going until a condition holds (/goal; control #2)

/goal = a semantic gate on the loop's exit (confirmed from docs)

/goal <condition> is a session-scoped prompt-based Stop hook. After each turn, (condition + transcript) is sent to a separate, fresh small model (Haiku by default) that returns yes/no + a reason; not met → reason fed back, loop continues.

  • Generator ≠ verifier, productized. The model doing the work is not the one judging it done — a fresh evaluator with no ego in the work. recognizer-not-generator made real; the docs name it as the safeguard against "the model that wrote the code declaring it correct."
  • verify-cheaper-than-execute, literal — the judge is a cheap small model; eval tokens negligible vs the work.
  • Limitation (honest): the judge only sees the transcript — it can't run tests or read files. So it judges claims + visible output; a semantic gate is gameable by what you can plausibly surface (Goodhart). Hence "write the condition as something the output can demonstrate."

Two kinds of gate (the eval-is-type-system split)

  • mechanical gate (scripted hook, exit code): deterministic, reliable, but only codifiable predicates (test passed, file exists).
  • semantic gate (/goal's LLM judge): handles fuzzy "done" (e.g. "each paper is A-grade"), but the judge is fallible. De-biased by separation (different model, empty context), not by being infallible.

→ Termination is the load-bearing decision of any agent loop, and a gate there (mechanical or semantic) is how you stop trusting "I'm done."

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

loop-termination-is-a-gate