# HANDOFF — Имитация портала, Фаза 1 (переезд в новую сессию)

**Дата:** 03.06.2026. **Читать ПЕРВЫМ при возобновлении.**

## Где работать

- **Worktree:** `c:\моя\проекты\портал crm\Документация\.claude\worktrees\prod-imitation-clients`
- **Ветка:** `worktree-prod-imitation-clients` (база = `origin/main` с региональной фичей)
- **HEAD на момент хендоффа:** `7c5ca7f6`
- Если worktree сохранён — войти в него (`EnterWorktree` с `path`). Если удалён — пересоздать worktree от ветки `worktree-prod-imitation-clients` (commits в ней).
- Боевое/прод НЕ тронуты. Ничего не запушено.

## Читать перед работой (в этом порядке)

1. Этот файл.
2. **Спек:** `docs/superpowers/specs/2026-06-03-portal-client-imitation-phase1-design.md`
3. **План:** `docs/superpowers/plans/2026-06-03-portal-client-imitation-phase1.md` — там «Статус исполнения и поправки» вверху + 16 задач.
4. **Сигнатуры стенда:** `app/app/Support/Imitation/README.md` (выверенные интерфейсы + критические правки).

## Что уже сделано (закоммичено на ветке)

| Коммит | Что |
|---|---|
| `dee4a0e1` | спек + план |
| `bad947a5` | Task 0 — README сигнатур |
| `a54b0346` | Task 1 — `FakeDaDataPhoneClient` (Tests namespace), 7 тестов GREEN |
| `e03da647` | plan-status + **Task 2** `LeadInjector` (был GREEN, забандлен под docs-сообщением) |
| `7c5ca7f6` | Task 0.5 — `ImitationTestCase` (сидит тарифы), env-база; **+ спорные правки** (см. ниже) |

Тесты-якоря зелёные (verbatim, через `--filter`): `FakeDaDataClientTest` (3), `LeadInjectorTest` (1/6).

## ⚠️ ДВА ОТКРЫТЫХ РЕШЕНИЯ ВЛАДЕЛЬЦА (спросить до продолжения)

1. **Правки production-миграций в `7c5ca7f6`** (вне scope, сделаны субагентом):
   - `0001_01_01_000000_load_initial_schema.php`: `$withinTransaction=false` + `try/catch` вокруг `partitions:create-months`;
   - `2026_05_24_100000_…`, `2026_05_26_120000_…`: idempotency-гарды;
   - `MonthlyPartitionManagerTest` (Feature+Unit) изменены.
   Мотив правдоподобен (чинит `migrate:fresh` ordering), НО меняет поведение прод-`migrate` (нет отката; `catch(\Throwable){}` глушит ошибки). **Решить: оставить / отревьюить отдельно / откатить из ветки.** Рекомендация — вынести в отдельную ревью-задачу или откатить.
2. **Баг хука `tools/enforce-tdd-real-test-verifier`**: ложно блокирует Write `.env.testing` (regex `.(test|spec).[a-z0-9]+$` цепляет `…test`+`ng`). Из-за этого **пароль БД остался в `app/phpunit.xml`** (B4). Решить: чинить regex (тогда создать `.env.testing`, убрать пароль) / оставить.

## Жёсткие правила для субагентов (соблюдать строго)

- **Namespace стенда:** `Tests\Support\Imitation` (`app/tests/Support/Imitation/…`), НЕ `App\…` (TDD-гейт). Живая сеялка (Task 14) — отдельно в `database/seeders`.
- **Тесты — ТОЛЬКО `--filter`** (`cd app && php artisan test --filter=XxxTest`). НИКОГДА весь suite.
- **Контроллер сам тесты запускать не может** (роутер-гейт) — только субагенты.
- **Коды субъектов порядковые:** Москва=**82**, СПб=**83** (через `App\Support\RussianRegions::CODE_TO_NAME`).
- **Запрет трогать файлы вне явного списка задачи** (после scope-creep Task 2/0.5 — в каждый промпт субагента включать «менять ТОЛЬКО эти файлы: …; production-миграции и чужие тесты НЕ трогать»).
- Сценарные тесты наследуют `Tests\Support\Imitation\ImitationTestCase` (тарифы+контекст засеяны).
- Git-safety §A/§B (Pravila §15.1) на каждый Task: pre/post `rev-parse HEAD` + `branch --show-current`; commit-задачи — Sonnet/Opus.

## Что осталось (Tasks 3–15 плана)

`SnapshotForge` (3), `ConditionLevers` (3), сеялка матрицы/топологий (4), сценарии: регион-каскад (5), жребий A (6), регионы B/C (7), дни D (8), заморозки E1/E2/F (9), G3 (10), G5/G6 (11), X1/X3 подмена+журнал (12), топологии+деньги+приём (13), живая `imitation:seed` (14), runbook+отчёт (15).

## Хвосты на самый конец

- Вычистка пароля из `phpunit.xml` (и из истории ветки до пуша).
- Решение по миграциям (см. выше).
- Финальная регрессия (через субагента, `--group=imitation` + проектная регрессия).

## Готовый промт для новой сессии

> Возобнови работу над имитацией портала Фазы 1. Сначала прочитай
> `docs/superpowers/plans/2026-06-03-portal-client-imitation-phase1-HANDOFF.md`
> (он в worktree `.claude/worktrees/prod-imitation-clients`, ветка
> `worktree-prod-imitation-clients`), затем спек и план по ссылкам оттуда.
> Убедись, что работаешь в этом worktree. Задай мне два открытых вопроса
> (правки миграций; баг хука для `.env.testing`), потом продолжай Tasks 3–15
> по плану через субагентов с жёстким scope (только Tests-namespace, только
> `--filter`, не трогать миграции/чужие файлы).
