docs(audit): add third acceptance for Codex branches
Some checks failed
ci / verify (push) Has been cancelled

Форматирование пересобрано чисто: ни один из 19 файлов не меняет
поведение после нормализации prettier. Пилот больше не может стартовать
с арендатором-заглушкой. Ветку с этой защитой нельзя влить, пока
tests/unit/sync.test.ts падает на новой проверке — записано, как
закрыть без правки чужой зоны.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Victor Trushenko 2026-09-26 16:35:49 +07:00
parent b0243d5001
commit f7d3c73f1f
2 changed files with 71 additions and 0 deletions

View file

@ -0,0 +1,70 @@
# Приёмка №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 добавляются в этот файл после их проверки.

View file

@ -8,6 +8,7 @@
| [ACCEPTANCE-1.md](ACCEPTANCE-1.md) | Приёмка первого круга работ Grok и Antigravity |
| [TASK-CODEX.md](TASK-CODEX.md) | Codex: сервер, расчёт, база, пилот, терминал, роли, подтверждение и согласие — этапы 0–6 |
| [ACCEPTANCE-2.md](ACCEPTANCE-2.md) | Приёмка второго круга: Grok принят, Codex и Antigravity — что доделать, порядок влития |
| [ACCEPTANCE-3.md](ACCEPTANCE-3.md) | Приёмка третьего круга: Codex принят кроме одного красного теста, порядок влития |
| [TASK-CODEX-2.md](TASK-CODEX-2.md) | Codex, **текущий круг**: форматирование без синхронизации, пилот на настоящего арендатора, сопоставление с платформой |
| [TASK-ANTIGRAVITY-3.md](TASK-ANTIGRAVITY-3.md) | Antigravity, **текущий круг**: починить тесты, цепочка веток, дальше S2–S9 и push |
| [TASK-GROK-3.md](TASK-GROK-3.md) | Grok, **текущий круг**: приёмка с интеграционными тестами и конфликтами, перенос арендатора |