docs(e2e): REPORT — круг 3б, приёмка на основе f7d3c73

Зачем: владелец ждёт по 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 и данных пилота.
This commit is contained in:
grok 2026-09-26 17:13:45 +07:00
parent e33e593c99
commit 404365c644

View file

@ -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)). ([`report-evidence/round3-pilot-rehome.txt`](report-evidence/round3-pilot-rehome.txt)).
- Контракт, который проверяет сценарий, — `NOTES-FOR-EXECUTORS.md`, C6. - Контракт, который проверяет сценарий, — `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 ```sh
@ -365,7 +423,11 @@ $ git status --porcelain
`codex/fix-live-database`. `codex/fix-live-database`.
- S9 проверен удалением SQL-запросом мигратора (публичного API удаления точки нет). - S9 проверен удалением SQL-запросом мигратора (публичного API удаления точки нет).
- Причина невоспроизводимости N13 — гипотеза по коду. - Причина невоспроизводимости N13 — гипотеза по коду.
- Круг 3: `scripts/rehome-tenant.mjs` не существует — `[PILOT-REHOME]` проверен только временным - Круг 3: в основе `scripts/rehome-tenant.mjs` нет; на `codex/fix-tenant-rehome` скрипт проверен на копии
эталоном; контракт C6 — предположение. `accept-branch` в CI не запускается (разовый инструмент и через диагностический адаптер (интерфейс не совпадает с C6). `accept-branch` в CI не запускается (разовый инструмент
владельца/приёмщика). Режим `E2E_MIGRATOR_URL/E2E_APP_URL` проверен на том же локальном кластере владельца/приёмщика). Режим `E2E_MIGRATOR_URL/E2E_APP_URL` проверен на том же локальном кластере
(роли созданы заранее `provision-pg`), на чужом кластере — не проверено. (роли созданы заранее `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 сотрудник) не перепроверялось — данных пилота у меня нет.