From 99b09fef6d395bfc201630c8d8f097026d1b64ce Mon Sep 17 00:00:00 2001 From: heaven Date: Sun, 16 Aug 2026 18:09:37 +0300 Subject: [PATCH] Absorb the contract session's prompt review: erratum keeps the TermStatus axis, chapter counter gets segment logic, frame scope and delta reads join the batch --- docs/CONTRACT_BATCH_SESSION_PROMPT.md | 33 ++++++++++++++++++++------- docs/architecture/05-decisions-log.md | 1 + docs/research/28-contract-review.md | 8 +++++++ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/docs/CONTRACT_BATCH_SESSION_PROMPT.md b/docs/CONTRACT_BATCH_SESSION_PROMPT.md index 0f3d5c93..5cfa62dc 100644 --- a/docs/CONTRACT_BATCH_SESSION_PROMPT.md +++ b/docs/CONTRACT_BATCH_SESSION_PROMPT.md @@ -40,8 +40,9 @@ D39.138): ядро контракта здорово, дефекты сосре 1. **`docs/research/28-contract-review.md` — ЦЕЛИКОМ, это носитель твоего задания.** Состав и порядок батча — §5 · что резать — §5а · транспорт/сеть — §5б · решения владельца — §8 · форма модели ошибок — §8 п.4 и §8а · инструкции лендинга — §8б. ⚠ Ревью-шапка приёмки в голове файла несёт - ПОПРАВКИ (важнейшая: К-10 закрывается «НЕ строить» — пофазность у главы на провод не выносить, - это следствие Б-0) — читать тело через неё. + ПОПРАВКИ (важнейшие: К-10 закрывается «НЕ строить»; Б-0/Б-11а/Б-23 добавлены ПОСЛЕ адверсариального + судейства исходной сессии — их основания проверяй строже, одна подмена уже опрокинута эрратой + 16.08-г) — читать тело через неё. 2. **D39.138 п.2 (живой `docs/architecture/05-decisions-log.md`, с хвоста)** — ратификация решений. При расхождении формулировок research/28 и ноты побеждает НОТА. 3. **Канон 0.2.3 + компаньон** (`docs/architecture/14-api-contract/`) — целиком, до правок: ты обязан @@ -60,10 +61,15 @@ D39.138): ядро контракта здорово, дефекты сосре - **Порядок исполнения не косметика:** Б-1 (модель ошибок) — ПЕРВОЙ: от словаря кодов зависят формулировки Б-2/Б-3/Б-8/Б-14а/§8а. - **Б-0:** конвейер уходит с провода. `Progress` → один счётчик до ближайшей остановки, знаменатель — - КУПЛЕННЫЙ объём (после подписи банка полоса заново); `finalizing` снять из словарей (устная фраза - владельца, не норма — §8 п.15); `verify_bank` → `stop_for_signing` без упоминания следующей фазы; - `TermOrigin`/`TermStatus` с провода снять; `Unit` описать без «edit unit» и «1.9 на главу»; - из ВСЕХ описаний вычистить конвейерные слова — описания компилируются в JSDoc клиента. + КУПЛЕННЫЙ объём (после подписи банка полоса заново); **счётчик ГЛАВЫ — той же сегментной логикой** + («сделано в текущем сегменте / всего в сегменте»), иначе дерево глав читает ноль всю черновую волну — + исходная жалоба К-10, снятие фаз её само по себе не лечит; `finalizing` снять из словарей (устная + фраза владельца, не норма — §8 п.15); `verify_bank` → `stop_for_signing` без упоминания следующей + фазы; `TermOrigin` снять/переименовать (`ruby` — паро-специфика, настоящая утечка); ⚠ **`TermStatus` + ОСТАВИТЬ осью** (эррата 16.08-г: это продуктовый «главный фильтр работы» экрана подписи, шов клиента + его уже потребляет) — переименовать лишь значения, читающиеся движковыми (`auto`); `Unit` описать без + «edit unit» и «1.9 на главу»; из ВСЕХ описаний вычистить конвейерные слова — они компилируются в + JSDoc клиента. - **Б-1 — вариант B (§8 п.4 + §8а):** машинный `code` (двухуровневый: стабильный корневой + расширяемый вложенный) + `request_id` (значение на сервере уже есть); `title`/`detail` — developer-facing, клиент НЕ показывает; серверная локализованная фраза — отдельным полем ТОЛЬКО @@ -75,6 +81,14 @@ D39.138): ядро контракта здорово, дефекты сосре книга не стартует (D39.138 п.2з; в 0.2.3 поля НЕТ — заводишь ты). **К-13-остаток:** описание `paused_reason` `:879` «null in every other state» противоречит ратифицированному «paused+null» — поправить (D39.138 п.4). +- **Б-11а/§5б шаги 3–4 — В БАТЧ (заказ ПОВЕРХ §5: в его перечне Б-11а нет — дыра носителя, вписано + пост-ревью 16.08):** правило кадра «несёт применимую дельту ЛИБО счётчик + скоуп (id сущности + + версия), но не заставляет перечитывать коллекцию» — вместо нынешнего необязательного «сервер МОЖЕТ + склеивать»; форма дельта-чтения банка/замечаний `?after_version=` — контрактная (иначе «кадр банка + на главу = 372 МБ/прогон» встраивается в P7 и снимается второй ломкой; строка 186 маршрутизирует + семантику сюда). +- **`Idempotency-Key` — семантику решаешь ТЫ, не P7:** окно хранения, область ключа, ответ на повтор + с другими параметрами — записать в спеку; P7 только реализует. - **Жанр — выкинуть** из `BookIntake` и `Book` (Б-23; остальные половины удаления — строка 184, не твои). - **Экспорт остаётся** и получает состояние отказа (Б-4: `state` вместо булева `ready`, `failure_code`, `expires_at`, эхо формата, правило доступа к ссылке — ПТ-34). @@ -104,8 +118,11 @@ D39.138): ядро контракта здорово, дефекты сосре Точные имена полей и значений словаря кодов (класс 1 — из реальных причин `fail()` платформы, читай код) · формы схем (пять конвертов списков на `allOf` — §5а «слить формально») · состав и глубина -резки §5а (мёртвые поля/кадры — с обоснованием на каждое) · как записать семантику сжатия и условных -чтений (шаги 1–2 §5б — В спеку, не в зонный док) · формулировки всех описаний · размер страницы +резки §5а (мёртвые поля/кадры — с обоснованием на каждое) · как записать сеть — РАЗВОДИ по +наблюдаемости, чтобы не упереться в Б-16: условные чтения (`ETag`/`If-None-Match`/304/`Vary`) — +нормативная спека, клиент это видит и обязан уметь; «включить gzip на edge» — эксплуатационное +примечание, не норма (Б-16 выносит требования деплоя из контракта) · формулировки всех описаний · +размер страницы замечаний: замера масштаба нет (500 выбрано без числа — открытый вход строки 183), нового числа не выдумывай — оставь с оговоркой в компаньоне. Совет-приор (опровергается аргументом): для правил, которые OpenAPI не выражает (межполевые инварианты, условная обязательность), diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 18a95f53..ccfade8b 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -5,6 +5,7 @@ > ⚠ **Эррата 15.08 (D39.132):** D39.131 п.2(а) перечисляет полосу отказов «10 конфиг · 11 источник · 12 лок · 19 безымянный» — читать через D39.132 п.2(г): полоса ДОПОЛНЕНА **exit 13 = `schema_mismatch`** (~~обе зоны сошлись на числе независимо~~; ратифицирован направлением, ФИНАЛИЗИРОВАН приёмкой D39.134). > ⚠ **Эррата 15.08-б (D39.134 п.2а, вписана по аудиту корпуса):** клейм «зоны сошлись на 13 НЕЗАВИСИМО» (строкой выше и в D39.132 п.2г) СНЯТ — платформа прочитала число из незакоммиченного дерева движка и сама это записала (`platform/internal/ingest/exit.go:63-64`); на силу ратификации не влияет. > ⚠ **Эррата 15.08-в (D39.136 п.5):** форма контракт-ревью «фазный воркфлоу оркестратора» ОТМЕНЕНА словом владельца тем же днём — исполняет ОТДЕЛЬНАЯ СЕССИЯ со своим онбордингом (норма D39.120 п.2; оркестратор — автор части ратификаций 0.2.3, author≠reviewer); запущенная воркфлоу-фаза 1 остановлена, её результаты выброшены; промт — `docs/CONTRACT_REVIEW_SESSION_PROMPT.md`. +> ⚠ **Эррата 16.08-г (D39.138 п.2а, часть «TermStatus снять с провода»):** ОПРОКИНУТА пост-ревью АВТОРА отчёта research/28 (по заказу владельца, речек оркестратора уликами): обоснование Б-0 «ни один экран их не рисует» подменяло «экрана подписи ещё НЕТ» — ось статуса ПРОДУКТОВАЯ (спека `:1070-1072`: «главный фильтр работы» S5; шов клиента уже потребляет — `frontend/src/api/vocabulary.ts:159-163`). Читать так: ось `TermStatus` ОСТАВИТЬ, движковые слова значений переименовать в продуктовые; «`TermOrigin` снять/переименовать» (`ruby` — паро-специфика) — В СИЛЕ. Контекст метода: Б-0/Б-11а/Б-23 добавлены в отчёт ПОСЛЕ раунда адверсариального судейства сессии — их основания проверять строже (помечено в ревью-шапке отчёта). > ⚠ **Навигация (актуализация 07.08, эра D39.1xx):** append-only-дисциплина (D23.3) означает, что > НЕВЕРНЫЙ ФАКТ внутри старой ноты не переписывается, а получает эрратау — и тогда он опасен ровно > тем, что грепающий его найдёт ПЕРВЫМ, а эрратау ниже может не дочитать. Поэтому поправки к фактам diff --git a/docs/research/28-contract-review.md b/docs/research/28-contract-review.md index 00bd6c82..bed39aca 100644 --- a/docs/research/28-contract-review.md +++ b/docs/research/28-contract-review.md @@ -44,6 +44,14 @@ > Ограничение метода (честно заявлено сессией в §7/§10): опровергатели — семейство Claude; кросс-СЕМЕЙНЫЙ > проход — отдельный заказ. Решения §8 перенесены в D-лог нотой D39.138 (по §8б п.1); состав батча §5 — > носитель для исполняющих сессий, строка бэклога 183. +> 6. **Пост-ревью автора отчёта (16.08, по заказу владельца — ревью выданных промтов):** ⚠ Б-0, Б-11а и +> Б-23 добавлены ПОСЛЕ раунда адверсариального судейства — единственные три буллета без опровергателя +> исходной сессии; их основания проверять строже. Уже опрокинуто одно: **«TermStatus снять с провода» +> (Б-0 п.2 рекомендации) — НЕВЕРНО**, обоснование «ни один экран не рисует» подменяло «экрана подписи +> ещё нет»: ось продуктовая (`:1070-1072` — главный фильтр S5; шов клиента потребляет, +> `vocabulary.ts:159-163`) — ось ОСТАВИТЬ, слова переименовать (эррата 16.08-г D-лога). Вторая дыра +> носителя: Б-11а не входит в перечень §5 — правило кадра (скоуп/дельта-или-счётчик) и `?after_version=` +> (§5б шаги 3–4) заказаны батчу поверх §5 (промт батча, правка 16.08). ## 0. Резюме