krona-staff/docs/audit/2026-09-26/ACCEPTANCE-3.md
Victor Trushenko f7d3c73f1f
Some checks failed
ci / verify (push) Has been cancelled
docs(audit): add third acceptance for Codex branches
Форматирование пересобрано чисто: ни один из 19 файлов не меняет
поведение после нормализации prettier. Пилот больше не может стартовать
с арендатором-заглушкой. Ветку с этой защитой нельзя влить, пока
tests/unit/sync.test.ts падает на новой проверке — записано, как
закрыть без правки чужой зоны.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-26 16:35:49 +07:00

70 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Приёмка №3 — 2026-09-26
Проверка независимая, на живой PostgreSQL 17.10, в отдельной рабочей копии. Ветки исполнителей не менялись. Основная ветка — `b0243d5`.
## Codex
| Ветка | Коммит | Вердикт |
| --------------------------- | --------- | --------------------------------------------------------------------------------------- |
| `codex/fix-format-baseline` | `a05777c` | **Принято.** Пункт 1 TASK-CODEX-2 выполнен |
| `codex/fix-live-database` | `1573860` | **Принято.** K3/N2 и K4/N1 по-прежнему зелёные |
| `codex/fix-tenant-config` | `535052e` | **Почти:** пункт 2.1 сделан правильно, но `npm run check` на ветке красный. Одна строка |
### Форматирование — пункт 1 закрыт
Перепроверил тем же способом, что и в прошлый раз: взял каждый из 19 изменённых файлов в версии из основы, прогнал prettier и сравнил с версией из ветки. **Ни один файл не отличается после нормализации** — в коммите только стиль. Синхронизация из него убрана.
`codex/fix-live-database` перебазирован на новое форматирование. Стенд Grok поверх ветки: K3/N2 и K4/N1 зелёные, стенд падает только сообщением «дефект исправлен, обновите known-defects.json» — это правильное поведение храповика, а не ошибка ветки.
### Пункт 2.1 — заглушка больше не вернётся
Сделано по всем четырём местам:
| Где | Как |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `deploy/pilot/setup.sh` | `validate_tenant()`: требует переменную, проверяет ULID, отдельно отказывает заглушке. Вызывается и при создании `.env`, и после его чтения |
| `compose.yaml` | `${STANDALONE_TENANT_ID:?…}` |
| `.env.example` | пусто, с комментарием откуда брать |
| `src/config.ts` | заглушка отклоняется, кроме `development` на loopback |
### Что мешает влить `codex/fix-tenant-config`
`npm run check` на ветке: **`Test Files 1 failed | 17 passed`**.
```text
FAIL 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:553` берёт `STANDALONE_TENANT_ID = '01J00000000000000000000000'` с `NODE_ENV: 'test'`. Новая проверка это запрещает. Четыре теста под заглушку ты поправил, а этот — в зоне Antigravity, поэтому и не поправил. Правильно, что не полез.
**Как закрыть, не трогая чужую зону:** разрешить заглушку и при `NODE_ENV === 'test'`. Инвариант защищает развёртывание, а `NODE_ENV=test` пилот никогда не обслуживает — на пилоте стоит `production`, в `compose.yaml` заглушка уже невозможна. Тест в `tests/unit/config.test.ts`, который сейчас требует отказа в test-режиме, соответственно поменять: пусть проверяет отказ в `production` и в `development` на не-loopback.
**Готово, когда** `npm run check` на ветке даёт `Test Files 19 passed` (или 18 passed | 1 skipped, как на основе).
### Осталось по TASK-CODEX-2
- Пункт 2.2 — `scripts/rehome-tenant.mjs` нет. Grok уже подготовил сценарии `PILOT-REHOME` и `PILOT-REHOME-SEED` и описал ожидаемый интерфейс в `tests/e2e/NOTES-FOR-EXECUTORS.md`: `DATABASE_ADMIN_URL=… node scripts/rehome-tenant.mjs --from … --to … [--dry-run] [--json]`. Держись этого интерфейса — тогда сценарий позеленеет сам.
- Пункт 2.3 — скрипта сопоставления `core_user_id` нет.
- Перед пунктом 2.2 — резервная копия K18 и проверка восстановления.
## Слияния — всё чисто
| Пара | Результат |
| ----------------------------------------- | --------- |
| Codex format + AG c0 | чисто |
| Codex live-database + AG c0 | чисто |
| Codex tenant-config + Codex live-database | чисто |
| Codex tenant-config + Grok | чисто |
| Grok + Codex live-database | чисто |
Antigravity выстроил свои ветки в цепочку: `fix-reject-device-shifts` → `fix-sync-c0-bootstrap`. Конфликта больше нет.
## Порядок влития
1. `grok/e2e-harness`.
2. Цепочка Antigravity: `fix-reject-device-shifts` → `fix-sync-c0-bootstrap`.
3. Codex: `fix-format-baseline` → `fix-live-database` → `fix-tenant-config` (после исправления теста).
4. Grok — коммит в `known-defects.json`: убрать K3/N2, K4/N1, K13/SYNC-A, K13/SYNC-B, SYNC-C0.
Разделы по Grok и Antigravity добавляются в этот файл после их проверки.