#171/#174 detect a Review subagent that repeats the same completed output, but the current recovery mechanism is still a model nudge.
If the model ignores the recovery nudge and emits the same review again, the loop can send the recovery nudge repeatedly because the stagnation detector remains true.
Add a deterministic backstop so recovery cannot become another infinite loop. The preferred direction is to reuse the already-parseable envelope from the repeated output and complete the existing finish path server-side, without weakening the finish/review gates.
Requirements:
- Do not terminate a review merely because stagnation was detected if no valid report envelope is available.
- Reuse the existing ReviewReport parser and finish contract rather than duplicating validation.
- Keep provider/model behavior independent.
- Add an integration test where the model ignores the recovery nudge and repeats the same report.
- The test must prove the session terminates rather than issuing unbounded recovery nudges.
#171/#174 detect a Review subagent that repeats the same completed output, but the current recovery mechanism is still a model nudge.
If the model ignores the recovery nudge and emits the same review again, the loop can send the recovery nudge repeatedly because the stagnation detector remains true.
Add a deterministic backstop so recovery cannot become another infinite loop. The preferred direction is to reuse the already-parseable envelope from the repeated output and complete the existing finish path server-side, without weakening the finish/review gates.
Requirements: