docs/source-edit: пост-выкатная сверка байт-в-байт + полный прогон тестов на проде (1730/11)

Сверка прод===gitea===локалка (1105 файлов, 0 расхождений). Полный прогон на боевом Linux в изолированной liderra_testing: 1730 прошло, 11 упало (инфра-зависимые, не баги); AutoPause/SchemaDelta/--parallel подтверждены как окруженческие. Рецепт безопасного прода-прогона + грабли зафиксированы.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-26 07:53:14 +03:00
parent 442a809fdb
commit 90d4341a6a
@@ -1,6 +1,23 @@
# Хвосты сессии — разблокировка смены источника (Эпики 1–6)
> ✅ **СТАТУС 26.06.2026: ВЫКАЧЕНО НА БОЕВОЙ liderra.ru, ФЛАГ ВКЛЮЧЁН, ТУМБЛЕР В АДМИНКЕ.** Ветка влита в gitea `main` (`3cedf28f..f9f86ca0`, 24 коммита), выкачена скриптом `bin/deploy-source-edit.sh`. Флаг `routing_match_by_snapshot=true` (фича боевая активна). Дружелюбный тумблер ВКЛ/ВЫКЛ на экране «Интеграция с поставщиком» (коммит `f9f86ca0`). Идёт сутки наблюдения (drift=0, сверять «Вечерней заливкой»). Деньги клиента целы (1 838 400 ₽ / 1013). Детали выката — `ПИЛОТ.md` (снимки 26.06 ~01:00 и ~01:25). Откат — тумблер в ВЫКЛ или флаг `false`. Хвосты ниже — историческая хроника до выката.
> ✅ **СТАТУС 26.06.2026: ВЫКАЧЕНО НА БОЕВОЙ liderra.ru, ФЛАГ ВКЛЮЧЁН, ТУМБЛЕР В АДМИНКЕ.** Ветка влита в gitea `main` (`3cedf28f..fbf982e1`), выкачена скриптом `bin/deploy-source-edit.sh`. Флаг `routing_match_by_snapshot=true` (фича боевая активна). Дружелюбный тумблер ВКЛ/ВЫКЛ на экране «Интеграция с поставщиком» (коммит `f9f86ca0`). Идёт сутки наблюдения (drift=0, сверять «Вечерней заливкой»). Деньги клиента целы (1 838 400 ₽ / 1013). Детали выката — `ПИЛОТ.md` (снимки 26.06 ~01:00 и ~01:25). Откат — тумблер в ВЫКЛ или флаг `false`. Хвосты ниже — историческая хроника до выката.
## 🔍 26.06 — пост-выкатная сверка и полный прогон тестов НА ПРОДЕ
**Сверка прод === gitea === локалка (байт-в-байт):** клон gitea main на проде + sha256 каждого из **1105** git-файлов под `app/`: **0 расхождений**. Локалка==gitea (один коммит). Прод собран ровно из git, правок мимо git нет. Лишние на проде только окруженческие (`.env`, `bootstrap/cache/*` — генерятся `artisan optimize`).
**Полный прогон тестов на боевом Linux (изолированная база, живая `liderra` не тронута): 1730 прошло, 11 упало, 3 skip** (689с, последовательно).
- **Подтверждено: прежние «падения» — окружение, не баги.** AutoPause (падал после 21:00 МСК — time-of-day фикстура), SchemaDelta (мой фикс), `--parallel` (OOM воркеров на винде) — ВСЕ прошли на Linux.
- **11 упавших — инфраструктурно-зависимые, не бизнес-логика:** audit-цепочка под конкуренцией + verify-chains (tamper/incident), auth_log события, drop/create партиций по сроку, CSV-импорт Россвязи, DemoSeeder идемпотентность. Артефакты разовой тест-базы из `schema.sql` (партиции/конкуренция/файлы-данные иначе, чем на эталонной dev/CI). Денежные пути (биллинг/лиды/раздача/синк/сделки/проекты/RLS) — все зелёные.
- **Браузерные тесты исключены** (виснут на проде без мока): `tests/Browser/*`, supplier-portal `SupplierPortalClientReport/RtProject/SessionRefreshCommand/FormProjectChannel`. NB: удалять можно только ФАЙЛЫ внутри `tests/Browser/`, не саму папку (phpunit.xml testsuite → «directory not found»).
**Рецепт безопасного полного прогона на проде (изолированно)** — память [[feedback-prod-full-test-isolated-db]]:
1. `DROP DATABASE IF EXISTS liderra_testing WITH (FORCE)` (PG16 — сам закрывает висящие коннекты) + `CREATE ROLE test_runner LOGIN SUPERUSER PASSWORD ...` + `CREATE DATABASE liderra_testing OWNER test_runner`.
2. `psql -d liderra_testing -f db/schema.sql` (несёт схему + сиды suppliers/system_settings) + `php artisan partitions:create-months --ahead=2` (иначе аудит-INSERT падает «нет партиции» → 422).
3. Клон gitea в /tmp; `cp -r` прод-vendor (НЕ symlink — у symlink автозагрузчик заточен под прод-путь, классы тестов получают чужой namespace) + `composer dump-autoload -o`; `mkdir storage/framework/{views,cache/data,sessions,testing}` + chmod 777 (иначе «valid cache path»); чистый `.env` строго на liderra_testing+test_runner.
4. Прогон detached (`nohup ... &`) — переживает обрыв ssh (квирк #109). НЕ `set -e` вокруг `php artisan test` (вернёт не-ноль на падениях → оборвёт до печати итога).
5. Уборка: DROP базы+роли, rm клона/`.env`/логов.
**🚨 Грабли:** широкий `pkill -f artisan` на проде УБИВАЕТ боевой `queue:work` (systemd поднимает) — бить только по `"artisan test"` или `/tmp/liderra-verify`, не по `artisan`.
**Дата:** 2526.06.2026. **Ветка:** `feat/source-edit-snapshot-routing` (выкачена в main 26.06).
**План:** [docs/superpowers/plans/2026-06-25-source-edit-unblock-snapshot-routing.md](../plans/2026-06-25-source-edit-unblock-snapshot-routing.md).