06a3bd532d
Соответствует spec v1.1 (544c8f3). Изменения: Task A1 (ADR-011 text inside plan): - Decision #2 «Observer scope B» расширено: упоминание 5 mandatory fields (включая primary_rationale 7 sub-fields) + routing_decision events для цепочек + что это enables factor analysis. Task B3 (observer-stop-hook.test.mjs + observer-stop-hook.mjs): - REQUIRED_FIELDS расширен с 4 до 5 ('primary_rationale'). - Новая константа RATIONALE_FIELDS (7 полей) + validateRationale() функция, вызываемая внутри appendEpisode после top-level validation. - buildEpisodeFromContext возвращает primary_rationale (либо из ctx, либо default с extracted hints из ctx.skill_id/triggers_matched/etc). - Tests: было 5 → стало 8. Новые: «throws when primary_rationale field missing», «persists routing_decision events with structured fields», «preserves user-provided primary_rationale unchanged». Все old fixtures обогащены primary_rationale: defaultRat(). Task B6 (aggregation-template.md): - Новая большая секция «Factor analysis matrix (v1.1+)» с 5 осями факторов + cross-tab factor×factor. Tables для каждой оси: triggers_matched, candidates_dropped_because, boundaries_applied, hard_floor.rules, task_classification. Self-review: - Spec coverage table +row для §5.2.1. Связано: spec v1.1 (544c8f3), plan v1.0 (ca93cf7), spec v1.0 (dd5bded). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>