Files
portal/docs/routing-off-phase.md
T
Дмитрий 05c22b3364 feat(инструменты): #90 grilling — допрос по готовому решению + нормативная синхронизация
Зарегистрирован вендоренный скил grilling из mattpocock/skills, MIT,
skills/productivity/grilling. Установлен user-level ~/.claude/skills/grilling/
— вне репозитория, единственная копия: проектная удалена во избежание
задвоения.

Роль — безжалостный допрос по УЖЕ имеющемуся плану или решению: обход дерева
развилок ветка за веткой, по одному вопросу за раз, к каждому вопросу свой
рекомендуемый ответ, факты ищутся самостоятельно, работа не начинается до
явного подтверждения заказчика.

Надстройка проекта поверх немодифицированного тела апстрима, отделена
заголовком:
- протокол docs/grilling/ГГГГ-ММ-ДД-тема.md — разделы Решили / Отрезали и
  почему / Осталось открытым; пишется по ходу, перечитывается после компакта
  контекста. Закрывает класс «договорённость сгорела при компакте»
- порядок обхода «сначала необратимое» — деньги, схема БД, что уходит клиенту
- критерий остановки: пустой фронт развилок с объявлением вслух
- «слушай, не защищай»

Граница ADR-021 GR1 с #55 discovery-interview — разрез по наличию решения:
grilling куёт решение, которое у заказчика уже есть, поэтому наводящий
рекомендуемый ответ обязателен; discovery-interview вскрывает проблему, когда
решения ещё нет, и там наводящие ответы запрещены. GR2 — граница с
brainstorming #19. GR3 — вендоринг без модификации апстрима.

Реестр: узел #90 + контракт, связка L1 между brainstorming и writing-plans,
классификация planning вес 0.8 — ниже первичных решателей. Автотаблицы
перегенерированы через registry-render, карта цепочек дополнена.

Нормативная синхронизация квинтета:
- Tooling Прил. Н v2.26 — новый §4.63, счётчик 87→88 и 107→108, off-phase
  +57→+58, футер
- Pravila v1.45 — §13.2 новый абзац, запись в истории версий
- PSR_v1 v3.25 — R10.1 Блок 1 note, запись в истории версий
- CLAUDE.md v2.49 — через плагин claude-md-management, §0 версии квинтета,
  §3.4 +#90, §9 запись

Попутно снят застарелый рассинхрон шапки Tooling: числа 84/104 остались от
майской версии, приведены к 88/108, дописаны research-tooling и узлы #87–#90.

Проверки: registry-render --check зелёный на обоих файлах,
observer-chain-map-checker OK 17 chains in sync, загрузчик видит 90 узлов,
markdownlint 0 ошибок, cspell 0 ошибок.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 16:16:25 +03:00

142 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Routing-аид: задача → off-phase узел
> **Назначение.** Quick-reference: триггер задачи → какой off-phase узел тулчейна
> взять (Tooling §4.11–§4.42). Закрывает пробел SYSTEM-аудита 18.05.2026 (Rec3):
> 30 off-phase инструментов регулировались плоским 3-блочным реестром PSR_v1 R10.1
> без матрицы «задача → узел».
>
> **Scope.** Только off-phase (#31#67 + ruflo, infrastructure). Активные фазовые
> инструменты (#1#29 + #30 Frontend Design) — карта CLAUDE.md §3.1/§3.2/§3.4.
> Superpowers-skills и hard-rules — Pravila §12.2 (не дублируется здесь).
>
> **Источник истины.** Tooling §4.X (детальное описание каждого узла), Pravila §13.2
> (категоризация off-phase), PSR_v1 R10.1 (3-блочный реестр ролей).
>
> **Версия.** 1.7 (14.06.2026 — research-tooling: +3 строки routing #87-#89 (классификация `research`) + связка L17 (research chain), ADR-019; узлы perplexity/exa/firecrawl, 20-я off-phase подкатегория). 1.6 (22.05.2026 — C1 marketing-tooling: +10 строк routing #74-#83 + связка L16 (marketing chain), ADR-015). 1.5 (21.05.2026 — A8 install-sync: #68 ZAP + #70 Ward установлены портативно → строки routing #68/#70 обновлены, статус pending install снят, setup-доки `docs/security/{zap,ward}-setup.md`). 1.4 (21.05.2026 — A8 infosec-tooling: +6 строк routing #68-#73 + связка L15 (security go-live chain), ADR-014; #69 Nuclei/#70 Ward — CLI (не MCP), #68 ZAP/#70 Ward pending install. 1.3 (20.05.2026) — A1 backend-tooling: +4 строки routing #64-#67 + связка L14 + scope §4.11→§4.42, ADR-013. v1.2 — finance-tooling: +3 строки routing #61-#63 + связка L13 + scope, ADR-012. v1.1 18.05.2026 вечер — аудит дисциплины R15: +строка «диагностика
> конверсии» → process-analysis #53 (M3); +note про UI-пул #31/#32 как делегирующие
> строки, не R15-routed (M1). v1.0 — Rec3 SYSTEM-аудита). Триггеры — формулировки
> заказчика или явные ключевые слова в промпте.
---
## Таблица routing
<!-- auto:routing-table:begin -->
<!-- This block is auto-generated from docs/registry/nodes.yaml. Do not edit by hand. -->
| Классификация | Рекомендуемый узел | Вес |
|---|---|---|
| `analysis` | #25 Semgrep + Semgrep MCP | 1 |
| `analysis` | #39 Trail of Bits Skills | 1 |
| `analysis` | #53 process-analysis | 1 |
| `bugfix` | #18 Pest 4 | 1 |
| `bugfix` | #34 Sentry MCP | 1 |
| `bugfix` | #19 Superpowers v5.1.0 | 0.8 |
| `cleanup` | #11 Laravel Pint | 1 |
| `cleanup` | #12 Larastan | 1 |
| `feature` | #19 Superpowers v5.1.0 | 1 |
| `knowledge_graph_query` | #86 graphifyy | 1 |
| `marketing` | #74 marketing | 1 |
| `marketing` | #75 marketingskills | 1 |
| `marketing` | #76 brand-voice | 1 |
| `marketing` | #77 marketing-ru | 1 |
| `marketing` | #78 Яндекс.Метрика MCP | 1 |
| `marketing` | #79 Яндекс.Директ+Wordstat MCP | 1 |
| `marketing` | #80 Telegram MCP | 1 |
| `marketing` | #81 Postiz | 1 |
| `normative_sync_needed` | #84 normative-sync | 1 |
| `planning` | #19 Superpowers v5.1.0 | 1 |
| `planning` | #41 CCPM | 1 |
| `planning` | #42 product-management | 1 |
| `planning` | #90 grilling | 0.8 |
| `prod_deploy_imminent` | #85 prod-deploy-validator | 1 |
| `refactor` | #11 Laravel Pint | 1 |
| `refactor` | #12 Larastan | 1 |
| `refactor` | #43 deptrac | 1 |
| `refactor` | #64 Rector | 1 |
| `refactor` | #65 PHP Insights | 1 |
| `refactor` | #19 Superpowers v5.1.0 | 0.8 |
| `research` | #87 perplexity MCP | 1 |
| `research` | #88 exa MCP | 1 |
| `research` | #89 firecrawl MCP | 1 |
| `security` | #68 OWASP ZAP | 1 |
| `security` | #69 Nuclei | 1 |
| `security` | #70 Ward | 1 |
| `security` | #71 pdn-152fz-audit | 1 |
| `security` | #72 threat-model | 1 |
| `security` | #73 security-go-live | 1 |
<!-- auto:routing-table:end -->
> **† UI-пул (#31 UPM / #32 21st) — делегирующие строки.** R15.6 явно: к UI-пулу R15
> не применяется — это UI-задачи по природе, их ведёт R14 pipeline. Строки выше —
> не off-phase routing, а указатель «иди в R14», включены для полноты единого
> reference. Фактический регламент UPM/21st — PSR_v1 R14.3/R14.4, не эта таблица.
---
## Канонические связки 2+ узлов
> Закрывает Rec4 SYSTEM-аудита 18.05.2026 («сводного списка рекомендованных комбо
> нет — синергия размазана по 125 полям `together` в NODE_DETAILS карты»).
> Здесь — 12 цепочек, где совместная работа узлов даёт эффект сильнее суммы. UI-рендер
> панели «🔗 Связки» на карте — отдельный future iter; данные ниже — основа для него.
| # | Цепочка | Зачем |
|---|---|---|
| L1 | `discovery-interview` (FEATURE) → `brainstorming``grilling` (#90) → `writing-plans``subagent-driven-development` | Полный цикл от боли заказчика до атомарных коммитов. Передаёт discovery-brief в brainstorming без re-asking; выбранное решение обстреливается grilling'ом до пустого фронта развилок (протокол `docs/grilling/`); план потом исполняется параллельными субагентами. |
| L2 | `discovery-interview` (SYSTEM) + `audit-portal` | Ориентация по состоянию (где мы) + вердикт здоровья портала. Snapshot 18.05 — пример L2 в действии. |
| L3 | `process-analysis` (#53) ↔ `process-modeling` (#52) | As-is из кода ↔ to-be BPMN. Парная работа: #53 вскрывает узкое место, #52 моделирует целевую схему. Разрез по слою-источнику — ADR-009. |
| L4 | `mermaid-skill` (#37) ← `adr-kit` (#36) / `process-modeling` (#52) / `operations` (#51) | Mermaid рендерит C4 / BPMN / process-doc для трёх потребителей. Single source of truth для диаграмм. |
| L5 | `adr-kit` (#36) + `architecture-patterns` (#38) + `deptrac` (#43) | Архитектурный треугольник: решение → паттерн-обоснование → fitness-контроль (статический enforcement через lefthook job 10). |
| L6 | `Trail of Bits` (#39) + `Semgrep MCP` (#25) + `Security Guidance` (#40) + `/security-review` | Слоистый security: блокирующий PreToolUse-хук на правке → inline SAST → on-demand глубокий аудит → review всего бренча. TB1 / SG1 — границы. |
| L7 | `openapi-mcp-server` (#47) + `api-docs agent` + `Boost MCP` (#10) | Интеграционная разработка: спека-introspection + генератор спеки + Laravel API. Раздел A3 карты. |
| L8 | `systematic-debugging` + `Sentry MCP` (#34) + `Redis MCP` (#35) | Runtime-баги: ≥3 гипотезы → факты из production (Sentry) + factual из очередей/кэша (Redis). Snapshot указал как недоиспользуемую связку. |
| L9 | `CCPM` (#41) + `product-management` (#42) + `GitHub MCP` (#3) | PRD → эпики → GitHub issues. CCPM делает трассируемость; product-management — продуктовые церемонии; GitHub MCP — issue/PR-операции. |
| L10 | `promptfoo` (#48) + `Data Scientist skill` (#49) + `claude-api skill` (Sonnet 4.6 SDK) | LLM-фича: eval LLM-промптов + ML-воркфлоу + Anthropic SDK. ML1 — promptfoo только вручную/CI. |
| L11 | `skill-creator` (#56) + `hookify` (#58) + `plugin-dev` (#57) | Расширение Claude-инфраструктуры: ≥3 повторений workflow → новый скил / ошибка повторяется → новый хук (HK1 pre-check) / задача требует плагина → plugin-dev. |
| L12 | `claude-md-management` (#33) + `revise-claude-md` skill | Захват session-learnings → CLAUDE.md update. Единственный канал §5 п.10. |
| L13 | `billing-audit` (#62) + `Pest` (#18) + `Boost` (#10) + `Sentry`/`Redis` (#34/#35) → `ru-tax-accounting` (#63) | Финансовая цепочка: аудит денежных инвариантов кода (billing-audit) тестами (Pest) на моделях (Boost) с runtime-фактами (Sentry/Redis) → перевод выверенной выручки в учётно-налоговый контекст (ru-tax). C6→C7. Граница — ADR-012. |
| L14 | `Rector` (#64) → `PHP Insights` (#65) → `Larastan` (#12) → `deptrac` (#43) | backend-quality chain: авто-трансформация кода (Rector) → метрики сложности/архитектуры (PHP Insights) → типовой статанализ (Larastan) → fitness направления слоёв (deptrac). Все на одном PHP-коде, разные оси. Anti-pattern: Rector-автоправка и PHP Insights-метрика — разные фазы, не один блокирующий шаг (ADR-013). |
| L15 | `security-go-live` (#73) → статика (`gitleaks` #8 / `Semgrep` #25 / `Ward` #70 / `Trail of Bits` #39) → `pdn-152fz-audit` (#71) → `threat-model` (#72) → динамика (`Nuclei` #69 широта → `OWASP ZAP` #68 глубина, цель 127.0.0.1 IS8) | security go-live chain: единый прогон перед публикацией → вердикт GO/NO-GO. #73 оркеструет, не заменяет D3 (IS7). Anti-pattern: ZAP/Nuclei в pre-commit хук (тяжёлые, нужна запущенная цель); #73 ≠ audit-portal (полный 14-фазный аудит). ADR-014. |
| L16 | `brainstorming``marketing` (#74) → `marketing-ru` (#77) → каналы (#78 Метрика / #79 Wordstat / #80 Telegram / #81 Postiz) | marketing chain: entry-скил #74 оркеструет RU-заземлённую маркетинговую работу через специфику рынка (#77) и канальные MCP (#78-#81). Anti-pattern: #82 DataForSEO / #83 Unisender Go — DEFERRED, не использовать до Б-1. ADR-015. |
| L17 | `brainstorming``perplexity` (#87 ask/research) → `exa` (#88 discovery) → `firecrawl` (#89 deep-read) | research chain: разведка широты на крупных/абстрактных задачах — ранжированный ответ-с-источниками (perplexity) → семантическое обнаружение источников по смыслу (exa) → глубокое чтение/обход страниц (firecrawl). Anti-pattern: подмена context7 #60 (открытый веб vs SDK-доки) или graphify #86 (наружу vs внутренний граф проекта); платные API — без авто-расхода. ADR-019. |
**Anti-pattern связок** (не комбинировать в одной задаче):
- **UPM (#31) ↔ Frontend Design (#30) ↔ 21st (#32)** — PSR_v1 R14.5 запрещает параллельное использование UI-генераторов (один pipeline, один решатель).
- **ruflo Queen ↔ subagent-driven-development напрямую** — ruflo сейчас изолирован (Pravila §14.9 dormant). При реактивации связь снова работоспособна.
- **`mcp_figma` (DEFERRED) → Frontend Design code-gen** — ADR-006 FM1: extract-only для Figma; code-gen дублировал бы FD.
- **`Data Scientist skill` (#49) → решатель в коде** — knowledge-only, не пишет код за вас (R10.2 PSR_v1).
---
## Дисциплина выбора
1. **Не подменяй фазовые инструменты off-phase.** Если задача попадает под фазу
0/1/2/3 (Tooling §2–§5) — берём фазовый узел. Off-phase — резерв и специализация.
2. **DEFERRED-узлы (#44 Figma / #50 Jupyter / #54 n8n / #67 NightOwl)** — не использовать без явного
возобновления (нет аккаунта / нет Python ML / нет n8n в стеке / нет Linux с pcntl+posix).
Запрос «через Figma» или «через NightOwl» при текущем состоянии = эскалация заказчику.
3. **Изолированные узлы (ruflo на 18.05.2026)** — не маршрутизировать. Запрос
с `queen`/`королева` сейчас выполняется напрямую (§14 dormant). При запросе
реактивации — план в memory `feedback_ruflo_isolated.md`.
4. **UI-пул (#31 UPM / #32 21st)** — только через R14 pipeline. Никогда не решатель,
всегда материал; обязательны R6.0 фильтр + R6.1 hard-override Forest + FD адаптация.
5. **Hard-rules (Pravila §12 / §14 / §15)** перевешивают этот routing-аид при коллизии.
6. **Граничные случаи между похожими узлами** — кросс-ссылки в Tooling §4.X (например
#53 process-analysis ↔ #55 discovery-interview через слой-источник ADR-009;
#90 grilling ↔ #55 discovery-interview через наличие решения ADR-021 GR1;
#39 ToB ↔ #25 Semgrep MCP через scope TB1).
---
## Связано
- [docs/Tooling_v8_3.md](Tooling_v8_3.md) §4.11–§4.35 — детальные описания узлов.
- [docs/Pravila_raboty_Claude_v1_1.md](Pravila_raboty_Claude_v1_1.md) §13.2 — категоризация off-phase.
- [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) R10.1 — 3-блочный реестр ролей; R14 — UI-пул pipeline.
- `CLAUDE.md` §3.3 — оперативная карта с командами установки.
- `docs/discovery/2026-05-18-system-audit-brain.md` Rec3 — источник решения.
- `docs/adr/*.md` — границы между категориями (ADR-003/004/005/006/007/008/009/010).