docs(e2e): NOTES — расхождение c73bb3b с C6, круг 3б
Зачем: Codex и владельцу нужен точный список отличий интерфейса
scripts/rehome-tenant.mjs (c73bb3b) от контракта C6, чтобы выбрать один
интерфейс, а не подгонять сценарий под продукт молча.
- C6: таблица отличий (флаги --source/--target, обязательный --apply
с --actor/--backup-evidence, DATABASE_REHOME_URL, нет --json,
многострочный JSON, нет суммы журнала в dry-run) и два варианта решения.
- Раздел 8: tenant-config (как закрыть — по ACCEPTANCE-3), rehome
(интеграционный тест в check/CI всегда skipped и требует суперпользователя),
K18 (нет globals, isolation.sql зашит на ULID, личный путь в доке,
ротации нет, тесты backup не в CI).
This commit is contained in:
parent
404365c644
commit
a6a1b5e937
1 changed files with 53 additions and 0 deletions
|
|
@ -116,6 +116,29 @@ ID в названиях тестов — двойные «владелец/мо
|
|||
`staff_timesheet_entries` требуют `actor_id/created_by/updated_by = current_setting('app.user_id')` —
|
||||
для записи аудита без обхода RLS выставить `app.user_id`.
|
||||
|
||||
**Расхождение с `codex/fix-tenant-rehome` (c73bb3b, 16:48 NOVT; ACCEPTANCE-3 с просьбой держаться C6 — 16:35).**
|
||||
Сценарий на ветке: `dry-run exit: Tenant rehome stopped. Unknown option --from.` По существу скрипт делает
|
||||
всё, что проверяет сценарий (см. REPORT «Круг 3б»); не совпадает только интерфейс:
|
||||
|
||||
| C6 (сценарий) | c73bb3b | Итог в сценарии |
|
||||
| ------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `--from`, `--to` | `--source`, `--target` | `Unknown option --from`, exit 1 |
|
||||
| без флага — перенос | нужен `--apply`, без режима — `Specify --dry-run or --apply.` | — |
|
||||
| — | `--apply` требует `--actor <ULID>` и `--backup-evidence <json>` | у сценария нет ни того, ни другого |
|
||||
| `--json` | неизвестный флаг → exit 1; JSON печатается всегда | — |
|
||||
| `DATABASE_ADMIN_URL` | `DATABASE_REHOME_URL` (запасной вариант `DATABASE_MIGRATION_URL`) | — |
|
||||
| одна строка JSON, числа | многострочный JSON (`JSON.stringify(…, null, 2)`), счётчики — строки | парсер сценария ищет JSON в последней строке |
|
||||
| `ledger_amount_minor_sum` в dry-run и apply | в dry-run суммы нет; в apply `payrollLedger: [{currency, amountMinor}]` | с адаптером: `expected 'undefined' to be '328228'` |
|
||||
| `tables` — строки у `--from` | в apply `tables` — у `--to` после переноса (`staff_audit_log` +1) | не проверяется |
|
||||
|
||||
Какой интерфейс оставить, решает владелец. Варианты: (а) Codex добавляет в скрипт C6-совместимые
|
||||
`--from/--to/--json`, `DATABASE_ADMIN_URL`, сумму журнала в dry-run, а `--actor`/`--backup-evidence`
|
||||
берёт из переменных окружения (например, `REHOME_ACTOR_ID`, `REHOME_BACKUP_EVIDENCE`); (б) владелец утверждает
|
||||
интерфейс c73bb3b — тогда я меняю сценарий под него отдельным коммитом, а сумму журнала в dry-run
|
||||
оставляю требованием (TASK-GROK-3 §4 п.3: «`--dry-run` — ничего не меняет, печатает те же числа», то есть числа п.2, включая `SUM(amount_minor)`). В TASK-CODEX-2 §2.2 п.4 dry-run
|
||||
описан как «только отчёт о количестве строк по таблицам», то есть по этому пункту c73bb3b задание
|
||||
выполняет, а расходится только с C6.
|
||||
|
||||
## 2. Дефекты продукта, найденные сценариями (все красные сейчас)
|
||||
|
||||
Команда и фактический вывод — `tests/e2e/evidence/e2e-run.txt`; таблица — `tests/e2e/REPORT.md`.
|
||||
|
|
@ -251,3 +274,33 @@ does not exist` в `beforeAll` (`Tests 2 skipped`). На `6c5bf36`/`b283736` и
|
|||
ссылаться на событие outbox другого арендатора (RLS фильтрует чтение, но не ссылку). Предложение:
|
||||
`UNIQUE (tenant_id, id)` на `staff_outbox` и FK `(tenant_id, outbox_id)`.
|
||||
- **PILOT-REHOME**: скрипта нет → `[PILOT-REHOME]` красный; контракт — C6.
|
||||
|
||||
## 8. Круг 3б (основа f7d3c73, 2026-09-26 ~17:00 NOVT)
|
||||
|
||||
Вывод — `tests/e2e/report-evidence/round3-accept-f7d3c73.md`, `round3-k18-and-rehome.md`.
|
||||
|
||||
- **codex/fix-tenant-config (535052e)**: `npm run check` красный —
|
||||
`tests/unit/sync.test.ts:556:18` → `STANDALONE_TENANT_ID uses the development placeholder…`
|
||||
(строка 553 — заглушка, 563 — `NODE_ENV: 'test'`). Вывод владельца подтверждён; как исправить —
|
||||
ACCEPTANCE-3 (разрешить заглушку при `NODE_ENV === 'test'`).
|
||||
- **codex/fix-tenant-rehome (c73bb3b)**: по существу перенос верный (копия после восстановления: счётчики,
|
||||
ledger, FK, аудит `tenant.rehomed`, изоляция, отказ повтора). `[PILOT-REHOME]` красный из-за интерфейса —
|
||||
таблица различий в C6. Интеграционный тест `rehome-tenant.test.ts` зелёный только с
|
||||
`DATABASE_REHOME_TEST_URL`/`DATABASE_REHOME_TEST_CONFIRM` — в `npm run check` и CI он всегда `skipped`.
|
||||
Тест требует подключения суперпользователя (`rehome-tenant.test.ts:92-93`) и содержит один `it` —
|
||||
запуск скрипта от не-суперпользователя (как `krona_migrator` в пилоте) не покрыт.
|
||||
- **codex/fix-pilot-backups (a005c5e, K18)**: `test-backup.sh`/`test-backup-pull.sh` проходят (моки), но в
|
||||
`npm run check` и CI не входят. Учебное восстановление без Docker прошло (шим docker → pg_dump PG17,
|
||||
CMS, sha256, pg_restore, `restore-drill-report.sql` совпал). Замечания:
|
||||
- `backup.sh` снимает только `pg_dump -Fc` одной БД: ролей (globals) в копии нет. В кластере без ролей
|
||||
`pg_restore` → exit 1, 61 ошибка `role "krona_migrator" does not exist`. Шаг 4 runbook («Restore required
|
||||
roles and grants») нужно сделать исполнимым: скрипт создания ролей для восстановления или
|
||||
`pg_dumpall --globals-only --no-role-passwords` рядом с копией.
|
||||
- `restore-drill-isolation.sql` жёстко зашит на `01J00000000000000000000000` → `01M2R6AC5652NPT3MG34DKN4ZP`;
|
||||
после переноса «source/target» поменяются местами — стоит параметризовать (`psql -v`).
|
||||
- В `docs/BACKUP-RESTORE.md` личный путь `C:/Users/trush/Documents/KronaStaffBackups/` — в репозитории
|
||||
лучше указать роль или место без имени пользователя.
|
||||
- Ротации копий нет (сказано в документе); отказ таймера/pull должен кто-то мониторить — это пока только текст.
|
||||
- Предложение (моя зона, после слияния): добавить в CI `bash scripts/test-backup.sh`,
|
||||
`bash scripts/test-backup-pull.sh` и запуск `rehome-tenant.test.ts` / `live-postgres-remediation.test.ts`
|
||||
на одноразовых БД — так же, как это делает `accept-branch`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue