# План: Perplexity Pack — реестр узлов и таблицы соответствия (Plan 3)

## Цель

Подхватить три новых off-phase узла research-tooling — perplexity #87, exa #88, firecrawl #89 — из единого источника `docs/registry/nodes.yaml` и регенерировать
все производные таблицы соответствия «задача → инструмент». Реализует раздел {#D7}
дизайна и закрывает критерий {#D8} (пункт 5 + регрессия инструментов).

Состав работы:

- В `docs/registry/nodes.yaml` добавляются три карточки узлов (#87/#88/#89) с
  `category: off-phase`, `subcategory: research-tooling`, `status: active` и
  `triggers.classification: research` (по форме существующих off-phase MCP-узлов
  #78/#79/#80), плюс каноническая связка **L17** research chain
  (`brainstorming` → perplexity → exa → firecrawl).
- Авто-регенерируемые блоки приводятся в соответствие генератором
  `node tools/registry-render.mjs`: таблица соответствия в `docs/routing-off-phase.md`
  (регион `auto:routing-table`) и сводка реестра в `docs/Tooling_v8_3.md`
  (регион `auto:tooling-registry-summary`).
- В `docs/routing-off-phase.md` добавляется ручная строка связки L17 и поднимается
  версия заголовка.
- Карта `docs/automation-graph.html` (NODE_META baseline) и
  `docs/automation-graph-data.js` (NODE_SECTION) получают по три новых элемента.
- Фикстуры-счётчики `tools/registry-load.test.mjs` поднимаются под новое число узлов
  (86 → 89 nodes; active 78 → 81).
- Финальная регрессия инструментов остаётся зелёной.

```skills-json
[]
```

```steps-json
[
  {"op": "MultiEdit", "object": "docs/registry/nodes.yaml", "ref": "D7"},
  {"op": "MultiEdit", "object": "tools/registry-load.test.mjs", "ref": "D7"},
  {"op": "Bash", "object": "node tools/registry-render.mjs", "ref": "D7"},
  {"op": "Edit", "object": "docs/routing-off-phase.md", "ref": "D7"},
  {"op": "Edit", "object": "docs/automation-graph.html", "ref": "D7"},
  {"op": "Edit", "object": "docs/automation-graph-data.js", "ref": "D7"},
  {"op": "Bash", "object": "npx vitest run --root app --config vitest.config.tools.mjs", "ref": "D8"}
]
```

```verified-context-json
[
  {"id": "vc1", "kind": "EXTRACTED", "ref": "tools/cost-pricing.mjs", "anchor": "export const PRICING = Object.freeze("},
  {"id": "vc2", "kind": "EXTRACTED", "ref": "docs/registry/nodes.yaml", "anchor": "subcategory: \"knowledge-graph-tooling\""},
  {"id": "vc3", "kind": "EXTRACTED", "ref": "docs/routing-off-phase.md", "anchor": "<!-- auto:routing-table:begin -->"}
]
```
