docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78

CLAUDE.md v1.86 → v1.87:
- §0 Источник истины row «Схема БД»: schema v8.11 → v8.19, 56 → 62 базовых
  таблиц, 97 → 117 индексов, 38 → 39 RLS-политик.
- §2 Стек строка БД: 4 → 5 ролей БД (+crm_supplier_worker BYPASSRLS из Plan 3
  для sharing-flow + Plan 4 ResetMonthlyCountersCommand + CsvReconcileJob).
- §6 Текущая фаза: +Plan 4 closure block (15 коммитов на plan4-billing,
  Pest 687/684+3/0, Vitest 49/428, Histoire 24/31, lychee 0, gitleaks 0).
- §8 Self-review триггеры: метрики обновлены до v8.19 = 62/12/117/39/5/13.
- §9 История версий: +v1.87 entry с накопленным drift'ом от Plans 1+2+3+4.

Через /claude-md-management:revise-claude-md (project rule §5 п.10).

Открытые_вопросы v1.77 → v1.78:
- +Раздел 13 «Plan 4 — 7 новых открытых вопросов» (Биз-25..31).
- Биз-25 P1: дефолтные tier-цены (placeholder в PricingTierSeeder).
- Биз-26 P2: rate-limit 1/час/tenant ZeroBalancePausedMail.
- Биз-27 P2: tenant видит ВСЕ ступени (transparent).
- Биз-28 P1: CSV-схема discovery (BLOCKED Plan 3 Tasks 1-2).
- Биз-29 P3: CSV window 25h.
- Биз-30 P3: Drift threshold 5%.
- Биз-31 P2: pricing-tier повышение цены — единая логика effective 1-е след. мес.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-11 15:34:44 +03:00
parent fded2ee392
commit 8681040479
2 changed files with 36 additions and 5 deletions
+8 -5
View File
@@ -1,6 +1,6 @@
# CLAUDE.md — техконтекст Лидерры
**Версия:** 1.86 от 10.05.2026 (поздний вечер) — закрытие 13 находок третьего аудита правил использования плагинов и скилов (4 P0 + 5 P1 + 2 P2 + 2 sync-правки в README/README_АРХИВ). Через `/claude-md-management:claude-md-improver`. Ключевые правки: **P0-01 §3 header «Карта 28 инструментов» → «33 инструментов»** (header застрял с pre-FD эпохи, в то время как контент включает #1#33); **P0-02 §3.4 header «(+5, итого 28)» → «итого 29»** (после добавления #30 в фазу 2 фаза 3 cumulative должна быть 29, не 28); **P0-03 §3.3 footer «из 30 номеров минус #1 = 29 active» → «из 33 номеров (29 phase-slot + 3 off-phase + 1 historic)»** (формулировка предшествовала формализации #31/#32/#33); **P0-04 §6 «Активно: 19 инструментов из 29» + «(19/29 активны по фазам)» → «24 / (24/29)»** (внутренний арифметический конфликт: тут же раскладка 9+8+7=24, но числовая метка застряла на 19 с эпохи когда фаза 2 имела ~4 активных); **P1-06 §5 п.5 «PSR_v1 v1.5+» → «v1.7+»** (sync после bump'а PSR_v1); **P2-02 §3.3 #33 «вне Pravila §13» → «вне UI-пула §13»** (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection — текущая формулировка вводила в заблуждение). Связанные обновления: **PSR_v1 v1.6 → v1.7** (sync cross-refs шапки на v1.86/v1.10/v1.15; description-fix описки «slot уровня 2.5» → «2b» внутри changelog'а v1.6, фактическое R0.1 всегда содержало «2b»). **Tooling v1.14 → v1.15** (sync cross-refs шапки на v1.86/v1.10/v1.7; §11.5/§12 «28 инструментов» → «33 формализованные позиции»). Pravila v1.10 — без изменений. Предыдущая v1.85 — закрытие 15 находок второго аудита (детали в [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md)).
**Версия:** 1.87 от 11.05.2026 — sync schema-метрик после Plan 4 (Billing+CSV+Admin) на ветке `plan4-billing` (15 коммитов готовы к FF-merge). Schema **v8.11 → v8.19** (накопленный drift от Plans 1+2+3+4): **56→62 базовых таблиц, 97→117 индексов, 38→39 RLS** + 5 функций / 13 триггеров. §0 источник истины row «Схема БД», §2 стек строка БД, §6 фаза, §8 self-review триггеры — обновлены. §6 расширен Plan 4 closure: 14 task-коммитов `a907fea..174dbae` + lychee CV-fix `fded2ee`, Pest 687/684 passed + 3 skipped/0 failed (2090 assertions), Vitest 49 files / 428 passed, Histoire 24 stories / 31 variants, lychee 0 broken, gitleaks 0 leaks. Активированы 7-ступенчатый pricing-tier биллинг (PricingTierResolver pure + LedgerService dual-balance prepaid→rub bcmath); CsvReconcileJob hourly с drift>5% алертом; auto-pause flow ZeroBalancePausedMail 1/час/tenant; 3 admin/tenant UI экрана (AdminPricingTiers + AdminSupplierPrices + ChargesTab в существующем BillingView). +7 новых Биз-25..31 в реестре (раздел 13 Открытые_вопросы v1.78). Через `/claude-md-management:revise-claude-md`. Предыдущая v1.86 — закрытие 13 находок третьего аудита правил использования плагинов и скилов (4 P0 + 5 P1 + 2 P2 + 2 sync-правки в README/README_АРХИВ). Через `/claude-md-management:claude-md-improver`. Ключевые правки: **P0-01 §3 header «Карта 28 инструментов» → «33 инструментов»** (header застрял с pre-FD эпохи, в то время как контент включает #1#33); **P0-02 §3.4 header «(+5, итого 28)» → «итого 29»** (после добавления #30 в фазу 2 фаза 3 cumulative должна быть 29, не 28); **P0-03 §3.3 footer «из 30 номеров минус #1 = 29 active» → «из 33 номеров (29 phase-slot + 3 off-phase + 1 historic)»** (формулировка предшествовала формализации #31/#32/#33); **P0-04 §6 «Активно: 19 инструментов из 29» + «(19/29 активны по фазам)» → «24 / (24/29)»** (внутренний арифметический конфликт: тут же раскладка 9+8+7=24, но числовая метка застряла на 19 с эпохи когда фаза 2 имела ~4 активных); **P1-06 §5 п.5 «PSR_v1 v1.5+» → «v1.7+»** (sync после bump'а PSR_v1); **P2-02 §3.3 #33 «вне Pravila §13» → «вне UI-пула §13»** (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection — текущая формулировка вводила в заблуждение). Связанные обновления: **PSR_v1 v1.6 → v1.7** (sync cross-refs шапки на v1.86/v1.10/v1.15; description-fix описки «slot уровня 2.5» → «2b» внутри changelog'а v1.6, фактическое R0.1 всегда содержало «2b»). **Tooling v1.14 → v1.15** (sync cross-refs шапки на v1.86/v1.10/v1.7; §11.5/§12 «28 инструментов» → «33 формализованные позиции»). Pravila v1.10 — без изменений. Предыдущая v1.85 — закрытие 15 находок второго аудита (детали в [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md)).
**Назначение:** оперативная карта для Claude Code. Не первоисточник — первоисточники указаны в §0.
**Владелец и режим правок:** все изменения этого файла — **только** через плагин `claude-md-management` (skills `/claude-md-management:claude-md-improver` для audit/targeted-updates и `/claude-md-management:revise-claude-md` для capture session-learnings). Прямые правки запрещены — см. §5 п.11.
@@ -16,7 +16,7 @@
| **Правила совместного использования плагинов Claude** | [docs/Plugin_stack_rules_v1.md](docs/Plugin_stack_rules_v1.md) (**v1.7 от 10.05.2026 поздний вечер** — sync cross-refs шапки на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и Tooling v1.14 → v1.15; description-fix описки «slot уровня 2.5» → «slot уровня 2b» внутри changelog'а v1.6 (фактическое R0.1 line 33 всегда содержало «2b»); v1.6 наследие — R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT, R0.6 пронумерован 1–11; v1.5 наследие — R10.1 разбит на 3 блока (enabledPlugins/built-in/MCP), R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st) |
| Полный реестр 33 формализованных позиций тулчейна (29 active + 3 off-phase + 1 historic) | [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) (**Прил. Н v1.15 от 10.05.2026 поздний вечер** — sync cross-refs шапки на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7 («Pravila v1.9+» → «v1.10+», «PSR_v1 v1.5+» → «v1.7+», «CLAUDE.md v1.84+» → «v1.86+»); §11.5/§12 «28 инструментов» → «33 формализованные позиции» (DevOps-раздел застрял с эпохи v1.0 — фразы «не входят в 28», «вне 28»); v1.14 наследие — §10.3 шаг 2 «3 skills» → «14», §13 +v1.13 +v1.14 entries, §7 +Tooling explicit slot 2b alongside CLAUDE.md; v1.13 наследие — §7 +PSR_v1 уровнем 3, §4.7 +#33 claude-md-management, §6 +5 конфликтов v1.4, §4.6 settings → .claude.json, §0 счётчик 33) |
| Главное ТЗ | [docs/CRM_bp-gr_Инструкция_v8_5.md](docs/CRM_bp-gr_Инструкция_v8_5.md) (v8.5 от 07.05.2026 — реализация 27 решений аудита C; in-place hygiene v1.20 от 08.05.2026 поздний вечер: §2.4/§5.5/§5.6/§6.5/§11/§20.12.3/§21.1/§27.1 синхронизированы под schema v8.6 двустадийный dedup) |
| Схема БД | [db/schema.sql](db/schema.sql) (**v8.11 от 09.05.2026** — Sprint 1 Phase A: RLS на `impersonation_tokens` + 2 missing FK indices (audit P0-02 + O-perf-02/03). Метрики: 56 базовых таблиц + 12 партиций + 97 индексов + 38 RLS + 5 функций + 13 триггеров) |
| Схема БД | [db/schema.sql](db/schema.sql) (**v8.19 от 11.05.2026** — Plan 4 (Billing+CSV+Admin): +1 таблица `supplier_csv_reconcile_log` SaaS-level, +3 колонки `tenants.delivered_in_month` / `lead_charges.charge_source` / `supplier_leads.recovered_from_csv_at`, +3 индекса, +2 CHECK. Метрики: **62 базовые таблицы + 12 партиций + 117 индексов + 39 RLS-политик + 5 функций + 13 триггеров**) |
| Открытые вопросы | [docs/Открытые_вопросы_v8_3.md](docs/Открытые_вопросы_v8_3.md) (**v1.75 от 09.05.2026 — Post-MVP Reports backend закрыт** (4 этапа); MVP по Claude-зоне закрыт в v1.74; финал-метрики Pest 403/403 + Vitest 393/393 + Histoire 21/43) |
| **Брендбук** | [liderra_v8_handoff/docs/BRANDBOOK_v2.md](liderra_v8_handoff/docs/BRANDBOOK_v2.md) **(v2 Forest от 07.05.2026)** — старый `docs/brandbook.md` v1.1 удалён 08.05.2026 |
| **Дизайн-handoff (токены, компоненты, 25 экранов)** | [liderra_v8_handoff/docs/DEVELOPER_HANDOFF.md](liderra_v8_handoff/docs/DEVELOPER_HANDOFF.md) (v8 Forest от 07.05.2026) — **только дизайн/токены/компоненты**; функционал и состав экранов — по ТЗ v8.5 |
@@ -64,7 +64,7 @@
|---|---|
| Backend | PHP 8.3 + **Laravel 13** (мажор переоткрыт 08.05.2026 поздний вечер: при `composer create-project laravel/laravel` без `^11` Composer подтянул свежайшую 13.7; live-проверка совместимости — Boost v2.4.6, Larastan v3.9.6, Pest v4.7.0, IDE Helper v3.7.0, Pint v1.29 работают; принято заказчиком) |
| Frontend | Vue 3 + **Vuetify 3** (НЕ Tailwind, НЕ Inertia, НЕ Livewire, НЕ Filament) |
| БД | PostgreSQL 16 (**56 базовых таблиц + 12 партиций, 97 индексов, 38 RLS-политик, 4 роли БД, 13 триггеров, 5 функций** — schema v8.11 от 09.05.2026; backend multi-tenant фундамент развернут на dev `liderra` через `php artisan migrate:fresh`) |
| БД | PostgreSQL 16 (**62 базовые таблицы + 12 партиций, 117 индексов, 39 RLS-политик, 5 ролей БД, 13 триггеров, 5 функций** — schema v8.19 от 11.05.2026; backend multi-tenant фундамент развёрнут на dev `liderra` через `php artisan migrate:fresh`; 5-я роль `crm_supplier_worker` BYPASSRLS введена в Plan 3 для sharing-flow + используется Plan 4 ResetMonthlyCountersCommand + CsvReconcileJob) |
| Кэш / очереди | Redis 7 |
| Pooler | PgBouncer (transaction pooling) |
| Облако | Yandex Cloud, регион `ru-central1` (Москва) |
@@ -205,7 +205,8 @@ trivy image liderra:latest
**Post-MVP (10.05.2026).** Фазы 0/1/2 по тулчейну закрыты (24/29 активны по фазам после установки Frontend Design plugin v1.78). **+3 off-phase tools формализованы 10.05.2026:** #31 UI UX Pro Max (skill, резерв-библиотека UI, формализован v1.83), #32 21st.dev Magic MCP (генератор шаблонов UI, формализован v1.83), **#33 claude-md-management** (skills, инфраструктура CLAUDE.md edits — формализован в v1.84 после audit находки «5-й включённый плагин без номера в реестре»). UPM + 21st активируются только через PSR_v1 v1.6 R14 pipeline; claude-md-management — обязательный канал правок CLAUDE.md (§5 п.10), регулируется PSR_v1 R10.1 блок 1. Итого формализованных позиций тулчейна: **33** (19/29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически — слот #1, заменён #10 Boost в фазе 1, формально остаётся в реестре). Без «+1 historic» арифметика «33» не сходится — это правка v1.85. MVP Claude-зоны закрыт в v1.72; затем закрыт Reports backend epic (v1.73, 4 этапа `19f319c..e0ffe7e`). 13/13 экранов handoff покрыты UI + 3 ErrorView (404/403/500); landing ⏸ Б-1. Backend: auth (login/register/2FA/recovery/forgot/reset) + deals API (index/show/store/update/transition/destroy/restore/export-CSV+XLSX) + 3 lookup-API + reminders CRUD + cron + in_app_notifications + bell-UI polling + notification-preferences PATCH + admin (tenants/billing/incidents/system) + impersonation + webhook receive (HMAC + per-token rate-limit). Все 8 schema-default событий уведомлений интегрированы. **Pest 403/403, Vitest 393/393, Histoire 21/43.**
- Активно: **24 инструмента из 29 phase-slot** — 9 из фазы 0 (см. §3.1) + 8 из фазы 1: **#10 Boost v2.4.6**, **#11 Pint v1.29**, **#12 Larastan v3.9.6**, **#13 Roave/SecurityAdvisories**, **#14 IDE Helper v3.7.0**, **#15 squawk v2.51.0**, **#16 pgFormatter v5.9**, **#18 Pest v4.7.0** + 7 из фазы 2 (закрыта по тулчейну, см. ниже): #19 Superpowers + #2024 + **#30 Frontend Design plugin** (paired stack). 9+8+7=24. Off-phase tools (#31 UPM + #32 21st + #33 claude-md-management) — также активны в `~/.claude/settings.json`/`~/.claude.json`, но регулируются отдельной механикой R10/R14 PSR_v1 / §5 п.10 (не входят в фазовую раскладку).
- Готово в фазе 1: Laravel 13.7 в `app/`, predis 3.4.2, **schema.sql v8.6 развёрнута через `migrate:fresh` (870 ms, 1 миграция `load_initial_schema.php` — raw SQL через `DB::unprepared(file_get_contents(...))`)**, 3 default Laravel-миграции удалены (users/cache/jobs дублировались с нашей schema), smoke-test'ы (**Pest 19/19 за 1711 ms** — 4 RLS smoke + 8 model smoke + 5 middleware + 2 default; Pint passed, PHPStan analyse passed с baseline, ide-helper:generate OK + ide-helper:models -W -M -N для @mixin IdeHelper*, squawk 0 issues с конфигом, pgFormatter dry-run OK), MCP-сервер `boost:mcp` через Roster auto-detect (9 tools, JSON-RPC 2024-11-05). **Eloquent-модели**: `Tenant`, `User`, `Project` (+ factories) — `User` переписан под нашу схему (`password_hash` вместо `password`, override `getAuthPassword()`), Soft Deletes на Tenant + User. **Middleware `SetTenantContext`** (alias `tenant`): резолюция tenant_id из `auth()->user()`, subdomain или `X-Tenant-Id` header → `SET LOCAL app.current_tenant_id` в обёртке транзакции (PgBouncer-safe). **Deployment-скрипты ролей БД** для production: `db/00_create_roles.sql`, `db/02_grants.sql`. На dev — `postgres` superuser. **CTO-13 RLS smoke-test реализован**: `tests/Feature/RlsSmokeTest.php` + `TenantModelsTest.php` + `SetTenantContextTest.php`.
- **Plan 4 (Billing + CSV Reconcile + Admin) на ветке `plan4-billing` ready for FF-merge (11.05.2026):** 15 коммитов поверх main HEAD `926fee9`. Schema v8.18 → v8.19 (новая таблица `supplier_csv_reconcile_log`, +3 колонки, +3 индекса, +2 CHECK). Активирован 7-ступенчатый pricing-tier биллинг (`PricingTierResolver` pure + `LedgerService` dual-balance prepaid→rub через bcmath); `CsvReconcileJob` hourly с drift>5% алертом; auto-pause flow `ZeroBalancePausedMail` 1/час/tenant; 3 UI экрана (`AdminPricingTiersView` + `AdminSupplierPricesView` + `ChargesTab` в `BillingView`). **Pest 687/684 passed + 3 skipped/0 failed (2090 assertions); Vitest 49 files / 428 passed; Histoire 24 stories / 31 variants; lychee 0 broken; gitleaks 0 leaks.** +7 новых **Биз-25..31** в реестре (раздел 13 Открытые_вопросы v1.78). Drive-by closures: Plan 1 deferred WARNING #7 (SupplierProjectFactory random race) — closed в `0f820c4` (Task 10).
- Готово в фазе 1: Laravel 13.7 в `app/`, predis 3.4.2, **schema.sql v8.19 развёрнута через `migrate:fresh` (871 ms, 1 миграция `load_initial_schema.php` — raw SQL через `DB::unprepared(file_get_contents(...))`)**, 3 default Laravel-миграции удалены (users/cache/jobs дублировались с нашей schema), smoke-test'ы (**Pest 19/19 за 1711 ms** — 4 RLS smoke + 8 model smoke + 5 middleware + 2 default; Pint passed, PHPStan analyse passed с baseline, ide-helper:generate OK + ide-helper:models -W -M -N для @mixin IdeHelper*, squawk 0 issues с конфигом, pgFormatter dry-run OK), MCP-сервер `boost:mcp` через Roster auto-detect (9 tools, JSON-RPC 2024-11-05). **Eloquent-модели**: `Tenant`, `User`, `Project` (+ factories) — `User` переписан под нашу схему (`password_hash` вместо `password`, override `getAuthPassword()`), Soft Deletes на Tenant + User. **Middleware `SetTenantContext`** (alias `tenant`): резолюция tenant_id из `auth()->user()`, subdomain или `X-Tenant-Id` header → `SET LOCAL app.current_tenant_id` в обёртке транзакции (PgBouncer-safe). **Deployment-скрипты ролей БД** для production: `db/00_create_roles.sql`, `db/02_grants.sql`. На dev — `postgres` superuser. **CTO-13 RLS smoke-test реализован**: `tests/Feature/RlsSmokeTest.php` + `TenantModelsTest.php` + `SetTenantContextTest.php`.
- Артефакты фазы 0 без изменений: 17 файлов архива (narrative v8.5 финал 07.05.2026), **13 концептов v8 Forest в [web/v8/](web/v8/)**.
- **Стек dev**: native Windows. PostgreSQL 16 (Chocolatey, Windows-сервис) + Memurai Developer (Redis 7-совместимый, Windows-сервис) + native PHP 8.3 + Composer. **Без Docker, без WSL2** — машина OpenStack-VPS не пробрасывает nested virtualization. Подробности — `memory/project_phase1_strategy.md`.
- **Не применимо**: **#17 pg_partman** заменён ручным cron'ом — на native Windows-PG расширение недоступно (см. project_phase1_strategy). Pre-commit хуки для Pint/Larastan/squawk — в `lefthook.yml` (jobs 5/6/7).
@@ -240,7 +241,7 @@ trivy image liderra:latest
| Файл | Что проверять |
|---|---|
| `db/schema.sql` | 0 orphan-FK, целостность RLS, метрики сверять с текущей версией (v8.11 = 56 базовых таблиц + 12 партиций + 97 индексов + 38 RLS-политик + 5 функций + 13 триггеров), 0 дубликатов `CREATE TABLE` |
| `db/schema.sql` | 0 orphan-FK, целостность RLS, метрики сверять с текущей версией (**v8.19** = 62 базовые таблицы + 12 партиций + 117 индексов + 39 RLS-политик + 5 функций + 13 триггеров), 0 дубликатов `CREATE TABLE` |
| narrative `.md` | Версии в шапке/колонтитуле, 0 «готовится»/«TBD», кросс-ссылки на актуальные имена файлов |
| Прил. А–Н | Версия совпадает с narrative; все упомянутые подразделы существуют |
| Прил. Н (этот реестр инструментов) | Ровно 29 в активном наборе; 0 дублей; синхронность с этим CLAUDE.md |
@@ -253,6 +254,8 @@ trivy image liderra:latest
Полная история — [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md) (вынесена 09.05.2026 при правке v1.73→v1.74 ради лаконичности шапки). Здесь — последние правки:
- **v1.87 от 11.05.2026** — sync schema-метрик после Plan 4 (Billing+CSV+Admin). Schema **v8.11 → v8.19** (накопленный drift от Plans 1+2+3+4): §0 «Источник истины» row «Схема БД», §2 «Стек» строка БД, §6 «Текущая фаза», §8 self-review триггеры — все обновлены до 62 базовых таблиц / 12 партиций / 117 индексов / 39 RLS / 5 функций / 13 триггеров / 5 ролей БД. §6 расширен Plan 4 closure summary: 15 коммитов на ветке `plan4-billing` (14 task-коммитов `a907fea..174dbae` + lychee CV-fix `fded2ee`), Pest 687/684 passed + 3 skipped/0 failed (2090 assertions), Vitest 49 files / 428 passed, Histoire 24 stories / 31 variants, lychee 0 broken, gitleaks 0 leaks. Активированы 7-ступенчатый pricing-tier биллинг + CsvReconcileJob hourly + auto-pause flow + 3 UI экрана. +7 новых Биз-25..31 в реестре (раздел 13 Открытые_вопросы v1.78). Drive-by closure: Plan 1 deferred WARNING #7 (SupplierProjectFactory random race) — fixed в Task 10 `0f820c4`. Через `/claude-md-management:revise-claude-md`.
- **v1.86 от 10.05.2026 (поздний вечер)** — закрытие 13 находок третьего аудита правил использования плагинов и скилов (4 P0 + 5 P1 + 2 P2 + 2 sync-правки в README/README_АРХИВ). Заказчик: «проведи аудит правил использования плагинов и скилов на предмет конфликта и запутаностей» → Claude через `/claude-md-management:claude-md-improver` нашёл 12 формальных находок + 4 sync-побочки, представил quality report, получил «исправь все, только при выполнении руководствуйся правилом, прежде чем вносить изменения тебе надо проанализировать как оно влияет на другие правила, что исправляю одно не делать других ошибок», применил с cross-impact-анализом перед каждой группой. **P0 (4 — реальные арифметические конфликты в CLAUDE.md, прошли мимо второго аудита):** §3 header «Карта 28 инструментов» → «33» (header застрял с pre-FD эпохи); §3.4 header «(+5, итого 28)» → «итого 29» (после добавления #30 в фазу 2 cumulative должна быть 29); §3.3 footer «из 30 номеров минус #1 = 29 active» → расширенная формулировка «33 номеров: 29 phase-active + 3 off-phase + 1 historic»; §6 «Активно: 19 инструментов из 29» + «(19/29 активны)» → «24» в обоих местах (внутренний арифметический конфликт: тут же раскладка 9+8+7=24, но числовая метка застряла на 19 с эпохи когда фаза 2 имела ~4 активных). **P1 (5 — обновление stale `+`-refs на актуальные версии):** PSR_v1 шапка cross-refs «CLAUDE.md v1.84+/Pravila v1.9+» → «v1.86+/v1.10+»; Tooling шапка cross-refs «Pravila v1.9+/PSR_v1 v1.5+/CLAUDE.md v1.84+» → «v1.10+/v1.7+/v1.86+»; CLAUDE.md §5 п.5 «PSR_v1 v1.5+» → «v1.7+». **P2 (2 — внутренние несогласованности формулировок):** PSR_v1 line 4 «slot уровня 2.5» → «уровня 2b» (описка внутри changelog'а v1.6, фактическое R0.1 line 33 всегда содержало «2b»); CLAUDE.md §3.3 #33 «вне Pravila §13» → «вне UI-пула §13» (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection; «вне §13» вводило в заблуждение). **Побочки sync:** README.md и README_АРХИВ_v8_5.md «карта 28 инструментов» → «33 инструмента»; Tooling §11.5/§12 «не входят в 28» → «33 формализованные позиции». Связано: **PSR_v1 v1.6→v1.7**, **Tooling v1.14→v1.15**. Pravila v1.10 — без изменений. Через `/claude-md-management:claude-md-improver`.
- **v1.85 от 10.05.2026 (вечер)** — закрытие 15 находок аудита правил использования плагинов и скилов (4 P0 + 7 P1 + 4 P2). Заказчик: «проведи аудит правил использования плагинов и скилов на предмет конфликта и запутанностей» → Claude через `/claude-md-management:claude-md-improver` нашёл 16 находок, представил quality report, получил «все 15» (P0+P1+P2), применил батчем. **P0:** §6 арифметика «33» исправлена (+1 historic PG MCP); Tooling §10.3 шаг 2 sync с §4.1 (3→14 skills); Pravila §13.2 «(15 правил)»→«(16)»; Tooling §13 +v1.13 +v1.14 entries. **P1:** массовый stale-refs дрейф v1.4→v1.6 + v1.12→v1.14 в 7 местах (CLAUDE.md #31/#32/§5п.12, Pravila §11.5/§13.2/§13.9/§13.10). **P2:** Tooling Прил. Н добавлен explicit-слотом уровня 2b (раньше PSR_v1 R0.1 говорил «stack ниже Tooling», но Tooling не было в priority chain ни одного из 4 файлов); PSR_v1 R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT (раньше параллелил список разной формулировкой — риск дрейфа); Pravila §0 +note про §11 override-приоритет (раньше §11 формально стоял ниже §9 в цепочке вопреки фактическому override §2.2/§4.5/§8.4); PSR_v1 R0.6 пронумерован 1–11 для надёжности cross-refs. Связано: **Pravila v1.9→v1.10**, **PSR_v1 v1.5→v1.6**, **Tooling v1.13→v1.14**. Через `/claude-md-management:claude-md-improver`.
@@ -2773,3 +2773,31 @@ reminders {
*Изменения v1.5 → v1.6: добавлен раздел 12 «Аудит партий 12–15»; 3 новых вопроса (Биз-14/15/16); Биз-10 переоткрыт; Прил. М обновлён до v1.1 (новый раздел 9 + §3.5 + §6.6); запланирован schema.sql v8.3 + CHANGELOG-v8_3.md; общее число продуктовых вопросов 47→50, открытых 10→13.* 📜 *Исторический срез на момент v1.6 (05.05.2026 день). На 05.05.2026 (поздний вечер) `schema.sql` v8.3 уже выпущен; `CHANGELOG-v8_3.md` объединён в `CHANGELOG_schema.md` (запись A) — см. ⚠-сноску в начале документа.*
*Изменения v1.4 → v1.5: получены результаты аудита crm.bp-gr.ru (11 партий); создано Прил. М v1.0; добавлен раздел 11 с 4 новыми вопросами (Биз-10..13, все с дефолтами); расширен раздел 9 — патч schema.sql v8.2 теперь включает suppliers/project_suppliers + лимиты проектов; зафиксирована prompt injection-атака в DOM оригинала.*
*Изменения v1.3 → v1.4: фиксация 30 решений интервью; счётчик ✅ 8→30; счётчик 🟦 5; открытых полностью 30→6; истинных P0 4→1.*
---
## 13. Plan 4 (Billing + CSV Reconcile + Admin) — 7 новых открытых вопросов
**Контекст:** Plan 4 завершён на ветке `plan4-billing` (14 task-коммитов `a907fea..174dbae` + lychee fix `fded2ee` = 15 коммитов). Spec — [docs/superpowers/specs/2026-05-11-plan4-billing-csv-admin-design.md](superpowers/specs/2026-05-11-plan4-billing-csv-admin-design.md) §7.6. 7 placeholder'ов закрыты дефолтами для запуска impl; требуют явного согласования заказчика **до production**.
| ID | Вопрос | Адресат | Приоритет | Дефолт (применён в коде) | Когда нужно решение |
|---|---|---|---|---|---|
| **Биз-25** | Дефолтные tier-цены (50000/45000/40000/35000/30000/27000/25000 коп = 500/450/400/350/300/270/250 руб) | Заказчик | P1 | placeholder в `database/seeders/PricingTierSeeder.php` (effective_from='1970-01-01') | До production (Б-1 + первый продакт-tenant) |
| **Биз-26** | Email rate-limit zero_balance 1/час/tenant — норма? Альтернативы: 1/день / token-bucket / 1/15мин | Заказчик | P2 | 1/час через Redis SETNX (`RouteSupplierLeadJob::handleInsufficientBalance` Cache::store('redis')->add(..., now()->addHour())) | До production |
| **Биз-27** | Tenant видит ВСЕ ступени или только текущую (transparency vs обфускация)? | Заказчик | P2 | transparent — все 7 ступеней доступны через `TenantChargesController::index` | До UI release (post-Б-1 SSO) |
| **Биз-28** | CSV-схема `/admin/report/index?type=49` поставщика — точные имена/порядок столбцов | Discovery после credentials | P1 | placeholder `vid;project;tag;phone;phones;time` (6 columns) в `SupplierCsvParser::EXPECTED_COLUMNS` | После Plan 3 Tasks 1-2 (BLOCKED credentials) |
| **Биз-29** | CSV-window 25h — норма для catch-up? Альтернативы 1h / 6h / 48h | Заказчик/опыт | P3 | 25h (`CsvReconcileJob::WINDOW_HOURS`) — 1ч запас над hourly cron'ом | После 1-2 мес. эксплуатации |
| **Биз-30** | Drift threshold 5% — норма для алерта? | Заказчик/опыт | P3 | 5% (`CsvReconcileJob::DRIFT_THRESHOLD = 0.05`) — из spec §5.2 | После 1-2 мес. эксплуатации |
| **Биз-31** | Pricing-tier-change при повышении цены — единая логика с понижением (effective 1-е след. месяца)? Или требует отдельного approval / уведомления tenant'ов заранее? | Заказчик | P2 | единая логика — `AdminPricingTiersController::store` всегда ставит `effective_from = DATE_TRUNC('month', NOW() + INTERVAL '1 month')` | До production |
**Что значит «дефолт применён в коде»:** Plan 4 impl-tasks использовали placeholder-значения по spec §7.6. Каждый дефолт работает корректно для текущих интеграционных тестов (Pest 687 / Vitest 428 — все PASS); но **семантически требует подтверждения заказчиком** для production-traffic.
**Когда закрываем эти 7 вопросов:**
- Биз-25, Биз-26, Биз-27, Биз-31 — перед открытием production (зависит от Б-1 + первый платящий tenant).
- Биз-28 — после получения credentials поставщика (BLOCKED на Plan 3 Tasks 1-2 параллельно).
- Биз-29, Биз-30 — по эмпирическим данным после 1-2 месяцев эксплуатации.
---
*Версия: 1.78 от 11.05.2026 — Plan 4 (Billing + CSV Reconcile + Admin) завершён. +7 новых вопросов Биз-25..Биз-31 (4 × P1/P2 до production + 1 × P1 на Plan 3 discovery + 2 × P3 на опыт эксплуатации). Все 14 task-коммитов на ветке `plan4-billing` зелёные: Pest 687 / Vitest 428 / Larastan 0 / lint:vue 0 / type-check 0 / Histoire 24 stories / lychee 0 errors / gitleaks 0 leaks. Schema v8.18 → v8.19 (62 базовые таблицы / 117 индексов / 39 RLS).*