1d2d1ec6c9
Bug: findCausalChains flagged a chain whenever two episodes shared any file. CLAUDE.md / MEMORY.md / STATUS.md / episodes-YYYY-MM.jsonl / memory/*.md are touched by almost every turn (memory store, status regeneration, normative-doc updates) — sharing them is not evidence of causality, just baseline noise. Result: spurious chains on hot files crowded out the genuine signal. Fix: HOT_FILE_PATTERNS regex list + `isHotFile(path)` predicate. In findCausalChains, filter hot files out of BOTH the errored-episode file set AND the candidate-shared list. If only hot files were shared → no chain. If a non-hot file is also shared → the chain stands and the sharedFiles list contains only the non-hot ones. Tests: 4 new cases — CLAUDE.md / memory/*.md / episodes/STATUS/MEMORY sharing yields no chain; a turn sharing both CLAUDE.md AND /src/app.ts yields a chain with sharedFiles=['/src/app.ts'] only. 33/33 analyzer tests green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>