0ca0c71a0f
Three independent fixes from brain-retro #6 root-cause analysis: 1. **.claude/settings.json** — UserPromptSubmit `router-prehook.mjs` timeout raised 10s→60s. First fetch on Windows triggers TLS handshake which can take 20+ seconds; LLM classifier had perAttemptTimeoutMs=30s with 4 retries but the WRAPPING hook timeout killed the process at 10s before first attempt completed. Result: only 1 of 325 episodes since 24.05 actually classified via Sonnet 4.6 (rest fell to regex fallback or left state-file untouched). 2. **tools/observer-transcript-parser.mjs:937-959** — removed `classifMapNode` silent fallback in `primary_rationale.recommended_node`. When router-state file had no recommended_node, the parser was filling it with `recommendNode(classifyTask(prompt), ...)` — a keyword-regex that LOOKED like a classifier signal but wasn't. brain-retro #6 analysis showed 60-70% of «recommended_node» values were just regex false-positives, polluting the «direct_ignored_rec» metric. Now recommended_node is null when no real classifier signal exists. 3. **.claude/skills/brain-retro/SKILL.md** — added MANDATORY DIGITAL ANALYSIS block at the top of Procedure. Every /brain-retro run MUST emit 7 quantitative tables (path-type, node_chosen, recommended_node, GAP, outcome×group, classifier presence, per-classification discipline). Also forbids jargon in sanity questions (per memory `feedback_plain_language.md`) — owner is non-developer. Tests: - tools/observer-transcript-parser.test.mjs — 2 tests updated to assert recommended_node=null on no-state-file (was '#19'). Confirmed RED → fix → GREEN. - tools/router-classifier.test.mjs — 10 new parametrised tests for project-vocabulary anchors (webhook/queue/migration/RLS/etc). Already GREEN with current ANCHOR_NOUNS — prefilter uses len<15 threshold which doesn't catch typical business prompts. Regression: 899 vitest tests passed (1 file failure pre-existing in .claude/worktrees/supplier-project-failover/ — empty file, unrelated). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>