* docs: add Node LTS pinning guide for macOS Homebrew users New doc (docs/node-lts-macos.md) explains how to pin Node 24 LTS via Homebrew to avoid running on odd-numbered development releases. Covers brew install/link/pin, version managers as alternatives, and verification steps. Added notice banner in README linking to the guide. * fix: improve LSP diagnostics when no servers detected (#1082) When lsp status returns 'No language servers configured', the output now includes diagnostics: - Which project markers were detected (e.g. package.json found) - Which server commands are missing (e.g. typescript-language-server) - Install instructions Also added LSP troubleshooting section to docs/troubleshooting.md with common install commands per language.
5 KiB
Troubleshooting
/gsd doctor
The built-in diagnostic tool validates .gsd/ integrity:
/gsd doctor
It checks:
- File structure and naming conventions
- Roadmap ↔ slice ↔ task referential integrity
- Completion state consistency
- Git worktree health (worktree and branch modes only — skipped in none mode)
- Stale lock files and orphaned runtime records
Common Issues
Auto mode loops on the same unit
Symptoms: The same unit (e.g., research-slice or plan-slice) dispatches repeatedly until hitting the dispatch limit.
Causes:
- Stale cache after a crash — the in-memory file listing doesn't reflect new artifacts
- The LLM didn't produce the expected artifact file
Fix: Run /gsd doctor to repair state, then resume with /gsd auto. If the issue persists, check that the expected artifact file exists on disk.
Auto mode stops with "Loop detected"
Cause: A unit failed to produce its expected artifact twice in a row.
Fix: Check the task plan for clarity. If the plan is ambiguous, refine it manually, then /gsd auto to resume.
Wrong files in worktree
Symptoms: Planning artifacts or code appear in the wrong directory.
Cause: The LLM wrote to the main repo instead of the worktree.
Fix: This was fixed in v2.14+. If you're on an older version, update. The dispatch prompt now includes explicit working directory instructions.
npm install -g gsd-pi fails
Common causes:
- Missing workspace packages — fixed in v2.10.4+
postinstallhangs on Linux (Playwright--with-depstriggering sudo) — fixed in v2.3.6+- Node.js version too old — requires ≥ 20.6.0
Provider errors during auto mode
Symptoms: Auto mode pauses with a provider error (rate limit, server error, auth failure).
How GSD handles it (v2.26):
| Error type | Auto-resume? | Delay |
|---|---|---|
| Rate limit (429, "too many requests") | ✅ Yes | retry-after header or 60s |
| Server error (500, 502, 503, "overloaded") | ✅ Yes | 30s |
| Auth/billing ("unauthorized", "invalid key") | ❌ No | Manual resume |
For transient errors, GSD pauses briefly and resumes automatically. For permanent errors, configure fallback models:
models:
execution:
model: claude-sonnet-4-6
fallbacks:
- openrouter/minimax/minimax-m2.5
Headless mode: gsd headless auto auto-restarts the entire process on crash (default 3 attempts with exponential backoff). Combined with provider error auto-resume, this enables true overnight unattended execution.
Budget ceiling reached
Symptoms: Auto mode pauses with "Budget ceiling reached."
Fix: Increase budget_ceiling in preferences, or switch to budget token profile to reduce per-unit cost, then resume with /gsd auto.
Stale lock file
Symptoms: Auto mode won't start, says another session is running.
Fix: If no other session is actually running, delete .gsd/auto.lock manually. GSD includes stale lock detection (checks if the PID is still alive), but edge cases exist.
Git merge conflicts
Symptoms: Worktree merge fails on .gsd/ files.
Fix: GSD auto-resolves conflicts on .gsd/ runtime files. For content conflicts in code files, the LLM is given an opportunity to resolve them via a fix-merge session. If that fails, manual resolution is needed.
Recovery Procedures
Reset auto mode state
rm .gsd/auto.lock
rm .gsd/completed-units.json
Then /gsd auto to restart from current disk state.
Reset routing history
If adaptive model routing is producing bad results, clear the routing history:
rm .gsd/routing-history.json
Full state rebuild
/gsd doctor
Doctor rebuilds STATE.md from plan and roadmap files on disk and fixes detected inconsistencies.
Getting Help
- GitHub Issues: github.com/gsd-build/GSD-2/issues
- Dashboard:
Ctrl+Alt+Gor/gsd statusfor real-time diagnostics - Forensics:
/gsd forensicsfor structured post-mortem analysis of auto-mode failures - Session logs:
.gsd/activity/contains JSONL session dumps for crash forensics
LSP (Language Server Protocol)
"LSP isn't available in this workspace"
GSD auto-detects language servers based on project files (e.g. package.json → TypeScript, Cargo.toml → Rust, go.mod → Go). If no servers are detected, the agent skips LSP features.
Check status:
lsp status
This shows which servers are active and, if none are found, diagnoses why — including which project markers were detected but which server commands are missing.
Common fixes:
| Project type | Install command |
|---|---|
| TypeScript/JavaScript | npm install -g typescript-language-server typescript |
| Python | pip install pyright or pip install python-lsp-server |
| Rust | rustup component add rust-analyzer |
| Go | go install golang.org/x/tools/gopls@latest |
After installing, run lsp reload to restart detection without restarting GSD.