544c8f3081
User-requested перед запуском суб-агента: observer должен фиксировать не только факт выбора узла, но и причину — чтобы был возможен факторный анализ через /brain-retro. Изменения §5.2: - 4 обязательных поля → 5 (+primary_rationale на эпизод-уровне). - Новое событие routing_decision в массиве events[] (1 на каждое решение роутера в сессии; для цепочки из N — N событий). - Новая под-секция §5.2.1 — структура 7 полей (step / node_chosen / triggers_matched / candidates_considered / boundaries_applied / hard_floor / task_classification). primary_rationale — копия первого routing_decision для дешёвой агрегации без чтения events[]. - Полный JSON-пример эпизода с цепочкой из 2 узлов. Изменения §5.5: - /brain-retro aggregation расширен новой секцией «Факторная матрица»: таблица «узел × фактор × частота» + cross-tab «фактор × фактор». 5 осей факторов: triggers / dropped_because / boundaries / hard_floor.rules / task_classification. Эффект: /brain-retro теперь может выдавать утверждения уровня «#55 выбрался против #53 по ADR-009 7 раз и по triggers-match 5 раз», а не просто «#55 использован 12 раз». Это closes гэп факторного анализа. Header bump v1.0 → v1.1. ADR-011 текст в плане Task A1 будет обновлён следующим коммитом (план amendment). Связано:dd5bded(spec v1.0),ca93cf7(plan v1.0). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>