Methodology issue: non-terminating RLCR loop under external-resource gating
Observed dynamics
A 42-round RLCR session hit the max-iteration ceiling without ever converging to COMPLETE. Every round returned the same verdict pair: ADVANCED + REQUEST CHANGES. Both verdicts were correct — the executor did real work each round, and the reviewer correctly stated the named plan was unfinished. But the unfinished portion was gated on an external resource the executor did not have access to, so the COMPLETE terminal verdict was structurally unreachable.
The methodology has no explicit handler for this scenario. It treats "executor cannot finish" and "executor should keep iterating" as the same state.
Notable patterns
- Universal verdict stickiness. All 42/42 rounds returned ADVANCED + REQUEST CHANGES. The loop's exit predicate is conventionally "reviewer says COMPLETE", and that predicate became unreachable around the point where the last non-gated mainline deliverable shipped — yet the loop did not detect the transition.
- Phase transition into side-issue spirals. Around round 20+, mainline objectives became dominated by (a) closing defects the previous reviewer found in the previous round's framework, or (b) hardening queued side issues raised many rounds earlier. The reviewer's "required implementation plan" sections began acknowledging this explicitly ("substantive mainline gap remains gated and unactionable from this environment") but the loop continued anyway.
- Surface-repetition chains. Multiple stretches show the pattern: round N adds a guard → N+1 review finds the guard's edge case → N+1 fixes it → N+2 review finds the fix's boundary case → N+2 fixes that → and so on for 3–5 rounds before the sub-thread settles. Each individual round looked productive; the meta-pattern was invisible to per-round logic.
- Growing side-issue queue. The queued-side-issue list accumulated dozens of items and functioned as a self-replenishing reservoir of "non-gated work to do" that prevented the loop from ever running out of legitimate, non-gated tasks.
- Shrinking round contracts. By late session, round contracts had shrunk to closing one defect from the prior review. Locally sensible (focus reduces risk), globally pathological (work-to-overhead ratio degrades sharply).
- Executor self-aware, no escape hatch. Mid-session round contracts openly acknowledged the gating but had no methodology-supported way to act on that knowledge.
Proposed methodology improvements
-
GATED-EXIT terminal verdict. Add a third terminal verdict alongside COMPLETE and max-iter timeout. The reviewer emits GATED-EXIT when (a) all non-gated mainline scope is closed, (b) only gated scope remains, and (c) the executor has produced the maximum reasonable framework that can land without the gate. Downstream tooling routes to "hand off to human" rather than "session failed".
-
External-resource registry in plan format. Require a plan section that lists external-resource gates, each with: which deliverables they block, environment signals that indicate the gate is open, and the framework portion of the deliverable that can land without the gate. The loop computes "addressable mainline scope" distinct from "named mainline scope" and evaluates convergence against the former.
-
Surface-repetition stall detector. Compute a per-round signature of the objective's primary surface. If the same signature appears in N consecutive rounds (N=3), require an explicit "broaden or escalate" decision: expand scope, switch surface, or declare the surface mature.
-
Two-axis progress verdict. Split into "named-scope progress" and "preventive-hardening progress". Many rounds of preventive hardening with no named-scope progress is a stall signal; the current single-value verdict conflates the two.
-
Bounded side-issue queue. Cap at 5–8 items. New items above the cap force triage: promote to blocking, demote to "won't fix this session", or merge. Prevents the queue from becoming infinite makework.
-
Periodic convergence audits. Every K rounds (K≈10), insert a meta-round that answers three questions: (1) is remaining addressable scope monotonically decreasing; (2) are queued items being drained faster than created; (3) is any named scope unreachable from this environment. If answers indicate non-convergence, change strategy or emit GATED-EXIT.
-
Round-contract scope floor. The round must close at least one acceptance-criterion advancement OR ≥3 queued items OR retire one preventive surface. When the executor cannot meet the floor with non-gated work, that itself is a terminal-state hint that routes to a convergence audit.
-
"Framework-complete" status for gated deliverables. When the executor claims framework-completeness, the reviewer either confirms (deliverable transitions to "awaiting-external-resource", excluded from REQUEST CHANGES drivers) or refutes with a specific framework defect. Once all gated deliverables transition and all non-gated scope closes, GATED-EXIT becomes available.
-
Loop-level recommendation field in every review. Distinct from defect-level findings. Values: "continue", "broaden scope", "narrow exit criteria", or "exit-gated". This is the meta-observation channel that the current review format lacks.
Review effectiveness was high; the gap is at the loop layer
The reviewer was technically excellent throughout — catching real boundary defects, value-blind drift checks, prefix parsing that silently truncated, isolation that depended on caller correctness. The review step is doing real work and should not be weakened. Two recurring frame-of-reference issues compound the stall:
- Review framing inertia. Once "the plan is not complete" became the dominant REQUEST CHANGES driver, reviews continued to cite the same gated deliverables round after round even in rounds explicitly scoped to side-issue hardening.
- Symmetric optimism. Reviews concluded with "required implementation plan" enumerating the gated steps as if actionable. Reasonable defensive guidance, but did not surface the meta-observation that the loop could not execute those steps.
The communication layer (summaries, tracker updates, bitlesson maintenance) was consistently clear and is not a contributor to the stall.
Why it matters
A convergence audit around round 20–25 would likely have surfaced the gating dynamic and either reframed the success criteria or exited cleanly. Instead, 20+ rounds of diminishing-returns side-issue work consumed iteration budget without changing the terminal state. Implementing any subset of these suggestions (especially #1, #2, #6, and #8 together) would let similar sessions terminate gracefully with a clearly-labeled gated-exit and a hand-off artifact, rather than running to the iteration ceiling with no terminal signal.
This issue was filed from a sanitized methodology-analysis report produced at the end of a max-iter RLCR session. No project-specific details are included.
Methodology issue: non-terminating RLCR loop under external-resource gating
Observed dynamics
A 42-round RLCR session hit the max-iteration ceiling without ever converging to COMPLETE. Every round returned the same verdict pair: ADVANCED + REQUEST CHANGES. Both verdicts were correct — the executor did real work each round, and the reviewer correctly stated the named plan was unfinished. But the unfinished portion was gated on an external resource the executor did not have access to, so the COMPLETE terminal verdict was structurally unreachable.
The methodology has no explicit handler for this scenario. It treats "executor cannot finish" and "executor should keep iterating" as the same state.
Notable patterns
Proposed methodology improvements
GATED-EXIT terminal verdict. Add a third terminal verdict alongside COMPLETE and max-iter timeout. The reviewer emits GATED-EXIT when (a) all non-gated mainline scope is closed, (b) only gated scope remains, and (c) the executor has produced the maximum reasonable framework that can land without the gate. Downstream tooling routes to "hand off to human" rather than "session failed".
External-resource registry in plan format. Require a plan section that lists external-resource gates, each with: which deliverables they block, environment signals that indicate the gate is open, and the framework portion of the deliverable that can land without the gate. The loop computes "addressable mainline scope" distinct from "named mainline scope" and evaluates convergence against the former.
Surface-repetition stall detector. Compute a per-round signature of the objective's primary surface. If the same signature appears in N consecutive rounds (N=3), require an explicit "broaden or escalate" decision: expand scope, switch surface, or declare the surface mature.
Two-axis progress verdict. Split into "named-scope progress" and "preventive-hardening progress". Many rounds of preventive hardening with no named-scope progress is a stall signal; the current single-value verdict conflates the two.
Bounded side-issue queue. Cap at 5–8 items. New items above the cap force triage: promote to blocking, demote to "won't fix this session", or merge. Prevents the queue from becoming infinite makework.
Periodic convergence audits. Every K rounds (K≈10), insert a meta-round that answers three questions: (1) is remaining addressable scope monotonically decreasing; (2) are queued items being drained faster than created; (3) is any named scope unreachable from this environment. If answers indicate non-convergence, change strategy or emit GATED-EXIT.
Round-contract scope floor. The round must close at least one acceptance-criterion advancement OR ≥3 queued items OR retire one preventive surface. When the executor cannot meet the floor with non-gated work, that itself is a terminal-state hint that routes to a convergence audit.
"Framework-complete" status for gated deliverables. When the executor claims framework-completeness, the reviewer either confirms (deliverable transitions to "awaiting-external-resource", excluded from REQUEST CHANGES drivers) or refutes with a specific framework defect. Once all gated deliverables transition and all non-gated scope closes, GATED-EXIT becomes available.
Loop-level recommendation field in every review. Distinct from defect-level findings. Values: "continue", "broaden scope", "narrow exit criteria", or "exit-gated". This is the meta-observation channel that the current review format lacks.
Review effectiveness was high; the gap is at the loop layer
The reviewer was technically excellent throughout — catching real boundary defects, value-blind drift checks, prefix parsing that silently truncated, isolation that depended on caller correctness. The review step is doing real work and should not be weakened. Two recurring frame-of-reference issues compound the stall:
The communication layer (summaries, tracker updates, bitlesson maintenance) was consistently clear and is not a contributor to the stall.
Why it matters
A convergence audit around round 20–25 would likely have surfaced the gating dynamic and either reframed the success criteria or exited cleanly. Instead, 20+ rounds of diminishing-returns side-issue work consumed iteration budget without changing the terminal state. Implementing any subset of these suggestions (especially #1, #2, #6, and #8 together) would let similar sessions terminate gracefully with a clearly-labeled gated-exit and a hand-off artifact, rather than running to the iteration ceiling with no terminal signal.
This issue was filed from a sanitized methodology-analysis report produced at the end of a max-iter RLCR session. No project-specific details are included.