Почему: таблица приёмки и разбор C6 должны соответствовать текущим SHA веток Codex, а владелец должен видеть, какие расхождения с C6 остались послеd52ecf3и какая часть красного была ошибкой сценария (типы счётчиков,d477dde), а не продукта. - REPORT: таблица по повторному прогону (b022885,d52ecf3), разборd52ecf3. - NOTES C6: что закрыл d52ecf3; открыто — многострочный JSON, сумма журнала в dry-run, dry-run по умолчанию и обязательные --apply/--actor/--backup-evidence. - NOTES разд. 8: K18 наb022885— ротация на ПК есть, на сервере нет, личные пути в новых файлах.
This commit is contained in:
parent
75f76430d4
commit
bf80b5040e
2 changed files with 31 additions and 11 deletions
|
|
@ -93,7 +93,8 @@ ID в названиях тестов — двойные «владелец/мо
|
|||
- Запуск: `DATABASE_ADMIN_URL=<админ БД> node scripts/rehome-tenant.mjs --from 01J00000000000000000000000 --to 01M2R6AC5652NPT3MG34DKN4ZP [--dry-run] [--json]`.
|
||||
Стенд передаёт `DATABASE_ADMIN_URL` суперпользователя в БД стенда (`E2E_DB_ADMIN_URL` или
|
||||
`E2E_PG_ADMIN_URL` с именем БД).
|
||||
- `--json`: последней строкой stdout — `{"tables":{"<таблица>":<строк у --from>},"ledger_amount_minor_sum":<число или строка>}`.
|
||||
- `--json`: последней строкой stdout — `{"tables":{"<таблица>":<строк у --from>},"ledger_amount_minor_sum":<число или строка>}`
|
||||
(счётчики — число или строка с числом).
|
||||
Таблицы с нулём можно не печатать.
|
||||
- `--dry-run`: exit 0, те же числа, в БД ничего не меняется.
|
||||
- Перенос: exit 0; под `--from` 0 строк во **всех** таблицах с `tenant_id` (список из
|
||||
|
|
@ -131,6 +132,12 @@ ID в названиях тестов — двойные «владелец/мо
|
|||
| `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) | не проверяется |
|
||||
|
||||
**d52ecf3 (17:02)** закрыл строки 1, 4, 5 таблицы: `--from/--to`, `--json`, `DATABASE_ADMIN_URL` принимаются. Без
|
||||
флага теперь **dry-run** (по C6 — перенос), так что запуск сценария без `--apply` не переносит данные. Открытыми
|
||||
остаются многострочный JSON (сценарий: `dry-run без JSON-отчёта`), сумма журнала в dry-run и обязательные
|
||||
`--apply --actor --backup-evidence` (разд. 6.3 в `report-evidence/round3-k18-and-rehome.md`). Типы счётчиков
|
||||
расходились из-за ошибки сценария; она исправлена в d477dde, сравнение идёт через `Number()`.
|
||||
|
||||
Какой интерфейс оставить, решает владелец. Варианты: (а) Codex добавляет в скрипт C6-совместимые
|
||||
`--from/--to/--json`, `DATABASE_ADMIN_URL`, сумму журнала в dry-run, а `--actor`/`--backup-evidence`
|
||||
берёт из переменных окружения (например, `REHOME_ACTOR_ID`, `REHOME_BACKUP_EVIDENCE`); (б) владелец утверждает
|
||||
|
|
@ -283,13 +290,13 @@ does not exist` в `beforeAll` (`Tests 2 skipped`). На `6c5bf36`/`b283736` и
|
|||
`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)**: по существу перенос верный (копия после восстановления: счётчики,
|
||||
- **codex/fix-tenant-rehome (c73bb3b → d52ecf3)**: по существу перенос верный (копия после восстановления: счётчики,
|
||||
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` проходят (моки), но в
|
||||
- **codex/fix-pilot-backups (a005c5e → b022885, 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) в копии нет. В кластере без ролей
|
||||
|
|
@ -300,7 +307,9 @@ does not exist` в `beforeAll` (`Tests 2 skipped`). На `6c5bf36`/`b283736` и
|
|||
после переноса «source/target» поменяются местами — стоит параметризовать (`psql -v`).
|
||||
- В `docs/BACKUP-RESTORE.md` личный путь `C:/Users/trush/Documents/KronaStaffBackups/` — в репозитории
|
||||
лучше указать роль или место без имени пользователя.
|
||||
- Ротации копий нет (сказано в документе); отказ таймера/pull должен кто-то мониторить — это пока только текст.
|
||||
- b022885: ротация копий на ПК есть (`BACKUP_LOCAL_RETENTION_DAYS`, 90 дней; в `test-backup-pull.sh` есть проверка),
|
||||
ротации на сервере нет. В новых `scripts/run-pilot-backup-pull.ps1` и `deploy/pilot/backup.home-server.example`
|
||||
тоже зашиты личные пути. Контроль отказов таймера и задачи pull пока описан только в документе.
|
||||
- Предложение (моя зона, после слияния): добавить в CI `bash scripts/test-backup.sh`,
|
||||
`bash scripts/test-backup-pull.sh` и запуск `rehome-tenant.test.ts` / `live-postgres-remediation.test.ts`
|
||||
на одноразовых БД — так же, как это делает `accept-branch`.
|
||||
|
|
|
|||
|
|
@ -132,15 +132,18 @@ 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
|
||||
### Круг 3б: основа `f7d3c73` (ACCEPTANCE-3), 16:59 и 17:14 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).
|
||||
Команда: `node scripts/test/accept-branch.mjs <7 веток, не являющихся предками основы>`. Первый прогон (16:59, стенд
|
||||
`18f944e`) — [`round3-accept-f7d3c73.md`](report-evidence/round3-accept-f7d3c73.md). Пока шёл разбор, Codex
|
||||
запушил `fix-tenant-rehome` d52ecf3 (17:02) и `fix-pilot-backups` b022885 (17:07), поэтому все 7 веток прогнаны
|
||||
повторно (17:14, стенд `a6a1b5e`) — [`round3-accept-f7d3c73-rerun.md`](report-evidence/round3-accept-f7d3c73-rerun.md).
|
||||
В таблице — повторный прогон; на первом прогоне по c73bb3b и a005c5e результаты те же.
|
||||
|
||||
| Ветка | SHA | check | integration | e2e red/green | Стало зелёным | Стало красным |
|
||||
| ------------------------------------ | ------- | ------------------------------------------------------------------------ | ----------------------------------------------------- | ------------- | ------------------------------- | ------------- |
|
||||
|
|
@ -149,9 +152,9 @@ fix-tenant-rehome, fix-pilot-backups.
|
|||
| 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-pilot-backups | b022885 | 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 | — | — |
|
||||
| codex/fix-tenant-rehome | d52ecf3 | OK | 4/5 (rehome-tenant.test.ts OK), FAIL tenant-isolation | 46/5 | — | — |
|
||||
|
||||
- `git merge-tree`: 28 пар (7 с основой + 21 между собой) — **все чисто**.
|
||||
- «Форматирование без поведения» `a05777c`: `изменено файлов: 19 — ТОЛЬКО ФОРМАТИРОВАНИЕ`.
|
||||
|
|
@ -180,10 +183,18 @@ placeholder, which is allowed only in development on loopback`, `❯ tests/unit/
|
|||
вариант 1 (только перевод флагов и формата) — `expected 'undefined' to be '328228'`: **в dry-run нет суммы
|
||||
журнала**; вариант 2 (сумму досчитывает адаптер) — `✓ [PILOT-REHOME]`. Других расхождений сценарий не нашёл.
|
||||
|
||||
Ошибок в самом сценарии не нашёл, поэтому он не менялся.
|
||||
На **d52ecf3** (17:02) Codex добавил синонимы `--from/--to`, `--json`, `DATABASE_ADMIN_URL` и сделал dry-run режимом
|
||||
по умолчанию. `[PILOT-REHOME]` всё равно красный: `dry-run без JSON-отчёта: { "mode": "dry-run", … } : expected null
|
||||
not to be null` — JSON печатается на нескольких строках, а C6 требует его последней строкой. Если снимать
|
||||
расхождения по одному в копии сценария (не в коммите, [`round3-k18-and-rehome.md`](report-evidence/round3-k18-and-rehome.md), разд. 6.3), дальше
|
||||
падают: счётчики-строки (`'2'` vs `2`) → **это ошибка сценария**, исправлена в `d477dde` (сравнение через `Number()`);
|
||||
`expected 'undefined' to be '375888'` — в dry-run нет суммы журнала; `под заглушкой остались строки` — вызов без
|
||||
флага теперь dry-run, а по C6 это перенос, для которого продукт требует `--apply --actor --backup-evidence`.
|
||||
Других изменений в сценарии нет.
|
||||
|
||||
**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 они не входят. Учебное восстановление без
|
||||
оба `passed`, exit 0 (моки docker/ssh/scp) и на a005c5e, и на b022885 (b022885 добавил ротацию копий на ПК, 90 дней,
|
||||
и пользовательский systemd-сервис; ротации на сервере нет). В `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:
|
||||
|
|
|
|||
Loading…
Reference in a new issue