Fix the P7 prompt per the refuter findings: restore K-10 do-not-build, metrics and five stale register rows, correct freedom marking, bind sqlc, soften the version gate

This commit is contained in:
heaven 2026-08-16 04:13:56 +03:00
parent ba84fa2879
commit b8a80e6a1a

View file

@ -22,7 +22,8 @@
## 1. ПРЕДУСЛОВИЕ — проверить до первой строки кода
Нормативная спека — **канон `docs/architecture/14-api-contract/openapi.yaml`**, `info.version`
обязана быть **0.3.0**. Если там 0.2.3 — батч ещё не заленден: СТОП, пинг владельцу. ⚠ Зонное зеркало
обязана быть **0.3.0**. Если там 0.2.3 — батч ещё не заленден: исполни только пункты 02 состава
(§4 — они от батча не зависят), затем СТОП и пинг владельцу. ⚠ Зонное зеркало
`frontend/docs/api-contract/openapi.yaml` во фризе фронта может ОТСТАВАТЬ от канона — это известное
состояние; читать только канон.
@ -31,8 +32,9 @@
**Ты не коммитишь — лендит оркестратор.** Зона записи — только `platform/`. Прогресс, отчёт и
вопросы — ТОЛЬКО зонный журнал `platform/docs/platform-PROGRESS.md`. Чужие зоны read-only; чужие
незакоммиченные файлы (живой полигон: `eval/`, `docs/experiments/`) не трогать; `.env` не читать;
никаких `git add -A`/`reset`/`checkout`/переписывания истории. Ревью-гард D39.85: путь Go-модуля
платформы никогда не вкладывать под путь движка.
никаких `git add`/`git commit`/`reset`/`checkout`/переписывания истории — git не трогаешь вовсе,
файлы застейдженными не оставлять. Ревью-гард D39.85: путь Go-модуля платформы никогда не вкладывать
под путь движка.
## 3. Что читать (карта, ≤5 позиций)
@ -49,12 +51,15 @@
(миграция 00015) — источник юнитов/замечаний.
5. `CLAUDE.md` — гардрейлы; `docs/glossary.md` — жаргон.
## 4. Состав пака — в этом порядке (что «РОВНО так», помечено; остальное — реши сам и аргументируй)
## 4. Состав пака — в этом порядке. **СОСТАВ пунктов 05 — «делай РОВНО так» (ратифицирован);
свобода — в ФОРМАХ исполнения внутри пунктов, где канон/промт форму не фиксируют. Пункт 6 — судишь
сам. ⚠ Пункты 02 от батча 0.3.0 не зависят — при запуске до батча исполняй их и стоп перед п.3.**
**0. Рантбук деплоя живым `migrate` — end-to-end на дев-стенде ($0, первым шагом).** РОВНО так:
прогнать собственный `deploy/README.md` настоящим новым бинарём движка по каждой книге стенда
(`tmplatformctl books --migratable``tmctl migrate`) — это предусловие ПЕРВОГО выката (D39.134,
твой журнал честно фиксирует «живьём не гонялся»). Попутно починить мёртвый текст ошибки схемы в
**0. Рантбук деплоя живым `migrate` — end-to-end на дев-стенде ($0, первым шагом).** Прогнать
собственный `deploy/README.md` настоящим новым бинарём движка по каждой книге стенда
(`tmplatformctl books --migratable``tmctl migrate`) — предусловие ПЕРВОГО выката (мнение
оркестратора из пинга 15.08; движковая половина финальна — D39.134; твой журнал честно фиксирует
«живьём не гонялся»). Попутно починить мёртвый текст ошибки схемы в
`deploy/README.md:131` (движок теперь печатает токен `schema_mismatch found=N expected=M`, exit 13)
и комментарий-образец `cmd/tmplatformctl/runs.go:45` (зовёт голый `tmctl` из PATH — воспроизводит
тихий no-op старым бинарём); якорь П-1 в своём BACKLOG обновить.
@ -77,6 +82,9 @@ is IGNORED» — `internal/httpapi/v0.go:369-376`, якорь-отправная
форма 0.3.0) / банк (проекция сайдкаров движка + снимок стопа подписи `pending/complete`) /
`POST /bank/decisions` / **SSE-поток** в форме 0.3.0 (канал КНИГИ, кадры конца разбора и конца
прогона, `204` переподключению к завершённому, склейка ТОЛЬКО снимкам — `note`-класс не склеивать).
**Пофазность у главы НЕ строить** (К-10 отвечен «НЕТ», D39.138 п.5): колонки `units_draft_done`/
`units_edit_done` лежат в read-модели готовыми и «бесплатная проекция» напрашивается — фазы на провод
не выходят НИ у книги, ни у главы; глава отдаёт один счётчик по канону.
Сюда же сеть, шаги 12 §5б (строка 186): **gzip на текстовых ответах (НЕ на SSE)** и
`ETag`/`If-None-Match` → 304 на списочных GET. Совет-приор: ревизия у тебя уже читается одной
транзакцией со страницей (PD-163) — ETag из неё.
@ -87,15 +95,23 @@ is IGNORED» — `internal/httpapi/v0.go:369-376`, якорь-отправная
максимума вместо сброса к дефолту (Б-10); трейлинг-части интейка → 400 вместо тихой потери + `Location`
на 201 + `Idempotency-Key` (Б-3); `blocked: {code, book_id}` на run-options/409 (В-6); отказ по
неподдерживаемой паре кодом на интейке (сегодня ja/en-книга умирает `failed`-ом на валидации движка
в конце пути); `Run.failure_reason` (Б-8 — словарь исхода у движка уже есть).
в конце пути); `Run.failure_reason` (Б-8 — словарь исхода у движка уже есть); переименование
`verify_bank``stop_for_signing` на проводе (живёт в построенном: `v0.go:127,154`) и сворачивание
`finalizing` из словарей валидации (`runs.go:229`, `sink.go:435`; судьбу CHECK-констрейнтов
read-модели реши по канону — значение никем не пишется).
**6. Свой регистр — судишь сам:** PD-201 (самолечение «поймал exit 13 → migrate → повтор» — движковая
половина ФИНАЛЬНА, можно строить); кандидаты PD-219 / PD-217 / PD-162; находки §9 research/28
(незакрываемые расчёты — бюджет висения холда · флаг аккаунта сканом всех книг после PD-203 ·
`ReadRunForSpawn` O(живых) · лимитер входа · сырой Go-текст в карантине) — каждой явную диспозицию:
берёшь / P8 с причиной / отклоняешь с причиной. Протухший баннер §3 `PLATFORM_DIRECTION.md` привести
к D39.132 п.2б (oapi-codegen — кандидат ПРИ ЭТОМ паке, sqlc — привязан к этому паку: **реши сам** по
обоим и аргументируй; для sqlc помни `overrides` на денежные типы).
**6. Свой регистр — судишь сам (кроме помеченного):** PD-201 (самолечение «поймал exit 13 → migrate →
повтор» — движковая половина ФИНАЛЬНА, можно строить); кандидаты PD-219 / PD-217 / PD-162;
**обновить протухшие статусы (РОВНО так):** PD-172/PD-173/PD-174/PD-180 — диспозиция «спек-правка»
ИСПОЛНЕНА ещё 0.2.3 · PD-199 — ратифицирован закрытым D39.132 п.2а, в регистре до сих пор open;
находки §9 research/28 — каждой явную диспозицию (берёшь / P8 с причиной / отклоняешь с причиной):
незакрываемые расчёты (бюджет висения холда) · флаг аккаунта сканом всех книг (после PD-203) ·
`ReadRunForSpawn` O(живых) · **`/metrics` без аутентификации (защита — только 127.0.0.1)** · лимитер
входа на процесс · сырой Go-текст в карантине. Протухшие тексты зоны: баннер §3
`PLATFORM_DIRECTION.md` привести к D39.132 п.2б и §4 п.5 (склейка сузилась — только снимкам).
Инструменты: **sqlc — ПРИВЯЗАН к этому паку (D39.132 п.2б, ратифицировано):** внедряй на читающей
поверхности с `overrides` на денежные типы, отступление = пинг; oapi-codegen — кандидат, реши сам
и аргументируй.
**Явно отложено в P8 (не тихо):** `PATCH /books/{id}` (title-only) + `DELETE` + `GET /runs/{id}` ·
эскроу П-18 (денежный промт) · всё, что не влезло, — списком с причинами в отчёте.
@ -103,14 +119,17 @@ is IGNORED» — `internal/httpapi/v0.go:369-376`, якорь-отправная
## 5. Нормы исполнения
- **Самопроверка исполнением:** батарея `make check` + ОБА гейта (`TM_PLATFORM_TEST_DSN` +
`TM_PLATFORM_TEST_ENGINE_BIN`/`_BOOK_TEMPLATE`), скипов 0 — пропуски СПИСКОМ в отчёт; дифф
`^func Test` — исполнением, не памятью; живые пробы новых ручек против дев-стенда (сид P6).
`TM_PLATFORM_TEST_ENGINE_BIN`/`_BOOK_TEMPLATE`) — **скипов 0 это гейт**; физически неустранимый
скип = obstacle, объяви и объясни; дифф `^func Test` — исполнением, не памятью; живые пробы новых
ручек против дев-стенда (сид P6).
- **Заявление = команда:** каждое число/категорическое утверждение отчёта — с командой; приёмка
пере-ранит.
- **Записка-план по §4** (D39.121): каждый пункт (06 и отложенные) — строка «исполнено, где /
отказ, почему»; сдача = все с диспозицией, комплектность против заказа механически.
- **Шов:** если касаешься ЛЮБОГО канала движка — сначала инвентарь ВСЕХ его каналов и кодов чтением
чужого кода, не по памяти (урок D39.132: `status --json` упустили все, кроме панели приёмки).
- Посадки мутаций — дисциплина `ENGINEERING_STANDARDS.md` §3, пункт «посадки» (списочный пункт 3,
~:67-69; ⚠ нумерации «§3.3» в файле нет — не ищи заголовок).
- **Предметная ось зоны:** индустриальный первоисточник прежде велосипеда — RFC 9457 (problem+json),
WHATWG SSE (204/переподключение), RFC 9110/9111 (условные запросы, `Vary` при gzip); stdlib/устоявшаяся
библиотека прежде своего. Право добавить свою ось или снять эту — с аргументом.
@ -122,7 +141,7 @@ is IGNORED» — `internal/httpapi/v0.go:369-376`, якорь-отправная
контракт-конформность: ревьюер получает канон 0.3.0 и твои ручки, мандат «найди расхождение формы
провода со спекой» (пере-раном живых проб, не чтением); (б) деньги/шов: мандат «найди путь, где
холд/расчёт/канал движка ведёт себя не так, как записано» — с инвентарём каналов, не по списку
автора. Плюс **СВОИ посадки мутаций** в новые гейты/ручки (дисциплина `ENGINEERING_STANDARDS` §3.3:
автора. Плюс **СВОИ посадки мутаций** в новые гейты/ручки (дисциплина посадок `ENGINEERING_STANDARDS.md` §3:
свойство считается запиненным, когда посадка роняет тест — посадки НЕ из списка, который ты сам
ожидаешь). Проверяемый артефакт: таблица находок и посадок в отчёте, каждая с диспозицией
(исправлено / отклонено-с-причиной); ноль находок = повод не верить прогону.