# Handoff — приёмочный тест боевого liderra.ru перед продажей (для следующей сессии)

**Дата:** 18.06.2026. Кодовая фраза стены: **«роутер-наставник»**.
**Цель владельца:** прогнать портал «глазами пользователя» на боевом liderra.ru с 6-7 тест-клиентами, убедиться, что платящему клиенту всё реально работает (вход→проект→заказ поставщику→поставка→сделки→деньги→изоляция), ПЕРЕД передачей продажникам. Не облажаться.

---

## 1. Где мы (состояние)

- **Этап 1 (понять прод) — ЗАВЕРШЁН.** Прочитан ВЕСЬ прод-код построчно через `ssh liderra-prod`. Полная логика зафиксирована: **[2026-06-18-prod-logic-map.md](2026-06-18-prod-logic-map.md)** (§1–17 — архитектура, проект, заказ, слепок, поставка, деньги, заморозка, сделки, изоляция, админ, крон, аудит, фаза D механики, выводы для теста, тест-хартия). **Читать его первым.**
- **Дальше — Этап 2 (writing-plans):** расписать тест пошагово. НЕ начат — ждёт 3 решения владельца (см. §6).

## 2. Цепочка скилов (согласована, исправлена)

1. brainstorming *(пройден)* → 2. **writing-plans** *(следующий шаг)* → 3. using-git-worktrees (ветка под артефакты) → 4. audit-context-building *(пройден — полное чтение прода)* → 5. логика в файл *(сделано)* → 6. writing-plans (тест) → 7. **executing-plans** (исполнение БЕЗ субагентов — они в разговорном режиме стены не работают) → 8. verify + run (Playwright на liderra.ru) → 9. verification-before-completion + requesting-code-review → 10. (опц.) audit-portal.
*Замены по ходу: субагенты убраны (стена) → audit-context-building для чтения + executing-plans для исполнения; graphify убран (индексирует локалку, а нужен прод).*

## 3. КАК работать с продом (критично — не путать с локалкой!)

- `ssh liderra-prod` = **боевой liderra.ru** (внутр. IP 10.128.0.15 через бастион gitea-VM `liderra-bastion` 111.88.252.149; внешний 111.88.246.137). Подтверждено: nginx обслуживает liderra.ru, в БД реальный `lkomega`. Прямой доступ с dev-IP отрезан фильтром YC — только бастион.
- **Read-only БД без escape:** `ssh liderra-prod 'psql -h 127.0.0.1 -U crm_app_user -d liderra -tA -c "SELECT…"'` (пароль в `~/.pgpass` на бастионе, настроен 18.06). Стена пускает одиночные read-команды (cat/grep/sed-print/psql SELECT, gh GET) в разговорном режиме (разрешитель `tools/remote-read-allow.mjs`, с 18.06 commit 52d500db).
- **RLS-таблицы** (projects/deals/project_routing_snapshots/incidents/pd) под `crm_app_user` НЕ читаются без tenant-контекста → нужен **`sudo -u postgres psql`** через **owner FLOOR-ESCAPE** (sudo стена режет без гранта).
- **Запись/мутации/вызов не-seed скилов** — через **owner FLOOR-ESCAPE**: AskUserQuestion с опцией `FLOOR-ESCAPE: <canonicalAction>`, владелец выбирает → среда подписывает грант (окно 5 мин, one-shot). Каноны: Bash=`bash:<команда>` (whitespace-collapsed), Skill=`skill:<имя lowercase>`, запись=`write:<путь>` (win32: lowercase + `/` + NFC). Авторская запись НОВОГО `.md` в `docs/superpowers/{specs,plans}/` escape НЕ требует (isAuthoringWrite).
- **`.env` под ubuntu не читается** (секреты защищены). Пароль `crm_app_user` владелец один раз засветил в чате — рекомендация сменить позже.

## 4. Факты о боевом состоянии (18.06)

