diff --git a/CLAUDE.md b/CLAUDE.md index 06aeea2..40dc1ee 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -107,7 +107,7 @@ 13. **Не запрашивать override `ремонт инфраструктуры` для docs-only коммитов/пушей.** С коммита `8266755c` (27.05.2026) хук `enforce-verify-before-push` автоматически пропускает изменения, где **все** staged/unpushed файлы кончаются на `.md` (memory/CLAUDE.md/spec/plan/SKILL.md). Override остаётся для смешанных или кодовых коммитов. Логика — [tools/enforce-hook-helpers.mjs](tools/enforce-hook-helpers.mjs) `isDocsOnlyChange` + `listChangedFiles`. **NB v2.40 (29.05.2026):** «docs-only» считает **строго `.md`-суффикс**. Добавление `cspell-words.txt` / `package.json` / `lefthook.yml` / любого конфиг-файла **рядом со spec.md** делает diff mixed → verify-before-push активируется → нужен свежий vitest-sentinel (формула — memory `feedback_vitest_sentinel_recipe.md`) ИЛИ override-фраза `срочно` / `ремонт инфраструктуры` в user prompt'е. Прецедент: commit `46c43169` (spec v3.6-3.8 sweep) — `cspell-words.txt` сделал mixed-diff, потребовал ~4s vitest для sentinel'а перед retry push. -14. **Перед открытым codebase-вопросом — сначала `/graphify query`, потом Read/Grep/Glob.** Граф проекта (graphify #86, ADR-017) — 6305 узлов / 6753 рёбер / 1009 communities, покрывает docs/ + .claude/ + app/. Junction `graphify-out/` → spike worktree `.claude/worktrees/graphify-spike/graphify-out/`. Применяется к **структурным/cross-layer вопросам**: «где наш скил X используется», «какие концепты связаны с биллингом», «куда тянется зависимость от Y», «что упадёт если изменить Z». **Не применяется** к: (а) известному пути файла → Read напрямую; (б) узкому regex-поиску → Grep напрямую; (в) операциям записи/коммита; (г) если граф устарел значительно (>2 недели без `/graphify --update`) — read-fallback допустим, в ответе обозначить. Workflow: `/graphify query "вопрос"` → анализ выдачи (`source_location` как цитаты) → при необходимости Read/Grep по упомянутым узлам. Граница с context7 (#60) / Boost (#10) / openapi-mcp (#47) / Sentry (#34) — ADR-017 §«Граничные правила (locked)». +14. **Перед открытым codebase-вопросом — сначала `/graphify query`, потом Read/Grep/Glob.** Граф проекта (graphify #86, ADR-017) — **после сплита ADR-020 (app/ вырезан) `graphify-out/graph.json` = частичный срез ~39 узлов, только docs/, без app/; `graphify-out/` теперь обычная папка, не junction на spike-worktree. Прежний полный граф (6305 узлов / 6753 рёбер / 1009 communities, покрывал docs/ + .claude/ + app/) жил в junction, которого больше нет — для полного актуального графа нужен `/graphify --update`.** Применяется к **структурным/cross-layer вопросам**: «где наш скил X используется», «какие концепты связаны с биллингом», «куда тянется зависимость от Y», «что упадёт если изменить Z». **Не применяется** к: (а) известному пути файла → Read напрямую; (б) узкому regex-поиску → Grep напрямую; (в) операциям записи/коммита; (г) если граф устарел значительно (>2 недели без `/graphify --update`) — read-fallback допустим, в ответе обозначить. Workflow: `/graphify query "вопрос"` → анализ выдачи (`source_location` как цитаты) → при необходимости Read/Grep по упомянутым узлам. Граница с context7 (#60) / Boost (#10) / openapi-mcp (#47) / Sentry (#34) — ADR-017 §«Граничные правила (locked)». 15. **Memory writes требуют `coverage: direct:memory-sync` в свежем turn'е.** Hook `enforce-memory-coverage` не принимает chain-каналы (`chain:commit-push-mem-sync` и подобные) — считает stale/absent. Если memory updates запланированы как часть multi-step задачи (commit + push + CLAUDE.md + memory), планировать memory phase **отдельным turn'ом** с явным `coverage: direct:memory-sync`. Альтернатива — override-фраза `memory dump` в user prompt'е, она снимает hook на текущий turn. Прецедент в сессии 29.05.2026 (commit `46c43169` v3.6-3.8 sweep): chain `commit-push-norm-sync-mem-sync` был отклонён хуком на 4-м шаге задачи; finalization доделана только после фразы `memory dump` от заказчика.