textmachine/docs/PROGRESS.md

319 lines
189 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-08, голова D39.115; хендофф №14→№15 — D39.107). ⚠⚠ **ИНЦИДЕНТ 08.08 00:13 (D39.113): агент моей панели откатил незакоммиченные правки СЕМИ файлов чужих сессий** — `git checkout -- .` в реальном дереве вместо песочницы. Пинг полигона в этом файле ВОССТАНОВЛЕН из бэкапа 00:08; безвозвратно потеряны правки отчёта эксп-21, промта полигона, Приложения А контракта и трёх скриптов `eval/role_topology/`. Коммиты целы. Инвентарь и норма изоляции панелей — D39.113. ⚠ **Оркестраторов сейчас ДВА, зоны разведены явно (решение владельца 07.08):** №15 — приёмка ПЛАТФОРМЫ (исполнена, D39.109D39.114: P1+P2 приняты, фикс-пак P3 принят и заленден `99f049c` — девять строк регистра закрыты, 8/8 моих посадок поймано, PD-80 и PD-91 пере-проверены исполнением; записи верифицированы независимым агентом, поправки — D39.112) · ВТОРОЙ, параллельный — приёмка ПОЛИГОНА (эксп-21, ждёт результатов; его пинг лежит в секции «Полигон» незакоммиченным). **Номер второму НЕ выдан намеренно:** канонический счётчик один и живёт в `ORCHESTRATOR_SESSION_PROMPT.md`, а выдавать номер сессии, которой я не писал промт, — второй носитель состояния. Одновременно не запускаются; CURRENT-STATE ведут оба, каждый пишет про свою зону и чужую строку не трогает.
> - **Сессия №15 (07.08, ИСПОЛНЕНА):** **приёмка платформы P1+P2 — ПРИНЯТО и ЗАЛЕНДЕНО `fcdab81`** (62 файла, +7066/252; D39.109). Адверсариально: своя батарея с живым PostgreSQL 18.4 (скипов ноль) · 45 СВОИХ мутаций (33 поймано, 8 выжило, 4 моих посадки негодны и разобраны) · живые пробы на боевом бинаре (PD-2 отпускает на 30.0 с; RFC 9207 сверен у Google) · панель 7 линз с опровергателем на каждую находку. Ратифицировано 6 решений (срок сессии 30 суток — **CONFIRM владельца 07.08 получен** · `iss` авторизационного ответа + миграция 00008 · §13 политики сессий · ломающие изменения зоны · `MemoryMax=80%`+`OOMPolicy=continue` · PD-71 риском). Регистр зоны доведён до **PD-107**. На момент приёмки открытыми были тридцать семь строк, весом major — три: PD-80 (вход выключается ~3 rps, и 429 колбэка добивает начатые входы) плюс PD-95 и PD-105, поднятые эрратой как задание эмиттеру. ⚠ **Числа здесь ИСТОРИЧЕСКИЕ — это то, что нашла приёмка;** живой счёт регистра меняется с каждым фиксом зоны и берётся командой `python3 docs/scripts/counts.py`, а не из этой строки (норма D39.112: один носитель на факт). **Живой уязвимости нет.** ⚠ **ЭРРАТА 07.08 (поймано вопросом владельца, не процессом):** приёмка пропустила, что **D39.106 п.3 снял пайп-транспорт** («PD-59 superseded; пайп-путь `supervisor.go` P1 = дев-режим»), и приняла зонную секцию «канал остаётся stdout» как живое решение. Ратифицированная форма — транзиентный systemd-юнит на прогон, платформа НЕ родитель, события = `events.jsonl` каталога книги, платформа ТЕЙЛИТ с курсором (`research/25` §Форма; родитель+пайп 0/15 голосов). Исправлено: секция журнала помечена superseded, PD-95 переписан и поднят в вес, PD-92 понижен до info, PD-105 повышен, PD-60 пере-диспозиционирован; вердикт лендинга не меняется (код и был дев-путём по D39.107 п.3). ⚠ Пять строк реестра — движковые по существу и должны быть разрулены ДО промта эмиттера (строка 103): PD-95 (транспортная история зоны устарела против D39.106 в двух местах — эмиттер-сессия прочтёт её как задание) · PD-105 (дубль `seq` = убитый платный прогон против норматива «дубль не ошибка»; при тейле файла повторная доставка — норма) · PD-79 (строковый `"null"` в цене = ноль денег) · PD-99 (argv на INFO — деньги/book-id при воркере) · PD-107 (удаление аккаунта обходит гарантию PD-25) · **PD-60 и PD-61** (обратное давление и сброс буфера — свойства эмиттера, задаются дешевле ДО постройки, чем миграцией после; PD-60 переформулируется под файл-транспорт). **Потолок прогона РЕШЁН владельцем 07.08 и ратифицирован формой (D39.110):** шкала в интерфейсе от минимума (ноль нельзя) до баланса аккаунта ⇒ Р7 не амендируется, «выключено» не существует как состояние. Добор: единица шкалы — ГЛАВЫ, не доллары (иначе амендмент D39.84) · потолок в `book.yaml` НЕ пишется, движку нужен приём на прогон — НОВАЯ строка **145** · максимум шкалы = баланс минус открытые холды. **Фри-тир:** ответ дан нормой (автогрант без якоря — не стандарт; `email_verified` Google якорем не является), предложение оркестратора — на бете дефолт в НОЛЬ и начисление руками, при платежах $5 вместе с суточным потолком; **ждёт слова владельца** (PD-104, там же расхождение док↔код: реестр обещает ноль, код начисляет $5) · **приёмка экспов 18/19/20 ИСПОЛНЕНА и залендена** (D39.108: приняты с ревью-шапками; §5.2 экспа 20 — «со слов»; деньги сессии полигона $2.0720; квирк §3б отозван, §3а в силе; D21.4/D21.10 закрыты) · **эксп-21 «топология ролей» — промт выдан** (`POLYGON_ROLE_TOPOLOGY_SESSION_PROMPT.md`: скрин моделей по 7 ключам → бейк-офф топологий на невиданном срезе; потолки ПРЕДВАРИТЕЛЬНЫЕ ≈$7.3 стадиями; **ЗАПУСК = слово владельца**) · строки 135144 заведены, 103/106/134/65/55/12 пере-диспозиционированы · дальше по D39.107 п.3: промты эмиттера (бэкенд) и денег шва (платформа) — по команде · **S3 «слой данных» ПРИНЯТ и заленден `60595f6` (D39.115): контракт 0.2.0 в каноне, копии байт-равны, блоки компаньона 2.142.16 внесены; сессия нашла ТРИ ошибки оркестратора — «баланс минус холды» (вычитание дважды, пере-мерено), `nullable: true` невалиден в 3.1, инструкция внутри нормативного дока протухла от исполнения; норма «не ходить в чужую зону» амендирована: не ПИСАТЬ, а читать код для сверки — можно и нужно** · вахта deepseek-v4-pro — пере-проба маппинга вшита в Ф1 эксп-21 · мини-проба флора 44 — одобрена, промт не выдан. **Открыто на владельце:** запуск эксп-21 (потолки + готовность слепого чтения ~50 пар) · передача платформы · Приложение А `14-api-contract` (незакоммичено) · запуск S3 · 116 (порог подан) · мини-проба 44 · подпись денежного шага 46 · лист В-3+К-6 · вопрос платформы (авто-резюме `paused`).
> - **Сделано (сводно; детали — D-лог и архив-слайсы):** Ф0 ✅ · Ф1-инфра ✅ · арх-ресет D39 (7 слоёв, паки 1116) ✅ · паки 17 «канал B» · 18 «долги» · 19 «голос/состояние» · 20 «банк+терминолог» ✅ (D39.2628/31/4156) · мини-прогон (D39.37) и ХОЛОДНЫЙ прогон (D39.58: recall банка 0.918/0.980, банк приходит переведённым) приняты · полигон-пакеты 58, ToS-речек (D39.57), Р6+P4 (D39.61) закрыты · **карта языковой привязки движка (D39.60): 149 сайтов/45 файлов, книго-ось чиста (4), ja→ru безопасно без правки Go, en→ru — нет** · Р1Р4 закрыты целиком (D39.63: Р2 = ЗНАЧЕНИЕ, Р4 = норма потолка recall) · **ФАЗА 2 ОБЩНОСТИ ✅ (D39.64: П0 эмбед-хеш · П1 цель-шов · П2 скрипт-шов, ko-баг закрыт · П3 нарезка · П4 манифест-по-каналам; голден вердикт-нейтрален 0/172, майнер-парити EXACT)** · жанровый словарь отменён как класс (D39.47) · петля ремонта построена и НЕ включена (D39.38).
> - **Курс:** ОБЩНОСТЬ ✅ → КАЧЕСТВО БАНКА ✅ → ПАКЕТ-ЧЕКЕРОВ ✅ (D39.5978) → **ФРОНТ-ЭРА открыта** (D39.81100: зоны `frontend/`+`platform/` живые, контракт API ратифицирован). Развилка блокера 0731 решена вариантом (б) и ИСПОЛНЕНА (D39.87/91: `reasoning_effort:"low"` черновику + ручка эффорта бэнк-ролям, код `553f1a3`); отладочный прогон C не стартовал ⇒ **строка 16 жива и оси голоса 13б без данных**; пак экрана 46 — дизайн заморожен (D39.92 п.1 + D39.93), промт ждёт выдачи; coldrun-b фаза C заморожена чекпойнтом — легитимный исход (D39.86); эталон денег/поведения — coldrun-a (read-only). Числа и хроника закрытых паков — D-лог D39.7997, сюда НЕ дублируются.
> - **Горизонт (D39.62/67, освежён D39.95):** ре-проба flash ИСПОЛНЕНА и строка 74 закрыта (D39.86/91; порог 6/6 → пере-ратификация выборочным, строка 116; проба Q2 ИСПОЛНЕНА — research/24, D39.102: семейства не окупаются, остаток = рецензент спорных кластеров при ре-пробе 74; эмиссия Q7 — по слову) → **ДОБОР ИДЕАЛА** (первым прогоном: оси голоса 24 · авто-режим · итерация №2 редакторов 65 · цена 16 · веса K1K12 13а · вне-претрейн чекпоинт 55) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 6268, 85) → Ф3 ридер-IDE (6971). **Стоячие:** ToS-триггер 25.10 · Ш-2 до go1.27 (⚠ + x/text-таблицы Unicode 17 тем же тулчейном — строка 119/реестр 108) · проба провода исполнена и 117 закрыта (D39.97), конфиги 112 залендены — платные прогоны разблокированы.
> - **Стек:** draft deepseek-v4-flash thinking-ON (банкнота: ⚠ канал в shipping-c1 НЕ включён — жив ран-локальным конфигом книги, строка 140) **⚠0731** → терминолог (та же модель, батчи, экран `target_script`) → editor deepseek-v4-pro БИЛИНГВ ИНТЕРИМ (⚠ exp20/D39.108: второй проход на dspro отрицателен по слепому суду — судьба роли = эксп-21; ⚠ вендор АНОНСИРОВАЛ смену маппинга эффорта pro «early August 2026» — вахта в реестре 108; glm-5 резерв) → судья gemini (Ф2, полигон); канал B Mistral+grok; ~$0.85/ранобэ (D30.4) — 112 залендена (D39.97), пере-калибровка цены при следующем платном прогоне.
> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 07.08 (D39.110, скриптом по таблице; обновлять при каждом лендинге):** всего **120** строк · зона бэкенд **63** строго (ячейка ровно «бэкенд») / **80** широко ⚠ (испр. 08.08: было 62/79 — мой счётчик читал колонки СЛЕВА и на строке 127 с `seed|ruby|auto` внутри ячейки принимал за зону слово «ruby»; теперь колонки читаются с конца, а битая форма строки — расхождение, а не тишина) (ячейка содержит «бэкенд») · **блокеров очереди 0**, платные прогоны разблокированы · «скоро» **32** (2·4·18·46·49·55·99·100·101·103·108·109·113·114·116·118·119·120·121·125·**126**·128·129·130·134·**135·136·138·139·140·143·145**) · гейт-строки эксп-21: 65·106·142; строка 5 — остаток гейчен ре-пробой 74 (D39.102 п.2); остальное «когда-нибудь». ⚠ **Счёт — НИЖНЯЯ граница долга, а не потолок:** трекер содержит только замеченное, и 02.08 дважды за $0 свежие глаза вытащили из кода дефекты, которых в нём не было (релей фронта → строки 99/100/102; приёмочное ревью → третий шов `repair.go:384` в 104 и честность `quality.go:436` в 105). Лента ✅ выше — про ЗАКРЫТЫЕ паки, читать её как «долга нет» неверно (разбор — вопрос владельца 02.08, D39.89).
> - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `-10-13` (D39.6-гигиена) · `-13-25` (стройка паков 1116, rerun2) · **`-25-31` (паки 1720 · мини-прогон · полигон-пакеты 58 · ToS · холодный прогон; D39.2658)** · **`-08-01-02` (сессии №9/№10: общность · качество банка · coldrun-b · открытие фронта/платформы; D39.5990, срез D39.105)**. Записи ниже — живой хвост (№11+, эра D39.91+).
## Бэклог (ЕДИНЫЙ, собран 26.07, актуализация 04.08 D39.99/D39.101; правки — только через оркестратора)
Закрытые строки здесь НЕ хранятся — они уходят в D-лог с номером решения. **ID строки стабилен навсегда** (не перенумеровывается и не переиспользуется — на «строку N» ссылаются доки и промты, D39.80). Вес: «блокер-очереди» = мешает текущему шагу · «скоро» = ближайшие 12 касания · «когда-нибудь» = записано, не потеряно. Длинная строка начинается жирным лидом — таблица сканируется по лидам. **Зонные бэклоги (решение владельца 02.08, D39.84):** фронт и платформа ведут СВОИ бэклоги (`frontend/docs/BACKLOG.md` · `platform/BACKLOG.md`) — их строки сюда НЕ заходят; здесь движок/полигон/доки, включая движковые стыки фронта (зона «бэкенд», как 99102); строки 96/97 переехали в платформенный (П-1/П-2), надгробия-указатели сохранены.
| ID | Хвост (одной фразой) | Зона | Вес | Чем закрывается | Источник |
|---|---|---|---|---|---|
| **— ВИСИТ НА ВЛАДЕЛЬЦЕ —** | | | | | |
| 2 | Четыре вопроса границы «алгоритмического идеала» (Annotator · семантический судья · ja→ru §B5 · ru-target до/после) | владелец | скоро (гейт «добора идеала» перед МАСШТАБОМ) | отдельное решение | D39.33, D39.38 |
| 4 | **Ре-чек ToS по триггерам** — первый ИСПОЛНЕН 31.07, дельт вердиктов нет (D39.57); предмет Google-мониторинга перевешен на цепочку договора (PUP · Additional ToS · Google APIs ToS); следующие: квартал 25.10.2026 · первая лейблованная книга · любая правка `accepts_labels` | владелец/полигон | скоро (следующий триггер 25.10.2026) | отдельное решение (правило) | D39.32, D39.57 |
| 5 | **Арбитраж банка: замер ИСПОЛНЕН и ПРИНЯТ (research/24, D39.102).** Закрыто классом: равноправный совет · кросс-модельные веса уверенности · self-consistency · селекция из вариантов · отказ-сигнал ⟦TM-NO-DST⟧; Q2 отвечен — семейства не окупаются (C3SC=+3 и все три добычи = один кластер; glm-соло 25/45 > совет 23/45). **ОСТАТОК СТРОКИ:** рецензент-другого-семейства ТОЛЬКО на спорных КЛАСТЕРАХ (слот при ре-пробе 74), роутинг целыми family/series-юнитами (G4), эмиссия рецензента — та же draft/⟨проверить⟩. История захода — D39.89/90/101/102 | полигон/ресёрч | **ОСТАТОК ГЕЙЧЕН ре-пробой 74** (D39.102 п.2) | замер (остаток) → решение | D39.89, **D39.102** |
| 6 | **Строка Gemini в `accepts_labels`** — ждёт слова владельца о подписи интерпретации сужения как разрешения; ре-чек 31.07 понизил приоритет: подпись даёт ПРАВО, но не судью 18+ (фильтр неконфигурируем D22.6 + обход запрещён договором) — возвращаться при вопросе, требующем именно права | владелец | когда-нибудь | отдельное решение | D39.32, D39.57 |
| 7 | Q2 «редактор под `sexually-explicit`» (grok-4.3 интерим · glm-5 после сверки ToS Z.AI · mistral вон) | владелец | когда-нибудь (перед первой explicit-книгой) | отдельное решение | D39.27 п.7 |
| 8 | D22.7 пер-чанковый L3-скрин — несня­тое предусловие первой erotica-книги в проде, отдельный гейт | владелец | когда-нибудь | отдельное решение | D22.7, CURRENT-STATE (оркестратор) |
| 9 | Промпт-слой под лейблом: лейбл не доезжает до промпта — должны ли переводчик/редактор знать о свойстве контента | владелец | когда-нибудь | отдельное решение | CURRENT-STATE (владелец, из пака-17) |
| 10 | Дата создания аккаунта OpenAI (низкий приоритет, OpenAI вне цепочки) + применимость OpenAI Sharing & publication policy 2022 (quirks:128) | владелец | когда-нибудь | отдельное решение | D39.32 |
| 11 | Флип coverage-гейта (`enabled:false`, D12-Q4) — за подписью владельца ; при флипе решить судьбу v1.1 quote-absorption (D12-Q1, Python-first лок-степ) | владелец | когда-нибудь | отдельное решение | D39.34(2) |
| 12 | **`postcheck_gate` в hard-gate** — требует пере-замера recall (recall чекеров измерен и низок); ⚠ «fn=0» демоции #10 класс-вакуумен на labels (ноль одно-Han-позитивов, D39.78) — пере-замер обязан добрать одно-Han-позитивы, на «fn=0» не опираться; одно-Han-класс при gate-on вне гейта (Unverified+Demoted); тем же решением строится HARD-value-детектор 成/万 (Q3 §6 — честный hard-gate требует value-чека; либо раньше при ненулевом потоке value-дефектов добора, D39.79) · recall существующих гейтов на невиданном срезе печатает арм C эксп-21 (D39.108) | владелец | когда-нибудь (после фазы 2) | отдельное решение | D39.34(2), D24.4+D28.1, D39.39, D39.78, D39.79 |
| 13 | **Включение платной петли ремонта + per-class исходы ремонта** (схемное решение принимается вместе) — вернуться при расширении классов детекторов и ненулевом остатке; ⚠ при включении: репэйр-гард №5 после #10 слеп на одно-Han-дифференциал (демоция в обоих прогонах ⇒ 0>0 — репэйр, стёрший верно отрендеренный одно-Han-термин, не ветируется; D39.78-ревью) | владелец | когда-нибудь | отдельное решение | D39.38, D39.39(а), D39.78, CURRENT-STATE |
| 13а | Веса рубрики K1K12 не выбраны (Q1: «по данным фазы B»; фаза B прошла на BWS без весов — выбор нужен к агрегатной приёмке качества книги) | владелец | когда-нибудь (к пилоту) | Ф2.5 / отдельное решение | D39.44 Q1, D39.46 |
| 13б | **`speech-cue.txt` zh НЕ шипить до замера голос-флаггера на холодном прогоне** (данные для недоказанного детектора = инерция; вывод обсуждения 31.07): оси пустые → файл не нужен, оси ловят → решение владельца о шипе (байты двигают `LangpackVersion`). ⚠ **Замера ВСЁ ЕЩЁ НЕТ (D39.86):** поверхность вывода построена (строка `VOICE` в `tmctl report`), и живое чтение coldrun-a даёт `flags=0 over attributed=0 of replies=0` — но это НЕ «оси пустые»: флаггер живёт на ФИНАЛЬНОЙ волне (`waverun.go:392,512`), а редакторская волна там не гонялась ⇒ оси не считались НИ РАЗУ. ⚠ И поле `rules=` в новой строке говорит «гейт СКОНФИГУРИРОВАН» (читается из конфига ВРЕМЕНИ ОТЧЁТА, `quality.go:436`), а не «гейт отработал» — честный дискриминатор это ЗНАМЕНАТЕЛИ (`replies=`); читать так до фикса (строка 105) | владелец | отложено-до-замера | первый прогон добора идеала С РЕДАКТОРСКОЙ ВОЛНОЙ (оси голоса, строка 24) → отдельное решение | D39.56, PACK19_BUILD §7.2, чат 31.07, D39.86 |
| 14 | **Четыре data-инженерных флага фазы-2 общности, каждый с рекомендованным дизайном** (§5 отчёта): ё-фолд → target-данные (`char_fold`; смена сигнатуры core-примитива через вердикт-несущий банк, сдвиг `memory_version`) · segmentation-фолбэк громким (ломает контракт corridor-фолбэка `pipeline.go:839-848` + голден-фикстура на нём; лечение — объявить блок в голден-yaml) · `Fertility` per-script map (калибровка ждёт боевого токенизатора) · `source-encoding.txt` + Go-реестр декодеров | владелец | когда-нибудь (следующий пак общности) | отдельное решение | D39.64, GENERALITY_PHASE2 §5.15.4 |
| 86 | **Мелкие открытые решения одним списком** (свип D39.66): echo-семантика дропнутого c-lite-члена (D39.18 — оставить pre-c-lite?) · magnitude-кап тяжёлой CJK-утечки (D38.3 п.4в; сейчас strip+flag) | владелец | когда-нибудь | отдельные решения | D39.66, D39.69(feed_cap закрыт §1) |
| **— ХВОСТЫ ХОЛОДНОГО ПРОГОНА (исполнен достаточно, D39.58; Р7 владельца) —** | | | | | |
| 16 | Полная цена холодного старта: edit-волна не гонялась (Р7); измерено всё ДО редактуры (драфт+банкнота $0.0247/волна · терминолог $0.0060.013/проход). ⚠ **Прогон НЕ НАЧАТ и закрыт владельцем как неуспешный на этом этапе (02.08, D39.90)** — деньги фазы C не тронуты ($0). Свежие числа с пробы `bank-low` (10 глав, `low` на черновике И на бэнк-ролях): черновая волна 20/20 ok — $0.031639 flash + $0.010350 pro · терминолог $0.005750 · классификатор $0.004286 · **весь заход $0.045095**, леджер ≡ независимому пересчёту до нуля. Редакторская волна по-прежнему НЕ гонялась ⇒ строка жива, и она же держит оси голоса (13б/24) | бэкенд | когда-нибудь (первый прогон добора идеала — после решения по 46) | добор идеала | D39.58, **D39.90** |
| 18 | **Эмиссия головы 蛊**: сид-половина = чек-лист (определяющий терм книги сидится `allow_short`, D39.50); эмиссия-КАНАЛ демотирован до ИЗМЕР-ГЕЙТА (Q7): полигон-замер «меняет ли эмиссия головы рендер композитов» — строить ТОЛЬКО по эффекту и ПОСЛЕ #10 (однознаковый пост-чек чинится чекер-паком); перед стройкой резолвить K-гейт и KWIC-грязь одиночной головы | полигон → бэкенд | скоро (санкция Q7 D39.70 — после #10, очередью с ре-пробой) | полигон-замер → решение | D39.58, D39.60, D39.69 |
| 24 | **Остаток: авто-режим флага** (проект Б не гонялся) · оси голоса AD (профили не подписаны; черновик готов — `coldrun-a/SIGN-PACKAGE.md` §3) ; + слот инъекции голоса и решение gates.voice при ненулевых осях (D39.55/D21 п.2) · слой-2 voice не строим до доказательства слоя-1 · сверить until_ch 白凝冰 при курации сида (D19.3в) | бэкенд | когда-нибудь (первый прогон добора идеала) | добор идеала | D39.40, D39.58 |
| **— ТЕКУЩАЯ ОЧЕРЕДЬ (D39.59) —** | | | | | |
| 78 | **Леджер денег = НИЖНЯЯ граница**: «2xx body decode failed (call IS billed)» — провайдер списал, исходная попытка в `request_log` НЕ попадает (≤$0.009/сессия); дизайн фикса ГОТОВ (GENERALITY_PHASE2 §5.6: `BilledDecodeFails` + per-billed-attempt settle с `Estimated=true`), но это money/ledger-путь — не $0-хастл. **Живое число (D39.86):** на ре-пробе 74 — 3 таких вызова на 14, неизвестность **$0.015111** при леджере $0.114378 (13% захода); движок засеттлил оценку и честно напечатал `estimated-cost rows: 3` ⇒ канал ВИДЕН, но `decode_error` при этом ещё и терминален (не retryable, не escalatable) — 3 из 7 терминальных флагов пробы A | бэкенд | когда-нибудь (money-паком) | отдельное решение (дизайн §5.6) | D39.61, D39.64, D39.86 |
| 79 | **Граница ПЛОТНОСТИ письма для серий**: `enabled` через Go-константу `cjkScriptNames` — новый плотный скрипт требует правки Go (head-finality уже в данных script-series.txt; пре-существующая граница, D39.75). Первые два компонента строки (isCyrLetter→`isTargetWordLetter` · magnitude `SourceScripts`-гейт) исполнены пакетом-чекеров, D39.78 | бэкенд | когда-нибудь | следующий пак общности / касание чекеров | D39.64, D39.78 |
| 90 | **Ф2-кандидаты 02-mvp-плана без носителя** (свип-хвост, D39.73): CometKiwi/T-index метрики судьи · Batch API судьи (экономия) · llama-server-интеграция локали · стриминг — взять/закрыть при пилот-препе; + H16 самоулучшение (V3-п.2, ПТ-26): дизайн петли по данным судьи — тем же препом | полигон/бэкенд | когда-нибудь (Ф2.5) | пилот-преп-промт (с 85) | 02-mvp-plan, D39.66, D39.73, D39.80 |
| **— НАХОДКИ СВИПА ПОЛНОТЫ (D39.66: 951 обязательство проверено, потери возвращены в трекер) —** | | | | | |
| 80 | **Резюме-слой памяти** — проза-суммарайзер ЗАКРЫТ (D39.69); строка = ГЕЙТ ПИЛОТА Ф2.5: первый деливерабл пилота — «допускает ли автономная нарратив-состояние-строка ДЕТЕРМИНИРОВАННЫЙ верификатор (source-anchored) — или это D1-компаундинг со схемой»; не-покрытые классы (source-anchored reveal · арк-колбэки без ключа) реальны, но не измерены как дефект | Ф2.5 (Q3 подтверждён D39.70) | когда-нибудь (пилот) | Ф2.5 пре-рег | D25 п.89, D39.66, D39.69 |
| 81 | **ja-преп B6-ja (сужено пост-сверкой D39.66)**: Поливанов-валидатор (`translit_policy` = «Phase 2»-заглушка, migrate.go:186/194) + kana-омограф POS/known-word гейтинг / B6-токенизатор (memory.go:1048); чек-лист kana-алиасов сида УЖЕ построен (backend/README §ja + `AttachRubyAliasesToManual`) — остаток в нём только дизамбигуация двойных чтений (тот же B6) | бэкенд | когда-нибудь (перед ja→ru) | ja→ru-пак (рядом 35) | D16.4, D17.1, D18, D39.66 |
| 82 | **Морфо-гейт РОДА** (C3: русский глагол прош. вр. при gender=hidden = механический спойлер-канал; «жалоба №1 читателей MTL»; python-сайдкар/pymorphy, связка с морфопроходом Decl из 73) | бэкенд | когда-нибудь (Ф2-гейты) | отдельный пак (с 52) | 06-реестр C3, research/12, D39.66 |
| 85 | **Пилот-преп добор** (к переупаковке PACKAGE4): Bertalign GOLD-пары + zh→ru spot-check (D29.2в; GPL-тулинг отдельно) · fidelity-каскад R2 shadow с корпус-подготовкой (D25.2) · exp08 v3 пере-съём COGS до фиксации budget_usd (D21.8) | полигон | когда-нибудь (Ф2.5) | пилот-преп-промт | D25, D29, D21.8, D39.66 |
| **— ПАК-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`. ⚠ **Остаток НЕ однороден по гейту (сверка 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а | **Prompt-injection-проба входного текста** ($0): сепаратор ⟦TM-BANK-v1⟧ и якорь-подобные маркеры В ТЕКСТЕ КНИГИ — поведение среза/парсера/инъекции (книга = недоверенные данные; инструментов у моделей нет, но канал банкноты читает вывод по маркеру) | бэкенд/полигон | когда-нибудь | малая проба | сводка-ревью 26.07 |
| **— СВИП ГИПОТЕЗ —** | | | | | |
| 30а | **Перерисовка puml-диаграмм под пост-пак-20 пайплайн** (терминолог, банкнота отдельным файлом); дом диаграмм теперь `backend/docs/` — правятся одним коммитом с кодом (D39.80); PUML НЕ рендерить (гардрейл) | бэкенд | когда-нибудь | ближайший пак, касающийся pipeline | аудит доков 26.07, D39.80 |
| **— ОТДЕЛЬНЫЕ ПАКИ/РЕШЕНИЯ (бэкенд, добор идеала) —** | | | | | |
| 31 | Слой-2: извлечение дискурс-норм/few-shot из ТЕЛ промтов (форсинг = ja→ru) | бэкенд | когда-нибудь | отдельный пак (идеал D39.33) | CURRENT-STATE, D39.33 |
| 33 | **native-Gemini судья** (Ф2-механизм) ; до прод-заводки: $0.01-проба thinking⊆max_tokens на боевом слаге (D22.3) + включить sanitizer в pipeline-c2 при оживлении (D33.4б) | бэкенд | когда-нибудь | отдельный пак (идеал) | CURRENT-STATE, D39.33 |
| 34 | **Генеральность нарезки**ОСТАТОК после фазы 2: сами per-script коэффициенты (`est_out` ja завышен ~1.7× МОЛЧА · `EstimateTokens` недосчитывает кириллицу); консолидация класса письма СДЕЛАНА (один дом `DenseScript`, D39.64) — лечение = `Fertility`-map (строка 14) + офлайн-калибровка при боевом токенизаторе | бэкенд | когда-нибудь | строка 14 + отдельный пак (с ja→ru) | D39.37(5), D39.64 |
| 34а | **Экран кодировки не видит `<meta charset>` без XML-объявления** (епаб с gb18030-метой прочтётся как UTF-8) — до-паковая дыра, сознательно не тронута пачкой 14а (паритет со старым ридером) | бэкенд | когда-нибудь | отдельное решение | D39.54, SMALLPACK §8 |
| 35 | **Не-CJK майнер/банк**: en-детектора не существует (hanRuns=0), ja с zh-таблицами активно неверен (0/10); нужен второй ДЕТЕКТОР (прототип `mine_nonhan.py`) + G1G10 требования generic-майнера (вкл. квадратичность G9 ≈4.6 ч) | бэкенд | когда-нибудь | отдельный пак generic-майнера (с ja→ru) | D39.37(8), D39.43, D39.50 п.8, POLYGON_PREMEASURE §6 |
| 36 | Кластеризация майнера глотает родовые титулы (族长/学堂家老 в кластере 葛家) — закрыто на границе сборки входа, сама кластеризация не чинилась | бэкенд | когда-нибудь | отдельное решение | D39.43, D39.45 |
| 36б | **Второе мнение по банку**: рецензент ДРУГОЙ моделью, несогласия — отдельной колонкой подписной таблицы (судья-с-декоем в роли рецензента; решает владелец, D39.46-ограничение не бьёт). ⚠ **Бэкенд-стройки НЕТ** (D39.69 закрыл по нужности); замер ИСПОЛНЕН (research/24, D39.102) — остаток = строка 5: рецензент спорных КЛАСТЕРОВ при ре-пробе 74, роутинг family/series-юнитами; переживёт замер → тонкая колонка наблюдаемости, не гейт | полигон (замер) → бэкенд (только если переживёт) | когда-нибудь (слот при ре-пробе 74, остаток строки 5) | замер остатка → решение | D39.69, D39.90, **D39.102** |
| 36г | **Проводной формат каналов пересказан прозой в каждом пар-промпте, парсер в Go, связи нет** — формат в шаблон движка (`{{banknote_format}}`); линты держат класс, дублирование остаётся | бэкенд | когда-нибудь (со следующей правкой промптов) | отдельное решение (Р5) | D39.58 |
| 37 | **Квадратичности: `AttachKWIC`** (16.8 с / 2000 кандидатов; фикс — многошаблонный поиск; кандидат-носитель — опция фикс-пака 128, Aho-Corasick в membank готов) + src-правило банкноты при промахе чанк-пути (строка × длина книги; на 10 главах не видна) | бэкенд | когда-нибудь | отдельное решение | D39.45, PACK20_BANK_BUILD §8.5.1, D39.58 |
| 38 | Смета не видит пере-покупку прохода терминолога на каждой итерации подписи (роль не пишет `chunk_status`, не видна `projectRebill`) · хвост приёмки №13 (СО СЛОВ слепого ревью, НЕ верифицировано): адрес чекпойнта батча = ординал при частотной сортировке растущего набора кандидатов ⇒ реюз чекпойнтов прохода ~0 на инкрементальной книге (`terminology.go:925-931`) | бэкенд | когда-нибудь | отдельное решение | D39.45, PACK20_BANK_BUILD §8.5.2, D39.102 |
| 39 | S12 частичен: `malformedSeparatorAt` не ловит подмену слова разделителя и обрыв токена (комментарий обещает) | бэкенд | когда-нибудь | отдельное решение | D39.45, PACK20_BANK_BUILD §8.5.3 |
| 40 | `bankTokenBudget`: worst-case зашит zh→ru (признанная утечка §0; CJK-цель недобирает вдвое) | бэкенд | когда-нибудь | отдельное решение | D39.45, PACK20_BANK_BUILD §8.5.4 |
| 41 | golden: вторая фикстура С langpack (сейчас пинится только фолбэк-путь) ; + golden-счётчики голоса (хвост D39.58) | бэкенд | когда-нибудь | отдельное решение | D39.37(6) |
| 42 | `prompt_override` — легальный обход гарантии слоя-2, сформулировать честно | бэкенд | когда-нибудь | отдельное решение | D39.37(7) |
| 43 | `request_log` без скоупа/ретеншена + `first_flag_reason` = третье представление истории попыток (корень — неразведённые скоупы) | бэкенд | когда-нибудь | отдельное решение | D39.37(9) |
| 44 | **Флор — калиброванная константа без модели «thinking в completion»: МОДЕЛЬ ПОЛУЧЕНА замером (D39.86), сама строка сужена до выбора числа.** Замер боевой формы: при вендор-дефолте `high` размышление на плотном хане потолком НЕ ограничивается (8496 → 0/9 пригодных, 16992 → 1/5; вендорская норма вывода для `high` = 384K) ⇒ **флор не является рычагом против неограниченного думания — рычаг это `reasoning_effort`**; при `low` размышление 170313 ток. и флор 8000 избыточен. Остаток строки: какое число ставить ПОСЛЕ развилки 74 (и помнить, что у `deepseek-v4-pro` эффорт не настраивается — вендор-маппинг `low→high`, quirks п.3а). ⚠ **РАСХОЖДЕНИЕ ТРЕКЕРА СНЯТО (D39.90):** строка 74 объявляла 44 «закрытой этим замером» — это верно только для ПОЛОВИНЫ «поднять флор» (фальсифицирована). Живой остаток — обратный: **опустить/пере-калибровать число по числам пробы `bank-low`**, где стена на `low` не исчезла, а разредилась (упавший батч: `content=""`, `finish=length`, `completion=7999`, `reasoning=7999` — тот же тяжёлый хвост, 1/5 вместо 4/5, и это стохастика вызова: батч не самый большой по входу). ⚠ **Флор при `low` НЕ варьировался ни разу** — упавший батч умер ровно на потолке 8000, так что «сколько ставить» остаётся незамеренным вопросом, а не выводом | бэкенд | когда-нибудь (триггер «приёмка 104» НАСТУПИЛ — D39.91, ручка заленжена; «сколько ставить» остаётся НЕзамеренным — нужен вариационный замер флора при `low`) | отдельное решение | D39.37(10), D39.86, **D39.90** |
| 45 | `max_tokens`-упоры (две единицы) — вернутся на en-книге ; halve-chunk-on-retry (research/22 §2 №7) ОТКЛОНЁН D39.74 — вернуться сюда же при живых упорах | бэкенд | когда-нибудь | отдельное решение (с en) | D39.37(11) |
| 46 | **Экран целевого языка на выходе НЕ-ПОСЛЕДНЕЙ стадии — ЖИВОЙ НОСИТЕЛЬ ПОЛУЧЕН, класс поднят (D39.86).** Было: 38/40 дефектов латиницы живут в черновиках вне охвата гейтов (`waverun.go:486`). Стало: на ре-пробе 74 при `effort:low` **1 черновик из 18 пришёл ПОЛНЫМ связным переводом НА АНГЛИЙСКИЙ** и прошёл как `disposition=ok``classify` экранирует ИСХОДНУЮ письменность, пустоту, обрыв и отказ, а «не исходный и не целевой» не ловит ни один предикат (частично ловится лишь третий язык, ДЕЛЯЩИЙ письменность с источником, и ловится под ЛОЖНОЙ причиной `cjk_artifact`). ⚠ Последний рубеж УСЛОВЕН тройкой `isFinal && Gates.Sanitizer.Enabled && checkers.TargetActive()` (`chunkrun.go:52`), и **дыра на оси ЦЕЛИ двусторонняя**: (i) без данных цели слой 7 инертен ПО ОТСУТСТВИЮ (осознанный дизайн, `disposition.go:302-305`) ⇒ для не-русской цели рубежа нет вовсе; (ii) а с данными будущей ЛАТИНОПИСЬМЕННОЙ цели `detectLatinInsertion` (`checks/sanitizer.go:228`) сработает на ЧИСТОЙ целевой прозе и дропнет 100% чанков — внутри санитайзера он НЕ обусловлен `TargetScriptNonLatin()`, хотя доккоммент это объявляет (реальный гард только на репэйре — `quality.go:215`, `repair.go:208`), а частичный файл цели невозможен (`CompileCheckers` паникует). ⇒ **ревью-вопрос «заработает ли пара, которой в репо нет, без правки Go?» для →en/→de отвечается НЕТ**; кандидат фикса — тот же шов, что уже применён к репэйру. *(Контрпример «pipeline-c2.yaml — легальная сборка без санитайзера» проверен и СНЯТ: c2 неисполняем `CheckRunnable`, его санитайзер забукован строкой 33.)* Даже при включённом санитайзере худший исход — не потеря юнита, а ТИХО ОТГРУЖЕННЫЙ релейный перевод zh→en→ru, если билингв-редактор отрендерит русский с английского черновика. Область фикса — «выход любой НЕ-последней стадии», не «черновик» (`isFinal` позиционный, `stagerun.go:145`). ⚠ **ДИЗАЙН ПОДАН, КОДА НЕТ — СТОИТ НА РЕШЕНИИ ВЛАДЕЛЬЦА (D39.90).** Три поправки сессии к посылке, все замером: **(1) боевой гейт уже ловит 18 из 20** off-target событий (`sourceScriptShare > 0.15`, `disposition.go:224,275`; 0 ложных на 1055 здоровых, запас 13×) ⇒ остаточная дыра **2 чанка из ~1100 = 0.18%**, оба английские, японский ловится долей ханьцзы; **(2) второй рубеж существует, но стоит не там** — санитайзер поймал бы те самые байты («Latin insertion»), но `chunkrun.go:52` требует `isFinal`, а в двухстадийной топологии черновик НИКОГДА не финальный; тот же `isFinal` глушит на черновике латинный линт, флаггер голоса и глоссарный пост-чек; **(3)** здоровый минимум на тексте, который РЕАЛЬНО видит гейт (после среза банкноты), = 0.9767 при n=1055. **Развилка владельцу:** (а) предикат внутри `classify()` + бамп `classifierVersion` — двигает снапшот у всех книг, голден пере-захват один раз, на свежем стенде $0; (б) отдельный опциональный гейт вне `classify()` — снапшот не двигает, но это второй способ сказать «ответ непригоден», и он выключен по умолчанию; (в) языковой детектор. **Выбор сессии — (а).** Носитель данных — `lang.LangScripts(Book.TargetLang)`, НОВЫЙ go:embed-файл не заводить (`EmbeddedVersion` фолдится безусловно = перекупка всех книг всех пар); порог 0.50 не калиброван, а поставлен в середину пустого интервала. Три мины наивной реализации названы: новый флаг провалился бы мимо `escalatable()`/`retryable()` (⇒ переиспользовать `FlagCJKArtifact`), классификатор ложно флагался бы 16/16, экран слеп к ПОДМНОЖЕСТВАМ письменности (чисто китайский выход для →ja наберёт 1.000). Вторая половина дыры (`detectLatinInsertion` без `TargetScriptNonLatin()`) — чинить тем же диффом, для ru вердикты не двигаются. **Константы и хвосты дизайна, без которых подпись неполна:** порог **abstain 200 букв** (ниже экран воздерживается; самое короткое off-target событие 346 букв, ниже 200 падают лишь 5 из 1055 здоровых, все со счётом 1.0000) · ⚠ **опубликованная база «~1.5% off-target» НЕВЕРНА по знаменателю** — он пулит черновики с редакторскими выходами, а редактор такой отказ произвести не может; на ЧЕРНОВОЙ вызов база **3.02%**, то есть вдвое хуже · ⚠ **не проверено, что делает РЕДАКТОР с английским черновиком** — вытащит обратно в русский или отредактирует как английский; именно этот неизвестный решает, чем является остаточные 0.18%: потерей юнита или тихо отгруженным релейным zh→en→ru · английских черновика найдено ДВА (`fb51e135a395`, `4080ee8287af`), плюс японский в exp15 · **`cultivation` чинить в СИДЕ, а не порогом:** 86 из 1055 здоровых несут голое английское `cultivation` внутри беглого русского, и все 32 абзаца ниже 0.90 содержат именно его, ни один — ханьцзы; правка пар-данных двигает `LangpackVersion` с `omitempty` ⇒ перекупка ограничена книгами ЭТОЙ пары (чинить на плане, где перекупка уже) · Hunspell и GlotScript-эмбед — **не строить** · база замера = строка **113** · **02.08 вечер (D39.92): владелец пере-поставил задачу closed-set** («вернуло НЕ тот язык, что просили»; полноценный LID — только запасной флаггер вне пути вердикта; проверку изолировать отдельным слоем) — ресёрч §5.15.3 отвечает постановке, форма (а)+изолированный модуль подтверждена, слой-0 владельца (полоса len(out)/len(in)) добавить замером на фикстуре 113 | владелец → бэкенд | **скоро (порядок §5.4: сначала 113, шаг 6 — под подпись)** | правка Go по плану §5.4 | D39.39(д), D39.86, **D39.90** |
| 47 | M2-кэш / доктрина Д2 — кандидат на отдельную ратификацию | оркестратор/бэкенд | когда-нибудь | отдельное решение | D39.42 |
| 48 | Направленная банкнота — вернуться по замеру покрытия терминолога | бэкенд | когда-нибудь | отдельное решение | D39.42 |
| 48а | **Серийный шаринг банка** — РЕАЛИЗАЦИЯ (экспорт подписанного глоссария как сид-YAML следующей книги серии; спойлер-окна плющатся в since_ch=0); контракт round-trip держится тестом, самой фичи нет | бэкенд | когда-нибудь (перед второй книгой серии) | отдельное решение | D39.42 задел (а), PACK20_BANK_BUILD З-а |
| 48б | **Импорт «оригинал + чужой перевод» как режим данных терминолога** (target-агностичный вход есть контрактом; сам режим + провенанс источника + юр-сторона в юр-пакете) | бэкенд/владелец | когда-нибудь | отдельное решение + Ф2.5 (юр) | D39.42 задел (б), PACK20_BANK_BUILD З-б |
| 128 | **Фикс-пак банка (вход §G research/24, класс D39.71):** G1 семейный со-батч из ПАР-ДАННЫХ (имя=префикс/реалия=суффикс, без транзитивности, серия сильнее семьи; + многорунные модификаторы серий — 十一转 рвёт со-батч равнодлинности на ранге 11; + майнерские containment-пары в один юнит) · G2 intra-run `ConsolidationConflicts` ($0; 18/149 на живом банке) · G3 наблюдаемость (Signals/Invented/Conf в стоп-таблицу · ловушка числового хвоста ParseReply · alias-джойн подписной карты `miner_emit.go:242` — владелец подписывает, не видя alias-рендерингов · имена эвиктнутых при NEvicted · per-batch спросили/ответили + WARN на пустой ответ батча/классификатора) · G5 счёт голосов по нормализованной форме + Via-провенанс фолда (первый-выигрывает врёт на wire) · опции: перф 37 (Aho-Corasick в membank готов) · гигиена (мёртвая колонка `BanknoteTruncated` + стейл-комменты · NoDst-префикс-матч для латиница-target). Цена фолда: перекупка бэнк-батчей один раз (центы), волны/снапшоты не двигаются; вне снапшота — G2 и печать (G5 двигает wire, аудит промта) | бэкенд | **скоро — САНКЦИОНИРОВАН владельцем 04.08 (D39.103 п.1), ПРОМТ ВЫДАН** (`docs/BACKEND_BANK_CLUSTER_FIXPACK_SESSION_PROMPT.md`) | фикс-пак одним промтом | D39.102, D39.103, research/24 §G |
| 129 | **Банкнота-парсер теряет хвост многословного dst** (находка приёмки №13 против клейма A10): `banknote.go:236` берёт `parts[1]` голым при 3-польном формате — «Фан Юань» с двойным пробелом банкует полу-имя «Фан», хвост уезжает в колонку типа и падает в `"term"`; ре-джойн терминолога (`terminology.go:880-885`) ровно этот класс чинит с комментарием. Фикс = ре-джойн середины при последнем поле ∈ закрытому словарю типов; двигает observed → авто-банк (memory_version там, где случай реален) — цену назвать при выдаче | бэкенд | скоро (хвостом 128 либо отдельно) | малое касание | D39.102 п.3 |
| 130 | **emitRankCap × writeAutoBank: терм, выпавший из топ-200, МОЛЧА стирается из авто-банка посреди книги**`miner_emit.go:119-123` кап ДО эмиссионных фильтров (seed/rejects слотов НЕ освобождают — исключаются после капа), `mining.go:448-460` перезапись файла целиком без мерджа против «накопительного» замысла пака-20; оплаченная консолидация теряется, редактор теряет строку банка (по D39.104 — закон на проводе) без сигнала; FL-3 ратифицирован ДО авто-провода D39.42 — взаимодействие не ратифицировалось. Минимум $0 = дифф старого/нового авто-файла + WARN с именами; накопительный мердж/освобождение слотов — СТОП-решение (двигает банк → memory_version) | бэкенд | скоро | $0-минимум + СТОП-решение | D39.102 п.3 |
| 131 | **Кап инъекции не считает маркер и гендер-ноты**: `glossaryLineTokens` бюджетирует только «src → dst» (`memory.go:512-515` против рендера `:698-708`) — авто-книга (все строки Ambiguous с ⟨проверить⟩) превышает `glossary_token_budget` ~на 4060% при budget 800; биллинг/потолки компенсированы (резервация по фактическому рендеру, `stagerun.go:469-477`), сам кап не исполняется. Фикс двигает состав инъекций → RequestHash → перекупка волн ⇒ СТОП-решение с названной ценой. ⚠ После строки 134 (единый блок, маркер снят с провода — D39.104) превышение пере-замерить: состав рендера сменится | бэкенд | когда-нибудь | СТОП-решение | D39.102 п.3 |
| 132 | **Стойкий (пост-ретрайный) аутедж ТОЛЬКО банк-провайдера валит весь ран** вопреки коммент-контракту «optional step never aborts» (`terminologist.go:630-634` — деградация только на ceiling; транспортные ретраи гасят transient, `httpllm.go:126-160`; потерь нет — чекпойнты реплеятся за $0): решить — деградировать в «термы неконсолидированы»+WARN либо честно переписать коммент | бэкенд | когда-нибудь | малое касание через СТОП-решение | D39.102 п.3 |
| 134 | **Дата-правка инжект-заголовков под доктрину D39.105** (единый закон-блок редактора вместо двухсекционки · оговорка ОБЛАСТИ употребления · снятие маркера ⟨проверить⟩ с провода; статусы строк и подписная таблица НЕ меняются): кандидат-тексты — §B промта пробы 18; **ГЕЙТ ПАЛ (D39.108):** текст = ОТПРАВЛЕННАЯ строка пробы 18 БЕЗ оговорки области (девиация №1; оговорка опровергнута §A.4 — НЕ вносить); двигает рендер → RequestHash → перекупка, цену назвать при внесении | бэкенд | скоро | малое касание | D39.104 п.2, **D39.108** |
| **— ШОВ ДВИЖОК↔ПЛАТФОРМА: деньги и механизмы (D39.106/107 п.2) —** | | | | | |
| 135 | **Гейт потолка на КАЖДЫЙ платный вызов** (сейчас — граница юнита работы; research/25 «Деньги») | бэкенд | скоро (промтом эмиттера) | правка по дизайну research/25 | D39.106 |
| 136 | **Write-ahead intent + состояние `uncertain`-эскроу + `closing`**: холд НЕ освобождается по выходу юнита (сигнал обгоняет денежные события); spend не постится без свидетельства провайдера; расход сверх холда — полной суммой, превышение явной строкой убытка | платформа/бэкенд | скоро (промты по команде владельца) | стройка по research/25 | D39.106 |
| 137 | **Ночная сверка расходов с данными провайдера** (в движок цены входят float64 по ручной таблице `ledger/pricing.go` — систематика процентная; сверка приоритетнее споров об округлении) | платформа | когда-нибудь (до первого платного пользователя) | стройка по research/25 | D39.106 |
| 138 | **Реконсилятор: на каждый выход юнита + на буте ПЕРЕЗАПУСК прерванных прогонов** (транзиентные systemd-юниты не переживают ребут VM) | платформа | скоро | стройка по research/25 | D39.106 |
| 139 | **Пиннинг прогона к версионированному пути бинаря движка**; резюм другой версией — только явным флагом (движок выкатывается чаще, чем идёт прогон) | платформа/бэкенд | скоро | стройка по research/25 | D39.106 |
| **— НАХОДКИ ПРИЁМКИ ЭКСПОВ 1820 (D39.108) —** | | | | | |
| 140 | **Банкнота: shipping-конфиг c1 канал НЕ несёт при декларации «+банкнота» в CURRENT-STATE** — канал жив только ран-локальным конфигом книги (ратифицированный путь D39.42 п.4; coldrun 56/128); решить: включить в c1 (двигает промпт драфта → RequestHash — цену назвать) либо поправить декларацию; родня 36г | владелец → бэкенд | скоро | СТОП-решение | D39.108, exp20 §6 |
| 141 | **Дыра детектора примечаний: сноска «[1] …» без слова-заголовка проходит мимо** (`sanitizer.go:273-278` требует «Примечание:/прим. перев.») — после StripCosmetic уезжает в экспорт с дырой на месте вырезанного ханьцзы | бэкенд | когда-нибудь | малое касание + тест | D39.108 (приёмка 20) |
| 142 | **Механизм «гейты флагают → точечная починка по флагу» как прод-путь**: exp20 §3.3 — $0.0002/дефект, 12/12 (при ИДЕАЛЬНОЙ детекции); механизм конкурентов (research/22:179), у нас петля пака-16 за `enabled:false` (строка 13); детекторы «выдуманное слово»/«инверсия» прототипируются эксп-21 Ф0 | владелец → бэкенд | гейт: эксп-21 | решение владельца по итогам эксп-21 | D39.108 |
| 143 | **Абсорбция норматива судейства в `09-pilot-protocol.md`**: разброс инструмента ДО замера · объявленный порог различимости · MQM-lite/error-span первичен, pairwise только для стиля · декой обязателен · запрет судьи семейства жильца арма | полигон/оркестратор | скоро ($0) | правка дока | D39.108, exp20 §7 |
| 144 | **Вахта: grok `reasoning_tokens` ВНЕ `completion_tokens`** — формула цены харнессов может недосчитывать (до $0.0325 на exp20); вендор-сверка биллинга xAI при следующем прогоне с grok | полигон | когда-нибудь (следующий xAI-прогон) | вендор-чек | D39.108 (приёмка) |
| 145 | **Движок обязан принимать потолок НА ПРОГОН, а не только из `book.yaml`** — сегодня флага/ENV нет вовсе (проверено: `tmctl` таких флагов не имеет, значение приходит только через `Ceilings.BookUSD`, `stagerun.go:480,505`). Пока так, платформа для управляемого потолка (строка 126) вынуждена ПРАВИТЬ конфиг книги — то есть пользовательское число становится постоянной записью в данных движка, что смешивает зоны против D39.81/D39.85. Форма: аргумент прогона (флаг или ENV), потолок остаётся состоянием ПРОГОНА. Смежное: `Ceilings` в `BriefHash` не входит (`book.go:280-297`) ⇒ ни снапшот, ни ре-билл не двигаются — цена правки нулевая | бэкенд | скоро (денежным промтом, со строками 135139) | малое касание CLI + проводка | D39.110, приёмка платформы D39.109 |
| 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-шаги миграций v8v14 не идемпотентны вопреки шапке `migrate.go:9-11`** (полу-применённая БД не сходится; счётчик версий скрывает) — находка критика полноты пака-19 | бэкенд | когда-нибудь | отдельное решение | D39.56, PACK19_BUILD §6.9 |
| 50 | F3-остаток идемпотентности | бэкенд | когда-нибудь | отдельное решение | D39.34(4) |
| 51 | `human_override` LOCK (D29 п.1г, в коде 0 вхождений) | бэкенд | когда-нибудь | отдельное решение | D39.34(4) |
| 52 | **Ф2-гейты вне идеала**: морфо-гейты канцелярита + L1-лемматизация (python-сайдкар) · полный OpenCC · опциональный пре-перевод гейт ; состав явно: канцелярит + РОД (строка 82) + класс Ф2-гейтов карты 04-unhappy (обсцен-гейт/феминитивы/время сцены — состав решить паком) ; + класс идиоматики (свип-хвост, D39.73): сехоуюй-словарь · вэньянь-классификатор (zh) · васэй-эйго ложные друзья (к ja-паку 81) — данные пары или закрытие «банк книги покрывает» тем же паком | бэкенд | когда-нибудь | отдельное решение | D39.34(4) |
| 54 | Масштаб целой книги: волны/каденс/потолки/ETA на сотнях глав (гоняли максимум 10; книга 7,78 млн симв., ~2284 раздела) | бэкенд | когда-нибудь (последним по курсу) | МАСШТАБ | D39.33, CURRENT-STATE |
| **— ПОЛИГОН (кандидаты пакетов) —** | | | | | |
| 55 | **`dialogue_dash` мерить только на невиданном тексте** (подогнан под 蛊真人; цифры мини-прогона аргументом не считаются) ; расширено до вне-претрейн чекпоинта целиком: r-коэффициенты exp01/08 · precision чекеров · частота эха · чистовик exp15-выводов ; + arity-полоса паспорта (D29.2г): решить — dialogue_dash покрывает диалоговую половину или мерить (D39.73). **Частично закрывает эксп-21 (D39.108):** невиданный срез + $0-довесок (dialogue_dash · частота эха · precision чекеров) заказаны промтом | полигон | скоро (довесок — эксп-21) | полигон-пакет / эксп-21 | D39.37(4), D39.40, D39.46, **D39.108** |
| 56 | Ёфикатор/санитайзер-классы не размечены (§6.5 отчёта пакета-6) | полигон | когда-нибудь | полигон-пакет | D39.46, CURRENT-STATE |
| 57 | Пере-замер «контексты — главный рычаг» на трудной выборке пакета-7 с боевой сборкой (до него kwic-веса/семантику не трогать; перф-опция AttachKWIC в фикс-паке 128 легитимна — семантика не меняется) — напряжение с D39.46 названо, не отменено | полигон | когда-нибудь | полигон-пакет | D39.50 |
| 58 | **Не покрыто пакетом-8**: вторая книга/пара/модель · строка `drafts:` · ось `batch_runes` · разметчики-модели (не люди) · precision роли на «расширенном, но осмысленном» материале ; + контрастивный регрессионный сьют по каталогам режимов отказа (12-*) · чистовик exp15-выводов | полигон | когда-нибудь | полигон-пакет | POLYGON_PREMEASURE §1.8/§2.5/§3.5/§7.6 |
| 59 | **Вендор-чек префикс-кэша ZAI/GLM** (на нём стоит вся кэш-экономика W1/Q2c) ; + GLM context-overflow гард (finish=model_context_window_exceeded — NOT-do пака-12 без решения) ; + Mistral-strip гейт message-builder (research/21 §1.1: extra_forbidden на reasoning-поля; ЛАТЕНТЕН при нашем single-shot wire — гейт перед прод-путём mistral в канале B / любым multi-turn; D39.74) | полигон | когда-нибудь (до МАСШТАБА) | полигон-пакет | D39.34(6) |
| 60 | Scheduler-aware волны под peak-valley DeepSeek (прямой COGS-рычаг) | полигон/бэкенд | когда-нибудь (до МАСШТАБА) | отдельное решение | D39.34(6) |
| 61 | **Прайс/wire-гигиена**: продление `prices_checked` без правки чисел · гейтнутые платные армы (edit-единица >3200 и др.) · wire-probe temperature в thinking-канале DeepSeek | полигон | когда-нибудь | полигон-пакет | D39.34(6) |
| **— Ф2.5 / ПИЛОТ / ПРОД —** | | | | | |
| 62 | Билингв-якорь (D25 п.9 Q1) | владелец | когда-нибудь | Ф2.5 | D25 п.9, CURRENT-STATE |
| 63 | Контаминация корпуса (D27 п.4) | владелец/полигон | когда-нибудь | Ф2.5 | D27 п.4, CURRENT-STATE |
| 64 | Судья-дублёр (D22.6) | бэкенд | когда-нибудь | Ф2.5 | D22.6, CURRENT-STATE |
| 65 | **Планка запуска ≤2 не пройдена rerun2** — итерация №2 редакторского экспа отложена (dspro ИНТЕРИМ, glm-5 резерв) ; инструментарий слепого чтения = D39.8(3) + гигиена D39.20. **Довесок ЕДЕТ эксп-21 (D39.108):** бейк-офф несёт dspro-vs-glm и слепое чтение владельца на финалистах | владелец | гейт: эксп-21 | эксп-21 → решение | D39.20, D39.22, **D39.108** |
| 66 | Пилотные D25-гейты: publishable/waiver (п.1) · FN-bound L3 (п.4) | владелец | когда-нибудь | Ф2.5 | D25, CURRENT-STATE |
| 67 | **Прод-гигиена: юр-пакет · провенанс 12-*-доков · xAI-ключ off перед продом** (D27) ; + юрисдикционные annex-ре-чеки при новых рынках (D39.29) + поле «версия исходника» book.yaml на интейке (04-unhappy §5) | владелец | когда-нибудь | Ф2.5 | D27, CURRENT-STATE |
| 68 | Residual-тачпойнты exp16, не влитые в сид-дельту: мини-голд алиасов (ОТЛОЖЕН до первого длинного прогона — D39.103) · precision@30 (`books/gu-zhenren/exp16/`) | полигон | когда-нибудь | Ф2.5 / полигон-пакет | CURRENT-STATE |
| **— Ф3 / ПРОДУКТ —** | | | | | |
| 69 | Gemini API «под-18» обязательство на конечный продукт (независимо от лейблов) | владелец | когда-нибудь | Ф3 / отдельное решение | D39.32, D39.34(7) |
| 70 | Action-security gate перед выдачей tools/webfetch (D25 п.5) | бэкенд | когда-нибудь | Ф3 | D39.34(7) |
| 71 | **Планы research/22**: epub-tag-rewrite · Q7-леджер ; + F3-brief из D29 п.3 (chat-edit · Not-useful-петля · cost-of-fix) + Ф3-скоуп 02-mvp-plan (TMX/TBX · Bertalign · дистилляция 714B); + V5: фронт ВЕБ-ПЕРВЫЙ, SEO/ранжирование (куки · страницы-сироты · актуальные алгоритмы Google) — определяет выбор фреймворка (SSR vs SPA), в Ф3-дизайн ДО выбора стека (ПТ-23) | бэкенд | когда-нибудь | Ф3 | D39.34(7), START_PROMT V5, D39.80 |
| 94 | **Продукт-механика входа и прогона** (V2, ПТ-16..18): абьюз/misuse-прескрин дёшево и точно ДО трат токенов (H8) + UI-контракт отказа (проект-решение D39.80) · лимит размера входа настройкой (H7) · продукт-кнопки «стоп/продолжить» поверх построенных graceful stop и redrive, абьюзивный прогон НЕ продолжать (H10); API-форма — по контракту 14 (D39.99; статус отказа — открытый К-9) | бэкенд | к подключению фронта (ПОДТЯНУТА D39.81; лимит можно раньше, к пилоту) | отдельный пак при Ф3-препе (контракт 14 ратифицирован) | START_PROMT V2, H7/H8/H10, D39.80, D39.81 |
| 96 | **→ переехала в `platform/BACKLOG.md` П-1** (зонные бэклоги, D39.84: HTTP/SSE-слой, обвязка, аутентификация, порядок деплоя); здесь остаётся ратифицированным сам ИНВАРИАНТ D39.81 — движок = процесс-на-прогон (EXCLUSIVE flock `store.go:43`), сервер в backend НЕ пишется | платформа | — | зонный бэклог | D39.81, D39.84 |
| 97 | **→ переехала в `platform/BACKLOG.md` П-2** (глобальный брокер рейт-лимитов; гейт «до второго параллельного пользователя» зафиксирован там же) | платформа | — | зонный бэклог | D39.81, D39.84 |
| 99 | **Пофазный прогресс `draft N/M ∥ edit N/M`**: unit = done только при всех draft-строках членов + edit-строке (`status.go:328-331/365`) — индикатор «готово N/M» стоит 0% ВСЮ черновую волну; данные уже есть (`chunk_status` — строка-на-стадию, `migrate.go:111-126`; status уже делит стадии по волнам `status.go:332-334`) — вывод пофазных счётчиков в StatusReport/JSON без миграции схемы | бэкенд | скоро (БЛОКЕР контракта API, D39.99) | малое касание read-model | релей фронта 02.08, D39.84 |
| 100 | **Персист манифеста глав/чанков** (+ `chunker_version` из снапшота + хеш источника): каждый read-вызов заново ингестит и режет исходник (`status.go:177-195` bookChunks; redrive — дважды за вызов; замер фронта 1.421.51 с CPU на книге 23 МБ, умножается на число книг) — нужен под экран разбора и дерево глав; дизайн обязан пережить смену чанкера (`--resnapshot`) | бэкенд | скоро (БЛОКЕР контракта API — стабильный id главы, D39.99) | отдельное решение (дизайн по контракту 14, D39.99) | релей фронта 02.08, D39.84 |
| 101 | **Машиночитаемая таблица подписи банка**: кап 20 — только stdout (`render.go:98`), полная таблица — текстовый сайдкар `.bank-stop.txt`, JSON/структурного выхода нет (mined-signature.yaml — сид-дельта без freq/spread/evidence); нужна фронту S5; помнить ловушку «подпись ≠ UPDATE» (банк пересобирается: `seeding.go:18/110`, `glossary.go:158-162` — контракт подписи пишет в файлы-источники) | бэкенд | скоро (БЛОКЕР контракта API — экран подписи, D39.99) | малое касание (форма — по контракту 14, D39.99) | релей фронта 02.08, D39.84 |
| 102 | **Приём внешнего trace-контекста в tmctl**: TraceID минтится заново каждым вызовом (`main.go:67-70`; внутри вызова трасса цельная, `request_log.trace_id` есть) — прогон, запущенный платформой, должен быть одной трассой | бэкенд | когда-нибудь (Ф3, с 96) | малое касание | релей фронта 02.08, D39.84 |
| 103 | **NDJSON-эмиттер прогонных событий со стабильным словарём** (машинный канал живого статуса для платформы, `research/23` §2): NDJSON-логи уже есть (`LOG_FORMAT=json`, авто-оси trace/book/chapter/stage/role — `obs/logging.go:15-54`), но сообщения прозой, version-хендшейка нет, а **событие потолка отсутствует вовсе** (деньги только в тексте ошибки `stagerun.go:472-494`); нужен словарь-enum + version-хендшейк первой строкой (образец terraform -json: минор = ignore-unknown, мажор = reject) + событие потолка; все границы — единичные call-sites в pipeline рядом с готовыми slog; человеческие логи уже на stderr — stdout-дисциплина соблюдена. **Форма ратифицирована D39.106 (research/25 §эмиттер):** `events.jsonl` каталога книги = outbox-проекция коммитов SQLite (та же транзакция, что чекпойнт) · fsync/seq/hello-версия · события денег и потолка · развилка формата (JSONL против пофайловых/CRC-фрейминга) — решить дизайном · `status --json` отдельным каналом (ремонт, тот же flock) | бэкенд | скоро (промт бэкенду — по команде владельца, D39.107 п.3) | стройка по D39.106 + research/25 | research/23, D39.85, **D39.106** |
| 125 | **Артефакт экспорта БАНКА** (полный банк тремя статусами — канал чтения `/bank` контракта 14): строка 101 это таблица ПОДПИСИ (кап 20 stdout, `cmd/tmctl/render.go:98`), не экспорт; сам банк в приватном SQLite, платформе закрыт (D39.85) — нужен экспорт-артефакт движка на границе стадии/стопе | бэкенд | скоро (БЛОКЕР контракта API, D39.99) | дизайн + малое касание export | ревью контракта 04.08, D39.99 |
| 126 | **Потолок прогона — УПРАВЛЯЕМЫЙ, решение владельца 07.08: настройка в интерфейсе фронта, шкала от минимума (ноль выбрать НЕЛЬЗЯ, подсвечен серым) до максимума баланса аккаунта.** Форма снимает конфликт с Р7 бесплатно: максимум = баланс ⇒ движок всегда получает положительное число и состояния «выключено» не существует, валидатор `book.go:250` не правится. **Три следствия, ратифицированы формой (D39.110):** (а) **единица — НЕ доллары**, а главы (или % баланса): тогда минимум объясняет себя сам («одна глава»), а D39.84 цел — читатель не видит структуру расходов; доллары на пользовательском экране = осознанный амендмент D39.84, не побочный эффект виджета; (б) это потолок ПРОГОНА ⇒ в `book.yaml` он не пишется, движку нужен приём потолка на прогон — строка 145; (в) **максимум шкалы = ДОСТУПНЫЙ ОСТАТОК, то есть `Balance` как есть** — ⚠ испр. 08.08 (D39.115): формулировка «баланс минус открытые холды» была ОШИБКОЙ приёмки, вычитанием дважды. Холд — это дебет в момент взятия (`credits.go:179`), поэтому баланс уже без него; замерено: $10 грант + $1 холд = `Balance` 9, `Reserved` 1, «минус Reserved» дало бы 8. Спека несёт верную форму: `max_chapters` приходит УЖЕ подрезанным и по остатку, и по непереведённому хвосту книги, клиенту подрезать второй раз ЗАПРЕЩЕНО. **НОСИТЕЛЬ ПЕРЕСЧЁТА НАЗВАН (добор после верификации 07.08):** «сколько глав влезает в доступный остаток» считает ПЛАТФОРМА (по оценке движка) и отдаёт фронту ГРАНИЦЫ шкалы и выбранное значение в главах; сама формула наружу не выходит. Ручки под это в контракте НЕТ — сегодняшний `GET /v0/usage` несёт только процент, поэтому поверхность объявляется при правке спеки вместе с созданием прогона (работа П-1 + S3), и до её объявления фронт максимум шкалы взять неоткуда. Прежнее тело строки (механизм поднятия потолка для resume после ceiling-стопа: движок продолжает «once the ceiling is raised», `stagerun.go:488-489`) — половина этой же работы. Продуктовое слово стопа — К-8 у владельца | платформа/фронт/бэкенд | скоро (форма решена, стройка — промтами) | дизайн-вход П-1 + правка спеки + строка 145 | ревью контракта 04.08, D39.99, **D39.110** |
| 127 | **Устаревший DDL-коммент `glossary.source`** (`migrate.go:193`: «seed|ruby|auto», фактические пути записи — seed/ruby/mined, `auto` не пишет никто; фантом уже утёк во фронт-доки дважды) — поправить коммент | бэкенд | когда-нибудь (попутно любым паком store) | однострочная правка | ревью контракта 04.08, D39.99 |
| 105 | **Роль `classifier` мис-вердиктится как эхо + честность двух новых строк наблюдаемости (D39.86).** (а) `classifyOutput` даёт поблажку `SourceEchoExpected` только `roleTerminologist` (`chunkrun.go:37`), а ответ классификатора по формату состоит из исходных ханьских термов ⇒ доля исходного письма 0.200.29 > порога 0.15 на каждом батче: живой артефакт пробы 6/6 несёт `verdict=cjk_artifact` при `bad_lines=0`. Ущерб узкий — `runBankRoleBatches` кладёт `run.texts[i] = att.text` без проверки диспозиции (`terminologist.go:603`), посчитанные эхо-ставки (`quality.go:313-321`) берутся из `chunk_status`, куда бэнк-путь не пишет ⇒ портятся только строки `tmctl report`/лога; **латентно** (`classify_types` выключен во всех шиппинг-конфигах). ⚠ Цена дисциплинированного фикса, которую надо знать заранее: бамп `classifierVersion` (литерал, сам не двигается) меняет payload снапшота → snapshot id → `RequestHash` ⇒ промах ВСЕХ чекпойнтов книги, то есть `--resnapshot` + пере-покупка. (б) тем же касанием — честность поверхностей: строка `VOICE` берёт `rules=` из конфига ВРЕМЕНИ ОТЧЁТА (`quality.go:436`), поэтому включение `gates.voice` после прогона печатает «измерено, чисто» для неизмеренной книги (воспроизведено); и она печатается при выключенном гейте, если `SpoilerLeaks>0` (дизъюнкция — поведение верное, формулировка отчёта/коммента неверна); знаменатель `BANKNOTE` = `len(states)` включая призрачные строки `retrieval_state`, тогда как соседний агрегатор их фильтрует (`quality.go:259-260`) ⇒ после пере-чанковки покрытие занижается | бэкенд | когда-нибудь (ближайшее касание банка/наблюдаемости; (б) — дешёвая часть, вердиктов не двигает) | малое касание + вердикт-двигающая половина (а) через СТОП-решение | D39.86 |
| 106 | **Слой 3 НЕ достроен: контракт редактора = full-regen, а целевой — узкие мандаты + ДИФФЫ.** `09-target-architecture.md:121-126` дословно: «research/07 предписывает узкие мандаты + диффы, а не полную перегенерацию — сейчас ровно наоборот (4 мандата, full-regen), что и породило хвост инверсий»; целевой контракт — редактор правит anchored search/replace-спанами с детерминированным Go-apply (ограниченный blast-radius, дешевле, аудируемо, структурно omission-safe). Пак-16 построил петлю РЕМОНТА (починка флагнутого спана постфактум), а не diff-контракт роли ⇒ это разные вещи. **Строки не было ни одной** — дыра учёта, найденная сверкой 02.08 (грепы `diff`/`мандат`/`span` по бэклогу = 0). Смежное: арм Q4b «diff-fidelity+style редактор» (`exp15:108`) не прогонялся НИ РАЗУ, хотя трек B объявлен завершённым. **ЭМПИРИКА ПОЛУЧЕНА (D39.108, экспы 19/20):** дифф-контракт механически исправен (комплаенс 0.966 на боевой единице, аппликатор 15/15), но по замороженному гейту Q4b диффы ОТЛОЖЕНЫ (fidelity-trap 11/12; дороже full-regen на dspro×ru ×2.52.9 при невскрытой причине; D21.4/D21.10 закрыты явно). Дальше — эксп-21 (топология) → решение владельца | владелец → бэкенд | гейт: эксп-21 | решение владельца по бейк-оффу эксп-21 | 09 §Слой 3, D39.90, **D39.108** |
| 113 | **Запас боевого гейта не зафиксирован тестом, а харнесс, давший число, УДАЛЁН (Д-хвост D39.90).** Числа «18 из 20 · 0 ложных на 1055 · запас 13× (0.0117 против 0.15)» и «санитайзер поймал бы английский черновик» получены ВРЕМЕННЫМ тестом в пакете pipeline (`splitBanknote`+`StripThink`+`sourceScriptShare`), который сессия удалила после снятия. Число ушло в контракт (строка 46), воспроизвести его нечем. **Делать:** корпус-фикстура в репо (~20 off-target + ~40 здоровых, с движковой предобработкой; снапшот НЕ двигает) + регресс-тест на реальный запас — это база, которую обязано побить любое предложение по 46. СТОП, если фикстура не воспроизводит 18/20 при 0 FP, или если запас меньше 3× | бэкенд | скоро (перед любой правкой по строке 46) | $0 фикстура + регресс-тест | D39.90, EFFORT_HANDLE §5.4 шаги 12, §7 |
| 114 | **Конфиго-слой ручки эффорта: два дешёвых хвоста приёмки (вне снапшота, $0 прогонов).** (а) **Д4 отчёта:** `gates.terminology.target_script` НЕ сверяется с `book.target_lang``target_lang: ru` + `target_script: Latin` грузится чисто и **ИНВЕРТИРУЕТ** банковский экран (ловит целевой, пропускает чужой); сверка при загрузке против `lang.LangScripts(TargetLang)` — тот же дата-план, что у экрана строки 46, громкий отказ на несовпадении. (б) **Находка-2 приёмки:** стейл-доккоммент `capability.go:78`у константы `ReasoningExtraBodyDisable` до сих пор «effort "" leaves the provider default», противореча проводу (`applyToBody` мержит disable на `""`, комментарий в теле arm это прямо объясняет) и починенному `ThinksOnWire`; однострочник тем же касанием | бэкенд | скоро (мелкий пак или попутно со строкой 46) | правка Go, снапшот не двигает | D39.91, EFFORT_HANDLE Д4 |
| 115 | **`//go:embed` целевых данных — ЯВНЫЙ список файлов: новая ЦЕЛЬ требует правки Go (Д6 отчёта).** `internal/lang/embedded.go:22` перечисляет файлы поимённо, `CompileCheckers` паникует при неполном файле цели ⇒ на канон-вопрос «заработает ли пара, которой в репо НЕТ, без правки Go» ответ сегодня **НЕТ** — дыра в ратифицированной «ФАЗЕ 2 ОБЩНОСТИ ✅» (D39.64), и она не про язык, а про строку эмбеда. Решить форму: `embed data/*` (и как манифест фолдится в `EmbeddedVersion`, чтобы НЕ перекупать чужие пары) против явного списка как осознанного гейта полноты данных цели | оркестратор → бэкенд | когда-нибудь (триггер: первая новая целевая пара; учтён в реестре 108) | отдельное решение | D39.91, EFFORT_HANDLE Д6, D39.64 |
| 116 | **Порог классификатора «6/6» ратифицирован для ОДНОГО вызова, не для выборки — и на рекомендованном `low` риг N=5 КРАСНЫЙ: 4/5 (Д8 отчёта).** Контракт обязан стать выборочным («≥4/5 при N=5» или иная форма — решение) ДО применения (б) к любому конфигу, иначе рекомендация `low` противоречит собственному приёмочному числу. Честная граница чисел (D39.86, подтверждена приёмкой по сырью): 2 из 6 термов (元石/灵泉) стоят дословно в промпте классификатора = припоминание; падение `low` — ровно по дискриминирующему подмножеству (1/4 против 4/4); единственный промах — вызов на 91 completion-токене (модель не подумала), уровень ни при чём **02.08 вечер: рекомендация подана владельцу — «≥4/5 прогонов N=5 достигают 6/6»** (альтернатива жёстче: 4/4 по дискриминирующему подмножеству без термов-припоминаний); ждёт слова | владелец → оркестратор | скоро (112 залендена (D39.97) — порог не должен отстать) | пере-ратификация порога, $0 | D39.91, EFFORT_HANDLE Д8, D39.86 |
| 108 | **Реестр ЗАГЕЙЧЕННЫХ ТРИГГЕРОВ + норма закрытия «по нужности».** ⚠ Первый жилец реестра, найденный тем же лендингом: **сиблинг-угроза экрана целевого языка** — выход на языке, БЛИЗКОМ к целевому (украинский/болгарский для 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` — полигоном). Норма 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` | оркестратор | скоро ($0, гигиена трекера) | завести реестр + сверку в норму лендинга | D39.66, D39.90 |
| 109 | **Продуктовые требования БЕЗ строки-носителя (сверка 02.08):** **ПТ-6** структурные традиции целевого языка (короткие zh-абзацы → читаемые ru-структуры) — держится только редакторскими мандатами в пар-промптах, поверхности измерения нет, в составе Ф2-гейтов (52) структуры абзацев нет · **ПТ-7** «слабый оригинал: подправлять художественно или быть верным» — вопрос владельца, не заведён даже в блоке «висит на владельце»; после ответа: режим параметром запуска (данные, не ветка Go) + мандат в промпте + гейт «улучшение vs отсебятина» · **ПТ-22** продуктовый ИНТЕЙК настроек (сегодня = рукописный `book.yaml`; частично покрыт 67 в части «версия исходника») · **ПТ-10** сам механизм веб-фетча (tool-calling, провенанс/кэш добытого, инжект под правилом «книга = недоверенные данные») — есть только гейт безопасности 70. Гигиена реестра тем же касанием: ПТ-24 не проставлена 101, ПТ-1/ПТ-11 не проставлена 105, ПТ-2 не проставлены 46 и 34а | оркестратор/владелец | скоро ($0 — расписать носители) | завести строки/вопросы → диспозиции | D39.90, product-requirements |
| 110 | **Детектор повторов лемм / защита авторских рефренов** (`04-unhappy-paths.md:97,130 п.5`): $0-минимум исполнен промптом (editor.md, пакет-чекеров 02.08), механизм явно не строился — «нет размеченного класса; связка с alignment/Bertalign». Строки-носителя не было; предмет живой, потому что отличить дефектный повтор от авторского рефрена без выравнивания нельзя | бэкенд/полигон | когда-нибудь (с корпусом пилота, строка 85) | размеченный класс → решение | 04-unhappy §5, D39.90 |
| 111 | **Дубль ключа пар-файла: фикс накрыл половину.** D39.82 закрыл строку 53 через `putUniqueDC` в `parseDCCheckers`, но генерик-парсер категорий `parseCategoryRows` (`internal/lang/langpack.go:806-826`, строка `cats[f[0]][f[1]] = val`) по-прежнему МОЛЧА last-wins — а якорь техдолга указывал именно на него. Пар-данные с опечаткой-дублем тихо теряют первую строку | бэкенд | когда-нибудь (малое касание, с любой правкой langpack) | fail-loud + тест | 13-tech-debt-anchors, D39.82, D39.90 |
| 118 | **tools/go.mod — РЕШЕНИЕ ПРИНЯТО (D39.97 п.4): строить отдельным малым паком.** `cmd/tmvet`+`internal/archguard` → отдельный модуль (`backend/tools/`); `make battery` гоняет оба модуля; `tool`-директива Go 1.24 НЕ решает (MVS общий). Выигрыш: бамп инструментов физически не двигает x/net/x/text. Sqlite 1.55 остаётся (D39.97 п.4) | бэкенд | скоро (до следующего бампа зависимостей) | малый пак по D39.97 п.4 | D39.96 п.6, D39.97 |
| 119 | **x/text-детерминизм: вердикт-несущие вызовы НЕ свёрнуты в версии (находки-5/6 приёмки).** `SanitizerVersion` не сворачивает ничего x/text-ного, а `detectCJKLeak` зависит от `width.Fold` (`sanitizer.go:211,687`) — смена x/text перевернула бы вердикт БЕЗ смены снапшота; `ExportNormalize` меняет экспортные байты вне хешей (`sanitizer.go:709`); `xTextVersion` пинит строку go.mod, НЕ скомпилированные таблицы — тулчейн go1.27 переключит x/text на Unicode 17.0.0 МОЛЧА (`tables17.0.0.go //go:build go1.27`; жилец реестра 108). Делать: явные версии-свёртки + механическую сверку «таблицы↔константа» вместо совпадения | бэкенд | скоро | правка версий-свёрток + тест | D39.96 п.6, отчёт §5 находки-5/6 |
| 120 | **`buildCheckers` жёстко берёт `lang.Load(root,"zh","ru")`, бейзлайны ключуются по классу, не по паре (§7-8) — приезд ja-ru требует правки Go, против мандата общности §0.1.** Родня строки 115 (явный embed-список целей) — брать одним касанием | бэкенд | скоро | правка Go + тест на паре-которой-нет | D39.96 п.6, отчёт §7-8 |
| 121 | **archguard v2 (посадки приёмки D39.96 + §7-12/13 + §7-9). ⚠ Пункты (0а)/(0б) — РЕГРЕССИЯ против снесённого байт-гарда; дофикс ИСПОЛНЕН и принят D39.97 — (0а)/(0б)/(а) ЗАКРЫТЫ, плюс блокер type-param, ось имени и ложное срабатывание сверх промта; остаток строки — (б)/(в)/(г)/(д).** (0а) egressseam пропускает пакетную `llm.Complete(...)`: nil-`Selections` → молчаливый выход (`archguard.go:240-242`; фикс — fallback на `Uses`); (0б) пропускает интерфейс с llm-типами внутри композита (`Complete(ctx, []llm.LLMRequest)…``touchesPkg` не рекурсивен, `:79-82`); старый регекс `.Complete(` ловил обе формы; комменты «cannot be hidden» (`:250-253` и фикстура) фальсифицированы — переписать честно; (а) `runRequestSeam` обходит ТОЛЬКО `*ast.CompositeLit` (`archguard.go:197`): `var r pipeline.Request`+присваивание и `new(pipeline.Request)` проходят МОЛЧА — подтверждено на реконструкции: дыра ОБЩАЯ со старым гардом (не регрессия); фикс ~10 строк: симметрия ValueSpec/CallExpr со stage-сеамом + негативная фикстура, документирующая осознанные пропуски; (б) класс «встраивание · make+присваивание · дженерик-ноль» закрывается не свитчем, а ТИПОМ (нулевое значение `config.Stage` непригодно вне пакета); (в) политика build-тегов vet (сегодня default+live; чужой тег невидим — других в репо нет); (г) кандидат 4-й анализатор границы импортов — `backend/README.md:3` заявляет «проверяет `go list -deps`», что не автоматизировано ничем; (д) семь осознанных пропусков после дофикса 03.08 (принят D39.97; фикстуры БЕЗ want — покраснеют, когда начнут ловиться): llm.Ask-класс · пара внутри named-обёртки · встраивание/make/generic-zero · `internal/llm` исключён целиком (второй провод внутри адаптеров ловится только ревью) · внешние тест-пакеты · рефлексия (статикой не закрывается) · файлы за третьим сборочным тегом — всё, что закрываемо, закрывается типовым швом (б), не свитчем | бэкенд | скоро (остаток: (б) тип вместо свитча · (в) build-теги · (г) 4-й анализатор · (д) семь пропусков) | правка анализатора + посадки | D39.96 п.2/п.6, отчёт §7-9/12/13 |
| 122 | **Гигиена пака стандартов (не-блокеры приёмки).** `TestCheckerLabelsCandidates` — ни одного ассерта (дизайн-REPL в одежде теста) · сообщение `TestMemoryVersionPinsTheUnverifiedRenderRevision` не различает «изменился рендер»/«изменилась нормализация» · Makefile: regex GO_MIN_VERSION пропускает go1.26.01.26.3 (патч-уровень не проверяется) · включить `unconvert` (1) и `wastedassign` (2) — дешевле уже включённых по собственному правилу конфига · `.skips.log` не в gitignore (прерванная battery оставляет мусор в дереве) · Fprint-исключение errcheck скоупить на `cmd/` (сейчас весь модуль — будущий писатель файла экспорта получит молча съеденную ошибку) · `w\.Write`-исключение ключуется ИМЕНЕМ receiver-а вопреки собственному принципу конфига · miningstop-исключение глушит текстом весь файл — якорить на функцию · provenance-числа конфига дрейфуют от дерева (293/31/93 против 294/33/91; контрпример «все прод-Close — читатели»: `chunktest/epub.go:51`) · коммент c1 «echo mine unarmed» поправлен дофиксом 03.08 (снят) · инвариант-коммент `httpllm.go:77` «zero wire bytes» — верен для полей пинга, неверен для бампа x/net, который их привёз (находка-4 D39.96) — переписать честно | бэкенд | когда-нибудь | мелкие правки | D39.96 п.6, отчёт §7-6/7, §9 хвост |
| 123 | **Полигон: `jieba==0.42.1` — build-time зависимость артефакта контраста `eval/exp16/data/jieba_dict_general_zh.txt`** (пере-собран бэкенд-сессией 03.08, полный sha256 сошёлся с пином `16-bank-mining.md`); дописать в манифест окружения полигона с пометкой «build-time, не runtime» | полигон | когда-нибудь | строка манифеста | D39.96 п.6, отчёт §7-4/§6 |
| 124 | **Калибровка снапшота (вопрос владельца 04.08, разбор D39.97 п.5): нацеленность, не агрессивность.** Три оси одним дизайн-паком: (а) недо-чувствительность — вердикт-несущие вызовы x/text не свёрнуты (вход: строка 119); (б) пере-охват — `EmbeddedVersion` фолдит все пары разом → пер-парный хеш (родня 115/120); (в) дешёвая перекупка: `tmctl resnapshot --dry-run` — байт-сверка тел по чекпойнтам (`msgsContentHash`), идентичные юниты пере-привязываются без пере-вызова, платятся только изменившиеся. «Поведенческий отпечаток вместо строки версии» отложен (пол ≠ доказательство) | бэкенд | когда-нибудь (перед МАСШТАБОМ — когда перекупки станут реальными деньгами) | дизайн-пак по D39.97 п.5 | D39.97 |
## Оркестратор №13 — ЗАКРЫТИЕ СЕССИИ, передача №14 (D39.105), 04.08
Итог №13: приёмка банк-арбитража (D39.102, `271f8b0`) · решения владельца + доктрина инжекта, два промта выданы (D39.103/104, `d653aa1`) · полный док-свип закрытия (5 сканеров; хроника №9/№10 и закрытые бэкенд-записи срезаны в `archive/PROGRESS-2026-08-01-02.md`). Очередь №14 — шапка CURRENT-STATE (первым — приёмка P0 платформы).
## Оркестратор №13 — решения владельца + ДОКТРИНА ИНЖЕКТА, два промта выданы (D39.103/104), 04.08
Фикс-пак банка 128 санкционирован (промт выдан, $0) · проба редакторского провода санкционирована (промт выдан, ≤$0.30; фронтир-пасс ≤$0.50, «go» дан; отчёт будет `experiments/18-editor-wire-probe.md`) · алиасы §E-1 отложены до первого длинного прогона · **доктрина инжекта**: банк на проводе = ЗАКОН для всех ролей независимо от статуса строки, свобода — только оговоркой ОБЛАСТИ употребления; единый закон-блок редактора, маркер ⟨проверить⟩ с провода снимается (строка 134 — после пробы 18) · «Гуюэ» — не чинить, канал сида. Оба промта дважды аудированы до выдачи (факты по file:line + понятность холодным исполнителем).
## Оркестратор №13 — ПРИЁМКА БАНК-АРБИТРАЖА: research/24 ПРИНЯТ и заленден (D39.102), 04.08
Адверсариальная приёмка тремя контурами: 12-агентный воркфлоу пере-ранил все строки «заявление=команда» — 8/8 CONFIRMED без расхождения чисел, 23/23 адресов §A подтверждены по HEAD `7f6270a`; независимый пересчёт денег из сырья $0.107334 ≈ леджер (расхождение пинга = склейка инкрементов C+E — маркер в «Полигоне»); слепое ревью кода банка (author≠reviewer) + 12 опровергателей дали находки СВЕРХ отчёта → строки 128132 (главные: банкнота-парсер теряет хвост многословного dst; emitRankCap×writeAutoBank молча стирает термы из авто-банка; кап инъекции не считает маркер/гендер-ноты). Корзина «закрыть по нужности» ратифицирована целиком; строка 5 пере-скоуплена (остаток — рецензент спорных кластеров при ре-пробе 74, роутинг кластерными юнитами). 4 вопроса владельцу — D39.102 п.4; оговорки приёмки — ревью-шапка research/24.
## Оркестратор №12 — ЗАКРЫТИЕ СЕССИИ, передача №13 (D39.101), 04.08
Доки актуализированы и подрезаны (CURRENT-STATE сжат, банк-промт заархивирован исполненным, README без стейла), голова D-лога D39.101. №13 начинает с приёмки банк-арбитража, дальше бэкенд-очередь (промт экрана 46 · tools/go.mod · блокеры контракта); вахта deepseek НАСТУПАЕТ >05.08. Грабли и нормы передачи — D39.101 п.4.
## Оркестратор №12 — решения владельца по контракту ратифицированы, платформа открыта промтом P0 (D39.100), 04.08
Четыре К закрыты владельцем (десять статусов · лимиты «как Claude Code» → ПТ-35/П-5/`paused` · ETA показывать · метка главы из данных — канон-урок: зашитого «Глава N» нет) + принцип К-6; правки спеки переданы S3 первым шагом. Платформа: полноценный промт P0 (`platform/docs/PLATFORM_SESSION_PROMPT.md`), зонный журнал заведён; норма name-PROGRESS вписана в CLAUDE.md/README. Confirm-хвосты D39.98 закрыты. Детали — D39.100.
## Оркестратор №12 — КОНТРАКТ API v0 РАТИФИЦИРОВАН: строка 95 закрыта, форма OpenAPI, три пасса приёмки (D39.99), 04.08
S3 упёрлась в замок (контракта нет) — по слову владельца написала вход Ф-14 + черновик; форма по решению владельца сменена на OpenAPI 3.1 (типы генерятся, спека линтуется — класс «фикстура выдумала форму», случившийся четырежды, закрыт механически). Приёмка: три воркфлоу-пасса (16+6 агентов), 19 подтверждённых находок (2 high: withheld ≠ «текст не выдан» — движок отгружает текст под флагом; чтения без канала шва), ноль опровергнутых; все вправлены двумя раундами дофикса, каждый раунд перепроверен. Пост-мортем процесса — в D39.99 п.4 (промт S3 велел пинговать в чужую зону — противоречие канона и зонного решения владельца закрыто правкой CLAUDE.md; чек-пункты в промт оркестратора). Детали — D39.99.
## Оркестратор №12 — фронт S2 + дофикс по ревью приняты и залендены `02872b6`, git-канон v2 по носителям (D39.98), 04.08
Приёмка S2 — адверсариальный воркфлоу (5 линз × скептики с ре-раном): батарея и виртуализация подтверждены исполнением, стек без дрифта, три дефекта (пар-слепой шрифтовой токен · выдуманный тип `org` с фабрикованной цитатой журнала · ключ рядов банка без учёта полисемии) вправлены дофиксом и залендены; три находки ревьюеров опровергнуты скептиками. Детали и остаточное — D39.98.
## Оркестратор №12 — приёмка дофикса archguard, лендинг всего пака семью коммитами, ответы владельцу (D39.97), 04.08
Дофикс archguard + проба приняты короткой приёмкой исполнением (⚠ «короткой» — об объёме дельты; норма 03.08: приёмка всегда адверсариальная, свои посадки вне карты отчёта были) (батарея EXIT=0 · деньги дельта $0.000000 · две СВОИ посадки вне карты отчёта, включая method expression — форма отсутствовала и в таблице, и в пропусках, поймана; негативный контроль чист). CONFIRM владельца по `@latest` записан входом приёмки. Весь пак заленден семью pathspec-коммитами (`e8d4ac0` конфиги · `5a97020` дефект-фиксы · `b155da3` механика · `cb368c0` бамп · `6356471` анализаторы · `5a81bff` линт-инфра · `0e64efe` live-проба); фронт коммитил параллельно (`ece94ef`) — pathspec исключил коллизию. Строки 107/112/117 закрыты; оба промта архивированы. Решения: tools/go.mod — строить (118, D39.97 п.4); вопрос владельца о снапшоте разобран — калибровка нацеленности вместо ослабления, три оси одним дизайн-паком (новая строка 124: недо-чувствительность 119 · пер-парный EmbeddedVersion · дешёвая перекупка байт-сверкой). Хвост `httpllm.go:77` → 122.
## Оркестратор №12 — приёмка пака «стандарты репо» ДВУМЯ пассами (D39.96), 03.08
Пасс-1 — шесть верификаторов по клеймам отчёта + 7 своих посадок (нашёл дыру requestseam). Владелец вскрыл метод-дефект пасса-1 («след отчёта»: проверялась истинность названных клеймов, не направление; два экспериментальных клейма приняты со слов; пять «решений владельца» ратифицированы со слов сессии) → пасс-2 из пяти АНТИ-СЛЕДОВЫХ линз: мнение-до-отчёта · поиск вне карты · реконструкция снесённых гардов из HEAD · аудит исключений линтера по коду · независимая репликация клеймов. Итог пасса-2: **регрессия egress-паритета против снесённого байт-гарда (две исполнимые формы — снос в текущем виде нарушает букву промта)** · мисхарактеризация «порядка HPACK-заголовков» в находке-4 (рандомен под обеими версиями; реальная дельта — только SETTINGS) · клейм x/text-эквивалентности реплицирован независимо · «не регрессия requestseam» подтверждена исполнением на реконструкции. Вердикт: пак принят по качеству кода, лендинг гейчен тремя решениями владельца (проба 117 · confirm пяти санкций · развилка этапа E) — D39.96 п.7. Урок закреплён нормой «анти-паттерны приёмки» в `ORCHESTRATOR_SESSION_PROMPT.md`. Отчёт с ревью-шапкой — `archive/reports/REPO_STANDARDS_2026-08-03.md`.
## Оркестратор №11 — ЗАКРЫТИЕ СЕССИИ И ПЕРЕДАЧА №12 (D39.94), 02.08
Итог сессии: приёмка пака ручки эффорта исполнением — принят, заленден `553f1a3`, строка 104 закрыта (D39.91); решения владельца ратифицированы: 46 → closed-set «не тот язык» изолированным пакетом с именованными причинами (D39.92 п.1 + D39.93), 107 → санкция целиком, промт `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` выдан, 112 → санкция (этап 0 промта); вендор-сверка DeepSeek: 0731 не деградация, а смена политики дефолта thinking=high; вахта на смену маппинга v4-pro (реестр 108). Преемнику: приёмка пака стандартов + выдача промта экрана 46. На владельце: 116 · строка 5 · мини-проба 44 · подпись шага 6 по 46. Очередь: 97 строк · «скоро» 15 · блокеров 0. Пост-скриптум закрытия: `0d1c08f` — коммит `START_PROMT.MD` ПО ЯВНОМУ СЛОВУ владельца (разовое исключение из гардрейла, прекоммит-гейт обойдён `--no-verify` осознанно; правило «не коммитить» в силе); V5-п.2 из диффа уже разобран как ПТ-23, невидимых требований нет. Второй речек владельца («перечитай онбординг») добил хвосты: строка 74 закрыта (её буква «закрывается приёмкой пака» исполнилась в D39.91), промт EFFORT_HANDLE заархивирован, карта README и буллеты Курс/Горизонт/Стек освежены — D39.95; очередь после закрытия 74 — 96 строк.
## Оркестратор №11 — РЕШЕНИЯ ВЛАДЕЛЬЦА ПО 46/107/112 РАТИФИЦИРОВАНЫ, ПРОМТ СТАНДАРТОВ ВЫДАН, ВЕНДОР-СВЕРКА DEEPSEEK (D39.92), 02.08
Владелец: 46 — пере-постановка closed-set («вернуло не тот язык, что просили», LID только запасной флаггер, проверку изолировать) — ресёрч бэкендеров ЗАПИСАН (§5.15.3 отчёта EFFORT_HANDLE) и отвечает постановке; два расхождения замером (гарантия FPR≤0.1% не покупается на n=114 — порог константой-контрактом; L2/L4 отвергнуты числами этой книги, реопен через реестр 108), слой-0 (полоса длин) — добавить замером на фикстуре 113. 107 — САНКЦИЯ целиком: CI+линтер+бамп x/net и библиотек, «осторожно, затем полностью», анти-хак-правило; выдан `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` (этап 0 = строка 112 · A замер · B состав · C Makefile/CI · D бамп с живой пробой ≤$0.50 · E гарды→analyzer, паритет 12 посадок, Д7). 112 — САНКЦИЯ (перекупка принята). Вендор-сверка по правилу 10.07: 0731 = офиц. релиз flash, бенчи вверх — «модель хуже» интернет НЕ подтверждает, наш отказ = смена ПОЛИТИКИ ДЕФОЛТА thinking=high на плотном хане; ⚠ анонс смены маппинга эффорта v4-pro «early August 2026» — вахта в реестре 108. Миграция черновика — замер по слову владельца, не решение. Открыто на владельце: 116 (рекомендация «≥4/5 при N=5» подана) · строка 5 (вытащить находки прерванного захода или пере-запуск $1.20) · подпись шага 6 по 46.
## Оркестратор №11 — ПРИЁМКА ПАКА РУЧКИ ЭФФОРТА: ПРИНЯТ И ЗАЛЕНДЕН (D39.91), 02.08
Задача №1 хендоффа исполнена целиком, всё исполнением: батарея с фрозен-числами пере-прогнана (5/5 совпали, голден без пере-захвата), деньги пере-выведены вторым путём из сырья (леджер $0.045095 ≡ независимый usage×цены ≡ Σ `request_log`, дельта $0.000000, decode/estimated 0), адверсариал — пять НЕЗАВИСИМЫХ посадок в гарды (алиас-литерал · `[]cfg.Stage{{…}}` · hoisted `Request` · `var` · `new()`) все CAUGHT, N=5 сверен с `classifier-6of6-{low,high}.json` побайтно (low 4/5 $0.001016 · high 5/5 $0.002335 · ×2.298 · промах = 91 ток., 1/4 дискриминирующих). Обе девиации строки 104 РАТИФИЦИРОВАНЫ (repair-ключ свой — подтверждён по пяти шиппинг-конфигам; `ThinksOnWire` — ровно случай «ключ отсутствует», провод не менялся). Две находки приёмки: метка «$0.031639 (flash)» врёт — это flash+pro черновой волны (flash-only $0.021289; суммы верны; скопировано и в D39.90 п.2) · стейл-доккоммент `capability.go:78`. Хеш-клейм «`8e4495006b978ed4` в обе стороны» невоспроизводим (старая форма удалена) — принят по эквивалентности. Код: **`553f1a3`** (13 файлов backend/, pathspec; чужое — фронт живой, `START_PROMT.MD` — не тронуто). Отложки Д4Д9 → носители тем же лендингом: 114 · 115 · 116 · реестр 108 (+Д5/Д9) · 107 (+Д7); гейт строки 44 наступил — пере-диспозиционирована. Сверка §5.4 отчёта ПУНКТАМИ — потерь сжатия НЕТ (шаг 3 уже исполнен №10 в теле строки 46). Очередь скриптом: 97 строк · «скоро» 15 · блокеров 0.
*(Хроника сессий №9/№10, 31.0702.08 (D39.5990: курс «общность вперёд» · свип полноты · качество банка · фикс-пак · coldrun-b · фронт/платформа открыты · шов движок↔платформа · промт арбитража банка) — в [archive/PROGRESS-2026-08-01-02.md](archive/PROGRESS-2026-08-01-02.md).)*
*(Хроника 25.0731.07 до курса D39.59 — эры №7/№8 и начало №9: паки 1620, мини-прогон, полигон-пакеты 58, ToS-речеки, пак-19, холодный прогон (лендинги D39.2658) — в [archive/PROGRESS-2026-07-25-31.md](archive/PROGRESS-2026-07-25-31.md).)*
## Бэкенд
**⟶ Свежее состояние бэкенда: пак стандартов + дофикс приняты и залендены (D39.96/97, `e8d4ac0``0e64efe`; точка входа `make battery`); АКТИВНЫЙ промт бэкенда — `docs/BACKEND_BANK_CLUSTER_FIXPACK_SESSION_PROMPT.md` (фикс-пак банка 128, санкция D39.103); ниже — хроника до №11.** **⟶ Приёмка №11 (D39.91, 02.08): пак ниже ПРИНЯТ, код заленден `553f1a3`; поправки приёмки (метка flash+pro · хеш по эквивалентности · `capability.go:78`) — в ревью-шапке отчёта и D39.91.**
*(Закрытые бэкенд-записи 0102.08 — общность фаза 2 · качество банка (оба этапа) · фикс-пак банка · finding-1 · пакет-чекеров · мелкая пачка · coldrun-b · ручка эффорта — в [archive/PROGRESS-2026-08-01-02.md](archive/PROGRESS-2026-08-01-02.md).)*
*(Закрытая хроника пакетов №0№4 (0410.07) перенесена в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md) — ревизия D31.)*
*(Хроника пакетов 1112.07 (пакет-5, D15.2-этап-А, санитайзер-фикс D33) — в [archive/PROGRESS-2026-07-10-13.md](archive/PROGRESS-2026-07-10-13.md).)*
*(Трек-A пак-1/1.5 (D39.2/D39.5) — см. записи оркестратора №6 выше.)*
*(Хроника бэкенд-паков 1116 (1925.07, вкл. отчёт-запись пака-15) — в [archive/PROGRESS-2026-07-13-25.md](archive/PROGRESS-2026-07-13-25.md); отчёты паков — `archive/reports/`.)*
*(Закрытые записи 2531.07 — пак-18 · мини-прогон · фикс-пак · сквозная проверка · хендофф 26.07 · ресёрч общности фаза 1 — в [archive/PROGRESS-2026-07-25-31.md](archive/PROGRESS-2026-07-25-31.md).)*
## Полигон
**ЭКСП-21 ЗАКРЫТ 08.08 — тело отчёта дописано, несущие числа поставлены под гейт. Перепрогон НЕ ТРЕБУЕТСЯ.** Два независимых агента прошли пак навстречу (снизу вверх: заказ промта → посылки → код → результаты, с запретом открывать ИТОГ до последней ступени; сверху вниз: каждое утверждение ИТОГа → число → сырьё → код → посылка). Оба вердикта совпали: все несущие числа воспроизводятся из персистированного сырья за $0, расхождения РЕДАКЦИОННЫЕ, а не замерные. Сделано ($0, без покупок): **§11§18 написаны** (прибор · свод двух проходов · инструменты · дрейф · роутинг · деконфаунды · Ф2б · пост-хок аудиты) — до этого тело обрывалось на §10, и читатель уносил три СНЯТЫХ вывода третьей редакции; над §10 поставлен баннер снятия · заведён **`eval/role_topology/itog.py`** — пере-считывает КАЖДОЕ число блока ИТОГ из сырья (прежде нога 2×2, кластеризация, L2O, контрасты Ф2б и отборщики арма G считались ВНЕ дерева и пути воспроизведения не имели) · гейт вырос **63 → 90 проверок**, добавлен блок `§ИТОГ`: прежде он сторожил §2, деньги и батарею — и ни одного числа блока решения · `absjudge --score4` печатал ПУСТУЮ таблицу (в `FAMILY` нет контрастов Ф2б) — заведено `FAMILY_2B`, провенанс прохода 4 объявлен НЕПОЛНЫМ (в ключ впечатано неприменимое семейство Ф2а).
**Правки чисел по находкам аудитов:** значимый контраст **`E2/A_law` 2.06 Holm 0.0443** в таблице ИТОГа отсутствовал — напечатан · «контроль воспроизведён ТРИЖДЫ (+2.50/+2.75/+2.81)» сшивало РАЗНЫЕ армы и панели (+2.50 — это `A/F3`, а `A_law/F3` даёт +1.75 пул / +2.75 abs3 / +2.81 abs4) — снято · расход фазы Ф2б **$0.11819**, а не $0.10916 (печатался только тег `p2b-*`, без старых `rp-*`) · цена ремонта **$0.00298** (боевой C2), а не $0.00290 (испорченный прогон C) · QE на самом крупном контрасте даёт **r=0.32 — АНТИкорреляцию**, а не слепоту (+0.06) · оси `D/A` по пулу ЯЗЫК 1.34 / ФОРМА 1.09 · доля выигрыша арма G считалась по маршрутизированным окнам вместо оставленных стражем. ⚠ Числа прежнего §15 «43/91» и «r=+0.06» не воспроизводятся ни одним вариантом счёта — помечены «утрачено инцидентом 08.08, D39.113, в дереве кода пути нет».
**Устарело в записях ниже** (правится здесь, тела не трогаю): пак **$5.15932**, а не $4.92166 · гейт **90** проверок, а не 63 · **Ф2б потрачена** — армы C/E куплены на $0.10916, точечный ремонт значимо хуже переписывания (`C2/A_law` 3.75 Holm 0.0006) и годен как МЕХАНИЧЕСКИЙ ГЕЙТ перед редактором (брак 5 клеток против 10 и 23, цена вдвое) · **дрейф отозван НЕ целиком**: негодны только ШОВ и рост словаря, покрытие отрезка и канона восстановлены и несут единственный довод ПРОТИВ связки (у неё есть отказной режим: 9/10 глав против 10/10, эхо-мина воспроизводима — глава 11 дала китайский исходник во всех трёх попытках).
**Линтер зоны заведён** (`ruff.toml`, `select = ["F","E9","PLE","B"]`) — повод прямой: регрессия `med = med(costs)` прошла в дерево незамеченной. Все 36 находок исправлены, искажающих числа среди них не было; опасный класс — `zip` без `strict` (тихий рассинхрон единиц при фильтре пустых текстов), закрыт.
**ОСТАЛОСЬ ВНЕ МОИХ РУК:** три пункта **CONFIRM/DENY владельцу** (санкция на траты 07.08 · амендмент «судья пака не покупается за токены» — на нём стоят ВСЕ числа §11§18 · правка требований к ригам) · **слепое чтение владельца** (пакеты и ключи готовы, $0, заказано промтом) · **неконтаминированный zh-срез** — без него величины, но не направления, непереносимы.
**⛔ ИНЦИДЕНТ 08.08 00:13, вина оркестратора №15:** агент проверочной панели выполнил `git reset; git checkout -- .` в реальном дереве. Откачены незакоммиченные правки: отчёт `21-role-topology.md` потерял §11§16 (четвёртая и пятая редакции, армы G и дрейф, пост-хок аудита), `verify_report.py` — точное сличение чисел и проверки §14, `absjudge.py` — поправку на степени свободы, `drift.py` — счётную метрику. **Сырьё цело полностью** (1672 файла в `~/books/role-topology`, git туда не заглядывает) ⇒ потеряна ЗАПИСЬ, не замер. Скрипты восстановлены и проверены исполнением: числа воспроизвелись из сырья точь-в-точь (148/163 · 91/163 · 138/163 · 139/163). Отчёт восстанавливается из сырья; всё, что восстановить нельзя, помечается «утрачено инцидентом 08.08, D39.113». Резервные копии зоны и сырья сняты вне репозитория.
**⚠ ЭКСП-21 ПРОШЁЛ НЕЗАВИСИМЫЙ АУДИТ ПО 4 ДОМЕНАМ (посылки · код · выводы · их соотношение), $0.** Главное: **прод-редактор обязан нести закон-блок** — без него арм единственный ломает терминологию (покрытие канона 0.566 против 0.917 у черновика, p=0.003), при неотличимом качестве и +5% цены · **70% заголовка +2.50 объясняется ЧЕРНОВИКОМ**, а не вторым проходом (тот же редактор над другим черновиком: 7.66 против 5.91, 14/16, p=0.006) · **нога 2×2**: дорогая модель в ОДИН проход неотличима от дешёвого черновика (+0.50, p=0.48), она же в позиции редактора даёт +2.50 ⇒ **работает ТОПОЛОГИЯ, а не жилец**. Отозвано: дрейф §14 целиком (метрика ШОВ в коде не считается ничем), «доказанный потолок» роутинга (верное основание — экономика: G берёт 25% выигрыша за 55% цены, хуже случайного), «+114% токенов» (артефакт: 68% разрыва — кэшированный вход). ⚠ **Нарушения процедуры к сведению владельца:** $2.62 (52% пака) сожжено на нарушении заказанного контроля судей; потолки Ф1 и Ф2а пробиты без пинга; главный zh-замер на книге с узнаванием 4/5 вместо заказанного свежего среза; Ф2б $2.99 НЕ потрачена — армы C/E не куплены при живых деньгах. **Все zh-числа ПРЕДВАРИТЕЛЬНЫЕ до неконтаминированного среза.**
**ЭКСП-21 «ТОПОЛОГИЯ РОЛЕЙ»: замер закончен ПЯТОЙ редакцией, отчёт `docs/experiments/21-role-topology.md`.** Пак целиком по факту диска **$4.92166**, из них **$0.18830 оплачено за ПУСТОЙ выход** (18 вызовов: 12 фильтр контента, 6 `length`; крупнейшие — по $0.076 у `glm-5.2` на скрине); успешные $4.86187; ⚠ прежние «$0.19191, 43 вызова» неверны: счётчик смотрел только поле `content`, а проба контаминации пишет в `answer` — её 25 записей содержательны; судейство четвёртой и пятой редакций — **$0** (агенты сессии вместо платных судей, амендмент владельца 07.08). Числа сверяются `eval/role_topology/verify_report.py` — 63 проверки, проходит. ⚠ Свип приёмки 07.08: 4 проверки НЕ СПОСОБНЫ были покраснеть, 18 слепы к префиксу числа, §14 не покрывался вовсе; починено классом (`num_in`, точное вхождение), проверено сломом. Читать гейт как «грубые расхождения отсекаются», а не «числа сверены». Риг пятой редакции зафризен `6d79dfb` ДО выпуска пачки.
**Инструмент сменён по находке, а не по вкусу.** Четыре независимых агента-судьи, получив ПАРНЫЕ пакеты с зеркальной раскладкой, все четыре свернули их обратно: оценили каждый уникальный текст ОДИН раз против исходника и разнесли числа. Оснастка переписана под это (`absjudge.py`): абсолютная шкала, позиции не существует как измерения, 138 прочтений вместо 320, семь контрастов вместо четырёх. ⚠ Требование ригов «зеркальная раскладка/оба порядка» (промт стр.59) писалось под ПЛАТНОГО судью и на агента не переносится — правка требований подлежит ратификации оркестратором.
**ЧТО УСТАНОВЛЕНО ТВЁРДО** (Холм по объявленному семейству из 7, ноль вылетов leave-one-out, воспроизведено ДВУМЯ независимыми проходами по 16 судей каждый): второй проход поверх черновика покупает качество — `A/F3` +2.50 [+1.56, +3.47] Holm 0.0004 и `B/F3` +2.44 [+1.81, +3.19] Holm 0.0002 (⚠ не независимо: делят опорный арм F3, прямое `A` против `B` даёт +0.06 p=0.95); ⚠ эффект держится на ОДНОЙ оси — без ЯЗЫКА `A/F3` падает до +0.75 Holm 0.407 · однопроходка С МАНДАТОМ перевёрстки проигрывает связке крупно, `D/A` 3.31 [4.47, 2.16] Holm 0.0014 (вклад делится: ЯЗЫК 1.34, ФОРМА 1.09).
**ЧТО НЕ УСТАНОВЛЕНО:****однопроходка без мандата против связки порога НЕ проходит**`D_/A` 2.00 [3.34, 0.62], Holm 0.063. Направление воспроизвелось в обоих проходах, интервал ноль не накрывает, но формально утверждение не доказано; прежний заголовок «связка бьёт однопроходку» снят. Так же не проходят: мандат перевёрстки `D/D_` 1.31 Holm 0.109 · закон-блок `A_law/A` 0.75 · выбор движка `A_law/B` 0.69. ⚠ «Не обнаружено» ≠ «нет»: различимый эффект оснастки ≈2 ошибки.
**ГЛАВНЫЙ МЕТОДИЧЕСКИЙ РЕЗУЛЬТАТ ПАКА — шум разложен: компоненты СОПОСТАВИМЫ.** Пол (две генерации одного арма, ОДИН судья, уровень сокращается точно) var 7.98 = 2σ²ген+2σ²судья; кросс-проход (один и тот же текст, два судьи, уровень снят центрированием) var 4.07 = 2σ²судья (с поправкой на степени свободы) ⇒ ⚠ **разложение шума НЕ УСТАНОВЛЕНО:** три способа счёта из тех же данных дают «генерация больше» (1.48/1.34), «поровну» (1.43/1.40) и «судья больше» (корреляция пола между проходами r=0.30 ⇒ 0.65), и ни один не отличим от остальных при n=16. Считать оценкой порядка величины; ⚠ какая больше, НЕ установлено: бутстрап даёт отношение 1.08 с ДИ [0.58, 1.44], P(генерация больше)=0.64. Судейская компонента подтверждена ПРЯМЫМ повтор-тестом (те же задания побайтно, новые судьи, σ 1.29, r=0.707); рандомизация раскладки стоит 0.08 sd, то есть бесплатна. Планирование: ×2 судьи дают SE 0.706→0.622 за $0, ×2 единицы — 0.706→0.500 за ≈$0.48. ⚠ Число исправлялось ДВАЖДЫ по адверсариальному ревью: «шум в генерации» опиралось на совпадение двух sd (совпадение дисперсию не раскладывает), «шум в судье, 73%» считалось на СЫРОЙ кросс-разности, куда входит разница уровней строгости, которой в поле нет. Свод и разложение считаются `absjudge.py --pool`, в дереве (прежде считались вне его).
**ЭКОНОМИКА — РАЗМЕН, не доминирование.** Парно связка ДОРОЖЕ однопроходки на +0.00096/единицу, 11 из 16 (≈+20%), ⚠ но как УСТАНОВЛЕННЫЙ факт не держится: собственный точный тест даёт p=0.061, интервал накрывает ноль при удалении любой из 9 единиц. ✔ По ТОКЕНАМ жёстче: +7601 (+114%), 16 из 16, p<0.0001 долларовая разница есть артефакт прайс-листа. Прежнее «связка дешевле на 6 сравнивало медианы маргиналов и переворачивалось при парном счёте. Жилец роли редактора `deepseek-v4-pro`, обоснование ЦЕНОЙ: полная связка $0.00580 против $0.01025 у `glm-5` (парные средние), не качеством.
** ДЕТЕРМИНИРОВАННЫЙ КОНТУР ВЫВОД НЕ ПОДПИРАЕТ.** Батарея, пересчитанная на ТЕХ ЖЕ текстах, что судились, даёт другой порядок: `D` (худший по судье) лучший по правилам. Расхождение локализовано в слипании абзацев, которого не проверяет ни одно правило. Контуры смотрят в разные части оси ФОРМА.
**ЧЕТЫРЕ АДВЕРСАРИАЛЬНЫХ РЕВЮ, находки приняты без спора.** Сняты клеймы: «позиция исчезла по построению» (наклон +0.147 на шаг метки, измерен и поправлен) · «слипание у редактора не штрафуется» (штрафуется, 6 единиц из 16) · «связка дешевле» · «шум в генерации» · «ФОРМА конфаундом быть перестала» (размен внутри оси остался, лишь сошёлся в ноль). Починены исполнением: касса не видела оплачиваемых ею тегов `bo4-*` ($0.29309 мимо потолка) · гард пропускал `python -c` из каталога зоны · разбор ответов утаскивал соседнюю строку при пустом поле · контроль пола мерил разницу черновиков · приёмка требовала меньше, чем обещано судье.
**ОСТАЛОСЬ НЕЗАКРЫТЫМ — требует владельца:** слепое чтение ВЛАДЕЛЬЦА (единственный контур вне семейства сессии; агентские читатели семейно зависимы) · армы **C/E/G** заказа не построены (точечный ремонт, обратная связка, маршрутизация; `route_arm.py` в текущем виде не запускается) · дрейф на связном отрезке 810 глав · пара en под абсолютным ригом · арбитр вне семейства (нужны кредиты xAI). **Потолки ФАЗ промта пробиты:** Ф1 $1.07473 против $1.00, Ф2а $3.887 против $2.50; верификатор сверяет отчёт с сырьём, но потолки промта НЕ сверяет.
**ВТОРАЯ ПАРА en→ru** (Kristoff, контаминация 1/5 против 4/5 у основного материала) заведена сверх промта по слову владельца 07.08. Пар-специфика боевого промта редактора измерена **4 места из 42 строк**; пар-пакет `eval/role_topology/prompts/en-ru/` заведён правкой только их новая пара стоит ~4 клауз в данных, правки Go не требует.
** ВНЕШНИЙ БЛОКЕР ВЛАДЕЛЬЦУ: кредиты xAI исчерпаны** (HTTP 403 на 250 голосах). Второй судья заменён на `gemini-3.1-flash-lite` через положительный контроль (декой 6/6 в обоих порядках). Grok нужен и как судья 18+ по quirks единственный живой на эротике.
**Уточнение к quirks 00:** оговорка «на violence/SFW Gemini-судья жив» на вебновелле держится не целиком 10 клеток пришли БЕЗ объекта сообщения с `finish_reason: content_filter: PROHIBITED_CONTENT`. Google непригоден как ЕДИНСТВЕННЫЙ второй контур на этом материале.
**Эхо-мина черновика измерена как частота:** 5 ре-генов на 16 единиц zh (31% против документированных 15%), 0 на 12 единицах en.
**Открыто:** дрейф на связном отрезке · армы C/E/G не гнались · банкнота как канал не замерена · разброс судьи-замены на повторе не измерен · чистый контраст мандата (у D_ своя вёрсточная строка, у D блок из 4 правил, промт ×1.92) · слепое чтение владельца · цена черновика, который реально правят армы.
Не коммичу, кроме пре-рег-фриза; отчёт 21, харнесс `eval/role_topology/` и этот пинг на лендинг оркестратору.
**Поправки приёмки №15 (D39.108) к пингам ниже — шапки отчётов первичны:** verify_report = 20 проверок, не 19 · «вся сессия $2.1793» включала $0.107335 сырья research/24 фактически 18+19+20 = $2.0720 · решающий замер §5.2 не персистирован со слов»; направление держит §5.3) · цена раунда починки не входила в дифф (lu/ON 0.891.08) · offblock-числа сняты до-фризовым стемом.
**ЭКСП-20 «РОЛЬ РЕДАКТОРА»: прогнан, отчёт `docs/experiments/20-editor-role.md`, $1.2285 из потолка $2.00 (поднимался дважды, оба раза объявлено ДО прогона).** 7 контрактов × до 5 моделей × 2 целевых языка + арм починки + три раунда слепого судейства. Числа отчёта сверяются с сырьём командой: `eval/editor_harness/verify_report.py` (19 проверок, проходит).
**Роль редактора измерена и узка:** в бейк-оффе «перевод с нуля против редактуры черновика» второй проход выигрывает ОДНУ ось из шести русскую прозу; верность и общий вердикт ничьи. Совпадает с ратифицированным D32.1(г).
**Ответ «нужен ли редактор» ЗАВИСИТ ОТ ПАРЫ «модель × роль» и переворачивается:** у `glm-5` связка выигрывает всё (вёрстка 6:0), у **`deepseek-v4-pro` модели, стоящей редактором в `pipeline-c1.yaml` СЕЙЧАС, второй проход отрицателен** (общий 1:5, обе целевые оси 3:3, при этом ломает фактуру).
**Цену держит ПОИСК, а не правка:** арм «только найди» 2.14× от переписывания; починка по флагнутому спану 12/12 дефектов снято на обеих моделях за **$0.000173** (luna), в 5-6× дешевле поиска. Это механизм конкурентов (AiNiee, LinguaGacha), которого у нас нет (`research/22:176` «флагаем, не чиним»).
** Методическая находка, обесценивающая часть выводов:** разброс судьи на ИДЕНТИЧНОМ входе 56% единогласия, 33% на несущих осях судейство не разрешает разницу меньше ~2:1; перекрёстная проверка понижена до «не разрешает». Норматив: мерить инструмент ДО того, как им мерить.
**Отозвано из эксп-19 дважды:** «дифф дороже» сужен до пары «модель × целевой язык» (`deepseek-v4-pro` 2.83 на ru против **0.67 на en**); а объяснение, которым эксп-19 снял арм E, ОПРОВЕРГНУТО репликацией с выверенным по проводу зеркалом.
**Пинги бэкенду (чужая зона, не правлю):** (1) боевой гейт `disposition.go cjkEchoThreshold = 0.15` не ловит микро-утечку `gpt-5.6-luna` роняет иероглифы в русскую прозу в 3 окнах из 6 при доле 0.5%; (2) банкнотный канал похоже тихо выключен блока нет в `prompts/zh-ru/translator.md`, `translator-banknote.md` ни одним конфигом не выбирается, при том что холодный прогон банкноты собирал (56 из 128 ответов).
Не коммичу; отчёты 18/19/20, правка квирков и пинг на лендинг оркестратору.
**ЧЕТЫРЕ ФАЛЬСИФИКАЦИИ Q4b ПРОГНАНЫ + РЕВЬЮ ПОСЫЛКИ + АДВЕРСАРИАЛЬНОЕ РЕВЬЮ РЕЗУЛЬТАТОВ (05.08).** Пре-рег фризнут `4d1d9e5` ДО платных вызовов; 90 вызовов `deepseek-v4-pro`, все `finish=stop`, **$0.349566 из потолка $0.50**, прогон верифицирован (`eval/premise_review/verify_run.py`: теги ровно плановые, деньги сошлись вторым путём до 1e-6, малформед 0). Отчёт `19-editor-contract-q4b.md` §4–§6.
**Итог армов:** G устоял (комплаенс 0.966 на боевой единице 0.90) · N ПАЛ do-nothing покупается сужением мандата (NO_CHANGE 4/18 против 0/36) · L не засчитан как фальсификация (посылка про ручку `low` не выдержала пере-счёта) · E не засчитан (зеркало промпта конфаундировано на проводе).
** ОТЗЫВ ПРАВКИ ИСТОЧНИКА ИСТИНЫ, сделанной этой же сессией:** `00-provider-quirks.md` §3б звено (а) `low` на pro срезает размышление на треть») ОТОЗВАНО решающее правило «диапазоны не пересекаются» при n=3/3 воспроизводится НУЛЕВЫМ вмешательством (два блока дефолта на побайтно одном запросе разделяются так же и с тем же размером ×1.47). Строка §3а (`low``high` для pro) ВОЗВРАЩЕНА В СИЛУ до замера с мощностью. Звено (б) про `xhigh` в силе и усилено. **Оркестратору: если правка §3б куда-то процитирована — сверить.**
**Главное по существу:** «дифф дороже full-regen» реплицировано ТРИЖДЫ (2.913 · 1.677 · 2.468, последнее на боевой единице и дефолтном режиме), но ПРИЧИНА не установлена: обе гипотезы (несъёмный thinking · русская фертильность) остались непроверенными. Размышление = 95% цены диффа, растёт с объёмом ВХОДА (×2.78 при входе ×3.24, p=0.0003) и сужением мандата НЕ снимается. строку 106 закрывать выводом «диффы не берём» преждевременно; контракт механически исправен, проигрывает режим.
**Проба 18 §C.5 (дозамер, $0.081326):** гипотеза «чемпион glm-5 был искалечен выключенным мышлением» ОПРОВЕРГНУТА с мышлением 24/45 против 25/45 при цене 4,4× ограничение 5 отчёта 18 снято; на роли терминолога разум не конвертируется в качество ни у одной проверенной модели.
Не коммичу ничего, кроме пре-рег-фриза; отчёты и правка квирков на лендинг оркестратору.
**КОНТРАКТ РЕДАКТОРА: арм Q4b прогнан впервые — строка 106 закрыта эмпирикой (расширение зоны по слову владельца 05.08), отчёт `docs/experiments/19-editor-contract-q4b.md`, потрачено $0.194006 из потолка $0.40.** Пре-рег зафризен `52e12f3` до первого платного вызова; аппликатор самопроверен 9/9; 60 вызовов `deepseek-v4-pro`, все `finish=stop`, реплики ×3 на арм; материал переиспользован из пробы 18 ($0). Арм пре-регистрирован в `exp15:108` и **не гонялся ни разу** с момента постановки.
**(1) Формат-гейт ПРОЙДЕН: комплаенс 0.975 / 0.949** при пороге 0.90, малформед 0/36 опасение `research/19` слабые модели на edit-форматах хуже, чем отдавая текст целиком») на боевом редакторе и русской прозе НЕ воспроизвелось; толерантный apply отбросил 6 операций из 158, черновик в этих местах цел.
**(2) ЭКОНОМИКА ПЕРЕВЁРНУТА несущий результат: дифф-редактор в 1.52× ДОРОЖЕ full-regen** ($0.004157 против $0.002686 за вызов). Разбор выхода: у диффа **96% completion уходит на размышление** (3742 из 3904 ток.) против 58% у full-regen поиск уникального якоря загоняет модель в долгую обдумку, а у DeepSeek reasoning биллится ВНУТРИ completion. **довод `research/15` «дифф режет output-токены редактора, а это ~90% COGS» на thinking-модели НЕ ДЕЙСТВУЕТ и инвертируется**; ручки бюджета размышления у v4-pro нет (`low``high`), конфигом не чинится.
**(3) Дифф выигрывает структурно на омиссии:** потеря атомов полярности 01 против 711 у full-regen (~10×) «структурно omission-safe» подтверждено; числовые «потери» диффа оказались ложными (он ПРАВИЛЬНО приводит доли к процентам), после вычитки 0.
**(4) На fidelity-классе посадок паритет 100%** (к2 6/6 = 6/6); на классе несуществующих слов дифф стабильно хуже на 1/6 струмель» выжила 1/3, «дерзновяжной» 2/3).
**(5) Дисциплина do-nothing НЕ покупается промптом: NO_CHANGE = 0 из 36** при явном разрешении жирным шрифтом; медиана 4.3 правки на вызов вторая половина цитаты `research/19` LLM-редакторы правят даже корректный вход гейт снаружи обязателен») подтверждена, надежда на первую снята.
**(6) Обе поправки к пробе 18, обе по репликам:** в блоке контракт НЕ различает (21/21 у обоих во всех трёх розыгрышах, дисперсия была только у базы БЕЗ блока); **клейм «блок поднимает канон вне блока до 24/41» ОТМЕНЁН** 24 был удачным одиночным розыгрышем, медиана трёх = 20 при 18 у черновика.
**(7) $0-находка, найденная до пробы:** канон ПОДПИСАННЫХ строк ВНЕ инъецированного блока = **18/41 (44%) уже в ЧЕРНОВИКЕ** (метрика `editor_contract/offblock.py`, 41 клетка, 18 сущностей) инъекция селективна у ОБЕИХ ролей, дыра пайплайновая, а не редакторская; `花酒行者` Монах Цветочного Вина») пришёл неканоническим от транслятора. **Терминология решается покрытием инъекции, а не контрактом правки.**
**Вердикт:** формально дифф проходит стоп-гейт в прод-кандидаты, фактически НЕТ по цене и по несработавшему do-nothing. Строка 106 из «когда-нибудь» переходит в «измерено, решение владельца»: дифф-контракт технически состоятелен и покупает omission-safety за +50100% цены на thinking-редакторе. Не гонялось: reflow-проход Q4c, судейский риг (проза и переверстка НЕ сравнивались). Сырьё `~/books/gu-zhenren/bank-arbitration/` префикс `ec-*`, риг `eval/editor_contract/`. НЕ закоммичено кроме пре-рег-фриза лендит оркестратор.
**Редакторский провод под доктриной закона + фронтир-пасс (промт `POLYGON_EDITOR_WIRE_PROBE`, D39.103/104) — ИСПОЛНЕН, отчёт `docs/experiments/18-editor-wire-probe.md`, потрачено $0.174390 из потолков $0.30+$0.50 (04.08).** Пре-рег зафризен коммитом `080c15d` за 46 с до первого платного вызова; байт-идентичность провода edit-стадии c1 доказана ИСПОЛНЕНИЕМ (overlay-`go test` реальных `SystemFor(false)`/`MessagesWithInjection`/`RenderEditorConstraintBlock` sha256 всех трёх сообщений совпали с харнессом). 50 вызовов, все `finish=stop`.
**Проба A (v4-pro, $0.070293):** (1) **единый закон-блок исполняется 21/21 клеток, 6/6 окон** доктрина D39.104 на редакторском проводе подтверждена, двухсекционка не нужна; (2) **несущая находка, которой не ждали: редактор БЕЗ блока сам ломает канон черновика — 5/20 клеток в одном розыгрыше контроля и 12/20 во втором** (A5 по проводу = тот же контроль; «71%→100 ошибочно как величина, честно «без блока 815 из 21, с блоком 21/21»). Редактор не пассивная стадия, а самостоятельный источник разнобоя: «юань-камни», «изначальная сущность», «мастер гу», «Гу Юэ Мо Бэй»; (3) **цена неверной строки на редакторе НЕ МЕНЬШЕ, чем на трансляторе: принята 6/6, вытеснила верную 5/6** C research/24 те же 6/6 и 5/6); единственный выживший случай глосса «Юаньхай море истинной ци»; (4) **межоконная консистентность единогласна 6/6** инъекция канал разнобоя между главами не открывает, что и есть несущий довод D39.104; (5) **A5, первый замер класса: посаженные дефекты черновика редактор чинит 12/12** (абракадабра 6/6, смысловые инверсии 6/6, глазами против исходника), НО в тех же вызовах ВНОСИТ свои тихий **обрыв выхода на полуслове при `finish=stop`** (1176/16000 ток., кандидат в `00-provider-quirks.md` по v4-pro), 五百年→«полувекового», разбиение реплики, переименование реалии вне блока; (6) **кандидат-оговорка области §B НЕ ПОДТВЕРЖДЕНА и работает в обратную сторону**: арм БЕЗ неё передал метаязыковой пассаж по смыслу 2/3, арм С ней 0/3 (приклеил канон 2/3, потерял пассаж 1/3) в `injection.txt` не вносить; (7) оговорка «не течёт 0/6» метрика присутствия к протечке слепа, по счёту УПОТРЕБЛЕНИЙ 元石 84, 蛊师 43: **нулевая протечка не измерена**.
**Проба C (терминолог по 45 голд-термам, $0.104097):** слаги владельца опознаны live `/models` `gpt-5.6-terra`/`gpt-5.6-luna` (есть и `gpt-5.6-sol`, не назывался); **wire-квирк GPT-5.6 замерен, не угадан: плоский `reasoning_effort` в Chat Completions ЖИВОЙ** (`reasoning_tokens` 048 terra, 057 luna), Responses API не понадобился. **Фронтир НЕ ОПРАВДАН по пре-регу** (нужно ≥+5): pro 9, terra 7, luna 7 против glm-5 25/45. **Но сырой вердикт врёт о причине:** после фолда конвенции `古月` (7 поверхностей + `人祖`) разрыв исчезает terra и luna догоняют до 26/45, net ±0 7 из 9 «промахов» фронтира это орфографическая конвенция, а не ум. **Конвенция составных фамилий стоит 8/45 голда и перекрывает разницу между ВСЕМИ моделями — рычаг данных сильнее рычага модели (усиливает research/24 §D п.9).** Экономика: **`gpt-5.6-luna` = качество glm-5 за $0.23/книга против $0.59 (39% цены)**, дешевле даже flash-low; `gpt-5.6-terra` то же качество за $2.61/книга (×11 к luna, 0 клеток); `deepseek-v4-pro` 24/45 за $0.43 довод «pro умнее» на роли терминолога пуст.
**Адверсариальный проход author≠reviewer пройден** (независимый агент от задания и сырья к отчёту, пере-счёт всех чисел своим кодом): вердикт «принять с правками», все числа CONFIRMED, 8 находок сверх отчёта все пере-проверены мной по сырью, все подтвердились и вправлены (в т.ч. **девиация пре-рега №1: на провод ушёл заголовок со скобкой ПЕРЕД оговоркой, а не как в §0.3** при внесении §B брать отправленную строку). Объявленные девиации: пост-хок репликация AM (+4 вызова), `cap=8000` у terra, `frontier_probe.py` вне фриза. Сырьё durable `~/books/gu-zhenren/bank-arbitration/` (префикс `edp-*`/`fdp|flu|fte-*`, 134 json), харнесс `eval/bank_arbitration/{editor_wire_probe,frontier_probe}.py`. **Вопросы уровня владельца/оркестратора:** (а) §B в движок только единый блок, оговорку НЕ вносить; (б) обрыв при `finish=stop` заводить ли в квирки и гейт; (в) конвенция `古月` данными пар-промпта; (г) luna как кандидат в терминологи. НЕ закоммичено (кроме пре-рег-фриза) лендит оркестратор.
**Арбитраж банка (строка 5, пере-запуск промта D39.89 по слову владельца, потолок $1.00) — ИСПОЛНЕН, отчёт `docs/research/24-bank-arbitration.md`, потрачено $0.0896 (04.08).** Главное: (1) голд 53 approved сида 45 в BANK-FULL, из них у 27 промахов прод-банка верный dst лежал в вариантах черновиков лишь у 5 **потолок любого «выбора из вариантов» = 17/45, селекционный арбитраж закрыт классом**; (2) свежий терминолог-соло (flash-low) бьёт бесплатный базис §C2-3 **+8/0**, а **равноправный консилиум НЕ окупается**: +3 к само-согласованности = одна конвенция 古月; лучший одиночка glm-5 25/45 > лучший совет 23/45; добавление grok РОНЯЕТ совет 23→20; C3conf(взвешенный уверенностью) ≡ C3; ⟦TM-NO-DST⟧ = 0 на 35 вызовах трёх семейств; (3) **вербализованная ЧИСЛОВАЯ уверенность разделяет внутри модели** (AUC 0.770.85, слова хуже 0.63) при тотальной overconfidence (~88 при точности ~50%) — жить ей ordinal-очередью ревью, не арбитром; (4) **химера семьи 古月 воспроизведена причинно на границе батча** (свежий deepseek: «Гу Юэ» ровно в батче 2, «Гуюэ» ровно в батче 0), а по-терминная МАРШРУТИЗАЦИЯ (улики-первым) сама создала химеру 转-серии ⇒ единица арбитража/роутинга — кластер; DetectSeries разнодлинные семьи (古月×15, 蛊×14) не видит; (5) **проба инжекта: инъекция поднимает следование канону 43%→95%, НЕВЕРНАЯ строка законом принимается 6/6, с маркером ⟨проверить⟩ — тоже 6/6 (Δ=0 п.п.): пометка на транслятор-проводе поведенчески пуста**, цена неверной строки банка = ~100% заражение; (6) индустриальный обзор: стандарта арбитража термов не существует, наш дизайн впереди ближайшего аналога (DelTA first-wins); пропущенных стандартов нет. Рекомендации тремя корзинами в §D (строить: кластер-канал семей · intra-run CanonConflicts · наблюдаемость Signals/invented/conf · нормализованный голос foldVariants; закрыть: равноправный совет · кросс-модельные веса · self-consistency · селекция · отказ-сигнал). 4 вопроса владельцу в отчёте (мини-голд алиасов · конвенция составных фамилий · проба редакторского провода · фикс-пак корзины 1). Два адверсариальных раунда author≠reviewer пройдены (р.2 поймал 4 неточности, все вправлены; моя ложная оговорка про grok-ростер снята сырьём). **Достройка по вопросам владельца (тот же день, +$0.0161, итог $0.0960):** (а) $0-демо ценности на живом банке — intra-run чек связности поймал бы **18 невидимых противоречий на 149 финалов (12%)**, а нормализованный фолд голосов двигает топ лишь 1/75 (понижен до косметики); (б) **мультиязычная проверка ja→ru и en→ru (`multilang_probe.py`): направление инжект-выводов ПЕРЕНОСИТСЯ** — закон слушается, неверная строка принимается (ja 2/2, en 1/1), маркер Δ=0 на обеих парах; попутно ja-батч бэнк-вызова вернул термы упрощённым китайским — off-language класс, который парослепой экран `OffLanguage` отбил бы (несущая защита для будущей ja-пары). **Кросс-пары по слову владельца (тот же день, +$0.0113, итог $0.1073): §F/§G отчёта.** F1 zh→en: свежая en-редакция по тому же ростеру дала «Rank 1..9 · Grade A/B/C/D · Aperture · Gu Master» — **41/45 (91%) совпадений класса решения с подписями владельца** (банк НЕ однобокий; буквенный маппинг 甲→A, недостижимый для ru-моделей, en-моделью взят — довод за сид/бриф-канал); fan-канон RI по памяти сессии ещё ближе к владельцу (元石 primeval stone = «первобытный камень»); ру-специфика ровно одна — слитность «Гуюэ». F2 en→zh (Кристофф-2026): deepseek идеально связал семью *-blood (X血者), **glm сломал корень внутри ОДНОГО батча** и разошёлся в имени Aaron между соседними окнами (艾伦↔亚伦) — дрейф, от которого банк существует, воспроизведён на en→zh; deepseek выдумал 5 незапрошенных строк (нужность гарда `want[key]` кросс-парно подтверждена); личная оценка прозы обеих моделей — «редактируемо-издательская», узкое место всех направлений — термы, не слог. **§G — дизайн-синк алгоритмов бэкенда** (готовый вход фикс-пака класса D39.71): G1 `DetectFamilies` (данные-гейтед, имя=префикс/реалия=суффикс, без транзитивности, мёрж в seriesID) · G2 `ConsolidationConflicts` (18/149 на живом банке) · G3 наблюдаемость (Signals/Invented/Conf + фикс ParseReply-джойна) · G4 кластерный роутинг рецензента · G5 фолд-косметика · G6 явные «не делать». **Финальный рерайт отчёта по слову владельца (04.08):** сага/хроника правок убраны, факты и оговорки сохранены, §G сведён к уровню алгоритмов; **раунд 3 адверсариала (независимый агент по диффу v1→v2): числа 100% чисты пере-раном, новые клеймы подтверждены первоисточниками; его блокер (рерайт сжал зарегистрированные пре-реги §0/§E/§F) закрыт восстановлением пре-регов дословно с явной пометкой девиаций, потери фактов возвращены.** v1-черновик — `docs/archive/reports/DRAFT_BANK_ARBITRATION_V1_2026-08-04.md` (помечен черновиком в шапке и именем; перенесён по слову владельца 04.08). Сырьё durable `~/books/gu-zhenren/bank-arbitration/` (84 json), харнесс `eval/bank_arbitration/`. НЕ закоммичено — лендит оркестратор.
**→ ПРИЁМКА №13 (04.08, D39.102): ПРИНЯТО и залендено.** Поправка арифметики пинга выше: инкремент §E = **+$0.0065** ($0.0896 → $0.0960); «+$0.0161» — склейка инкрементов пробы C и §E ($0.0097+$0.0065), леджер отчёта чист (независимый пересчёт из сырья $0.107334). Оговорки приёмки — ревью-шапка `research/24`; находки сверх отчёта — строки 128132. Вопросы отчёта закрыты ВСЕ (D39.103/104). АКТИВНЫЙ промт полигона — `docs/POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md` (проба редакторского провода ≤$0.30 + фронтир ≤$0.50; отчёт — `docs/experiments/18-editor-wire-probe.md`).
**Сырьё арки банка + пробы фиксов (01.08) — приняты и залендены, детали в журнале выше (D39.65).**
*(Закрытые записи 26.07 — пакет-6 «размеченный набор» (D39.39) и пакет-8 «три пре-замера» (D39.4346/50/52) — в [archive/PROGRESS-2026-07-25-31.md](archive/PROGRESS-2026-07-25-31.md); пакеты Р6+P4 и ToS — журнал выше (D39.57/61).)*
(секция параллельной сессии — записи добавлять сюда)
## Память
(секция ресёрч-сессий памяти — записи добавлять сюда)
*(Хроника валидации банка (0405.07, research/1314, вердикт GO) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
## Голос и состояние
(секция ресёрч-сессии — записи добавлять сюда)
*(Хроника сессии «Голос и состояние» (09.07 → research/15, D21) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
## Ридер-IDE
(секция ресёрч/движковых записей Ридер-IDE; записи фронт-сессий с 04.08 — ТОЛЬКО в `frontend/docs/frontend-PROGRESS.md`, D39.100)
**Фронт-сессия — исследование стека закрыто (02.08).** 15 агентов (7 направлений × независимый скептик-опровергатель + синтез), версии сверены с вебом 02.08; скептики дали 5 blocker/45 major — записаны исправленные варианты. Артефакты: `frontend/docs/STACK_DECISIONS.md` (пины точными версиями · ловушки «вся документация в сети описывает прошлые версии» · работы движка §8) + переписанный `frontend/docs/FRONTEND_SESSION_PROMPT.md` (фронт режется на этапы S0S7; первая кодовая сессия кончается витриной токенов). — **ЛЕНД D39.84** (10-агентный refute-воркфлоу оркестратора: все несущие бэкенд-утверждения CONFIRMED, 8/8 веб-пинов подтверждены первоисточниками; работы движка = строки 99102; ПТ-34/ПТ-21/ПТ-23 в реестре; вопрос коммит-прав фронт-сессий — у владельца; РЕШЁН дважды: D39.88 право дано → D39.98 отозвано, коммитит только оркестратор).
*(Хроника сессии «Ридер-IDE» (11.07 → research/16, D29) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*