From 7b904ad894925484dfd6c2af8be4ec1f153b1bec Mon Sep 17 00:00:00 2001 From: heaven Date: Sun, 16 Aug 2026 22:06:33 +0300 Subject: [PATCH] Ratify D39.144: bank signing is one OK over the whole bank, completeness gate removed from the canon, row 191 opened, BankTerm.decision question dissolved --- docs/PROGRESS.md | 5 ++-- docs/architecture/05-decisions-index.md | 3 +- docs/architecture/05-decisions-log.md | 12 +++++++- .../architecture/14-api-contract/openapi.yaml | 28 +++++++++++-------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index da175864..3e903678 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-16, голова D39.143 — дофикс батча ПРИНЯТ, батч 0.3.0 отработан целиком, P7 РАЗБЛОКИРОВАН (запуск — слово владельца); D39.142 — приёмка батча; D39.141 — реструктуризация промта оркестратора (сжатие −59%, форма «ситуация → инструкция», чек-лист промтов); 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. +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-16, голова D39.144 — модель подписи банка: ОДИН ОК всему банку (слово владельца), гейт полноты снят с канона, вопрос BankTerm.decision растворён, строка 191; D39.143 — дофикс батча принят, батч отработан целиком, P7 РАЗБЛОКИРОВАН; D39.142 — приёмка батча; D39.141 — реструктуризация промта оркестратора (сжатие −59%, форма «ситуация → инструкция», чек-лист промтов); 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 — промт ВЫДАН 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). @@ -8,7 +8,7 @@ > - **Курс:** ОБЩНОСТЬ ✅ → КАЧЕСТВО БАНКА ✅ → ПАКЕТ-ЧЕКЕРОВ ✅ (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 залендены). > - **Стек (полная карта роль→модель→конфиг→квирки — [STACK.md](STACK.md), D39.126):** draft deepseek-v4-flash thinking-ON `low` **⚠0731** → терминолог (та же модель) → editor deepseek-v4-pro БИЛИНГВ ИНТЕРИМ (топология ПОДТВЕРЖДЕНА при неразличимости жильцов — D39.117; закон-блок ОБЯЗАТЕЛЕН — строка 134; glm-5 резерв; вахта маппинга эффорта pro — §Б-108) → судья gemini (Ф2, в движке НЕ построен — строка 33); канал B Mistral+grok; ~$0.85/ранобэ (D30.4, пере-калибровка при следующем платном прогоне). ⚠ **Вендор-факты 13–15.08 (пере-пин ИСПОЛНЕН и ПРИНЯТ, D39.137):** таблица цен запинена ПИКОМ (flash 0.44/1.32 · pro 1.32/3.96/кэш-хит 0.044 за 1M; счёт шиппинг-c1 = 100% DeepSeek ⇒ ×4.2–4.4 в пике / ×2.1–2.2 в долине — замер по трём прогонам); у pro эффорт стал настраиваемым low/high/max (квирк 3а устарел — вахта §Б-108 сработала); ⚠ ВЕСА pro сменились под тем же слагом (V4-Pro-0813, класс D39.61) — вахта-риг готов (остаток 172); ⚠ посылка интерим-редактора «dspro дешевле glm» в пике ПЕРЕВЁРНУТА (×1.26 дороже — вход ратификации фазы Д, D39.137 п.4); покупки фазы Д на deepseek до 16.08 16:00 UTC — по старым ценам. ⚠ **ВЕСЬ банковый контур (банкнота+терминолог+классификатор) в shipping-c1 НЕ включён** — жив ран-локальным конфигом книги (строка 140; сверка STACK.md 09.08 — факт шире прежней декларации «одна банкнота»); эскалация в shipping за `budget_usd: 0` (STACK.md §примечания). -> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 16.08 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **147** строк · зона бэкенд **73** строго / **101** широко (175 пере-скоуплена D39.134; 176/177 заведены 15.08; 178 — D39.136; 179 ЗАКРЫТА D39.138; 180/181 — D39.137; 182 — wire-батч, аудит 15.08; 183–187 — контракт-ревью 28, D39.138; 188–190 — аудит бэклога, D39.140) (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0**, платные прогоны разблокированы · «скоро» **34** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строки эксп-22: 55·153 (плюс 150 — руки владельца); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). +> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 16.08 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **148** строк · зона бэкенд **73** строго / **102** широко (175 пере-скоуплена D39.134; 176/177 заведены 15.08; 178 — D39.136; 179 ЗАКРЫТА D39.138; 180/181 — D39.137; 182 — wire-батч, аудит 15.08; 183–187 — контракт-ревью 28, D39.138; 188–190 — аудит бэклога, D39.140; 191 — модель подписи банка, D39.144) (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0**, платные прогоны разблокированы · «скоро» **35** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строки эксп-22: 55·153 (плюс 150 — руки владельца); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). > - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `-10-13` (D39.6-гигиена) · `-13-25` (стройка паков 11–16, rerun2) · **`-25-31` (паки 17–20 · мини-прогон · полигон-пакеты 5–8 · ToS · холодный прогон; D39.26–58)** · **`-08-01-02` (сессии №9/№10: общность · качество банка · coldrun-b · открытие фронта/платформы; D39.59–90, срез D39.105)** · **`-08-02-04` (сессии №11–№13: ручки эффорта · стандарты · контракт API · платформа P0 · банк-арбитраж; D39.91–105 + снимок шапки эры №15)** · `-08-04-09` (пинги закрытых паков эры №15) · **`-08-14-15` (закрытые бэкенд-записи №16–17: эмиттер шва · migrate · пере-пин DeepSeek; вынесено D39.139)**. Записи ниже — живой хвост (№16+, эра D39.124+; подрезка D39.139). ## Бэклог (ЕДИНЫЙ, собран 26.07, актуализация 04.08 D39.99/D39.101; правки — только через оркестратора) @@ -132,6 +132,7 @@ | 188 | **Носитель события «ре-проба 74»** (аудит D39.140: событие ждали строки 5 · 36б · 44 и шапка CURRENT-STATE, а владельца у него не было — строка 74 закрыта D39.91): дешёвая ре-проба flash при ПЕРВОМ платном прогоне добора идеала (D39.63 п.4) + слоты, подвешенные на неё: рецензент спорных кластеров банка (остаток 5) · замер второго мнения (36б) · выбор числа флора (44, после одобренной мини-пробы) · итерация №2 редакторов (D39.22/63) · выборочный порог 116 в риге (дописка 172-г) · решение о включении ре-гена перед эскалацией (экс-77, D39.64: «включение — решением при ре-пробе 74»; ручка построена, мертва во всех конфигах, ре-ген ≈7.6× дешевле эскалации) | полигон/бэкенд | скоро (гейт добора идеала — первый платный прогон) | проб-пакет при первом платном прогоне → решения по слотам | D39.63 п.4, D39.91, аудит D39.140 | | 189 | **Мультиязычность фраз ЛОГОВ и АРТЕФАКТОВ движка — вторая половина слова владельца 15.08** (D39.136 п.4а «фразы ВСЕХ зон»; первая половина — юзерский провод — решена ревью 28 Б-1/батчем 183): фразы в `bank-stop`/статусных артефактах и логи движка вне контракта, носителя не было (research/28 §6, строка Ф-61: «носителя назвать отдельно» — аудит D39.140 подтвердил: не назван); разобрать, что из этого читает ПОЛЬЗОВАТЕЛЬ (артефакты банка — да, через проекцию платформы) и что оператор (логи — легитимно английские) | бэкенд | когда-нибудь (до второй локали интерфейса) | разбор → точечная правка | research/28 §6, D39.136 п.4а, аудит D39.140 | | 190 | **Кросс-СЕМЕЙНЫЙ проход контракт-ревью** (не-Claude опровергатели; буква заказа владельца D39.136 п.5 «кросс-модели», исполненная в ревью только кросс-тирами Claude — ограничение честно заявлено research/28 §7/§10): проверка вердиктов доклада моделью другого семейства полигонным контуром; жила только колонкой «ЖИВОЕ» реестра нот — аудит D39.140 дал строку | полигон | когда-нибудь (после фазы Д; перед лендингом батча 183 — если владелец захочет второй рубеж) | полигон-слот с внешним провайдером | research/28 §10, аудит D39.140 | +| 191 | **Подпись банка = ОДИН ОК всему банку (модель владельца 16.08, D39.144)** — пер-термный полный набор решений НЕ гейт нигде: (а) контракт поправлен (409-полноты снят с resume, `pending_decisions` информационный — исполнено D39.144); (б) **движок**: verify_bank-пауза снимается командой resume с решениями «как есть», нерешённое едет авто-строками с пометкой — авто-провод D39.42 п.3 УЖЕ так работает, проверить/ослабить только границу самой паузы; (в) **платформа**: канал решений P7 строится накопительным БЕЗ гейта полноты + проводка «resume = снятие стопа» до движка; (г) **пост-ридинговые правки банка** («поправить термин/добавить → пере-генерация по вхождениям») — НАПРАВЛЕНИЕ, механику НЕ проектировать: ждёт полигона (точечный редактор) и опирается на построенный re-edit по ключу со сметой (строка 49, `repin.go`/`rebill.go`); ТОЧНУЮ механику не продумал ещё никто — слово владельца | бэкенд+платформа (+полигон г) | скоро (граница паузы движка и канал P7 — до/вместе с P7) | (б) малое касание движка · (в) внутри P7 · (г) дизайн после полигона | слово владельца 16.08, D39.144, D39.42 п.3 | | 49 | **Этапы Б+В спеки D15.2** (content-addressed resume / `guard_hash` — D39.31 сознательно не строил) ; этап В = tmctl export-контракт D29.1 (annot-v1 · цвет-мап+rollup · политика красных fail-closed) + операторский протокол-документ релиза гендер-твиста (D5.1): сам механизм УЖЕ построен — until_ch-правка → точечный re-edit со сметой и $0-пере-пином (`repin.go`/`rebill.go`, D39.42 п.5/D39.45) | бэкенд | скоро (ПОДТЯНУТА D39.81: annot-v1 = источник замечаний для фронта — критический путь подключения) | отдельное решение (annot-половина — по контракту 14, D39.99) | D39.34(4), D33 п.5, D39.81 | | 49а | **ALTER-шаги миграций v8–v14 не идемпотентны вопреки шапке `migrate.go:9-11`** (полу-применённая БД не сходится; счётчик версий скрывает) — находка критика полноты пака-19 | бэкенд | когда-нибудь | отдельное решение | D39.56, PACK19_BUILD §6.9 | | 50 | F3-остаток идемпотентности | бэкенд | когда-нибудь | отдельное решение | D39.34(4) | diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index 352fc6e6..d76fbd8b 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -1,4 +1,4 @@ -# Реестр D-нот — карта актуальности v2 (D1–D39.143; строка 167; титул — носитель головы, бампать при каждом аппенде — испр. оркестратором №17 15.08 по аудиту: отставал на четыре ноты) +# Реестр D-нот — карта актуальности v2 (D1–D39.144; строка 167; титул — носитель головы, бампать при каждом аппенде — испр. оркестратором №17 15.08 по аудиту: отставал на четыре ноты) > Одна строка на КАЖДУЮ ноту журнала решений: № · дата · суть · статус · где тело · темы. Ведёт оркестратор при лендингах: новая нота = новая строка ТЕМ ЖЕ коммитом (полноту сторожит `docs/scripts/counts.py --check`). Суть и статус здесь — НАВИГАЦИЯ, не контракт: при конфликте побеждает ТЕЛО ноты (живой [`05-decisions-log.md`](05-decisions-log.md) → слайсы `../archive/architecture/05-decisions-*.md`). Несущие эрраты к фактам старых нот живут в шапке живого D-лога — их читать ОБЯЗАТЕЛЬНО, реестр их не дублирует. Темы (для грепа оси «какой закон по X»): деньги · шов · банк · промпт · судья · гейты · контракт · платформа · фронт · полигон · ToS · общность · процесс · нарезка · голос · инфра · модели. > Родословная: прозаическая карта D1–D39.28 (ревизии D31–D38.2) пересобрана в реестр докс-паком 167 (09.08.2026, №16): извлечение 6+6 агентов по worksheet `../archive/reports/DOC_AUDIT_INVENTORY_2026-08-09.md`, полнота сверена скриптом против заголовков всех шести файлов. «тело: жив» = живой D-лог; «слайс N» = `../archive/architecture/05-decisions-N.md`. @@ -196,3 +196,4 @@ | D39.141 | 16.08 | Реструктуризация промта оркестратора по заказу владельца: форма «ситуация → инструкция», генезис D-ссылками, чек-лист 11 блоков промта + два рубежа выдачи (механическая сверка + опровергатель-субагент), таблица линз приёмки по характеру работы; −59% объёма, свип маркеров — потерь 0; снимок v16 в архиве | ЖИВОЕ: действующая редакция роли | жив | процесс оркестратор промпт | | D39.142 | 16.08 | Приёмка батча 0.3.0 (8d82096, панель 3 линз: слепая сверка — потерь 0; холодный потребитель — анти-утечка чиста, 5 блокеров триажированы; аудит отчёта — 25+ клеймов сошлись, 9 чисел занижены): канон 0.3.0 в каноне; ратифицированы отступления (поток один книжный, Note.code, content_refused, единый page_size_default); дофикс ФБ-1..10 заказан аддендумом промта (SSE-форма, петля реконнекта, note через reconnect, Revision-противоречия); зеркало фронта временно отстаёт ратифицированно; владельцу — BankTerm.decision (рекомендация заводить); P7 после дофикса | ЖИВОЕ: дофикс у сессии батча; строка 183 пере-скоуплена | жив | контракт приёмка платформа фронт | | D39.143 | 16.08 | Дофикс батча принят (дифф прочитан целиком, гейты пере-раны): все ФБ-1..10 закрыты — SSE-форма кадра однозначна, петля реконнекта убита id:0, note-гарантия сужена до соединения + обязательное дельта-чтение, Revision одна модель (водяной знак = наименьшая ревизия обхода), resume-таблица без нового enum, приоритет носителей «нет кредита», processing_failed; числа отчёта пере-раны, вывод о доле прозы честно перевёрнут (42→47%); отступления ратифицированы (§5д ужато на месте, unverified снят с провода); батч отработан целиком, промт в архиве, P7 разблокирован | ЖИВОЕ: P7 — запуск владельцем; владельцу — BankTerm.decision (D39.142 п.4) | жив | контракт приёмка платформа | +| D39.144 | 16.08 | Модель подписи банка — слово владельца напрямую: подписывается ВЕСЬ банк одним ОК (пер-термная масс-подпись — инерция контрактной линии, движок и так авто-продолжает с неподписанным D39.42 п.3); канон поправлен микро-правкой (409-полноты снят с resume, pending_decisions информационный, bank_decisions_incomplete удалён, гейты пере-раны); пост-ридинговые правки банка → пере-генерация по вхождениям — направление, механику не проектировать до полигона; строка 191, аддендум P7, пинг фронту; вопрос BankTerm.decision снят как стоящий на ложной посылке | ЖИВОЕ: строка 191; P7 — запуск владельцем | жив | контракт банк владелец фронт платформа | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 45de68e6..3206f8a3 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.143 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.144 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) > **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто: > ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+). @@ -436,3 +436,13 @@ **3. Ратификации отступлений:** (а) §5(д) промта — генезис-проза УЖАТА НА МЕСТЕ, а не перенесена в компаньон (третья копия ссылки бессмысленна; компаньон §6а поправлен); (б) «carried forward marked as unverified» СНЯТО с провода как фраза без носителя — наблюдаемое = `BankPage.signed`/`total`. **4. Статусы:** батч 0.3.0 отработан ЦЕЛИКОМ, промт в архиве; **P7 разблокирован** (его §1-гейт удовлетворён: канон 0.3.0 финален) — запуск по слову владельца; зеркало+типы+моки+гейт утечки — первое касание фронта при разморозке (D39.142 п.5); на владельце остаётся вопрос `BankTerm.decision` (D39.142 п.4). Строка 183 пере-скоуплена в остаток-указатель. (16.08.2026, оркестратор №17) ✅ + +## D39.144 — МОДЕЛЬ ПОДПИСИ БАНКА (слово владельца 16.08, напрямую №17): подписывается ВЕСЬ банк ОДНИМ ОК; гейт полноты пер-термных решений СНЯТ с канона; вопрос BankTerm.decision РАСТВОРЁН (16.08). ✅ + +**1. Модель (первоисточник — владелец, дословный смысл).** UX: юзер жмёт перевод → черновая волна + майнинг → на фронте появляются черновой перевод И черновой банк; банк на книгу может быть огромным, пер-термная подпись = сотни кликов — НЕ модель продукта; подписывается банк ЦЕЛИКОМ («условный ок»), перевод уходит в доработку. После прочтения: поправить/добавить термин → «поправить» → пере-генерация по вхождениям (возможно, движковый точечный редактор — полигон работает); ⚠ точную механику пост-ридинговых правок «не продумал ещё никто и нигде» — НЕ проектировать до полигонных итогов. + +**2. Сверка с движком (заявление=команда):** движок УЖЕ живёт этой моделью — дефолт авто-продолжение с НЕПОДПИСАННЫМ банком, неподписанные строки персистятся и едут с пометкой (`mining.go`, авто-провод D39.42 п.3); `--verify-bank` — пауза «посмотреть», не марш по строкам. Гейт «стоп снимается полным набором решений» был изобретением КОНТРАКТНОЙ линии (Ф-14 → спека → 0.3.0), пережившим даже greenfield-ревью — инерция, которую владелец уже осаживал 10.08 (снятие счётчиков «подписано N», Ф-44), но поправка тогда дошла только до экрана, не до модели контракта. + +**3. Исполнено этой нотой (канон 0.3.0, микро-правка оркестратора по прямому слову владельца; гейты пере-раны — spectral/генератор зелёные, `bank_decisions_incomplete` в файле 0):** resume снимает банк-стоп при ЛЮБОМ состоянии решений (таблица resumeRun); `pending_decisions`/`complete` — информационные, «подпись = один акт над всем банком» записана на чтении банка; `stop_for_signing` описан как «пауза посмотреть → один resume»; `bank_decisions_incomplete` удалён из причин 409. Версия остаётся 0.3.0 — спека ещё никем не потреблена (P7 не стартовал). + +**4. Следствия:** строка **191** заведена (движковая граница паузы · канал P7 без гейта полноты · пост-ридинг = направление после полигона); аддендум в промт P7 («полноту не отливать в код»); пинг фронту (Ф-44/Ф-45/Ф-46 при разморозке читать через модель); **вопрос BankTerm.decision (D39.142 п.4) СНЯТ ОРКЕСТРАТОРОМ** — он стоял на ложной посылке «длинная пер-термная сессия, которую надо резюмить»; в модели одного ОК сценария «какие 17 из 300 решены» не существует. (16.08.2026, оркестратор №17) ✅ diff --git a/docs/architecture/14-api-contract/openapi.yaml b/docs/architecture/14-api-contract/openapi.yaml index e1b8b077..81770d1f 100644 --- a/docs/architecture/14-api-contract/openapi.yaml +++ b/docs/architecture/14-api-contract/openapi.yaml @@ -420,9 +420,13 @@ paths: The bank ordered by source surface then by the term's window, so the several rows of one surface stand together. - **This read is also the STATE of a signing stop**: `pending_decisions` and `complete` are - answered here and not only in a submission receipt, so a screen reloaded mid-stop knows - whether the work is finished. + **This read is also the STATE of a signing stop** — informationally, never as a gate: + `pending_decisions` and `complete` say how much of the bank a person has touched, and a + screen reloaded mid-stop can show it. **Signing the bank is ONE act over the whole of it**, + not a march through every row: the stop is lifted by `resumeRun` with the decisions as they + stand, and a term nobody touched rides on as the service proposed it, marked unverified + inside the service. Per-term decisions are the OPTIONAL correction path, not the unit of + signing. **Delta read** with `after_version` — a full book's bank is too large to re-read on every change. Page size default: `GET /capabilities`. @@ -514,8 +518,9 @@ paths: summary: Start a translation run. description: | `stop_for_signing` and `ceiling_chapters` are parameters of the RUN, not of the book: they - travel with the start and do not outlive it. With `stop_for_signing` the run waits for the - bank to be signed; without it the run does not stop and uses the bank as it stands. + travel with the start and do not outlive it. With `stop_for_signing` the run pauses once, + book-wide, for the user to LOOK at the bank — correct what they care to, then release it + with ONE `resume`; without it the run does not stop and uses the bank as it stands. **409** answers a limit that no longer fits — the bounds are read by `GET /books/{bookId}/run-options` and may move in between. When another book's hold is the @@ -679,8 +684,7 @@ paths: | the run stands in | this call answers | the remedy a client offers | |---|---|---| - | `awaiting_bank`, decisions complete | continues it — `202` | this call | - | `awaiting_bank`, decisions incomplete | `409` `run_not_resumable`, `cause.code: bank_decisions_incomplete` | finish signing, then this call | + | `awaiting_bank` — with ANY state of decisions | continues it — `202` | this call | | `paused` — ANY reason, `null` included | `409` `run_not_resumable`, `cause.code: ceiling_reached` | a NEW run with a larger `ceiling_chapters` | | `stopped` — the user's own stop | continues it — `202` | this call | | `failed`, `ready` | `409` `run_not_resumable`, no `cause` — it is not a stopped run | a NEW run | @@ -2374,9 +2378,11 @@ components: being cut, or was rejected; - `run_not_stoppable` (409) — this run is not running; - `run_not_resumable` (409) — this run cannot be continued. `cause.code` says why: - `bank_decisions_incomplete` — terms are still undecided; `ceiling_reached` — the run - stopped at a limit, the chapters it bought or the credit behind them, and the remedy is a - NEW run rather than this call. A run that is not a stopped run at all carries no `cause`; + `ceiling_reached` — the run stopped at a limit, the chapters it bought or the credit + behind them, and the remedy is a NEW run rather than this call. A run that is not a + stopped run at all carries no `cause`. An incomplete set of bank decisions is NOT a + reason: signing is one act over the whole bank, and `resume` lifts that stop with the + decisions as they stand; - `ceiling_unavailable` (409) — the limit asked for cannot be started. `cause.code`: `bounds_moved` — the bounds changed between the read and this call; `credit_held` — the account's credit is held elsewhere, and `blocked` names the book holding it; @@ -2421,7 +2427,7 @@ components: type: string minLength: 1 description: Narrower cause within the root code. - examples: ['bank_decisions_incomplete'] + examples: ['ceiling_reached'] ErrorItem: type: object