Summary
gortex daemon start hangs permanently when warming a PHP/WordPress plugin repo (~838 files). The daemon stalls at exactly 12 of 825 files with CPU pegged at ~185% indefinitely, blocking the shared daemon's status socket. The standalone indexer (gortex index <path>) processes the same repo fully in under 1 second (825 files / 9.4k nodes / 31k edges).
Version
gortex v0.47.0+775d8bb3
commit: 775d8bb3
built: 2026-06-16T22:36:07Z
go: go1.26.4
os/arch: darwin/arm64
macOS 15.x, Apple Silicon (M-series).
Reproduction steps
- Clone
mirlindv/nauticdb (PHP/WordPress API stack, ~838 files, ~392 .php files, multiple custom plugins).
gortex track ~/nauticdb — repo appears in config.
gortex daemon start --detach
- Watch daemon status: progress freezes at 12/825 files, CPU stays at ~185% indefinitely (verified after 15+ minutes — never advances).
- Other repos in the same daemon (Go, PHP/WordPress yachtsummary at ~1.5k files) warm correctly.
gortex index ~/nauticdb succeeds immediately: 825 files indexed / 9.4k nodes / 31k edges / <1s.
Behaviour
- Daemon log shows
serverstack: resolve-time LSP hot path stage is active when the hang begins.
- The hang appears tied to the live semantic enrichment path in the daemon warm phase — the standalone indexer (which skips live LSP enrichment) is unaffected.
- No progress messages after the stall point; the status socket becomes slow/unresponsive while CPU is pegged, poisoning the shared multi-repo daemon.
Repo structure (plugin directories in walk order, first ~12 files)
wp-content/plugins/
ai-yacht-chat/ # first in alpha walk
claw_api/
custom_api/
dma-merge-tool/
dma_yachts_api/
mo_filter/
mo_yachtfolio_import/
mo_yachtsummary_connector/
nauticdb/ # core plugin
...
The stall is consistent at walk-order files 1-12 across multiple daemon restarts. The exact culprit file has not been isolated (each bisect attempt takes 5-15 minutes per test cycle with daemon restart risk).
Attempted workarounds
| Workaround |
Result |
semantic: false + enrich_on_watch: false in per-repo .gortex.yaml |
No effect — daemon ignores per-repo semantic toggle during warm phase |
exclude: the three largest plugin dirs (mo_filter/, propscraper/, uploads/) |
No effect |
| Cloning locally (vs. Google Drive mount) |
Stall persists on local NVMe clone |
gortex daemon install-service (launchd) |
Unrelated breakage (TCC + EOF) — not relevant to this bug |
No --no-semantic flag exists on daemon start (only on gortex mcp), so global semantic-off via CLI is not available.
Expected behaviour
The daemon should either:
- Warm the repo (preferably respecting
semantic: false in per-repo .gortex.yaml to skip LSP enrichment), or
- Time-out the resolve-time enrichment for a single file and continue past it, rather than hanging the entire warm pass.
Impact
Cannot add this repo to the shared multi-repo daemon. Workaround: run gortex index <path> on-demand (works fine). Cross-repo call-graph queries can't include this codebase.
Additional context
- Three other repos in the same daemon warm cleanly: a Go app (~8.5k files), a PHP/WordPress site (~1.5k files / 19.8k nodes), a smaller WP site (~1.2k files / 19.8k nodes).
- The nauticdb PHP plugins contain some unusual patterns: MadelineProto IPC (Telegram gateway), a custom SCIP-like type system, and large auto-generated PHP files. One of these may be triggering an edge-case in the LSP resolve pass.
- Happy to share repo access or a minimal reproducer if helpful.
Summary
gortex daemon starthangs permanently when warming a PHP/WordPress plugin repo (~838 files). The daemon stalls at exactly 12 of 825 files with CPU pegged at ~185% indefinitely, blocking the shared daemon's status socket. The standalone indexer (gortex index <path>) processes the same repo fully in under 1 second (825 files / 9.4k nodes / 31k edges).Version
macOS 15.x, Apple Silicon (M-series).
Reproduction steps
mirlindv/nauticdb(PHP/WordPress API stack, ~838 files, ~392.phpfiles, multiple custom plugins).gortex track ~/nauticdb— repo appears in config.gortex daemon start --detachgortex index ~/nauticdbsucceeds immediately:825 files indexed / 9.4k nodes / 31k edges / <1s.Behaviour
serverstack: resolve-time LSP hot pathstage is active when the hang begins.Repo structure (plugin directories in walk order, first ~12 files)
The stall is consistent at walk-order files 1-12 across multiple daemon restarts. The exact culprit file has not been isolated (each bisect attempt takes 5-15 minutes per test cycle with daemon restart risk).
Attempted workarounds
semantic: false+enrich_on_watch: falsein per-repo.gortex.yamlexclude:the three largest plugin dirs (mo_filter/,propscraper/,uploads/)gortex daemon install-service(launchd)No
--no-semanticflag exists ondaemon start(only ongortex mcp), so global semantic-off via CLI is not available.Expected behaviour
The daemon should either:
semantic: falsein per-repo.gortex.yamlto skip LSP enrichment), orImpact
Cannot add this repo to the shared multi-repo daemon. Workaround: run
gortex index <path>on-demand (works fine). Cross-repo call-graph queries can't include this codebase.Additional context