- **Здоров, но СПЯЩИЙ:** 0 активных проектов, слепков нет с 03.06 (крон жив, просто проектов нет), 5 тенантов (Demo + Компания 1-4); реальный — **lkomega = `info@lkomega.ru` = tenant 2** (организация «Компания 1», subdomain client1, баланс 1.83М ₽, 117 проектов все выключены, 1013 сделок). Остальные — сидовые. **`lkomega` НЕ трогать.**
- **pricing_tiers настроены:** T1 100×500₽, T2 200×450, T3 400×400, T4 800×350, T5 1500×300, T6 3000×270, T7 ∞×250. Биллинг считает корректно.
- **`supplier_export_mode = online`.** Вебхук-секрет задан (48 симв — **значение взять у владельца для инъекции**, в чат не светить). HMAC не обязателен.
- Связка с поставщиком crm.bp-gr.ru живая (Playwright-сессия в Redis, AJAX rt-project-*).

## 5. Go-live находки (G1-G7) — решить, что чиним до продажи

G1 нет самозаписи клиента (`register`→`Tenant::first()`); G2 исходящие вебхуки настраиваются/тестируются, но **не доставляются** (pipeline не построен); G3 **напоминания не рассылаются** (команда `reminders:dispatch-due` есть, но НЕ в `console.php` — фикс 1 строка); G4 push мёртв (VAPID пустые); G5 `topup` заглушка + счета пусты (до Б-1); G6 API-ключи без потребляющего endpoint; G7 impersonation email/сессия не достроены. **Ядро (деньги/поставка/изоляция/сделки) — работает.**

## 6. Открытые решения владельца (нужны для writing-plans)

1. **Провижининг тест-клиентов:** P1 (свежие через SQL, маркер `TEST-`, обратимо) ИЛИ P3 (переиспользовать сидовые Demo/Компания 2/3/4). ⛔ `imitation:seed` на проде запрещён; endpoint создания тенанта нет.
2. **Сколько клиентов + персоны** (предложение: 6 — два+третий на одном источнике для шеринга×3, один Москва, один «вся РФ», один малый баланс под заморозку, один с паузой после слепка).
3. Добро на writing-plans.

## 7. Тест-хартия (готова) — матрица S0–S8

Метод: гибрид — глазами в браузере на liderra.ru (Playwright + владелец на ключевых точках и на стороне crm.bp-gr.ru); поставка лидов — **контролируемой инъекцией** (живую не гоняем, дорого); деньги/изоляция — сверка в боевой БД read-only.
S0 заказ дошёл до поставщика (online, глазами) · S1 шеринг 1→3 (CAP=3) · S2 каскад региона · S3 лимит · S4 деньги/ступени тарифа · S5 заморозка/0-баланс · S6 пауза после слепка (R-09) · S7 изоляция · S8 типы сигнала (site/call/sms/DIRECT). Доп.: G3 напоминания, отчёты, экспорт, импорт, колокольчик. Границы: безопасность/нагрузка/юр — вне прогона.
**Рецепт инъекции (для прода):** supplier_project (B2 site, `unique_key`=тест-домен) + project + pivot → `snapshot:backfill --date=сегодня` → `POST /api/webhook/supplier/{секрет}` c `raw_payload.project="B2_<тест-домен>"`. DIRECT: `project`=тест-домен без `B`-префикса. Любой путь требует строки слепка за активную дату (до 21:00 МСК = сегодня).
**Teardown:** удаление тест-проекта → `DeleteSupplierProjectJob` чистит rt-проект у поставщика; тест-тенанты — DELETE по маркеру `TEST-`.

## 8. Что НЕ делать

Не трогать `lkomega`/tenant 2 и реальные домены поставщика. Не гонять живую поставку поставщика (деньги). Не светить секреты в чат. Локалку («Документация» — это репо доков, прод ≠ оно) — для понимания не использовать, читать прод. Коммит/мутации — только через owner-escape.
