# Perplexity Pack — План 1 (v12, active + owner waiver): перенос конфигурации

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

**Goal:** Аддитивно перенести три АКТИВНЫХ блока серверов research-слоя в main `.mcp.json` floor-safe способом, с зафиксированным waiver владельца по денежному риску.

**Architecture:** Вет (research-vet.md) и дом-README уже на диске (plan-v6). Только перенос. Операции floor-safe (Edit/Write + `echo`/`cp`). Серверы активные (решение владельца), ключи из user env.

**Tech Stack:** харнес Write/Edit, `echo`/`cp`, 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 НЕ требуется по решению владельца; ответственность за
расход — на владельце. Контроль расхода — операционная дисциплина (точечно, без автономных циклов).

## Техническая ясность по «расходу при загрузке» (ответ на замечание судьи)

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

## Переговоры

**Позиция контроллера.** Перенос конфигурации тратит $0; платный расход — только при явном
search-вызове (контролируется контроллером, не автономно). Владелец явно принял риск (waiver выше),
отклонив DEFERRED и consent-gate. Технического cost-ceiling на уровне MCP не существует; реальные
контроли — дисциплина + deferred-tools + load≠call (выше). Прошу принять waiver владельца либо
эскалацию к владельцу.

```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":".gitignore","ref":"D3"},
  {"op":"Bash","object":"cp -n .mcp.json .mcp.json.bak-perplexity-pack-20260614","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 `.gitignore`, `.mcp.json`; Create `.mcp.json.bak-perplexity-pack-20260614` (`cp -n`).

- [ ] **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`.
- [ ] **Step 2: Защитить бэкап в .gitignore** — Read `.gitignore`, Edit: добавить `.mcp.json.bak-*`, если нет.
- [ ] **Step 3: Байт-в-байт бэкап** — Run: `cp -n .mcp.json .mcp.json.bak-perplexity-pack-20260614`.
- [ ] **Step 4: Добавить три АКТИВНЫХ блока** — Read `.mcp.json`, Edit: перед `_disabled_marketing_servers_note` добавить активные `mcpServers` `perplexity`/`exa`/`firecrawl` (образец `openapi`/`sentry`; env `${VAR}`; comment: вердикт ПРИНЯТ + «платный»). Существующие блоки не трогать. JSON валиден.

---

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

- Ключи — Step 1 (`:+set`). Бэкап — Step 3 `cp -n` (байт-в-байт, идемпотент), gitignored Step 2.
- Валидация — пост-Edit Read + загрузка MCP при перезапуске. Откат — из бэкапа / `git checkout` (владелец).

## Self-Review

- Покрытие: Task 3 → {#D3}. Floor-safe. Waiver владельца + load≠call зафиксированы (ответ судье).
