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>
70 lines
6.4 KiB
Markdown
70 lines
6.4 KiB
Markdown
# Приёмка №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 добавляются в этот файл после их проверки.
|