From c093504220df44f9671fb06eef7657ab230fe533 Mon Sep 17 00:00:00 2001 From: heaven Date: Sun, 16 Aug 2026 03:32:51 +0300 Subject: [PATCH] Ratify D39.140: backlog integrity audit finds zero lost rows, nine orphaned gated tails get carriers including the re-probe 74 owner row and the sampled rig threshold --- docs/PROGRESS.md | 11 +++++++---- docs/architecture/05-decisions-index.md | 3 ++- docs/architecture/05-decisions-log.md | 12 +++++++++++- docs/architecture/13-tech-debt-anchors.md | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 93d776fa..8e9482d0 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-16, голова 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.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). @@ -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`; обновлять при каждом лендинге):** всего **144** строки · зона бэкенд **72** строго / **99** широко (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) (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0**, платные прогоны разблокированы · «скоро» **33** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строки эксп-22: 55·153 (плюс 150 — руки владельца); строка 5 — остаток гейчен ре-пробой 74 (D39.102 п.2); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). +> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 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); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). > - Архивы хроники: `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; правки — только через оркестратора) @@ -49,7 +49,7 @@ | **— ПАК-21 «чекеры»: РАСТВОРЁН (D39.62); шестёрка исполнена 2/6 фазой 2 (D39.64: #11 · строка 26), остаток — ниже —** | | | | | | | 93 | **Остатки строки 93 после пачки (D39.82):** строгий OffLanguage (36а, deferred D39.78) · 分之-разметка прежде стройки DC2 word↔word (полигон) · F4-хвост: `redrive --dry-run` обходит pre-flight, а `store.Open` мутирует SPOF-файл (миграции + recoverReservations; коммент «mutates nothing» неверен) — pre-flight и на dry-run при существующей БД либо read-only план; заодно stat-скип точной формой `fs.ErrNotExist`; **обострение приёмкой D39.134:** на устаревшей БД `--dry-run` выполняет ПОЛНУЮ миграцию схемы БЕЗ restore point (write-open без шва migrate) — воспроизведено исполнением. ⚠ **Остаток НЕ однороден по гейту (сверка 02.08):** F4-хвост и строгий OffLanguage свободны, а `分之`-часть ГЕЙЧЕНА полигон-разметкой среза («строить вслепую против мандата» — якорь техдолга) ⇒ не подавать строку как «малое касание без гейта» | бэкенд/полигон | когда-нибудь | малое касание / полигон-слот | D39.78, D39.82 | | 98 | **DC7 грейд-консистентность — пере-гейчен по сид-покрытию (D39.82):** замер пачки реален (25 юнитов/93 «разряд» ≠ канон «класс» на labels-финалах), НО финалы — прогоны до/вне сид-v2-канона, а грейды 甲/乙/丙/丁等 теперь approved-записи сида с decl-формами: mempostcheck флагнёт «разряд» промахом dst; строить DC7 только если ОСТАТОК девиаций переживёт сид-покрытие — замер на первом СИДОВОМ прогоне добора идеала; дом канона при стройке = book.yaml (как register_blocklist; ратифицировано D39.82 — НЕ dc-checkers.txt, посылка D39.79 исправлена) | бэкенд | когда-нибудь (гейт: первый сидовый прогон добора идеала) | замер остатка → решение | D39.79, D39.82, SMALLPACK §5-E1 | -| 28 | Банк-линт латиницы в dst или строгая форма языкового предиката (7 строк утечки алфавита проходят экран) | бэкенд | когда-нибудь (добор идеала — носитель «свежий мини-прогон» растворён D39.67, актуализация D39.79) | касание чекеров при данных добора (помнить оговорку 36а: «甲等 → класс Цзя» строгой формой не ловится) | D39.52, D39.62, D39.64, D39.79 | +| 28 | Банк-линт латиницы в dst или строгая форма языкового предиката (7 строк утечки алфавита проходят экран); сюда же хвост закрытой 128 (D39.102: NoDst-почти-сентинел, латиница-target — дословно не переехал при закрытии, восстановлен аудитом D39.140) | бэкенд | когда-нибудь (добор идеала — носитель «свежий мини-прогон» растворён D39.67, актуализация D39.79) | касание чекеров при данных добора (помнить оговорку 36а: «甲等 → класс Цзя» строгой формой не ловится) | D39.52, D39.62, D39.64, D39.79 | | 28а | **Prompt-injection-проба входного текста** ($0): сепаратор ⟦TM-BANK-v1⟧ и якорь-подобные маркеры В ТЕКСТЕ КНИГИ — поведение среза/парсера/инъекции (книга = недоверенные данные; инструментов у моделей нет, но канал банкноты читает вывод по маркеру) | бэкенд/полигон | когда-нибудь | малая проба | сводка-ревью 26.07 | | **— СВИП ГИПОТЕЗ —** | | | | | | | 30а | **Перерисовка puml-диаграмм под пост-пак-20 пайплайн** (терминолог, банкнота отдельным файлом); дом диаграмм теперь `backend/docs/` — правятся одним коммитом с кодом (D39.80); PUML НЕ рендерить (гардрейл) | бэкенд | когда-нибудь | ближайший пак, касающийся pipeline | аудит доков 26.07, D39.80 | @@ -114,7 +114,7 @@ | 168 | **Состав волн пайплайна = пар-конфиг (данные), не общий хардкод**: вопрос владельца 10.08 «нормально ли под китайский строить весь бэкенд и конфиги?» — жильцы ролей и промпты уже конфиг/langpacks, но ТОПОЛОГИЯ волн (перепис · точечный edit-контур · без второго прохода) одна на всех пар; если фаза Д покажет разных победителей по парам (H-3/H-4: en-черновик+edit против zh-связки), состав волн уезжает в пар-конфиг данными; ревью-вопрос общности §0 `12-go-style-notes.md` | бэкенд | когда-нибудь (после данных фазы Д) | замер (фаза Д) → решение владельца → малое касание | слово владельца 10.08, промт фазы Д | | 169 | **Экспорт банка для чтения фронтом — ДВИЖКОВАЯ половина ПОСТРОЕНА, строка заводилась слепой к ней (испр. оркестратором 14.08):** сайдкар `.bank.json` — весь банк тремя статусами, стабильные id, атомарная запись — существует с D39.122 (`internal/pipeline/bankexport.go`; рядом `bank-stop.json` — полная таблица подписи для S5); прежний текст строки («артефакта экспорта нет») повторял жалобу Ф-43, снятую тем паком. ОСТАТОК: платформенная проекция сайдкаров в `GET /books/{id}/bank` + канал решений подписи — пак читающей поверхности платформы; без неё витрина банка фронта стоит на моке, подписной экран S5 строить не на чем | платформа | скоро (гейт S5 фронта) | пак читающей поверхности (П-1) | Ф-43 фронта, D39.122, **D39.127**, испр. 14.08 | | 170 | **`tmctl init` — движок сам заводит книгу** (форма В развилки интейка): платформа зовёт $0-команду, движок пишет СВОЙ `book.yaml` — требования к полям живут там же, где проверяются (`config/book.go`); до неё бета живёт формой Б (рендер из деплой-шаблона платформой при создании книги, ратификация D39.130) | бэкенд | когда-нибудь (после беты формы Б) | малый пак | приёмка P5, **D39.130** | -| 172 | **Остаток после пере-пина DeepSeek (пин ИСПОЛНЕН и ПРИНЯТ — D39.137, `76049bb`):** (а) **схемное решение владельца по time-based** — доклад §5 отчёта вендор-сессии (рекомендация: пик оставить; scheduler-вариант строки 60 не начинать до ответа вендора «по какой отметке времени тарифицируется вызов» — вендором НЕ задокументировано — и замера доли пика; дешёвый рычаг: операционное правило «прогоны не стартуют в 01–04/06–10 UTC» — почти всё ×2 без строчки Go; гибрид «резерв пиком, сеттл по окну факта» назван) · (б) пере-калибровка ставки $0.03/глава (166/П-10; множитель счёта замерен) · (в) exp08 v3 (85) обязателен до budget_usd · (г) **вахта весов V4-Pro-0813** (класс D39.61): риг готов — §7.4 отчёта, `TestLiveClassifierHarmSet`, гонять после 16:00 UTC 16.08 | владелец → бэкенд/полигон | скоро (схема — на владельце; вахта — после 16.08) | СТОП-решение (схема) + замер (вахта) | вендор 13.08, **D39.137**, строка 60, D30.4 | +| 172 | **Остаток после пере-пина DeepSeek (пин ИСПОЛНЕН и ПРИНЯТ — D39.137, `76049bb`):** (а) **схемное решение владельца по time-based** — доклад §5 отчёта вендор-сессии (рекомендация: пик оставить; scheduler-вариант строки 60 не начинать до ответа вендора «по какой отметке времени тарифицируется вызов» — вендором НЕ задокументировано — и замера доли пика; дешёвый рычаг: операционное правило «прогоны не стартуют в 01–04/06–10 UTC» — почти всё ×2 без строчки Go; гибрид «резерв пиком, сеттл по окну факта» назван) · (б) пере-калибровка ставки $0.03/глава (166/П-10; множитель счёта замерен) · (в) exp08 v3 (85) обязателен до budget_usd · (г) **вахта весов V4-Pro-0813** (класс D39.61): ⚠ ПЕРЕД прогоном вахты внести в риг ратифицированный ВЫБОРОЧНЫЙ порог строки 116 «≥4/5 прогонов N=5 достигают 6/6» (D39.136 п.6б) — сейчас `live_reprobe_test.go:181-190` требует 6/6 на КАЖДОМ прогоне (сам предупреждает «threshold and sample disagree») и упадёт ложно на любом 4/5 (находка аудита D39.140); риг готов — §7.4 отчёта, `TestLiveClassifierHarmSet`, гонять после 16:00 UTC 16.08 | владелец → бэкенд/полигон | скоро (схема — на владельце; вахта — после 16.08) | СТОП-решение (схема) + замер (вахта) | вендор 13.08, **D39.137**, строка 60, D30.4 | | 180 | **`prices_checked` — одно поле на ВСЮ таблицу цен** (находка вендор-сессии, D39.137): бамп по факт-чеку одного вендора сдвинул 120-дневный гейт свежести остальным семи моделям (дедлайн уехал ~07.11→~13.12); лечение — пер-модельная дата проверки (правка схемы) ЛИБО ре-чек остальных вендоров отдельным заходом до исходного дедлайна | бэкенд | когда-нибудь (ре-чек вендоров — до ~07.11) | малое касание / вендор-заход | D39.137, отчёт §7.1 | | 181 | **Консент-число пере-покупки врёт после смены цен**: `projectRebill` складывает ИСТОРИЧЕСКИЙ `cost_usd` (`rebill.go:166`), гейт согласия сравнивает с ним (`:252`, порог `:200-211`), а резерв/сеттл считают НОВОЙ таблицей (`stagerun.go:431/:613`) ⇒ единицы, купленные по старым ценам DeepSeek, при пере-покупке стоят до ×4.4 от числа, на которое оператор согласился; `projected_book_usd` у `status` — та же экстраполяция. Траты защищены потолками book/day — врёт ЧИСЛО СОГЛАСИЯ, комментарий `rebill.go:81` «over-estimating is the safe direction» перевёрнут. Преexisting, материален со смены цен 16.08 | бэкенд | скоро (до первого пере-прогона старой книги после 16.08) | малое касание (проекция новой таблицей) + тест | D39.137, отчёт §8.1 | | 182 | **Wire-батч перед добором идеала — КОПИТЬ и вносить ОДНИМ касанием** (каждая правка двигает RequestHash / `memory_version` / снапшот = перекупка волн; дриблить по одной = платить пере-снапшот несколько раз): 46 экран цели (+предпосылка 113 фикстура) · 134 инжект-заголовки (гейт пал D39.108) · 131 кап инъекции · 140 банковый контур в shipping (СТОП-решение) · 105(а) вердикт-половина классификатора · 130-остаток (мердж авто-банка, гейт WARN второго прогона) · 14 ё-фолд (носитель «следующий пак общности») · **119+124(+115 пер-парный хеш EmbeddedVersion) — ОДНИМ дизайн-паком** (строка 124 требует принимать целиком; сверено кодом: `cutTag` фолдит `chunkerVersion`/`EmbeddedVersion`/`NormVersion` — `manifest.go:160-169`); вне батча свободен только 118 (tools/go.mod). Состав — аудит корпуса 15.08 (archive/reports/CORPUS_AUDIT_2026-08-15.md §В.г) | оркестратор → бэкенд | скоро (собрать к ратификации фазы Д; вносить перед первым платным прогоном добора идеала) | координационная строка → промт(ы) батча | аудит 15.08, D39.134/136/137 | @@ -129,6 +129,9 @@ | 185 | **Дописывание глав в ТЕКУЩУЮ книгу («костылей не будет»):** форма `POST /books/{id}/parts` + ответ «сколько глав добавится, что сдвинется и почём» ДО подтверждения; экономика уже позволяет В КОНЕЦ за ~$0.02 (ключ вызова позиционный, исходник вне снапшота), вставка в середину = МОЛЧАЛИВАЯ перекупка хвоста ~$9–11/500 глав — движковый гейт против молчания ОБЯЗАТЕЛЕН (родня дыры Р6 строки 160); платформа второй файл принять не может (re-parse нет); ja-мина: новый ruby-алиас двигает `memory_version` → снапшот (громкий `--resnapshot`, уточнение приёмки); полный $0-резюм хвоста — предусловие D15.2 (строка 49) | бэкенд+платформа+контракт | когда-нибудь (вместе со строками 160–162 — дизайн в паке 161) | дизайн-пак 161 → стройка | research/28 Б-19а/§8 п.7, D39.138 п.2г | | 186 | **Сеть: перечитывания ничем не удешевлены** (замер 16.08: дерево 2283 глав = 250 КБ на каждый кадр `status`, фокус-рефетч 12 вкладок = 562 КБ — самый частый трафик порождает переключение вкладок, не пайплайн; гипотетический кадр банка на главу = 372 МБ/прогон; сжатия/ETag/304 нет НИГДЕ): план по эффекту — (1) gzip на текстовых ответах, НЕ на SSE (2) `ETag`/`If-None-Match`→304 на списочных GET (3) скоуп в кадре (id+версия, БЕЗ текста) (4) дельта-чтение банка/замечаний `?after_version=` (5) `staleTime` у клиента; шаги 1–2 — платформа (её же `PLATFORM_DIRECTION.md:202-205`), семантика — в спеку батчем 183; транспорт НЕ менять (решение владельца по §5б) | платформа (+контракт/фронт) | скоро (шаги 1–2 — до первой живой книги под фронтом) | мидлварь/edge платформы + батч 183 + разморозка фронта | research/28 §5б/Б-11а, D39.138 п.2д | | 187 | **Два комментария движка лгут о `memory_version`** (описывают до-pack-20 поведение): `snapshot.go:188-189` («auto/draft исключены per D8») и докстринг `membank/memory.go:360-363` («Approved-only») — а код с пака-20 сворачивает КАЖДУЮ строку любого статуса вместе с алиасами (`membank/memory.go:410-421,441-446`); правка двух комментариев, $0, wire-нейтрально | бэкенд | когда-нибудь (попутно гигиена-паком 177) | правка комментариев | research/28 §9 + приёмка D39.138 | +| 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 | | 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 6aff858e..4f497cf2 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -1,4 +1,4 @@ -# Реестр D-нот — карта актуальности v2 (D1–D39.139; строка 167; титул — носитель головы, бампать при каждом аппенде — испр. оркестратором №17 15.08 по аудиту: отставал на четыре ноты) +# Реестр D-нот — карта актуальности v2 (D1–D39.140; строка 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`. @@ -192,3 +192,4 @@ | D39.137 | 15.08 | Приёмка вендор-сессии пере-пина DeepSeek (76049bb, инлайн исполнением: вендор-страница пере-прочитана независимо, голден бит-в-бит, дифф = 3 строки): пик запинен (flash 0.44/1.32/0.014, pro 1.32/3.96/0.044), множитель счёта c1 ×4.2–4.4 пик; строка 172 пере-скоуплена (схема time-based на владельце, ставка 166, exp08 v3, вахта весов Pro-0813); новые 180 (prices_checked одно поле) и 181 (консент-число ребилла врёт по историческим ценам); ToS-дельты нет (Wayback-дифф 0) | ЖИВОЕ: посылка интерим-редактора D39.22 в пике перевёрнута (dspro дороже glm ×1.26) — вход ратификации фазы Д; coldrun-a пробивает потолок 0.25 новой ценой | жив | деньги вендор бэкенд приёмка | | D39.138 | 16.08 | Приёмка контракт-ревью research/28 (4 опровергателя, 42 улики исполнением, 0 опровергнуто; находка приёмки: К-10 закрывается «не строить»): решения владельца 16.08 ратифицированы — конвейер с провода (Progress один счётчик до остановки, знаменатель купленный), модель ошибок вариант B (машинный code+request_id, два класса конкретности §8а, К-9 грубым кодом), жанр выкинуть, дописывание глав POST /parts + гейт молчаливой перекупки, транспорт не менять (сжатие→ETag/304→скоуп→дельты), экспорт остаётся с Б-4, история прогонов не нужна, В-10 «вежливость», PD-104 закрыт (грант 0 на бете); батч 0.3.0 заказан отдельной спек-сессией (Б-1 первой; канон первым, компаньон вместе со спекой); 179 закрыта, новые 183–187 | ЖИВОЕ: промт батча — очередь №17; кросс-семейный проход доклада — отдельный заказ | жив | контракт владелец приёмка фронт платформа деньги | | D39.139 | 16.08 | Подрезка хвостов по слову владельца (D-лог: тела D39.107–123 в слайс, голова D39.124+, живое тело D39.106; PROGRESS: бэкенд-записи 14–15.08 в слайс 2026-08-14-15) + свип планировочных доков трёх зон: К-9/К-13/жанр/лестница фаз/0.2.2/S4-гейт вычищены из product-requirements и README, шапка 09-target освежена; зонам розданы аддендумы (платформа: $5-дефолт против PD-104, баннер §3 закрыт D39.132; фронт: пофазный прогресс §9/§6/§8 устареет батчем, Ф-59/Ф-37/Ф-39 диспозиции) | ЖИВОЕ: пол чтения D-лога = D39.124+ | жив | процесс докс оркестратор | +| D39.140 | 16.08 | Аудит целостности бэклога по заказу владельца (292 ревизии PROGRESS, 200 ID; свип хвостов 26 закрытых строк): ПОТЕРЬ НЕТ — 56 ушедших все со следом; 3 аномалии формы (однодневка 117, поглощение 20, переиспользование 14 — до ратификации норм); 9 загейченных хвостов без носителя закрыты: строка 188 (носитель ре-пробы 74 — её ждали 5/36б/44 + слоты экс-77 ре-гена и порога 116), дописка 172-г (выборочный порог в риг ДО вахты весов — иначе ложное падение на 4/5), строки 189 (фразы логов/артефактов движка) и 190 (кросс-семейный проход ревью), дописка 28 (хвост 128 латиница/NoDst), три жильца Б-108 (граница пробы 117, перспектива пака-19, эскалационный кап D39.131-д) | ЖИВОЕ: строки 188–190; порог в риг — до вахты V4-Pro-0813 | жив | процесс бэклог оркестратор приёмка | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index da0334dd..87ae44f4 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.139 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.140 (живой файл: карта · эрраты · живые тела · голова 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+). @@ -397,3 +397,13 @@ (в) **Зона фронта — пинг-аддендум в журнал:** `FRONTEND_SESSION_PROMPT` §9 п.1, `FRONTEND_PLAN` §6 п.1 и `STACK_DECISIONS` §8 п.1 учат ПОФАЗНОМУ прогрессу «draft N/M ∥ edit N/M» — устареет батчем (Б-0: один счётчик, знаменатель купленный); `STACK_DECISIONS` §8 протух целиком — все 4 пункта построены (D39.122/131/132); Ф-59 закрывается ответом В-10 «вежливость»; Ф-37 ждала К-10 — отвечен «НЕ строить»; Ф-39 закрыта D39.136 п.4б. **3. Не тронуто сознательно:** зонные доки чужих зон (правят сессии зон по пингам); исторические тела под ⚠-баннерами (01–06, FRONTEND_SESSION_PROMPT §исторические — баннеры уже стоят); секция «Полигон» PROGRESS и все файлы живого полигона. (16.08.2026, оркестратор №17) ✅ + +## D39.140 — АУДИТ ЦЕЛОСТНОСТИ БЭКЛОГА (заказ владельца 16.08 «не потеряли ли строки»): ПОТЕРЬ НЕТ — 200/200 ID со следом судьбы; 9 загейченных хвостов без носителя получили носителей (строки 188–190, дописки 172-г/28, три жильца Б-108). ✅ + +**1. Приёмка аудита (агент-аудитор + выборочная перепроверка оркестратора исполнением).** Метод аудита: 292 ревизии `docs/PROGRESS.md` по git-истории → множество всех когда-либо существовавших ID (200 + один номер-однодневка 117, выданный нотой и не доживший до таблицы) → судьба каждого ушедшего. **Вердикт: из бэклога ничего не потеряно** — 144 живых, 56 ушедших и ВСЕ 56 со следом закрытия в D-логе; дыры нумерации 29/133 — номера не выдавались. Оркестратор перепроверил сам: live-набор ID идентичен HEAD и дереву; четыре несущих клейма — по первоисточникам (риг `live_reprobe_test.go:181-190` · D39.136 п.6б · грепы «ре-проб» и research/28 §6). + +**2. Три аномалии ФОРМЫ (исторические, работы не стоили, все — до/около ратификации соответствующих норм):** (а) **117** — строка-однодневка: номер выдан D39.96, предмет исполнен и закрыт D39.97 раньше, чем строку записали в таблицу (проба провода PASS 3/3, $0.0053); ссылки старых доков на «носителя 117» фактически указывают на 118–123. (б) **20** — закрыта поглощением в переписанную 21 без произнесённого «закрыта» (за день до нормы D39.66). (в) **14** — единственное переиспользование ID на 200 (пак-19 → data-флаги фазы-2, 01.08, за день до нормы «ID не переиспользуется» D39.63 п.5); обе работы целы. + +**3. Девять загейченных хвостов БЕЗ носителя — класс NEVER_CLOSED, все получили носителей ЭТИМ лендингом** (шесть — первый проход аудита; ещё три — глубокий свип хвостов по 26 закрытым строкам трёх эр): (а) **событие «ре-проба 74»** ждали живые строки 5/36б/44 и шапка CURRENT-STATE, владельца не было (74 закрыта D39.91, а гейт «слот при ре-пробе» ставился D39.102 уже ПОСЛЕ её закрытия) → **строка 188** (носитель события + все слоты); (б) **порог 116 не доехал до рига**: ратифицировано «≥4/5 при N=5» (D39.136 п.6б), риг требует 6/6 на каждом прогоне и сам предупреждает «threshold and sample disagree» — вахта весов V4-Pro-0813 упала бы ложно на 4/5 → **дописка в 172-г** (внести порог ДО прогона вахты); (в) граница пробы 117 (CONNECT/CONTINUATION/нагрузка; SETTINGS-фингерпринт не в quirks) → **жилец Б-108**; (г) «перспектива» гендер-аннотации пака-19 → **жилец Б-108** (триггер: оси голоса); (д) мультиязычность фраз логов/артефактов движка (вторая половина слова владельца 15.08; research/28 §6 «носителя назвать отдельно») → **строка 189**; (е) кросс-СЕМЕЙНЫЙ проход контракт-ревью (жил только колонкой реестра) → **строка 190**; (ж) **решение о включении `RegenerateEchoBeforeEscalate`** (экс-77, D39.64: «включение — решением при ре-пробе 74»; ручка построена и мертва во всех конфигах, ре-ген ≈7.6× дешевле эскалации; жила только кодом и README-бюллетенем без номера) → **слот строки 188**; (з) **реопен эскалационного капа** (D39.131 п.2д «не прицениваает хоп, реопен — первый живой инцидент» — отложка 14.08 жила только телом ноты) → **жилец Б-108**; (и) **хвост 128 «латиница-target/NoDst»** (D39.102; при закрытии 128 нотой D39.118 дословно не переехал) → **дописка в строку 28**. + +**4. Урок процессу (знанием, без новой нормы):** норма «закрытая строка уходит в D-лог» держится безупречно (0 потерь на 56 закрытий), а теряется ровно класс, который §Б-108 и заведён ловить, — загейченные РЕОПЕНЫ внутри текстов закрывающих нот; сам Б-108 признавал ≥6 нарушений, и аудит добавил 6 новых. Дешёвый контр: при закрытии строки грепать её тело на «остаток/вернуться/реопен/гейт» — уже в нормах (D39.66 + промт §8), исполнять механически. (16.08.2026, оркестратор №17) ✅ diff --git a/docs/architecture/13-tech-debt-anchors.md b/docs/architecture/13-tech-debt-anchors.md index 6e31dbb0..089abe06 100644 --- a/docs/architecture/13-tech-debt-anchors.md +++ b/docs/architecture/13-tech-debt-anchors.md @@ -233,7 +233,7 @@ backend/prompts/zh-ru/editor.md:6 — «Правь стиль: убирай ка ### Б-108 — тело строки 108 на 09.08.2026 -**Реестр ЗАГЕЙЧЕННЫХ ТРИГГЕРОВ + норма закрытия «по нужности».** ⚠ Первый жилец реестра, найденный тем же лендингом: **сиблинг-угроза экрана целевого языка** — выход на языке, БЛИЗКОМ к целевому (украинский/болгарский для ru): ни одного события не наблюдалось, но если появится, дискриминатор — плотность РУССКО-ЭКСКЛЮЗИВНЫХ букв (ы/э/ё) НИЖЕ ожидания, а НЕ замыкание алфавита (`EFFORT_HANDLE §5.4` шаг 8). Шесть остальных реопенов живут только в телах D-нот и не имеют места, где их поднимут: **МАСШТАБ** (uniformity-пасс D12 · эмбеддинг A7/D2 «реопен = измеренный recall-разрыв, только batch-time лейн» · STITCH «бюджет ИЛИ измеренный эффект размера инъекции» · канон-пин серий) · **вторая пара живьём** (C-триггер softsign-decl · автономная Decl-эмиссия) · **вторая книга того же жанра** (жанровый shared-слой) · **первая traditional-книга** (probe-литералы 时辰/千万/数十万 цельным дата-батчем) · **появление Go-кода платформы** (`go.work` — ⚠ `platform/go.mod` УЖЕ заведён, триггер наступил) · **перед стройкой fix-8** (ёлочный экстрактор атрибуции + корпус-замер). **+Два жильца приёмки D39.91:** Д5 — enum эффорта провайдер-слеп (`medium` на DeepSeek не определён, `max`/`xhigh` недостижимы; пер-модельную таблицу решено НЕ строить — механизм без носителя качества/денег, misconfig ограничен бюджетами и назван в доккомменте `ValidReasoningEffort`; триггер: первый живой инцидент кривого поведения уровня на проводе) · Д9 — аддитивные провайдеры отказываются бэнк/repair-гейтам, блок не несёт `reasoning_max_tokens` (fail-closed в лоадере; триггер: первая потребность гейта в аддитивной модели). **+Вахта D39.92:** вендор анонсировал смену МАППИНГА эффорта `deepseek-v4-pro` «early August 2026» ⇒ квирк 3а («low→high, эффорт не настраивается») может устареть (триггер: аномалия редакторского арма ИЛИ дата > 05.08 ⇒ пере-проба маппинга + сверка changelog; абсорбция в `00-provider-quirks.md` — полигоном). **→ СРАБОТАЛА: changelog вендора 13.08 — у V4-Pro и V4-Flash теперь уровни low/high/max (квирк 3а устарел, `max` стал достижим — двигает и Д5-жильца выше); тем же днём пик/офф-пик цены с 16.08 16:00 UTC (строка 172); changelog 31.07 официально подтверждает re-post-train флэша под слагом (провенанс D39.61); пере-проба поведением + абсорбция — полигоном по слову владельца (снято оркестратором 14.08).** Норма D39.66 «каждое отложено обязано ТЕМ ЖЕ лендингом получить строку или явное закрытие» нарушена ≥6 раз ПОСЛЕ собственной ратификации, и класс потерь узкий — теряются именно ЗАГЕЙЧЕННЫЕ РЕОПЕНЫ. Лечение: короткий реестр триггер→что вернётся→источник, сверяемый на каждом переходе горизонта (горизонт расписан до Ф3, точки сверки известны заранее) · **(D39.96)** тулчейн go1.27 переключит x/text на таблицы Unicode 17.0.0 МОЛЧА (`xTextVersion` пинит go.mod-строку, не таблицы) — триггер: любое движение тулчейна к 1.27 ⇒ строка 119 ПЕРВОЙ · **(D39.96)** CI-воркфлоу Forgejo (удалёнка 10.0.3, раннер не подтверждён; решение владельца 03.08 — не писать) — триггер: появление раннера ⇒ файл workflow; до того точка входа `make battery` +**Реестр ЗАГЕЙЧЕННЫХ ТРИГГЕРОВ + норма закрытия «по нужности».** ⚠ Первый жилец реестра, найденный тем же лендингом: **сиблинг-угроза экрана целевого языка** — выход на языке, БЛИЗКОМ к целевому (украинский/болгарский для ru): ни одного события не наблюдалось, но если появится, дискриминатор — плотность РУССКО-ЭКСКЛЮЗИВНЫХ букв (ы/э/ё) НИЖЕ ожидания, а НЕ замыкание алфавита (`EFFORT_HANDLE §5.4` шаг 8). Шесть остальных реопенов живут только в телах D-нот и не имеют места, где их поднимут: **МАСШТАБ** (uniformity-пасс D12 · эмбеддинг A7/D2 «реопен = измеренный recall-разрыв, только batch-time лейн» · STITCH «бюджет ИЛИ измеренный эффект размера инъекции» · канон-пин серий) · **вторая пара живьём** (C-триггер softsign-decl · автономная Decl-эмиссия) · **вторая книга того же жанра** (жанровый shared-слой) · **первая traditional-книга** (probe-литералы 时辰/千万/数十万 цельным дата-батчем) · **появление Go-кода платформы** (`go.work` — ⚠ `platform/go.mod` УЖЕ заведён, триггер наступил) · **перед стройкой fix-8** (ёлочный экстрактор атрибуции + корпус-замер). **+Два жильца приёмки D39.91:** Д5 — enum эффорта провайдер-слеп (`medium` на DeepSeek не определён, `max`/`xhigh` недостижимы; пер-модельную таблицу решено НЕ строить — механизм без носителя качества/денег, misconfig ограничен бюджетами и назван в доккомменте `ValidReasoningEffort`; триггер: первый живой инцидент кривого поведения уровня на проводе) · Д9 — аддитивные провайдеры отказываются бэнк/repair-гейтам, блок не несёт `reasoning_max_tokens` (fail-closed в лоадере; триггер: первая потребность гейта в аддитивной модели). **+Вахта D39.92:** вендор анонсировал смену МАППИНГА эффорта `deepseek-v4-pro` «early August 2026» ⇒ квирк 3а («low→high, эффорт не настраивается») может устареть (триггер: аномалия редакторского арма ИЛИ дата > 05.08 ⇒ пере-проба маппинга + сверка changelog; абсорбция в `00-provider-quirks.md` — полигоном). **→ СРАБОТАЛА: changelog вендора 13.08 — у V4-Pro и V4-Flash теперь уровни low/high/max (квирк 3а устарел, `max` стал достижим — двигает и Д5-жильца выше); тем же днём пик/офф-пик цены с 16.08 16:00 UTC (строка 172); changelog 31.07 официально подтверждает re-post-train флэша под слагом (провенанс D39.61); пере-проба поведением + абсорбция — полигоном по слову владельца (снято оркестратором 14.08).** Норма D39.66 «каждое отложено обязано ТЕМ ЖЕ лендингом получить строку или явное закрытие» нарушена ≥6 раз ПОСЛЕ собственной ратификации, и класс потерь узкий — теряются именно ЗАГЕЙЧЕННЫЕ РЕОПЕНЫ. Лечение: короткий реестр триггер→что вернётся→источник, сверяемый на каждом переходе горизонта (горизонт расписан до Ф3, точки сверки известны заранее) · **(D39.96)** тулчейн go1.27 переключит x/text на таблицы Unicode 17.0.0 МОЛЧА (`xTextVersion` пинит go.mod-строку, не таблицы) — триггер: любое движение тулчейна к 1.27 ⇒ строка 119 ПЕРВОЙ · **(D39.96)** CI-воркфлоу Forgejo (удалёнка 10.0.3, раннер не подтверждён; решение владельца 03.08 — не писать) — триггер: появление раннера ⇒ файл workflow; до того точка входа `make battery`. **+Два жильца аудита бэклога D39.140 (16.08):** граница пробы провода строки-однодневки 117 — CONNECT-туннель, CONTINUATION-фреймы и поведение под нагрузкой НЕ проверены, SETTINGS-фингерпринт не абсорбирован в `00-provider-quirks.md` (`archive/reports/ARCHGUARD_DOFIX_2026-08-03.md:173`; триггер: смена транспорта/HTTP-стека ИЛИ провайдер-аномалия класса «зависший стрим») · компонент «перспектива» нарративной гендер-аннотации пака-19 (строка 15 ушла лендингом D39.56 без этого компонента; смежный морфо-гейт рода — строка 82 — ДРУГОЙ предмет; триггер: подписание осей голоса при доборе идеала, строки 24/13б) · эскалационный кап НЕ прицениваает хоп — перелёт ≤1 хопа `escalate_to`-модели, оставлен и запинен D39.131 п.2(д) (триггер реопена: первый живой инцидент перелёта) ### Б-109 — тело строки 109 на 09.08.2026