Take seven rows out of the backlog that two acts had already closed, and stop three entry docs describing gaps the day's landings filled

This commit is contained in:
heaven 2026-09-05 16:56:42 +03:00
parent 535f60a3a2
commit a0fd2be063
3 changed files with 17 additions and 20 deletions

File diff suppressed because one or more lines are too long

View file

@ -5,10 +5,10 @@
| Роль | Модель (слаг) | thinking / effort | Носитель конфига | Статус | Квирки |
|---|---|---|---|---|---|
| **draft** (translator) | `deepseek-v4-flash` | thinking ON, `reasoning:"low"` явно (D39.87/91 «вариант б») | `configs/pipeline-c1.yaml`, стадия `draft` | боевой ИНТЕРИМ (exp13; бейк-офф эксп-22 заленден 10.08 — черновик менять не на что, но выводы заморожены до фазы Д, НЕ ратифицированы) | quirks §0731 п.1 (дефолт-эффорт пробивает флор 8000), п.3а (не слать эффорт = ехать на `high`), п.4 (`low` пере-вооружает эхо), п.6 (эхо стохастично по вызову; ре-ген дешевле эскалации ×7.6). Thinking-OFF — НИКОГДА (эхо-мина, `echoMineViolation`) |
| **+ банкнота** (WHAT-канал драфта) | та же flash, промпт `translator-banknote.md` | как draft | `configs/pipeline-c1.yaml`, блок `gates.banknote`**ВКЛЮЧЕНА в shipping с `b8154cd`** (`enabled: true` + `prompt_override` на банкнотный промпт стадии draft: гейт лишь СРЕЗАЕТ блок, инструкцию его писать несёт промпт) | ⚠0731; включение в c1 = СТОП-решение владельца (строка 140: двигает RequestHash) | те же |
| **+ банкнота** (WHAT-канал драфта) | та же flash, промпт `translator-banknote.md` | как draft | `configs/pipeline-c1.yaml`, блок `gates.banknote`**ВКЛЮЧЕНА в shipping с `b8154cd`** (`enabled: true` + `prompt_override` на банкнотный промпт стадии draft: гейт лишь СРЕЗАЕТ блок, инструкцию его писать несёт промпт) | ⚠0731; включение в c1 ОТРАБОТАЛО — контур ВКЛЮЧЁН с `b8154cd` (строка 140 закрыта и снята; двигало RequestHash, потому и было стоп-решением владельца) | те же |
| **терминолог** | `deepseek-v4-flash` | thinking ON, `gates.terminology.reasoning:"low"` (одна ручка на обе бэнк-роли) | `configs/pipeline-c1.yaml`, блок `gates.terminology`**ВКЛЮЧЁН в shipping с `b8154cd`** (`enabled: true`, `budget_usd: 1.00`); схема — `internal/config/pipeline.go`, греп `type TerminologyGate struct` | боевой по факту прогонов; носитель — конфиг книги | quirks §0731 п.3а: пустой `reasoning` = вендор-`high` → 4/5 `length` с пустым телом; экран `target_script: Cyrillic` обязателен при гейте ON |
| **классификатор** (типы кандидатов) | flash (`classify_model` пуст ⇒ = model) | та же ручка | там же: `classify_types: true` + `classify_budget_usd: 1.00` | **ВКЛЮЧЁН в shipping с `b8154cd`** (прежде — только проба/полигон) | латентный мис-вердикт `cjk_artifact``13-tech-debt-anchors.md` §Б-105 |
| **editor** | `deepseek-v4-pro` **БИЛИНГВ** | thinking ON; `reasoning:"off"` = осознанный NO-OP (ReasoningNone); ⚠ **ручка эффорта у `pro` ЕСТЬ — прежний клейм «ручки НЕТ (`low`→`high`)» СНЯТ 04.09 сверкой с квирк-каноном.** Канон пере-снят полигоном 30.08 живым `curl` (§3а: «ТАБЛИЦА У ВЕНДОРА ИЗМЕНИЛАСЬ, И ЗАПИСЬ НИЖЕ БОЛЬШЕ НЕ ВЕРНА»), а поведенческая проба того же дня (§3г, $0.038276) показала: **параметр `low` на `pro` ТЕПЕРЬ ДОХОДИТ ДО МОДЕЛИ** (79 prompt_tokens). ⚠ **Фиксируем ровно «ручка доходит», НЕ «ручка работает»:** ВЕЛИЧИНА эффекта не установлена (§3д: разброс ×38, причина не установлена), и это живой остаток строки 172(г). ⚠ **ИСПР. 05.09: НОСИТЕЛИ БОЛЬШЕ НЕ ПРОТИВОРЕЧАТ.** Прежняя редакция говорила «`PROGRESS.md` утверждает обратное» — не утверждает: и строка **237**(б), и квирки §3г, и этот файл говорят ОДНО — ручка ДОХОДИТ до модели с вендор-апдейта 13.08. Спор был фантомным и заставлял читателя искать сторону там, где сторон нет. Живой остаток другой и он один: **вендор-сверка САМОГО МАППИНГА (`low`→что именно) и ВЕЛИЧИНА эффекта** — поведенческого замера после 13.08 нет ни у кого. ⚠ **D39.137 про эффорт МОЛЧИТ** (11 строк, ноль упоминаний) — ссылаться на неё как на «ручка появилась 13.08» уже пробовали (испр. №18 20.08): конфабуляция по смежности, `V4-Pro-0813` — чекпойнт ВЕСОВ при вендорском «Model names remain unchanged», а не дата появления ручки. **Закрывается вендор-сверкой, а не выбором стороны**; до неё в силе КАНОН | `configs/pipeline-c1.yaml` блок редактора; floor 16000 — `models.yaml` ключ `deepseek-v4-pro`, поле `min_max_tokens` | боевой ИНТЕРИМ (D30.1/D39.22); D39.117: топология 2-прохода ПОДТВЕРЖДЕНА (`A/F3` +2.50 Holm 0.0004), жильцы dspro/glm-5 неразличимы ⇒ выбор = цена; закон-блок ОБЯЗАТЕЛЕН (строка 134) | quirks §0731 п.3а (маппинг pro), п.3б (замер `low` на pro ОТОЗВАННЕ УСТАНОВЛЕНО); вахта смены маппинга «early August 2026» — §Б-108 |
| **editor** | `deepseek-v4-pro` **БИЛИНГВ** | thinking ON; `reasoning:"off"` = осознанный NO-OP (ReasoningNone); ⚠ **ручка эффорта у `pro` ЕСТЬ — прежний клейм «ручки НЕТ (`low`→`high`)» СНЯТ 04.09 сверкой с квирк-каноном.** Канон пере-снят полигоном 30.08 живым `curl` (§3а: «ТАБЛИЦА У ВЕНДОРА ИЗМЕНИЛАСЬ, И ЗАПИСЬ НИЖЕ БОЛЬШЕ НЕ ВЕРНА»), а поведенческая проба того же дня (§3г, $0.038276) показала: **параметр `low` на `pro` ТЕПЕРЬ ДОХОДИТ ДО МОДЕЛИ** (79 prompt_tokens). ⚠ **Фиксируем ровно «ручка доходит», НЕ «ручка работает»:** ВЕЛИЧИНА эффекта не установлена (§3д: разброс ×38, причина не установлена), и это живой остаток строки 172(г). ⚠ **ИСПР. 05.09: НОСИТЕЛИ БОЛЬШЕ НЕ ПРОТИВОРЕЧАТ.** Прежняя редакция говорила «`PROGRESS.md` утверждает обратное» — не утверждает: и строка **237**(б), и квирки §3г, и этот файл говорят ОДНО — ручка ДОХОДИТ до модели с вендор-апдейта 13.08. Спор был фантомным и заставлял читателя искать сторону там, где сторон нет. Живой остаток другой и он один: **вендор-сверка САМОГО МАППИНГА (`low`→что именно) и ВЕЛИЧИНА эффекта** — поведенческого замера после 13.08 нет ни у кого. ⚠ **D39.137 про эффорт МОЛЧИТ** (11 строк, ноль упоминаний) — ссылаться на неё как на «ручка появилась 13.08» уже пробовали (испр. №18 20.08): конфабуляция по смежности, `V4-Pro-0813` — чекпойнт ВЕСОВ при вендорском «Model names remain unchanged», а не дата появления ручки. **Закрывается вендор-сверкой, а не выбором стороны**; до неё в силе КАНОН | `configs/pipeline-c1.yaml` блок редактора; floor 16000 — `models.yaml` ключ `deepseek-v4-pro`, поле `min_max_tokens` | боевой ИНТЕРИМ (D30.1/D39.22); D39.117: топология 2-прохода ПОДТВЕРЖДЕНА (`A/F3` +2.50 Holm 0.0004), жильцы dspro/glm-5 неразличимы ⇒ выбор = цена; закон-блок ОБЯЗАТЕЛЕН и ВНЕСЁН (D39.104 п.2, вайр-батч; строка 134 закрыта и снята) | quirks §0731 п.3а (маппинг pro), п.3б (замер `low` на pro ОТОЗВАННЕ УСТАНОВЛЕНО); вахта смены маппинга «early August 2026» — §Б-108 |
| **editor-резерв** | `glm-5` | thinking OFF ЯВНО (`extra_body {thinking:{type:disabled}}`, иначе таймауты ×3) | `configs/pipeline-arm-glm.yaml` блок редактора + `models.yaml` ключ `glm-5` | резерв; флип = один арм-конфиг. mistral-арм есть, но mistral ИСКЛЮЧЁН как редактор (D39.20) | quirks thinking-таблица (glm-5); эхо-экспозиция билингва при thinking-OFF НЕ измерена (`sourceEchoExposure`) |
| **судья Ф2** | Gemini (нативный адаптер — Ф2, строка 33); в C2-скелете провизорно `glm-5` | Gemini: thinking mandatory | `models.yaml` ключ `gemini-3.1-pro-preview`; `pipeline-c2.yaml` блок `select` («DO NOT FLIP») | Ф2/полигон — в движке НЕ построен; C2 неисполняем | quirks: `thinking_budget:0` → HTTP 400; учёт `additive_total`; судья ЭРОТИКИ непригоден (PROHIBITED_CONTENT неконфигурируем, D22.6) → первичный судья 18+ = grok |
| **канал B (18+)** | `mistral-large-2512` (переводчик-дефолт, D19.1) + `grok-4.3` (эскалация reasoning-ON + судья 18+) | mistral: не-reasoning; grok: OFF только явным `reasoning_effort:"none"` | `models.yaml` ключи `mistral-large-2512` (accepts_labels, rate_limit) и `grok-4.3` · c1 `chains.adult:[grok-4.3]` | данные заведены; полный wiring — Ф2; `content_policy` пуст во всех shipping (сознательно) | quirks §Транспорт: mistral rate-limiter (~48% retry-fails → `max_concurrency:2`); grok: вложенная форма эффорта молча глотается; additive-биллинг (think-ON только за резервом D6.2) |
@ -20,8 +20,12 @@
- ⛔ **РАЗВЁРТЫВАНИЕ КОНТУРА: `mining.contrast_path` — единственный вход, и в git его НЕТ.** Артефакт
крупный, генерируется из jieba (рецепт и SHA — `experiments/16-bank-mining.md`); без него стоп
майнинга возвращается рано и терминолог с классификатором не исполняются ВООБЩЕ, чем бы ни были
заполнены их гейты. Загрузка конфига это ПРОВЕРЯЕТ и отказывает по имени пути до первого платного
вызова (`internal/config`, греп `mining.contrast_path`). Носитель — строка бэклога 251.
заполнены их гейты. ⚠ **ДВЕ РАЗНЫЕ ОШИБКИ РАЗВЁРТЫВАНИЯ, И ГРОМКАЯ — НЕ ТА, О КОТОРОЙ ДУМАЕШЬ** (замер 05.09, `D39.201` п.4;
прежняя редакция этой строки утверждала обратное). Отсутствие КЛЮЧА валит ЗАГРУЗКУ конфига громко на
ВСЕХ путях, включая $0-читающие (`backend/internal/config/pipeline.go`, греп `` `mining.contrast_path` is not set ``):
`exit 10`, манифеста нет вовсе. Отсутствие ФАЙЛА ловит только ПИШУЩИЙ путь — `CheckMiningContrast`
намеренно вне `LoadPipeline` и `CheckRunnable`, зовётся из `backend/internal/pipeline/runner.go`
(греп `CheckMiningContrast`), поэтому `manifest`/`status` на хосте без артефакта молча дают `exit 0`. Носитель — строка бэклога 251.
⚠ И перекос слоя, вскрытый включением: корпус контраста — факт ИСХОДНОГО языка, а лежит в
пар-агностичном конфиге пайплайна. Пара, которой в репо нет, потребует своего корпуса и своего ключа.
- **Вахта эффорта pro:** реестр загейченных триггеров — `architecture/13-tech-debt-anchors.md` §Б-108 (статус ручки — в строке редактора выше).

View file

@ -47,7 +47,7 @@
| ПТ-17 | Лимит размера входа настройкой (V2-п.3, H7) | ⭕ | строка 94 |
| ПТ-18 | Стоп и продолжение пайплайна; абьюзивный прогон НЕ продолжать (V2-п.2, H10) | 🔶 | graceful stop по сигналу (`cmd/tmctl/main.go` NotifyContext) + чекпойнты/redrive; продукт-кнопки и связка с прескрином = строка 94; API-форма в контракте 14 (D39.99: stop/resume; отказ прескрина — К-9 закрыт D39.138 п.2б) |
| ПТ-19 | Скорость: «очень быстрый перевод книги — киллерфича» (V4-п.1, H9); видимый прогресс/ETA — из Ф3-видения ридер-IDE (цветная полоса статуса), не из V4 | 🔶 | волны параллельны по чанкам; замер скорости и ETA на целой книге = строка 54 (МАСШТАБ); пофазные счётчики draft/edit НА ГЛАВУ построены движком (D39.122 — строка 99 ЗАКРЫТА); ETA ПОКАЗЫВАТЬ — решение владельца 04.08 (D39.100/К-5), `eta_seconds` в спеке (0.2.0+, D39.115); оценка $/глава движком = строка 166 |
| ПТ-44 | **Готовый перевод отдаётся ПОЛЬЗОВАТЕЛЮ файлом** — читаемая книга (EPUB 3 + чистый txt), а не JSON-выхлоп; неполная книга выдаётся ВСЕГДА, с пометкой на титуле и маркером на месте каждой дыры (слово владельца 30.08: «дверь ВСЕГДА строит файл — отказ юзеру не отдаётся»; отказ по умолчанию остаётся операторской ручкой CLI) | 🔶 | **Движковая половина ПОСТРОЕНА** (D39.175, `8adcb86`) — глагол `tmctl build`, пакет `backend/internal/bookfile`, шесть состояний честности и полоса отказов расшифрованы в `glossary.md`, флаги и оба конверта (`tm-build-v1` у глагола build, аддитивно расширенный `tm-export-v1`) — в теле ноты. ⚠ **испр. 05.09: дверь платформы ПОСТРОЕНА**`createExport` · `getExport` · `downloadExport` (`adf5e53`, `D39.194`, контрактный минор 0.10.0 §2.23), цикл замкнут живьём: EPUB настоящего платного перевода выдан через API. Прежняя редакция после этой поправки продолжала хвостом слать «в очередь, гейт: живой прогон» — очереди больше нет. Открытое на владельце: лестница D25.1 (какая ступень даёт копию БЕЗ пометки, что печатать на титуле) |
| ПТ-44 | **Готовый перевод отдаётся ПОЛЬЗОВАТЕЛЮ файлом** — читаемая книга (EPUB 3 + чистый txt), а не JSON-выхлоп; неполная книга выдаётся ВСЕГДА, с пометкой на титуле и маркером на месте каждой дыры (слово владельца 30.08: «дверь ВСЕГДА строит файл — отказ юзеру не отдаётся»; отказ по умолчанию остаётся операторской ручкой CLI) | 🔶 | **Движковая половина ПОСТРОЕНА** (D39.175, `8adcb86`) — глагол `tmctl build`, пакет `backend/internal/bookfile`, шесть состояний честности и полоса отказов расшифрованы в `glossary.md`, флаги и оба конверта (`tm-build-v1` у глагола build, аддитивно расширенный `tm-export-v1`) — в теле ноты. ⚠ **испр. 05.09: дверь платформы ПОСТРОЕНА**`createExport` · `getExport` · `downloadExport` (`adf5e53`, `D39.194`, контрактный минор 0.10.0 §2.23), цикл замкнут живьём: EPUB настоящего платного перевода выдан через API. Прежняя редакция после этой поправки продолжала хвостом слать «в очередь, гейт: живой прогон» — очереди больше нет. **Лестница D25.1 ЗАКРЫТА владельцем 05.09 — `D39.205`: копия БЕЗ пометки = книга БЕЗ ЕДИНОГО ПРОПУСКА**; любой пропуск ⇒ пометка в файле, гранулярность — ЮНИТ (пропущенный кусок главы критичен, слово владельца). Титульной СТРАНИЦЫ в EPUB нет — читатель видит уведомление в первом документе spine (`backend/configs/langpacks/ru/reader.txt`, ключи `notice.*`). Имя файла вычисляется при скачивании (`platform/internal/httpapi/v0.go`, греп `exportName`). Открытого на владельце по ПТ-44 НЕТ |
## Фронт (Ф3)
@ -60,7 +60,7 @@
| ПТ-24 | Цикл согласования глоссария с профпереводчиком/редактором (V0-п.23) | 🔶 | подписной цикл терминолога в бэкенде есть; UI = Ф3. Модель цикла записана словом владельца 16.08 (D39.144 + строка 192): черновой перевод и черновой банк появляются вместе → ОДИН ОК всему банку (не пер-термная масс-подпись) → доработка → пост-ридинговые точечные правки с пере-генерацией по вхождениям (механика — после полигона) |
| ПТ-33 | Интерфейс НЕ раскрывает конвейер: ни моделей, ни стадий, ни внутренней терминологии (решение владельца 02.08; граница пере-читана 15.08 — охранять АЛГОРИТМЫ, не минорную механику, D39.136 п.4а). ⚠ «Лестница» фаз «загрузка → … → финал → готово» — устная фраза владельца, НЕ норма продукта (его слово 16.08, D39.138: `finalizing` сворачивается) | 🔶 | инвариант D39.81; словарь статусов принят (D39.100/К-1); карта «вердикт → фраза» — приложение А компаньона (В-3), после D39.138 пишется по словарю машинных кодов Б-1. Машинный ГЕЙТ на утечку волн draft/edit — фронту при разморозке (пинг 16.08; сама утечка снята батчем 0.3.0, D39.142/143). Полоса прогресса — ОДНА монотонная доля на всю работу прогона через обе волны, считает СЕРВЕР, плюс подпись «что делается сейчас» (`Progress.stage`, ВТОРОЕ и последнее исключение границы — D39.163, словарь ОТКРЫТ, клиент рисует незнакомое нейтрально). ⚠ **Остаток, который НЕ закрылся и назван честно:** платформа продаёт ГЛАВЫ, а движку передаёт только денежный потолок — единица продажи не равна единице остановки (`PD-410`, архитектурный стоп; направление лечения — D39.165 §1). И полоса ПЕРЕ-ПРОХОДА гранулярности не имеет вовсе: движок анонсирует работу один раз за жизнь книги, поэтому она объявлена «одной неделимой единицей работы» (D39.166), а не выведена |
| ПТ-34 | Пользовательский перевод НИКОГДА не попадает на публично индексируемый URL — ни витрин примеров, ни «поделиться главой», ни публичных ссылок чтения (жёсткий продуктовый запрет, решение владельца 02.08; авторское право на исходники + политика Google по масштабируемому машин-контенту действуют на весь домен) | ⭕ | инвариант D39.84; носители: двухконтурный деплой `frontend/docs/STACK_DECISIONS.md` §4 (SPA под `X-Robots-Tag: noindex` на каждом HTML-ответе; публичный контур без контента переводов) + контракт 14 (`architecture/14-api-contract/`, D39.99) + платформенный бэклог П-1; правило доступа к экспорт-ссылке (срок/подпись) — батч 183 (research/28 Б-4) |
| ПТ-35 | Лимиты «как в Claude Code» (решение владельца 04.08, D39.100): страница лимитов/использования в настройках (статус, НЕ суммы) ⚠ **испр. 05.09: «запрет денег на экране» ОТОЗВАН владельцем — D39.196, эррата 05.09-а**; баланс аккаунта, потолок заказа и холд выходят наружу ДЕНЬГАМИ, поля приезжают паком формы заказа. Запрещённым осталось другое и оно не отменялось: цены моделей, стоимость стадий и вызовов; стоп по потолку = статус `paused` + оповещение «перевод остановлен: лимиты исчерпаны» | 🔶 | контракт К-8 закрыт, спека несёт `paused`/`paused_reason` (0.2.0+, D39.115); ручки /v0 — платформа-раннер P4 (D39.123); статус `paused` по потолку ЧЕСТЕН с P6 (D39.132: exit 4/событие → `paused`, не `failed`; дневной потолок оператора различим и из платформенного шаблона убран — решение владельца 15.08); остаток: страница лимитов и оповещение на фронте (после РАЗМОРОЗКИ зоны: лендинг P7 её НЕ размораживает — D39.147) · ⚠ фразы (В-3 · К-6 · Приложение А) ДЕЛЕГИРОВАНЫ проекту словом владельца 30.08 (D39.176 п.4): подписи владельца НЕ ждём, требование ИНЖЕНЕРНОЕ — фраза не литерал ни в Go, ни в TSX, а ДАННЫЕ по машинному коду причины и локали; вместе со словарём закрывается `PD-246`, гейт — строка бэклога 204 · К-13 ЗАКРЫТ (D39.132 п.2а: `null` на проводе) |
| ПТ-35 | Лимиты «как в Claude Code» (решение владельца 04.08, D39.100): страница лимитов/использования в настройках (статус, НЕ суммы) ⚠ **испр. 05.09: «запрет денег на экране» ОТОЗВАН владельцем — D39.196, эррата 05.09-а; и ВТОРОЕ уточнение `D39.203`: движку РАЗРЕШЕНО говорить платформе «сколько добавить», потому что наружу идёт ДО-ВЫЗОВНАЯ ОЦЕНКА (резервация ПЕРЕД звонком), а запрет ниже написан про СТОИМОСТЬ — что списано по факту. Сеттлмент не выходит ни одной дверью**; баланс аккаунта, потолок заказа и холд выходят наружу ДЕНЬГАМИ, поля приезжают паком формы заказа. Запрещённым осталось другое и оно не отменялось: цены моделей, стоимость стадий и вызовов; стоп по потолку = статус `paused` + оповещение «перевод остановлен: лимиты исчерпаны» | 🔶 | контракт К-8 закрыт, спека несёт `paused`/`paused_reason` (0.2.0+, D39.115); ручки /v0 — платформа-раннер P4 (D39.123); статус `paused` по потолку ЧЕСТЕН с P6 (D39.132: exit 4/событие → `paused`, не `failed`; дневной потолок оператора различим и из платформенного шаблона убран — решение владельца 15.08); остаток: страница лимитов и оповещение на фронте (после РАЗМОРОЗКИ зоны: лендинг P7 её НЕ размораживает — D39.147) · ⚠ фразы (В-3 · К-6 · Приложение А) ДЕЛЕГИРОВАНЫ проекту словом владельца 30.08 (D39.176 п.4): подписи владельца НЕ ждём, требование ИНЖЕНЕРНОЕ — фраза не литерал ни в Go, ни в TSX, а ДАННЫЕ по машинному коду причины и локали; вместе со словарём закрывается `PD-246`, гейт — строка бэклога 204 · К-13 ЗАКРЫТ (D39.132 п.2а: `null` на проводе) |
| ПТ-36 | Интерфейс МУЛЬТИЯЗЫЧНЫЙ, русский не хардкодится в разметке (слово владельца 10.08; язык интерфейса — отдельная ось от языков перевода) | 🔶 | ПОСТРОЕНО S3.7 (принят D39.129): каталог `frontend/src/i18n/ru.ts` (⚠ число ключей здесь НЕ держим — оно растёт каждым касанием зоны; счёт снимается командой `grep -cE "^\s+'[a-z][a-zA-Z0-9.]*':" frontend/src/i18n/ru.ts`) · механизм `@internationalized/string` · ESLint-гейт «текст местом» · стор языка с персистом · `<html lang>` следует выбору; содержимое — только ru; продуктовый список языков — 🔒 владелец (В-9 зоны фронта) |
## Качество процесса и самоулучшение