Merge pull request #1508 from Ecko95/fix/infinite-self-discuss-loop

fix: prevent infinite self-discuss loop in auto/headless mode
This commit is contained in:
Tom Boucher
2026-04-01 17:34:15 -04:00
committed by GitHub
5 changed files with 32 additions and 2 deletions

View File

@@ -230,6 +230,9 @@ Proceed to 3b.
**If SKIP_DISCUSS is `false` (or unset):** Execute the smart_discuss step for this phase.
**IMPORTANT — Discuss must be single-pass in autonomous mode.**
The discuss step in `--auto` mode MUST NOT loop. If CONTEXT.md already exists after discuss completes, do NOT re-invoke discuss for the same phase. The `has_context` check below is authoritative — once true, discuss is done for this phase regardless of perceived "gaps" in the context file.
After smart_discuss completes, verify context was written:
```bash

View File

@@ -665,6 +665,16 @@ Each answer (or answer set, in batch mode) should reveal the next question or ne
```
After all areas are auto-resolved, skip the "Explore more gray areas" prompt and proceed directly to write_context.
**CRITICAL — Auto-mode pass cap:**
In `--auto` mode, the discuss step MUST complete in a **single pass**. After writing CONTEXT.md once, you are DONE — proceed immediately to write_context and then auto_advance. Do NOT re-read your own CONTEXT.md to find "gaps", "undefined types", or "missing decisions" and run additional passes. This creates a self-feeding loop where each pass generates references that the next pass treats as gaps, consuming unbounded time and resources.
Check the pass cap from config:
```bash
MAX_PASSES=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-get workflow.max_discuss_passes 2>/dev/null || echo "3")
```
If you have already written and committed CONTEXT.md, the discuss step is complete. Move on.
**Interactive mode (no `--auto`):**
**For each area:**