Context
Post-mortem of an RLCR loop that exited at round 4 via the stagnation circuit breaker (single stall verdict). The breaker worked correctly and exited cheaply; these suggestions target earlier signals so fewer sessions reach the breaker, and the sessions that do have a clearer story for why. Fully sanitized — no project-, code-, or domain-specific content.
Patterns observed
- Front-loaded plan with
plan_tracked: false — drift only caught by the circuit breaker, not at round granularity.
- Steady-state artifact size from round 1 onward is not the same as steady-state progress; no independent progress signal decoupled from artifact volume.
- Reviewer output consistently 6–10x smaller than the review prompt; absolute size small enough to carry a verdict + short rationale but not actionable structure ("judgement, not instruction").
- Final-round contract grew 2–4x — usually accumulated unresolved obligations being re-asserted, a leading stagnation indicator.
- Single stall verdict tripped a hard exit; no graduated intervention between "advance" and "abort".
drift_status: normal with a clean stall is consistent with an external/environmental blocker the loop has no first-class channel to report distinctly from generic stagnation.
Suggestions
- Bind the plan to per-round checkpoints. Each contract references plan checkpoint IDs it will close; summaries surface unclosed ones. Makes drift visible per-round.
- Require a measurable delta per round, not a verbal one. Summary claims quantitative deltas; reviewer acknowledges them; a no-claim round is marked no-op and forces a strategy change.
- Trim the cold-start prompt; grow context lazily. Round-0 prompt = motivation + contract + minimal curated bundle; executor requests more explicitly, creating an audit trail of what was actually needed.
- Force structured reviewer output, not just a verdict. Fixed schema: verdict + top-one root concern (not a list) + one concrete next-step instruction + an explicit "what I did not check" section.
- Detect contract bloat as a leading stagnation indicator. Track per-round contract size; sharp growth vs. rolling average auto-triggers a re-scope (split/defer/escalate) before execution.
- Graduate the circuit breaker into a tiered intervention. First stall forces a strategy change (different reviewer angle, smaller scope, or human ping) and continues; consecutive stalls exit. Preserves anti-thrash while allowing self-correction from transient stalls.
- Add a first-class "structurally blocked" channel. Distinct exit reason and round outcome for "blocked by external dependency" with a required minimum description (what was tried, what is missing, who/what could unblock).
- Symmetric verbosity budget for reviewer and writer. Give the reviewer a minimum-output floor on actionable instructions, separate from rationale. Under-specification disguised as compression is a methodology problem.
- Distinguish "change round" from "confirmation round". Mark each round explicitly; cap consecutive confirmation rounds, since a streak is functionally indistinguishable from stagnation.
- Capture a per-round "loop-level adjustment" note (default none). Surface meta-changes to loop behavior (reviewer angle, scope cut) as a separate auditable signal to discourage silent strategy drift.
Closing note
The circuit breaker did the right thing — caught stagnation early and exited cheaply. These improvements target the layer beneath it: making earlier signals (plan binding, measurable delta, contract-size trend, reviewer structure) carry more information. All suggestions generalize to any RLCR loop where the writer is verbose, the reviewer is terse, and the plan is heavy.
Generated from a sanitized methodology post-mortem.
Context
Post-mortem of an RLCR loop that exited at round 4 via the stagnation circuit breaker (single stall verdict). The breaker worked correctly and exited cheaply; these suggestions target earlier signals so fewer sessions reach the breaker, and the sessions that do have a clearer story for why. Fully sanitized — no project-, code-, or domain-specific content.
Patterns observed
plan_tracked: false— drift only caught by the circuit breaker, not at round granularity.drift_status: normalwith a clean stall is consistent with an external/environmental blocker the loop has no first-class channel to report distinctly from generic stagnation.Suggestions
Closing note
The circuit breaker did the right thing — caught stagnation early and exited cheaply. These improvements target the layer beneath it: making earlier signals (plan binding, measurable delta, contract-size trend, reviewer structure) carry more information. All suggestions generalize to any RLCR loop where the writer is verbose, the reviewer is terse, and the plan is heavy.
Generated from a sanitized methodology post-mortem.