From 404365c6442ca5e9b5d426f4884616ad222da140 Mon Sep 17 00:00:00 2001 From: grok Date: Sat, 26 Sep 2026 17:13:45 +0700 Subject: [PATCH] =?UTF-8?q?docs(e2e):=20REPORT=20=E2=80=94=20=D0=BA=D1=80?= =?UTF-8?q?=D1=83=D0=B3=203=D0=B1,=20=D0=BF=D1=80=D0=B8=D1=91=D0=BC=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B0=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=B5=20?= =?UTF-8?q?f7d3c73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зачем: владелец ждёт по ACCEPTANCE-3 таблицу приёмки всех открытых веток на новой основе, включая три новые ветки Codex, и ответ, зеленеет ли [PILOT-REHOME] на codex/fix-tenant-rehome. - Таблица accept-branch по 7 веткам (стенд 18f944e); храповик не тронут, потому что merge-base --is-ancestor показывает, что ничего не влито. - fix-tenant-config: вывод владельца подтверждён (sync.test.ts:556). - fix-tenant-rehome: [PILOT-REHOME] красный из-за интерфейса (Unknown option --from); по существу перенос проверен на копии. Сценарий не менялся: ошибок в нём нет. - fix-pilot-backups (K18): тесты с моками зелёные, учебное восстановление без Docker прошло, без globals в кластер без ролей не восстанавливается. - «Не проверено»: то, что требует Docker/systemd/ssh и данных пилота. --- tests/e2e/REPORT.md | 66 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/tests/e2e/REPORT.md b/tests/e2e/REPORT.md index 7e3a8dd..77f8627 100644 --- a/tests/e2e/REPORT.md +++ b/tests/e2e/REPORT.md @@ -132,6 +132,64 @@ merge `grok/e2e-harness`. Вывод — [`round3-combined-merge.md`](report-evi ([`report-evidence/round3-pilot-rehome.txt`](report-evidence/round3-pilot-rehome.txt)). - Контракт, который проверяет сценарий, — `NOTES-FOR-EXECUTORS.md`, C6. +### Круг 3б: основа `f7d3c73` (ACCEPTANCE-3), 16:59 NOVT + +Храповик **не тронут**: после `git fetch` `git merge-base --is-ancestor origin/<ветка> +origin/codex/bootstrap-platform-foundation` — `not merged` для grok/e2e-harness, fix-live-database, +fix-format-baseline, fix-reject-device-shifts, fix-sync-c0-bootstrap, fix-tenant-config, +fix-tenant-rehome, fix-pilot-backups. + +Команда: `node scripts/test/accept-branch.mjs <7 веток, не являющихся предками основы>`, стенд `18f944e`. +Полный вывод — [`report-evidence/round3-accept-f7d3c73.md`](report-evidence/round3-accept-f7d3c73.md). + +| Ветка | SHA | check | integration | e2e red/green | Стало зелёным | Стало красным | +| ------------------------------------ | ------- | ------------------------------------------------------------------------ | ----------------------------------------------------- | ------------- | ------------------------------- | ------------- | +| основа | f7d3c73 | OK (195 passed, 1 skipped) | 3/4, FAIL tenant-isolation | 46/5 | n/a | n/a | +| antigravity/fix-reject-device-shifts | b283736 | OK | 4/5, FAIL tenant-isolation | 44/7 | K13/SYNC-A, K13/SYNC-B | — | +| antigravity/fix-sync-c0-bootstrap | 24cc18d | OK | 5/6, FAIL tenant-isolation | 43/8 | K13/SYNC-A, K13/SYNC-B, SYNC-C0 | — | +| codex/fix-format-baseline | a05777c | OK | 3/4, FAIL tenant-isolation | 46/5 | — | — | +| codex/fix-live-database | 1573860 | OK | 4/5, FAIL tenant-isolation | 44/7 | K3/N2, K4/N1 | — | +| codex/fix-pilot-backups | a005c5e | OK | 3/4, FAIL tenant-isolation | 46/5 | — | — | +| codex/fix-tenant-config | 535052e | **FAIL** `Error: STANDALONE_TENANT_ID uses the development placeholder…` | 3/4, FAIL tenant-isolation | 46/5 | — | — | +| codex/fix-tenant-rehome | c73bb3b | OK | 4/5 (rehome-tenant.test.ts OK), FAIL tenant-isolation | 46/5 | — | — | + +- `git merge-tree`: 28 пар (7 с основой + 21 между собой) — **все чисто**. +- «Форматирование без поведения» `a05777c`: `изменено файлов: 19 — ТОЛЬКО ФОРМАТИРОВАНИЕ`. +- `tenant-isolation.test.ts` — N5 (`permission denied for table staff_employees`), исправление в grok/e2e-harness. +- accept-branch дополнен (`18f944e`): для `rehome-tenant.test.ts` создаётся пустая `krona_acc_rehome_test` + (суперпользователь, `DATABASE_REHOME_TEST_CONFIRM` из `docs/TENANT-REHOME.md`) — иначе файл пропускается. + +**codex/fix-tenant-config — вывод владельца подтверждён.** Лог `npm run check`: +`FAIL tests/unit/sync.test.ts [ tests/unit/sync.test.ts ]`, `Error: STANDALONE_TENANT_ID uses the development +placeholder, which is allowed only in development on loopback`, `❯ tests/unit/sync.test.ts:556:18`, +`Test Files 1 failed | 18 passed | 1 skipped (20)`. В ветке: строка 553 `const tenantId = '01J00000000000000000000000'`, +556 `loadConfig({`, 563 `NODE_ENV: 'test'`. (У владельца `1 failed | 17 passed`; у меня на один файл больше +из-за оверлея стенда — `tests/e2e/harness/node-commands.test.ts`.) + +**codex/fix-tenant-rehome — `[PILOT-REHOME]` красный.** Вывод на ветке: +`dry-run exit: Tenant rehome stopped. Unknown option --from. … expected 1 to be +0`. Скрипт есть, но интерфейс +не совпадает с C6 (разница — NOTES, C6). По существу скрипт проверен двумя способами +([`round3-k18-and-rehome.md`](report-evidence/round3-k18-and-rehome.md)): + +1. На восстановленной копии (после учебного восстановления K18), интерфейсом продукта: dry-run exit 0 и БД не изменилась; + apply без `--backup-evidence` → отказ; apply → exit 0, под заглушкой 0 строк, счётчики совпали, audit 2 → 3 + (`tenant.rehomed tenant_rehome`), прочие арендаторы не изменились, ledger `RUB 263568` до и после, FK до и после + совпали (md5), `krona_staff_app`: 0 под заглушкой / 3 под новым tenant, `UPDATE staff_payroll_ledger` → + `permission denied`, повтор → `Target tenant already contains staff data; refusing merge`, exit 1. +2. Сценарий `[PILOT-REHOME]` через диагностический адаптер C6 → c73bb3b (не в продукте и не в сценарии): + вариант 1 (только перевод флагов и формата) — `expected 'undefined' to be '328228'`: **в dry-run нет суммы + журнала**; вариант 2 (сумму досчитывает адаптер) — `✓ [PILOT-REHOME]`. Других расхождений сценарий не нашёл. + +Ошибок в самом сценарии не нашёл, поэтому он не менялся. + +**codex/fix-pilot-backups (K18).** `bash scripts/test-backup.sh` и `bash scripts/test-backup-pull.sh` — +оба `passed`, exit 0 (моки docker/ssh/scp). В `npm run check` и CI они не входят. Учебное восстановление без +Docker (шим `docker compose exec` → локальный `pg_dump` PG17): `backup.sh` exit 0, на сервере 0 незашифрованных +файлов, `sha256sum -c` OK, расшифровка ключом вне сервера, `pg_restore --exit-on-error` exit 0, +`restore-drill-report.sql` на источнике и копии — `идентичны` (79 строк, `RLS|27|t`), isolation: +`source-employee-count|3`, `target-employee-count|0`. Восстановление в кластер без ролей: `pg_restore` exit 1, +61 ошибка `role "krona_migrator" does not exist` — в копии нет ролей (globals). + ## Как запустить ```sh @@ -365,7 +423,11 @@ $ git status --porcelain `codex/fix-live-database`. - S9 проверен удалением SQL-запросом мигратора (публичного API удаления точки нет). - Причина невоспроизводимости N13 — гипотеза по коду. -- Круг 3: `scripts/rehome-tenant.mjs` не существует — `[PILOT-REHOME]` проверен только временным - эталоном; контракт C6 — предположение. `accept-branch` в CI не запускается (разовый инструмент +- Круг 3: в основе `scripts/rehome-tenant.mjs` нет; на `codex/fix-tenant-rehome` скрипт проверен на копии + и через диагностический адаптер (интерфейс не совпадает с C6). `accept-branch` в CI не запускается (разовый инструмент владельца/приёмщика). Режим `E2E_MIGRATOR_URL/E2E_APP_URL` проверен на том же локальном кластере (роли созданы заранее `provision-pg`), на чужом кластере — не проверено. +- Круг 3б (K18) без Docker не проверено: настоящий `docker compose exec` в пилотном контейнере, systemd + timer/service, `pull-pilot-backups.sh` с реальным ssh/scp (только моки из тестов Codex), восстановление + в контейнер `postgres` с `init-app-role.sh`, хранение ключа и политика хранения. Учебное восстановление Codex + на пилоте (sha256 `2fc680ae…`, 51 сотрудник) не перепроверялось — данных пилота у меня нет.