docs(пилот): снимок 22.06 — приёмочный тест боевого GO + FN-RESET (сброс пароля сломан)

Полный приёмочный прогон R1–R5 на боевом liderra.ru: ядро PASS, омега цела
1835400/1013, teardown+F3 зелёный. FN-RESET: сброс пароля сломан для всех
(route password.reset не определён) — чинить до передачи продажникам.
Новый тариф T1=70₽ с 22.06. tenant 24 онбординг оставлен.
+cspell: онбординг, DOUBLEPROJ, INSUFF в словарь.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-22 07:26:20 +03:00
parent 302d629cb8
commit 2823f73d64
3 changed files with 15 additions and 10 deletions
+3
View File
@@ -2235,3 +2235,6 @@ pisha
десинк
недетерминизм
ретеншен
онбординг
DOUBLEPROJ
INSUFF
+10 -10
View File
@@ -1,6 +1,6 @@
# Brain Status (auto-generated)
Last updated: 2026-06-22T04:11:34.339Z
Last updated: 2026-06-22T04:21:35.375Z
| Контролёр | Состояние | Детали |
|---|---|---|
@@ -45,16 +45,16 @@ Last updated: 2026-06-22T04:11:34.339Z
| Время | Действие | Причина |
|---|---|---|
| 2026-06-22T04:17:15.434Z | write:c:/моя/проекты/claude-brain | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:16:46.938Z | powershell:$tempPath = $env:TEMP; $file = "$tempPath\claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json"; if (Test | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:16:38.844Z | write:c:/users/administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl | path «C:/Users/Administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl» pr |
| 2026-06-22T04:16:24.368Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:16:24.112Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:cat "$TEMP/claude-econ |
| 2026-06-22T04:15:42.934Z | write:c:/моя/проекты/claude-brain | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:15:18.477Z | write:c:/users/administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl | path «C:/Users/Administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl» pr |
| 2026-06-22T04:15:11.140Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:15:11.019Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:cat "$TEMP/claude-econ |
| 2026-06-22T04:10:19.659Z | write:c:/моя/проекты/claude-brain | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:10:11.984Z | write:c:/users/administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl | path «C:/Users/Administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl» pr |
| 2026-06-22T04:09:51.441Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T04:09:51.308Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:cat "$TEMP/claude-econ |
| 2026-06-22T04:04:14.950Z | bash:ls $TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json 2>/dev/null && cat $TEMP/claude-economy-42e79641- | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:ls $TEMP/claude-econom |
| 2026-06-22T04:01:17.959Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:cat "$TEMP/claude-econ |
| 2026-06-22T03:59:17.703Z | write:c:/моя/проекты/claude-brain | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T03:59:06.690Z | write:c:/users/administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl | path «C:/Users/Administrator/.claude/projects/c--------------claude-brain/42e79641-ee05-4ee7-97ea-3a545ea2a538.jsonl» pr |
| 2026-06-22T03:59:06.371Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | разговорный режим: только думать/спрашивать (реализация — после печати артефакта и плана) |
| 2026-06-22T03:59:06.265Z | bash:cat "$TEMP/claude-economy-42e79641-ee05-4ee7-97ea-3a545ea2a538.json" 2>/dev/null \|\| echo "FILE_NOT_FOUND" | floor: опасная по содержанию команда без аварийного выхода — блок (правило 8); FLOOR-ESCAPE: bash:cat "$TEMP/claude-econ |
## Метрики (информационные, не алерты)
+2
View File
@@ -8,6 +8,8 @@
- Волатильную часть (доступ, версии, что развёрнуто) перед рискованными действиями **перепроверять реальной командой по SSH**, не доверять снимку вслепую.
- Обновляется по команде заказчика **«обнови пилот»**.
**Снимок снят:** 22.06.2026 (~07:30 МСК) — **✅ ПРОВЕДЁН ПОЛНЫЙ ПРИЁМОЧНЫЙ ТЕСТ боевого liderra.ru «глазами клиента» — вердикт GO.** Прогон R1–R5 на проде: 7 тест-клиентов (SQL, id 17–23) + 16 проектов через портал → 14 rt у поставщика crm.bp-gr.ru (реальный заказ, sync ok); инъекции вебхука с прод-сервера (vid TEST-диапазон 9e12). **PASS:** раздача (CAP=3, каскад 3 фазы + подмена с реальным городом), деньги (тройная запись + копейки + тарифная ступень; **новый тариф вступил в силу сегодня 22.06: T1=70₽**, старый 500₽ перекрыт по `effective_from`), лимит/перелив, M-DOUBLEPROJ (клиент с 2 проектами — списан раз), M-INSUFF (нехватка→откат+автопауза), изоляция (портал 404 + RLS-роль `crm_app_user` + публичный API G6), импорт (не списывает), онбординг **вживую владельцем** (реальная Yandex-капча + код из письма + 300₽ старт, tenant 24 `kdv1@bk.ru`), дайджест-email доставлен, колокольчик, отчёты, поддержка G7-A, нагрузка (~258 лид/мин ≈37× к цели 10k/сут). **Омега (tenant 2) ЦЕЛА весь прогон: 1 835 400.00 ₽ / 1013 сделок** (снимок до=после). Teardown полный до 21:00 (`DeleteSupplierProjectJob` снёс 14 rt у поставщика, тест-тенанты/слепки/orphan-по-vid вычищены, `auth_log` сохранён N-3); F3 `audit:verify-chains` после teardown — **79 цепочек intact, 0 mismatch**. **🔴 FN-RESET (клиент-видимо, чинить ДО продажи):** сброс пароля сломан для ВСЕХ — `forgotPassword`→дефолтное Laravel-уведомление строит URL через `route('password.reset')`, которого нет (SPA-роут `/reset/:token`) → `Route [password.reset] not defined` → клиент видит «ошибка», письмо не уходит; побочно ломает анти-перебор. Фикс ~4 строки: `ResetPassword::createUrlUsing(...)` в `AppServiceProvider::boot()`. Найдено владельцем на `info@lkomega.ru`. **Прочее (не блокеры):** FN-AUDIT (verify-chains во время прогона краснеет на свежих app-строках текущего месяца — самоизлечивается после teardown, омега/глобальные цепочки целы; разработчику + чистка transient-инцидентов m06), FN-1 (смс+слово дал у поставщика только B2 без B3), FN-2 (мёртвый ключ `reminder` в дефолте notification_preferences), FN-3 (онбординг не ставит `users.email_verified_at`). **Наблюдение:** `failed_jobs` на проде = **494 191** (хронический хвост, не из прогона — разобрать отдельно). **Оставлен** онбординг-аккаунт tenant 24 (`kdv1@bk.ru`, 300₽). Отчёт `docs/superpowers/specs/2026-06-21-acceptance-RUN-report.md`; эфир — 16 карточек `live-demo/efir.html`. **Прод-код НЕ менялся** (только тест-данные, вычищены). Кодовая фраза стены — «роутер-наставник».
**Снимок снят:** 21.06.2026 (~17:20 МСК) — **🚀 ВЫКАЧЕН UI-аудит раунд 2 (4 деплоя) + 🔧 ПОЧИНЕН заход к поставщику + 🔴 ВСКРЫТА остановка лидов с 3 июня.**
**Что выкачено на прод (4 деплоя за сессию, gitea `c628d4ef..2225a848`, миграций НЕТ):** (1) Батч 1 — иконки «?»→Lucide (13 шт), почта поддержки `support@liderra.app``liderra.ru` (корень — дефолт `config/services.php`), убран префикс «text:» в активности сделки, карточка Канбана «0 ₽»→«—», подзаголовок Сделок «crm.bp»→«crm.bp-gr.ru»; (2) Батч 2 — **`lang/ru/validation.php`** (русские сообщения вместо сырого «validation.required» во ВСЕХ формах без кастомных messages()); (3) Батч 3 — **Безопасность**: реальная смена пароля (диалог + проверка текущего, эндпоинты `/api/account/change-password` + `/api/account/security`) + реальные входы вместо фейка; (4) Батч 4-7 — косметика (даты дд.мм.гггг через `RuDateField` вместо нативного `<input type=date>`; формат денег/цен; aria-label на eye-toggle; дашборд «3/0»; тост смены статуса; статус-метки русские; убран жаргон БД; админка: «ИНН не указан»/epoch-дата «1970»→«начала»/empty-state Инцидентов/`window.confirm/alert``v-dialog/snackbar`) + **мониторинг**: падение `CsvReconcileJob` теперь шлёт алерт на ops-email (троттл 6ч) — раньше падало молча (heartbeat «OK», т.к. `Schedule::job` меряет постановку в очередь) + **рабочая «Завершить сессию»**: `UserSessionTracker` пишет сессии в существующую `user_sessions` при входе (login+2FA+recovery), отзыв = удаление из Redis по session_id + строки; `DELETE /api/account/sessions/{id}`. Pest Account 10/10. **Метод деплоя:** фронт-сборка с sitekey (`ysc1_…` из текущего прод-бандла) → backend-файлы + бандл overlay через `ssh liderra-prod 'sudo tar -x'` (`root:root`) → `route:cache` от **www-data** + reload php8.3-fpm (config НЕ трогали → без квирка 107) → verify HTTP 200 + route:list. Бэкапы отката: `/var/www/liderra/_deploy-bak-audit-21` + `_deploy-bak-audit-21b`.