SECTION · SUBSTRATE · 08 / 20
The judge says continue, stop, or ask.
Naive autoloops either run forever burning money or stop the second one test flickers — the judgment loop is the difference between a fleet that finishes and a fleet that needs a babysitter.
COMPASS JUDGE
HOOK
RHOBEAR does not just keep working blindly. It decides when to continue, stop, ask you, or escalate.
TECH
A structured decision engine that evaluates goal state into continue / done / blocked / needs_owner / escalate verdicts.
A · THE FIVE VERDICTS
Five exits. No infinite loops.
- continue — the lane is progressing, the gate is satisfied, fire the next iteration.
- done — the goal hit its outcome condition; the loop drops to clean stop and writes the summary.
- blocked — a real obstacle (failing build, missing dependency, unrecoverable error); loop pauses, evidence captured.
- needs_owner — a decision only you can make; loop waits, Telegram buzzes, nothing irreversible happens.
- escalate — the assigned role can't solve this; reroute to a different role or surface to the orchestrator.
B · WHAT THE JUDGE READS
It looks at four things before it speaks.
- The goal state — outcome target, iteration counter, budget remaining, owner-action flags.
- The worker report envelope — status, evidence, diff, test results, risks the worker flagged.
- The session transcript — what was actually attempted vs what was claimed.
- The safety registry — is the next action even allowed under the current gate?
C · WHEN IT SAYS NEEDS_OWNER
Some decisions are yours, full stop.
- Scope creep — work is drifting beyond what
/goalasked for; you decide whether to widen the gate. - Irreversible action — a force-push to main, a prod deploy, a paid-tier upgrade; never auto-approved.
- New dependency — a package the safety registry hasn't seen before; you sign off or deny.
- Ambiguous outcome — two valid paths forward; the judge surfaces both and waits for your call.
D · WHEN IT SAYS ESCALATE
Wrong worker, right work — re-route.
- The lane needs a capability the assigned role doesn't have.
- The work crossed a domain boundary mid-iteration (build lane hit a security concern; hand to Guardian).
- The same lane has failed three times under the same role — try a different model behind the same role.
- A cross-lane conflict surfaced (two workers touching the same file); orchestrator re-sequences.
ONE VERDICT PER REPORT
Worker speaks. Judge decides. Loop acts.
foreman > report ready · PR #88 · status=open · tests=pass · diff=+142/-8
judge > reading goal-204 · iter=1/8 · budget=$2.40/$12
judge > reading transcript · 14 tool calls · no scope drift
judge > reading safety · gate=strict · writes-allowed · no shell-escape
judge > verdict: continue → dispatch lane b
--- next iteration fires ---
foreman > report ready · PR #90 · status=blocked · tests=fail
judge > reading transcript · "stripe key string in docs example"
judge > reading safety · gate violation: secret-pattern detected
judge > verdict: needs_owner → pause loop, surface to owner
openclaw > telegram fired · "goal-204 · review needed · 1 question"
--- loop paused · owner-pending ---
you > approve redact-and-continue
judge > verdict: continue → foreman re-runs lane c with redaction
--- loop resumes ---
foreman > report ready · PR #90b · status=open · tests=pass
judge > reading goal-204 · all lanes terminal · outcome satisfied
judge > verdict: done → write summary, fire telegram, drop loop
pops > goal-204 shipped. 3 PRs merged. you slept through it.