# Perplexity Pack — План 1 (v13, active, git-backup): перенос конфигурации

> **For agentic workers:** REQUIRED SUB-SKILL: superpowers:executing-plans (inline). Steps use checkbox syntax.

**Goal:** Аддитивно перенести три АКТИВНЫХ блока серверов research-слоя в main `.mcp.json` floor-safe способом (только харнес Write/Edit + echo). Бэкап — git (файл tracked), backup-файл не нужен.

**Architecture:** Вет (research-vet.md) и дом-README уже на диске (plan-v6). Только перенос. `.mcp.json` под git-контролем → его текущая закоммиченная версия = байт-точный бэкап (откат `git checkout`). Файло-мутирующий bash (`cp`/`node -e`) пол режет (подтверждено Δ7+ на v12); Write-копия рискованна по усечению (замечание судьи к v7) — поэтому бэкап делаем через git, а не файл-копией. Правка — Edit (пол не гейтит).

**Tech Stack:** харнес Write/Edit, `echo`, git, JSON config `.mcp.json`.

## Цель

Доделать перенос конфигурации Perplexity Pack активными блоками. Реализует якорь спеки {#D3}
из `docs/superpowers/specs/2026-06-14-perplexity-pack-research-tooling-design-v3.md`.

## WAIVER владельца (зафиксировано по требованию судьи)

**Владелец 2026-06-14 явно выбрал активацию (Вариант 2), приняв денежный риск платных API**
(Perplexity sonar-* / Exa / Firecrawl). Сознательно отклонил DEFERRED (Вариант 1) и постройку
consent-gate (Вариант 3). Явный owner-waiver: технический cost-ceiling НЕ требуется по решению
владельца; ответственность за расход — на владельце; контроль — операционная дисциплина.

## Техническая ясность (cost при загрузке)

- **Загрузка MCP-сервера ≠ платный вызов**: `initialize`+`tools/list` — локальное объявление
  инструментов, БЕЗ обращения к платному эндпоинту. Расход $0 при загрузке. Первый платный
  вызов — только явный `tools/call` (perplexity_ask / web_search_exa / firecrawl_scrape),
  инициируемый контроллером, не автономно.
- **bulk-load-риск** (исторический) — перегруз по ЧИСЛУ инструментов (API 400, падение
  субагентов), НЕ денежный расход; митигация — deferred-tools (схемы по запросу).

## Бэкап и откат (git, не файл-копия)

`.mcp.json` — tracked-файл. Бэкап = текущая закоммиченная версия в git (байт-точная). Откат при
ошибке — владелец `git checkout -- .mcp.json` (или `git restore`). Backup-файл не создаём:
`cp`/`node -e`-копии пол блокирует (Δ7+), Write-копия рискует усечением (✅ замечание судьи v7);
git — надёжнее всех (версионирован, байт-точен).

```skills-json
[]
```

```steps-json
[
  {"op":"Bash","object":"echo \"keys: PERPLEXITY=${PERPLEXITY_API_KEY:+set} EXA=${EXA_API_KEY:+set} FIRECRAWL=${FIRECRAWL_API_KEY:+set}\"","ref":"D3"},
  {"op":"Edit","object":".mcp.json","ref":"D3"}
]
```

```verified-context-json
[
  {"id":"vc1","kind":"EXTRACTED","ref":".mcp.json","anchor":"\"$schema\": \"https://raw.githubusercontent.com/anthropics/claude-code/main/schemas/mcp.json\""},
  {"id":"vc2","kind":"EXTRACTED","ref":"docs/research/research-vet.md","anchor":"Провенанс-вет research-tooling"},
  {"id":"vc3","kind":"EXTRACTED","ref":"tools/cost-pricing.mjs","anchor":"export const PRICING = Object.freeze("}
]
```

---

## Task 3: Floor-safe перенос АКТИВНЫХ блоков в main `.mcp.json`

**Files:** Modify `.mcp.json`. Бэкап — git (без backup-файла).

- [ ] **Step 1: Проверка наличия ключей (без утечки)** — Run: `echo "keys: PERPLEXITY=${PERPLEXITY_API_KEY:+set} EXA=${EXA_API_KEY:+set} FIRECRAWL=${FIRECRAWL_API_KEY:+set}"` — Expected: `keys: PERPLEXITY=set EXA=set FIRECRAWL=set` (`:+set` печатает «set», не значение).
- [ ] **Step 2: Добавить три АКТИВНЫХ блока** — Read `.mcp.json` (авторизовано планом), затем Edit: перед ключом `_disabled_marketing_servers_note` добавить активные `mcpServers` по образцу `openapi`/`sentry`:
  - `perplexity` → command `npx`, args `["-y","@perplexity-ai/mcp-server"]`, env `{ "PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}" }`, comment (research-канал; вет ПРИНЯТ; SLSA-provenance; MIT; платный sonar-*; ключ user env; research-tooling Tooling §3.3).
  - `exa` → `npx -y exa-mcp-server`, env `EXA_API_KEY`, comment (нейро-поиск; ПРИНЯТ; MIT; license-поле npm пусто — research-vet; платный).
  - `firecrawl` → `npx -y firecrawl-mcp`, env `FIRECRAWL_API_KEY`, comment (глубокое чтение/обход; ПРИНЯТ; MIT; платный).
  Все три ПРИНЯТ (`docs/research/research-vet.md`). Существующие блоки не трогать. JSON валиден.

---

## Безопасность правки (floor-safe)

- Ключи — Step 1 (`:+set`, без утечки).
- Бэкап — git (tracked `.mcp.json`). Откат — владелец `git checkout -- .mcp.json`.
- Валидация — пост-Edit Read + структурная сверка; MCP-серверы валидируют JSON при загрузке после перезапуска (битый → не стартуют, заметно).
- Только Edit/Write/echo → ни floor, ни Δ7+ не блокируют (cp/node убраны — пол их режет).

## Self-Review

- Покрытие: Task 3 → {#D3}. Floor-safe (нет файло-мутирующего bash). Бэкап git. Waiver + load≠call зафиксированы.
- `.gitignore` уже несёт `.mcp.json.bak-*` (v12 step 2) — безвредный остаток, backup-файла теперь нет.

## Примечания

- Перенос ПРИНЯТ-пакетов (все три). Live-smoke — после переноса + перезапуска владельцем.
