diff --git a/docs/CONTRACT_BATCH_SESSION_PROMPT.md b/docs/CONTRACT_BATCH_SESSION_PROMPT.md new file mode 100644 index 00000000..a7408c16 --- /dev/null +++ b/docs/CONTRACT_BATCH_SESSION_PROMPT.md @@ -0,0 +1,139 @@ +# Промт: сессия БАТЧ 0.3.0 — ломающая правка контракта API v0 по принятому ревью (строка 183) + +> Выдан оркестратором №17 16.08.2026 по ратификации D39.138 (приёмка контракт-ревью research/28; +> решения владельца 16.08 — его §8). Исполняет ОТДЕЛЬНАЯ сессия со своим онбордингом (норма D39.120 п.2). +> Запуск — по слову владельца. + +## 0. Какую проблему ты решаешь и что решит твой результат + +Проект — SaaS-перевод книг: движок (Go, `backend/`) ↔ платформа (control plane, `platform/`) ↔ +веб-фронт (`frontend/`). Между фронтом и платформой стоит ратифицированный контракт **API v0** +(OpenAPI 3.1). Он рос точечными правками 0.2.0→0.2.3 под давлением строек, и целостного ревью не +имел. 15–16.08 отдельная сессия провела такое ревью (`docs/research/28-contract-review.md` — ПРИНЯТ, +D39.138): ядро контракта здорово, дефекты сосредоточены там, где контракт писался вперёд без +потребителя — ошибки, поток, экспорт, замечания, глава. Владелец разобрал доклад вопрос-за-вопросом +и принял решения (§8 отчёта); оркестратор ратифицировал их нотой **D39.138 п.2**. + +Твоя работа — **исполнить эти решения правкой спеки**: батч 0.3.0. Момент дешёвый и не повторится: +**платформа не отвечает на 8 операций из 16** (сервера за ними нет вовсе, а фронт заморожен и живёт +на моках), поэтому правка их формы сегодня стоит только правки документа. Сразу после тебя платформа строит читающую +поверхность (пак P7) **по твоей спеке** — каждый пропущенный тобой дефект она отольёт в код, миграции +и воркер, где он подорожает на порядок. Отнесись к каждой форме ответственно: этот документ — закон +для трёх зон. + +## 1. Зона и git (читать ДО первой правки) + +**Ты не коммитишь — лендит оркестратор.** Твоя зона записи — РОВНО три файла: +1. `docs/architecture/14-api-contract/openapi.yaml` — нормативная спека (канон); +2. `docs/architecture/14-api-contract/README.md` — компаньон (правится ВМЕСТЕ со спекой, §5 ниже); +3. `docs/archive/reports/CONTRACT_BATCH_0.3.0_REPORT.md` — твой отчёт (новый файл). + +Всё остальное — read-only: код трёх зон читать можно и нужно, править нельзя. **Зеркало +`frontend/docs/api-contract/openapi.yaml` НЕ трогать** — зона фронта заморожена (D39.136 п.2), зеркало +синхронизируют лендинг и первое касание зоны; временное расхождение канона и зеркала — известное +состояние, не дефект (ратифицируется при лендинге). Чужие незакоммиченные файлы в дереве (живой +полигон: `eval/`, `docs/experiments/`, `docs/POLYGON_*`) не трогать. `.env` не читать. Никаких +`git add`/`commit`/`reset`/`checkout` — дерево остаётся как есть, git трогает только оркестратор. + +## 2. Что читать (карта, ≤5 позиций; порядок важен) + +1. **`docs/research/28-contract-review.md` — ЦЕЛИКОМ, это носитель твоего задания.** Состав и порядок + батча — §5 · что резать — §5а · транспорт/сеть — §5б · решения владельца — §8 · форма модели + ошибок — §8 п.4 и §8а · инструкции лендинга — §8б. ⚠ Ревью-шапка приёмки в голове файла несёт + ПОПРАВКИ (важнейшая: К-10 закрывается «НЕ строить» — пофазность у главы на провод не выносить, + это следствие Б-0) — читать тело через неё. +2. **D39.138 п.2 (живой `docs/architecture/05-decisions-log.md`, с хвоста)** — ратификация решений. + При расхождении формулировок research/28 и ноты побеждает НОТА. +3. **Канон 0.2.3 + компаньон** (`docs/architecture/14-api-contract/`) — целиком, до правок: ты обязан + знать, что ломаешь и почему оно было таким (у половины форм есть записанные обоснования — их + судьба решается, а не игнорируется). +4. Код трёх зон — по мере нужды, read-only. `file:line`-якоря отчёта research/28 — отправные точки, + **код первичен**: перед тем как записать в спеку факт о поведении сервера/клиента, открой место + и перепроверь (якоря могли уплыть). +5. `CLAUDE.md` (корень) — гардрейлы проекта; `docs/glossary.md` — жаргон. + +## 3. Ратифицировано — делай РОВНО так (отступление = пинг владельцу, не тихая девиация) + +Состав и порядок — **research/28 §5** (здесь не пересказывается — не дублировать носитель). +Несущие рамки из D39.138 п.2, которые обязаны выжить в любой твоей редакции: + +- **Порядок исполнения не косметика:** Б-1 (модель ошибок) — ПЕРВОЙ: от словаря кодов зависят + формулировки Б-2/Б-3/Б-8/Б-14а/§8а. +- **Б-0:** конвейер уходит с провода. `Progress` → один счётчик до ближайшей остановки, знаменатель — + КУПЛЕННЫЙ объём (после подписи банка полоса заново); `finalizing` снять из словарей (устная фраза + владельца, не норма — §8 п.15); `verify_bank` → `stop_for_signing` без упоминания следующей фазы; + `TermOrigin`/`TermStatus` с провода снять; `Unit` описать без «edit unit» и «1.9 на главу»; + из ВСЕХ описаний вычистить конвейерные слова — описания компилируются в JSDoc клиента. +- **Б-1 — вариант B (§8 п.4 + §8а):** машинный `code` (двухуровневый: стабильный корневой + + расширяемый вложенный) + `request_id` (значение на сервере уже есть); `title`/`detail` — + developer-facing, клиент НЕ показывает; серверная локализованная фраза — отдельным полем ТОЛЬКО + для неперечислимых причин; `errors[]` с указателем поля для валидации. Два класса конкретности: + класс 1 (детерминированные — вход/счёт) — конкретика максимальная; класс 2 (модельные — прескрин / + отказ провайдера / фильтр) — ОДИН грубый код на весь класс, без вариации между попытками (К-9: + `rejected` + грубый код, 12-й статус НЕ заводить). +- **Жанр — выкинуть** из `BookIntake` и `Book` (Б-23; остальные половины удаления — строка 184, не твои). +- **Экспорт остаётся** и получает состояние отказа (Б-4: `state` вместо булева `ready`, `failure_code`, + `expires_at`, эхо формата, правило доступа к ссылке — ПТ-34). +- **Б-19:** запрет клиентской служебной метки «Глава {n}» СНЯТЬ (противоречит решению владельца 09.08 — + это ратифицировано); а вот `title_raw`/`kind`/структурная версия — ВЫБОР ТВОЙ из двух названных форм + (заложить формой сейчас ЛИБО явно передать дизайн-паку 161 с записью в компаньоне) — аргументируй. +- **Версия = 0.3.0**, обычный ломающий минор; право ломать в 0.x — весь бета-период (§8 п.17). +- **НЕ заводить в батч:** `POST /books/{id}/parts` (строка 185, дизайн — пак 161) · историю прогонов + (в МВП не нужна) · двухшаговую загрузку · ленту изменений структуры · поиск/фильтр · «грубую группу + статуса» — всё это записывается в компаньон НАПРАВЛЕНИЯМИ с номерами строк бэклога (дисциплина Б-21). +- **Гейт на утечку конвейера** (тест по образцу языкового) — фронт-половина, тебе НЕ строить; в + компаньон записать само правило «на проводе нет имён стадий/волн и движковых словарей» как + ревью-вопрос каждой правки. + +## 4. Реши сам и аргументируй в отчёте + +Точные имена полей и значений словаря кодов (класс 1 — из реальных причин `fail()` платформы, читай +код) · формы схем (пять конвертов списков на `allOf` — §5а «слить формально») · состав и глубина +резки §5а (мёртвые поля/кадры — с обоснованием на каждое) · как записать семантику сжатия и условных +чтений (шаги 1–2 §5б — В спеку, не в зонный док) · формулировки всех описаний. Совет-приор (опровергается +аргументом): для правил, которые OpenAPI не выражает (межполевые инварианты, условная обязательность), +образец уже есть в спеке — `BankDecision.dst` через `if/then` плюс прозу; помни улику К-11: генераторы +`if/then` игнорируют, значит правило обязано жить и словами для клиента. + +## 5. Компаньон — ВМЕСТЕ со спекой (не после) + +(а) Снять опровергнутые утверждения: ответ §5 «добавлена волна → фронт не правится» (опровергнут +исполнением, Б-0) · «канала банка нет» §3 против собственной строки 267 (Б-7а) · resume-абзац +(Б-7а п.4: лечение «новый прогон с бОльшим потолком» существует). (б) Завести таблицу +«чтение → источник → строка бэклога» и правило «предупреждение о недостроенном несёт номер строки» +(Б-21). (в) Обновить провенанс-классы ✓/◆/○ под 0.3.0. (г) Приложение А (карта «код → фраза»): +структуру перевести на словарь кодов Б-1, СЛОВА не заполнять — фразы пишет владелец (строка 148). +(д) Генезис-прозу из спеки (история ратификаций, апологии RFC — §5а называет места) переносить в +компаньон, не удалять. + +## 6. Мандат самопроверки — исполнением, не заявлением + +1. **Линт (форма проверена исполнением 16.08):** `cd frontend && npx spectral lint + ../docs/architecture/14-api-contract/openapi.yaml --ruleset .spectral.yaml --fail-severity=warn` + — exit 0 (предупреждение валит так же, как ошибка). Читать/запускать фронт-тулинг можно, + писать в зону фронта — нет. +2. **Записка-план по §5** (норма D39.121): каждый пункт §5 research/28 (включая однострочники и §5а) + получает строку «исполнено, где / отказ, почему» — сдача = все ID с диспозицией; это же — + скелет твоего отчёта. Комплектность против заказа — механически, не по памяти. +3. **Предметные оси** (право снять/добавить свою — с аргументом): (а) «второй клиент» — сгенерируй + мысленно (или реально) клиента по своей схеме: не указывает ли она нарушить собственную прозу + (класс PD-172: порядок свойств `BookIntake` указывал класть файл вторым); (б) анти-утечка — греп + финальной спеки по словарю конвейера (draft/edit/wave/stage/mined/ruby/finalizing и что найдёшь + сам); (в) каждое «оставить как есть» в спорном месте несёт записанный контраргумент (анти-инерция). +4. **Заявление = команда:** каждое числовое/категорическое утверждение отчёта — с командой, которой + получено; приёмка их пере-ранит. +5. Несогласие с ратифицированным решением — СТОП по этому пункту и пинг через владельца с аргументом; + у тебя есть право сказать «этого делать не надо» — но не право молча сделать иначе. + +## 7. Эхо-протокол старта + +Первый деливерабл — ≤10 строк: «что я понял: скоуп / инварианты / чего НЕ делаю». Расхождение чинится +на минуте пять, не на приёмке. + +## 8. Сдача + +Отчёт `docs/archive/reports/CONTRACT_BATCH_0.3.0_REPORT.md`: записка-план §6.2 с диспозициями · +спорные формы с вариантами и твоим выбором · **obstacle reporting — что НЕ удалось/не сделано и +почему (обязательная секция)** · дифф-сводка «было → стало» по операциям. Без саги. Дерево оставить +незакоммиченным. Вопросы и конфликты промта с кодом/доками — пинг оркестратору через владельца, +НЕ интерпретация. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 8e9482d0..e5d3b645 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -3,7 +3,7 @@ > **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-16, голова D39.140 — аудит бэклога: ПОТЕРЬ НЕТ (200/200 ID со следом), 9 бесхозных хвостов получили носителей (188–190, дописки 172-г/28, Б-108×3); D39.139 — подрезка хвостов D-лога/PROGRESS + свип планировочных доков; D39.138 — контракт-ревью ПРИНЯТО (research/28: 4 опровергателя, 42 улики, 0 опровергнуто), решения владельца 16.08 ратифицированы, батч 0.3.0 заказан отдельной спек-сессией (строка 183, промт — очередь №17); пере-пин DeepSeek — D39.137; пакет слов владельца — D39.136; приёмка S4 + контракт 0.2.3 в каноне — D39.135; приёмка бэкенд-migrate — D39.134; передача №16→№17 — D39.133; приёмки S3.6/S3.7 — D39.127/129, P5 — D39.130, эмиттера — D39.131, P6+дофикс — D39.132). Оркестраторов ДВА (решение владельца 07.08): этот — движок/платформа/фронт/доки; параллельный (РОЛЬЮ, без номера — счётчик один, D39.112 п.6) — приёмка полигона. Одновременно не запускаются; CURRENT-STATE ведут оба, чужие строки не трогают. Норма изоляции панелей после инцидента отката чужих файлов — D39.113, гардрейлы в CLAUDE.md. > - **Эра №15 закрыта — семь приёмок, все ПРИНЯТЫ и залендены**; лента, коммиты и разборы — D39.109–123 (D-лог) и реестр нот `architecture/05-decisions-index.md`; снимок прежних бюллетеней этой шапки — архив-слайс `-08-02-04`. > - **ЖИВОЕ:** полигон эксп-22/23 — дерево ЗАЛЕНДЕНО 10.08 с ревью-шапками приёмки №16 (числа подтверждены независимым пересчётом; **выводы НЕ ратифицированы** — владелец 10.08 признал постановку неполной), **фаза Д ИДЁТ (заказ 10.08)**: промт `docs/POLYGON_EXP2223_REDO_SESSION_PROMPT.md` (staged полигоном); деньги фазы: расход $6.0024, цепь потолков $4.50→$5.40→$6.74 — **САНКЦИОНИРОВАНО словом владельца 15.08 напрямую оркестратору №17** («потолок поднимал я, мы с полигоном в синке»); замена ja-книги на `enkan_no_hate_ja` — им же, СТОП ja-оси снят (ход — секция «Полигон» ниже); при ратификации фазы Д в D-ноту: декой-правило + обязательный кросс-семейный опровергатель приёмки (одобрены владельцем 10.08) · фронт: **ЗОНА ЗАМОРОЖЕНА словом владельца (D39.136 п.2)** после принятого S4 (D39.135, `267aa35`: путь «файл → загрузка → разбор → запуск с потолком → прогресс» в мире моков, контракт **0.2.3 В КАНОНЕ**); разморозка = лендинг P7 + ответы гейта S5 (~~В-10~~ ЗАКРЫТ 16.08 «вежливость», D39.138 п.2к · пере-заказ фраз В-11 — форма дана ревью 28: клиент рисует фразу по машинному `code`, Б-1/§8а, зонная половина — после батча 183); фикс-лист ФС-1..12 + Ф-63/Ф-28 (одобрены) — вход первого касания зоны; живой smoke против дев-стенда — легитимен и во фризе; i18n-механизм построен (ПТ-36 🔶) · **платформа P5 ИСПОЛНЕНА и ПРИНЯТА в три раунда (D39.130, `69d485a`)**: интейк книг `POST /books` с сентинелом хранилища · стоп/резюм с намерением в Postgres · Prometheus · Go-floor 1.26.6; развилка `book.yaml`: бета = форма Б (стройка следующим касанием зоны), движковая форма = строка 170 · **эмиттер ИСПОЛНЕН и ПРИНЯТ (D39.131, `9cfe080`, дофикс до лендинга)**: `events.jsonl` (StreamVersion 1.1) + exit 4 потолок / 5 graceful / полоса отказов 10–19 + пер-вызовный репэйр-гейт; строки 103/135/165/102 закрыты; движковая половина PD-113/PD-196 построена D39.131 · **платформа P6 + дофикс ИСПОЛНЕНЫ и ПРИНЯТЫ (D39.132)**: потребительская половина шва (exit-коды одним словарём, `unit_done` присваиванием, scope потолка, TM_TRACE_ID против усыновления) + интейк формы Б + дев-стенд с сидом — **PD-113/PD-196 ЗАКРЫТЫ, шов закрыт с обеих сторон, major в регистре платформы 0**; деплой-порядок против деадлока v15 записан и исполним (`tmplatformctl books --migratable`) · **`tmctl migrate` ИСПОЛНЕН и ПРИНЯТ (D39.134, `d55edd4`; панель 6 линз, 6/6 мутаций приёмки пойманы)**: exit 13 ФИНАЛИЗИРОВАН, строка 174 закрыта, 175 пере-скоуплена на дальний остаток, новая 177 — гигиена restore point; деплой эмиттер-бинаря РАЗБЛОКИРОВАН схемно (⚠ рантбук деплоя живым `migrate` end-to-end ещё НЕ гонялся — предусловие первого выката, пинг платформе 15.08) · эскроу (136) — следующим денежным промтом (П-18). -> - **Открыто на владельце:** **развязка git с origin** (темп-коммит `535581d` откачен локально и пересобран чистыми коммитами — D39.134 п.0; локальная линия ИСТИННА, 15 коммитов поверх `b751ac6`, origin держит старую линию ⇒ force-push вашей рукой; не пуллить) · **запуск спек-сессии батча 0.3.0** (промт готовит №17; состав — research/28 §5, ратификация D39.138) · Приложение А контракта (148: реконструкция с баннером или заново; карта «код → фраза» теперь пишется по словарю Б-1 батча) · продуктовое слово «остановлена: лимиты» (В-3) · ~~К-13/Ф-31~~ пере-суждён ревью 28 и НЕ опрокинут (§4 №9: с уходом дневной оси различие перестало быть продуктовым; остаток-описание `:879` — батч 183) · В-4/Ф-30 (глава без заголовка) · ~~фри-тир PD-104~~ ЗАКРЫТ словом владельца 16.08 (D39.138 п.2л: грант 0 на бете, начисление руками; возврат $5 — с суточным потолком при платежах; исполнение — P7-однострочник) · ~~порог 116~~ ЗАКРЫТ D39.136 п.6б (порог выборкой, по делегации) · мини-проба флора 44 (одобрена, промт не выдан) · подпись денежного шага 46 · лист В-3+К-6 · авто-резюм paused (вопрос платформы) · ~~В-11~~ ПЕРЕ-ЗАКАЗ 15.08: фразы НЕ утверждены — конкретнее причину, граница ПТ-33 пере-читана «охранять алгоритмы, не минорку» (D39.136 п.4а; новые фразы — вход S5; мультиязычность фраз всех зон РЕШЕНА ревью 28: Б-1 вариант B — клиент рисует по машинному `code`, батч 183) · ~~В-10~~ ЗАКРЫТ 16.08: «вежливость» (D39.138 п.2к — контракта не касается, `sense` обязателен, размытие — визуальное дело фронта) · ~~Ф-62~~ РЕШЕНО: `PATCH /books/{id}` title-only + `DELETE` (ревью 28 Б-5, батч 183; правка — отображение, до брифа не доезжает) · ~~Ф-63~~ ОДОБРЕНА перекраска 15.08 (первым касанием зоны) · ~~строка 172: вендор-сессия DeepSeek~~ ОТРАБОТАЛА и ПРИНЯТА (D39.137, `76049bb`: пик запинен, потолки защищают) — **на владельце остались: схема time-based** (доклад §5 отчёта; рекомендация — пик оставить + операционное правило «прогоны не стартуют в 01–04/06–10 UTC», scheduler не начинать до ответа вендора об отметке времени тарификации) **и вход ратификации фазы Д: посылка «dspro дешевле glm» в пике перевёрнута** (×1.26 дороже, D39.137 п.4) · ~~СТОП ja-оси фазы Д~~ СНЯТ 15.08 (замена книги на `enkan_no_hate_ja` — рука владельца) · **возражение Sol по проходу `tier` эксп-23** (пере-судить починенным ригом или оставить с записанным возражением — PROGRESS «Полигон»; вес вырос: Д14.10 показал нули прибора claude на реальной инверсии смысла) · ~~поле `title` в `BookIntake`~~ РЕШЕНО 14.08: ратифицировано в 0.2.3 (замечание 12 S3.5, владелец подтвердил; исполняет S4) · фронт-вопросы зонного журнала: В-7 (плотность интерфейса; держит и Ф-54 — обрезку центра на зуме) · В-8 (слово состояния в дереве) · **В-9 (какие языки интерфейса обещает продукт — механизм готов, ПТ-36)** · Ф-38 (вкладка «Замечания») · ~~граница ПТ-33 для полей `BankTerm`~~ ЗАКРЫТ 15.08: полей НЕ заводить, смысла хватает (D39.136 п.4б; sense коротковат — строка 178) · ~~санкция расхода фазы Д~~ ДАНА 15.08 · ~~дизайн-ратификация 160/161~~ ДАНА 15.08 (D39.136 п.3: Этап 0 паком, 161 — дизайн-паком с мандатом качества) · ~~PD-203~~ РАТИФИЦИРОВАН (D39.136 п.6а: флаг аккаунта только по аккаунт-причинам) · ~~Ф-28~~ ОДОБРЕН бамп пинов 15.08 (первым касанием зоны) · ~~Ф-56/Ф-57/Ф-61~~ ОТВЕЧЕНЫ ревью 28 (§6: поток на книгу Б-6а · `/capabilities` Б-2 · машинный `code` Б-1; исполнение — батч 183). +> - **Открыто на владельце:** **развязка git с origin** (темп-коммит `535581d` откачен локально и пересобран чистыми коммитами — D39.134 п.0; локальная линия ИСТИННА, 15 коммитов поверх `b751ac6`, origin держит старую линию ⇒ force-push вашей рукой; не пуллить) · **запуск спек-сессии батча 0.3.0 — промт ВЫДАН 16.08** (`docs/CONTRACT_BATCH_SESSION_PROMPT.md`; первым) · **запуск P7 — промт ВЫДАН 16.08** (`platform/docs/PLATFORM_P7_SESSION_PROMPT.md`; строго ПОСЛЕ лендинга батча — гейт §1 промта) · Приложение А контракта (148: реконструкция с баннером или заново; карта «код → фраза» теперь пишется по словарю Б-1 батча) · продуктовое слово «остановлена: лимиты» (В-3) · ~~К-13/Ф-31~~ пере-суждён ревью 28 и НЕ опрокинут (§4 №9: с уходом дневной оси различие перестало быть продуктовым; остаток-описание `:879` — батч 183) · В-4/Ф-30 (глава без заголовка) · ~~фри-тир PD-104~~ ЗАКРЫТ словом владельца 16.08 (D39.138 п.2л: грант 0 на бете, начисление руками; возврат $5 — с суточным потолком при платежах; исполнение — P7-однострочник) · ~~порог 116~~ ЗАКРЫТ D39.136 п.6б (порог выборкой, по делегации) · мини-проба флора 44 (одобрена, промт не выдан) · подпись денежного шага 46 · лист В-3+К-6 · авто-резюм paused (вопрос платформы) · ~~В-11~~ ПЕРЕ-ЗАКАЗ 15.08: фразы НЕ утверждены — конкретнее причину, граница ПТ-33 пере-читана «охранять алгоритмы, не минорку» (D39.136 п.4а; новые фразы — вход S5; мультиязычность фраз всех зон РЕШЕНА ревью 28: Б-1 вариант B — клиент рисует по машинному `code`, батч 183) · ~~В-10~~ ЗАКРЫТ 16.08: «вежливость» (D39.138 п.2к — контракта не касается, `sense` обязателен, размытие — визуальное дело фронта) · ~~Ф-62~~ РЕШЕНО: `PATCH /books/{id}` title-only + `DELETE` (ревью 28 Б-5, батч 183; правка — отображение, до брифа не доезжает) · ~~Ф-63~~ ОДОБРЕНА перекраска 15.08 (первым касанием зоны) · ~~строка 172: вендор-сессия DeepSeek~~ ОТРАБОТАЛА и ПРИНЯТА (D39.137, `76049bb`: пик запинен, потолки защищают) — **на владельце остались: схема time-based** (доклад §5 отчёта; рекомендация — пик оставить + операционное правило «прогоны не стартуют в 01–04/06–10 UTC», scheduler не начинать до ответа вендора об отметке времени тарификации) **и вход ратификации фазы Д: посылка «dspro дешевле glm» в пике перевёрнута** (×1.26 дороже, D39.137 п.4) · ~~СТОП ja-оси фазы Д~~ СНЯТ 15.08 (замена книги на `enkan_no_hate_ja` — рука владельца) · **возражение Sol по проходу `tier` эксп-23** (пере-судить починенным ригом или оставить с записанным возражением — PROGRESS «Полигон»; вес вырос: Д14.10 показал нули прибора claude на реальной инверсии смысла) · ~~поле `title` в `BookIntake`~~ РЕШЕНО 14.08: ратифицировано в 0.2.3 (замечание 12 S3.5, владелец подтвердил; исполняет S4) · фронт-вопросы зонного журнала: В-7 (плотность интерфейса; держит и Ф-54 — обрезку центра на зуме) · В-8 (слово состояния в дереве) · **В-9 (какие языки интерфейса обещает продукт — механизм готов, ПТ-36)** · Ф-38 (вкладка «Замечания») · ~~граница ПТ-33 для полей `BankTerm`~~ ЗАКРЫТ 15.08: полей НЕ заводить, смысла хватает (D39.136 п.4б; sense коротковат — строка 178) · ~~санкция расхода фазы Д~~ ДАНА 15.08 · ~~дизайн-ратификация 160/161~~ ДАНА 15.08 (D39.136 п.3: Этап 0 паком, 161 — дизайн-паком с мандатом качества) · ~~PD-203~~ РАТИФИЦИРОВАН (D39.136 п.6а: флаг аккаунта только по аккаунт-причинам) · ~~Ф-28~~ ОДОБРЕН бамп пинов 15.08 (первым касанием зоны) · ~~Ф-56/Ф-57/Ф-61~~ ОТВЕЧЕНЫ ревью 28 (§6: поток на книгу Б-6а · `/capabilities` Б-2 · машинный `code` Б-1; исполнение — батч 183). > - **Сделано (сводно)** — снимок ленты закрытых эр в [archive/PROGRESS-2026-08-04-09.md](archive/PROGRESS-2026-08-04-09.md); детали — D-лог и слайсы. > - **Курс:** ОБЩНОСТЬ ✅ → КАЧЕСТВО БАНКА ✅ → ПАКЕТ-ЧЕКЕРОВ ✅ (D39.59–78) → **ФРОНТ-ЭРА** (D39.81–100: зоны живые, контракт API ратифицирован) → **шов/платформа/движковые блокеры построены** (D39.106–123). Хвосты курса живут строками: 16 (edit-волна не гонялась НИ РАЗУ — держит и оси голоса 13б/24) · 46 (дизайн заморожен D39.92/93, промт ждёт выдачи) · coldrun-b фаза C заморожена чекпойнтом легитимно (D39.86; эталон денег/поведения — coldrun-a, read-only); развилка 0731 решена и исполнена (D39.87/91, код `553f1a3`). > - **Горизонт (D39.62/67, освежён D39.95):** **ДОБОР ИДЕАЛА** (первым прогоном: оси голоса 24 · авто-режим · цена 16; жильцы ролей решаются ДО прогона эксп-22 — строка 149 · веса K1–K12 13а · вне-претрейн чекпоинт 55; остаток арбитража банка = рецензент спорных кластеров при ре-пробе 74 — D39.102) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 62–68, 85) → Ф3 ридер-IDE (69–71). **Стоячие:** ToS-триггер 25.10 · Ш-2 до go1.27 (⚠ + x/text Unicode 17 тем же тулчейном — строка 119, реестр §Б-108 справочника якорей) · платные прогоны разблокированы (проба провода — D39.97, конфиги 112 залендены). diff --git a/docs/README.md b/docs/README.md index af176f35..1d7605ac 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,7 +17,7 @@ - `research/` — фактура ресёрчей 01–28; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (транспорт superseded D39.106) · 25 холодное ревью шва — форма D39.106, отвергнутые альтернативы, требования к эмиттеру (читать перед любым кодом стыка) · 24 арбитраж банка (ПРИНЯТ D39.102: консилиум закрыт классом, вход фикс-пака банка — §G) · 26 официальные практики Anthropic (D39.121: записка-план, сниппеты хендоффов, карта «уже делаем/перенять») · **28 контракт-ревью API v0 (ПРИНЯТ D39.138: решения владельца 16.08 — §8, состав батча 0.3.0 — §5; НОСИТЕЛЬ для исполняющих сессий, читать оригинал, не пересказ)**. - [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + **ЕДИНЫЙ БЭКЛОГ** (единственный трекер) + живой хвост хроники. НЕ источник решений. - `scripts/counts.py` — **производные числа доков считаются им, а не руками** (голова по трём носителям · счёт очереди и зон · вес открытых строк регистра платформы · полнота реестра нот); `--check` даёт ненулевой код на расхождении; `--lint` — линтер file:line-якорей живых доков (D39.126). Его же зовёт зонный хук `scripts/githooks/pre-commit` при коммите, задевающем D-лог или PROGRESS — предупреждает, не блокирует. Заведено по D39.112 п.5б: голова отставала трижды у трёх разных оркестраторов. -- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · **Контракт-ревью ОТРАБОТАЛО и ПРИНЯТО** (D39.138; отчёт [research/28-contract-review.md](research/28-contract-review.md) — носитель решений владельца §8 и состава батча 0.3.0 §5; промт в `archive/prompts/`; следующий промт — спек-сессия батча 0.3.0, очередь №17) · **Полигон: [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md)** — фаза Д доводки эксп-22/23 ИДЁТ (заказ владельца 10.08, потолок фазы $4.50; выводы 22/23 заморожены до неё) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (отложен) . **Фронт: ЗОНА ЗАМОРОЖЕНА (D39.136 п.2)** — S4 ИСПОЛНЕН и ПРИНЯТ (D39.135, лендинг `267aa35`; контракт 0.2.3 в каноне; промт в `frontend/docs/archive/`); разморозка = лендинг P7 + гейт S5 (~~В-10~~ закрыт 16.08 «вежливость» · фразы В-11 — форма из ревью 28: клиент рисует по машинному `code`, после батча 183); живой smoke против дев-стенда легитимен и во фризе; фикс-лист ФС — запись приёмки 15.08 в зонном журнале · **Платформа: активного промта НЕТ** — P6 + дофикс ИСПОЛНЕНЫ и ПРИНЯТЫ (D39.132, промты в `platform/docs/archive/`); следующий пак — P7 (читающая поверхность + форвард-половина 0.2.3: чтение `title` и проекция `reject_reason`, D39.135 п.2в + хвосты D39.134 п.4), промт — очередь №17 · **Бэкенд: активного промта НЕТ** — пере-пин цен DeepSeek ИСПОЛНЕН и ПРИНЯТ (D39.137, лендинг `76049bb`; промт в `archive/prompts/`), потолки снова защищают; `tmctl migrate` — D39.134 (`d55edd4`), деплой эмиттер-бинаря разблокирован. Эмиттер шва ИСПОЛНЕН и ПРИНЯТ (D39.131, промт в архиве). Все ОТРАБОТАННЫЕ промты — в `archive/prompts/`, отчёты с ревью-шапками — в `archive/reports/`; статусы паков — CURRENT-STATE и D-лог, здесь не дублируются. Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (прогресс зон только там, D39.100). +- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · **Батч 0.3.0: [CONTRACT_BATCH_SESSION_PROMPT.md](CONTRACT_BATCH_SESSION_PROMPT.md)** — ВЫДАН 16.08 (строка 183; исполняется ПЕРВЫМ — P7 строит читающую поверхность уже по 0.3.0; носитель состава — [research/28-contract-review.md](research/28-contract-review.md) §5/§8, ревью принято D39.138, его промт в `archive/prompts/`) · **Полигон: [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md)** — фаза Д доводки эксп-22/23 ИДЁТ (заказ владельца 10.08, потолок фазы $4.50; выводы 22/23 заморожены до неё) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (отложен) . **Фронт: ЗОНА ЗАМОРОЖЕНА (D39.136 п.2)** — S4 ИСПОЛНЕН и ПРИНЯТ (D39.135, лендинг `267aa35`; контракт 0.2.3 в каноне; промт в `frontend/docs/archive/`); разморозка = лендинг P7 + гейт S5 (~~В-10~~ закрыт 16.08 «вежливость» · фразы В-11 — форма из ревью 28: клиент рисует по машинному `code`, после батча 183); живой smoke против дев-стенда легитимен и во фризе; фикс-лист ФС — запись приёмки 15.08 в зонном журнале · **Платформа: активного промта НЕТ** — P6 + дофикс ИСПОЛНЕНЫ и ПРИНЯТЫ (D39.132, промты в `platform/docs/archive/`); следующий пак — P7, **промт ВЫДАН 16.08**: `platform/docs/PLATFORM_P7_SESSION_PROMPT.md` (читающая поверхность по 0.3.0 + модель ошибок + форварды title/reject_reason + PD-104; ⚠ запуск ПОСЛЕ лендинга батча 0.3.0 — предусловие §1 промта) · **Бэкенд: активного промта НЕТ** — пере-пин цен DeepSeek ИСПОЛНЕН и ПРИНЯТ (D39.137, лендинг `76049bb`; промт в `archive/prompts/`), потолки снова защищают; `tmctl migrate` — D39.134 (`d55edd4`), деплой эмиттер-бинаря разблокирован. Эмиттер шва ИСПОЛНЕН и ПРИНЯТ (D39.131, промт в архиве). Все ОТРАБОТАННЫЕ промты — в `archive/prompts/`, отчёты с ревью-шапками — в `archive/reports/`; статусы паков — CURRENT-STATE и D-лог, здесь не дублируются. Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (прогресс зон только там, D39.100). - Зоны фронта (чужие, читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: промт фронт-сессий S0–S7 + [STACK_DECISIONS.md](../frontend/docs/STACK_DECISIONS.md) (пины версий точными числами и ловушки, сверены с вебом 02.08) + [BACKLOG.md](../frontend/docs/BACKLOG.md) · [../platform/](../platform/) — SaaS control plane: README + [BACKLOG.md](../platform/BACKLOG.md) (П-1..П-14) + `docs/` (зонный журнал `platform-PROGRESS.md` · регистр дефектов · архив промтов P0–P5). - `archive/` — история ([правила архива](archive/README.md)): закрытые промты (`prompts/`) · отчёты с ревью-шапками (`reports/` — на них ссылаются приёмки) · исполненные арх-доки (`architecture/`) · слайсы хроники `PROGRESS-*.md`. Инструкции оттуда не исполнять. - Диаграммы: [../backend/docs/components.puml](../backend/docs/components.puml) · [../backend/docs/pipeline.puml](../backend/docs/pipeline.puml) — дом рядом с кодом (D39.80), правятся бэкендом одним коммитом с кодом; вручную НЕ рендерить (владелец смотрит PlantUML-расширением VS Code).