239 lines
92 KiB
Markdown
239 lines
92 KiB
Markdown
# Журнал прогресса
|
||
|
||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-12). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1–D31); этот файл — ЖУРНАЛ, не спека.**
|
||
> - **Фаза:** 0 ✅; Ф1-машинерия ✅ (D21–D28); **приёмка этап A ✅ с оговорками (D24); этап B заморожен (D26) до читаемых 25 глав.** **exp12-диагностика ПРИНЯТА (D30): «нечитаемо» = пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + нет санитайзера; дефекты смысла — в черновике.** Ратифицировано D30: **флип D1 моно→билингв** (supersede D17.в; re-gate верности на пере-прогоне обязателен), reflow-вёрстка (промпты чинятся), output-санитайзер (новый гейт-класс), глоссарий v2 условно (спорные → draft до подписи владельца), **exp13 бейк-офф ПЕРЕВОДЧИКОВ** (deepseek качеством не мерен — главный невыжатый рычаг), COGS флипа +15–25% (~$0.85/ранобэ; «$1.5–2» = отдельная опция Б). **exp13 ПРИНЯТ (D32): черновик flash СОХРАНЁН (pro отклонён), сид v2 под подпись владельца. Бэкенд-пакет D15.2 ЭТАП А ПРИНЯТ и залендён (D33, 00f8e36): билингв-редактор+reflow+санитайзер+golden — golden байт-в-байт, конфиг-флип D32 соблюдён; НО 2 обязательных фикса санитайзера до пере-прогона (D33.1: хвостовая утечка + false-positive «около колонны»). Этап Б/В D15.2 осознанно не начаты (Б трогает денежный resume-путь). **ВСЕ блокеры пере-прогона сняты: санитайзер-фикс ✅ D33.1, сид v2 ПОДПИСАН владельцем ✅ D34.1 (Жэнь Цзу/Монах Цветочного Вина/гу Жизни/деревня Гуюэ/первобытный камень; род «гу» муж). ⚠ Осталось: repoint приёмочного конфига (D34.2 — book.yaml→сид-v2, prompt_version→v1-reflow/v2-bilingual-reflow из pipeline-c1, свежий store; иначе тихо снапшотит старый моно-конфиг) — делает сессия пере-прогона первым шагом. → пере-прогон 25 глав (flash+glm-5-билингв+reflow+сид-v2+санитайзер, budget_usd>0) → fidelity re-gate НЕЗАВИСИМЫМ судьёй полигона (D34.3) → чтение владельца → этап B.** Трек владельца: дешёвые модели сейчас, фронтир потом (архитектура конфиг-первая — D30.7). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6).
|
||
> - **Стек (пост-D32):** черновик — **deepseek-v4-flash СОХРАНЁН** (exp13/D32: смена на pro отклонена по данным — сфабрикованная сходимость + катастрофа 蛊→«гусеницы» + верность у flash не хуже; thinking ON; escalate_to=pro без изменений) · редактор — **БИЛИНГВ (D30.1), кандидат glm-5-билингв** (gemini — премиум-эскалация за санитайзером; grok reasoning-off из редакторов СНЯТ — no-op) · судья/апекс Gemini 3.1 Pro (**слаг `-preview`**; mandatory thinking; `additive_total` — D22.3) · эскалация A: DeepSeek V4 Pro → GLM-5.1 → Gemini-preview · **канал B (18+): Mistral · эскалация grok-4.3 reasoning-ON (⚠ не на архаичных zh — D22.5) · abliterated-скрининг · судьи: эротика — Grok (дублёр гейтится пробой D22.6), violence/SFW — Grok+Gemini** (DeepSeek в explicit запрещён ToS — D14.1). 7 ключей.
|
||
> - **Экономика:** `experiments/08-cost-model-v2.md` — до-флиповый ~$0.69 ранобэ / ~$10.94 вебновелла-500; **после флипа D1 → ~$0.85/ранобэ (+15–25%, D30.4)**; «$1.5–2» = опция Б (селективный апекс+память, НЕ подписана); пере-съём = exp08 v3 (D21.8/D25.8). ⚠ Resume: любой `--resnapshot` = переоплата книги — онгоинг гейтится реализацией D15.2 (идёт, D30.9). Gemini-недоучёт 146×/вызов закрыт additive_total (D22.3).
|
||
> - **Ждём от владельца:** ~~подпись спорных терминов сида v2~~ ✅ ПОДПИСАНО (D34.1; владелец переопределил: Жэнь Цзу, Монах Цветочного Вина, гу Жизни, деревня Гуюэ, первобытный камень; род «гу» муж) · **чтение 25 глав пере-прогона** (арбитр читаемости — после связки+re-gate) · **флагман-сверка exp13** (переводчики, monitor-паттерн) · DashScope-ключ для qwen-арма exp13 (опционально) · **планка запуска** (лучше-фана/гибрид/издательский + готовность к COGS опции Б ~$1.5–2 — мемо-эскалация exp12; интерим D30.7: «лучше фана» на дешёвом миксе) · решение по билингв-якорю пилота (D25.9-Q1) · «да/нет» митигации контаминации пилотного корпуса (D27.4) · publishable/waiver — при экспорте (D25.1) · FN-bound L3 — при спеке (D25.4) · провенанс 12-*-доков · юр-пакет (+rights manifest, D25.8).
|
||
> - Записи ниже — хронология; РАННИЕ (день-0, 04.07) содержат устаревшие цифры/решения (COGS $2–4, BYOK, Anthropic-Sonnet), переопределённые позже — см. блок выше и 05-decisions-log.
|
||
|
||
## Приёмка Ф1 — 蛊真人 zh→ru, этап A (25 глав), 2026-07-10
|
||
|
||
Приёмочная сессия по `ACCEPTANCE_SESSION_PROMPT.md`. Прогон реальной книги end-to-end, вердикт по критериям `02-mvp-plan §Приёмка Фазы 1`. **Ничего не закоммичено** (лендинг — оркестратору). Все производные (store.db, срез, выходы, отчёты) — ВНЕ git (`/home/ubuntu/books/gu-zhenren/acceptance/`). Дерево backend/ чистое (мои правки = 0; `docs/research/17-*` — чужая GPT-сессия, не трогал).
|
||
|
||
**Конфиг прогона (по контракту):** срез 25 глав (57 чанков) из `guzhenren-gb18030.txt` (GB18030, ре-энкод среза лосслесс), сид 49 терминов; draft=deepseek-v4-flash (thinking ON), editor=**glm-5** (D20.3 — чистого xAI-ключа нет), draft `escalate_to`=deepseek-v4-pro, `escalation.budget_usd=2.0` (D22.11), гейты дефолтные (coverage OFF, postcheck-гейт OFF=флаггер). Промпты/версии/пороги — байт-в-байт из pipeline-c1.
|
||
|
||
### Чек-лист приёмки (каждое — исполнением)
|
||
|
||
| # | Пункт | Как проверено | Результат |
|
||
|---|---|---|---|
|
||
| 1 | `committed == SUM(checkpoints)` | SQL по живому store на 3 срезах | ✅ ТОЧНО: honest-stop $0.07446423; **пережил SIGKILL** $0.08639944 (32 ckpt); финал $0.408077 *(испр. оркестратором: на финале после redrive инвариант по D15.3 — «≥»: SUM(130 ckpt)=$0.405370; «==» держалось до redrive и на конец полного прогона)* |
|
||
| 1 | Честный стоп потолка (committed+reserved) | book_usd=$0.08 → отказ резервации | ✅ отклонён ch5/1 edit *(испр. оркестратором: denied estimate=$0.00732 по phase1.log:74, не $0.0733)*, reserved=$0, «raise ceilings.book_usd or stop», exit 1 (код-путь tmctl, в логах не зафиксирован), резюмируемо |
|
||
| 1 | kill -9 посреди этапа → без переоплаты | реальный SIGKILL в in-flight glm-5 вызове | ✅ orphan-резервация $0.0075 восстановлена («recovered 1 stale reservation»), committed==SUM пережил краш, ≤1 вызов |
|
||
| 1 | resume не переоплачивает | поднял потолок $0.08→$2.0 (wiring-поле, не snapshot) → translate | ✅ *(испр. оркестратором — два resume смешаны в одну строку, оба чистые: ceiling-resume переиграл гл.1–5 за $0, первый платный — ровно отклонённая потолком стадия ch5/1 edit; пост-SIGKILL resume переиграл гл.1–6 за $0 (24 tm_hit), первый платный — ровно убитая стадия ch6/1 edit)* |
|
||
| 2 | echo-эскалация стреляет и ре-гейтится (D18) | ch1/0,1: cjk_artifact 76–82% | ✅ → deepseek-v4-pro → ре-гейт → флаг остаётся (fallback тоже провалил), edit skip, мусор в TM НЕ коммитится |
|
||
| 2 | refusal/empty → flag+skip+continue | 4 флага (cjk_artifact×2 стойких, length×2) | ✅ edit пропущен (DispSkipped), FinalText="" не течёт в TM/экспорт/STM |
|
||
| 2 | `tmctl redrive` на реальном флаге | dry-run (план 4) + real `--chapter 1 --chunk 4` | ✅ **флаг RESCUED** (length был транзиентным бюджетом → ok, attempts=2); флагов 4→3; committed≥SUM (D15.3: сброшенный $0.0027 остаётся в committed) |
|
||
| 2 | `tmctl status` живой при прогоне (OpenReadOnly) | status / status --json / report при активном translate | ✅ работают без flock; --json exit 2 (флаги); D23 orphan reserved-хвост виден до recovery |
|
||
| 3 | Консистентность D10 ≥98% (все approved) | замер ниже (нативный post-check + независимый пересчёт) | ⚠️ **суть выполнена (0 реальной терминодрейфа); флаггер шумит из-за неполноты decl сида** — разбор ниже |
|
||
| 4 | Ноль молчаливых потерь глав | ingest 25 глав → 57 чанков, spine consistent | ✅ все 25 глав обработаны, 0 U+FFFD, 0 потерь. (coverage-гейт OFF по дефолту — ≥90%-recall искусств. пропусков не гонялся, отдельный тест) |
|
||
| 5 | Честная оговорка D1.1 | — | ✅ приёмка = инфраструктура; верность НЕ мерена (это пилот Ф2.5) |
|
||
|
||
### Деньги (этап A, весь прогон)
|
||
|
||
- **committed = $0.408077**, reserved = $0.000000, потолок $2.00 (20.4%). **committed ≥ SUM(checkpoints)=$0.405370** (разница $0.0027 = *(испр. оркестратором)* ДВА сброшенных пре-redrive draft-вызова ch1/4, побайтно $0.0010117+$0.0016956; честное направление D15.3).
|
||
- **$/глава = $0.0162** (25 глав). **Проекция полной книги (2283 гл.) ≈ $37** — в коридоре промта $25–55, ниже человеческого якоря $100.
|
||
- **Доля стадий:** editor(glm-5) **83.3%**, draft(deepseek-flash) 15.3%, эскалация(deepseek-pro) 1.4%.
|
||
- **Санити vs exp08 (честно, не подгоняя):** exp08 моделировал editor 88–90% на grok-4.3. Здесь 83.3% — ниже, потому что (а) 3 флагнутых чанка пропустили дорогой edit *(испр. оркестратором: финально 3 — ch1/4 после redrive edit получил)* и (б) draft тяжелее (deepseek reasoning subset + ретраи length + эскалации). **⚠️ Клейм промта «glm-5 дешевле grok» неверен по выходу:** glm-5 output $3.2/M против grok $2.5/M = **+28% за токен**; итоговая $/глава ниже якоря из-за размера глав и пропуска edit флагнутыми, НЕ из-за дешевизны glm-5.
|
||
- Телеметрия чиста: deepseek reasoning=subset (внутри completion, `reasoning_tokens`-поле=0 — не путать с thinking-off), glm-5 billed по факту, эскалация billed отдельной осью (2 ckpt, $0.0056). Gemini/grok на wire-пути дефолт-конфига НЕТ (ожидаемо).
|
||
|
||
### Консистентность D10 — разбор (числитель/знаменатель + классы промахов)
|
||
|
||
Нативный post-check (retrieval_state, decl-aware, реальный матчер) на 57 чанках: **55 confirmed-промахов**, 14 style-флагов, инъекций(точных)=529, sticky=166. Независимый пересчёт по сиду+выходам (author≠reviewer, дважды):
|
||
|
||
- **Occurrence-level D10 = 1780/1938 = 91.8%**; **presence-level = 370/390 = 94.9%**. По типам (presence): **имена 98.5%, места 100%, титулы 99%, термины 89%**. *(Пометка оркестратора: точные числители/знаменатели метод-зависимы и без приложенного скрипта третьей стороной не воспроизводятся — независимая реплика под 6 конвенциями матчинга даёт occurrence 83.1–93.8% / presence 91.6–99.3%, отчётные значения внутри диапазонов, качественная структура (термины — слабейший класс, места 100%) совпадает; с decl-докредитом (база+мн.ч.) occurrence-реплика = 99.0% ≥ 98%. Методику пересчёта на этапе B приложить скриптом.)*
|
||
- **Классификация ВСЕХ 55 confirmed-промахов (по фактическим выходам):**
|
||
- **37 = nominative_gap** — approved-dst присутствует в ИМЕНИТЕЛЬНОМ, но `decl.forms` перечисляет только косвенные падежи, а фолбэк на базовый dst в `dstFormPresent` (mempostcheck.go:85-96) срабатывает ТОЛЬКО при пустом decl. Пример: `方源→Фан Юань` — «Фан Юань» есть в выходе (+«он» ×4–10 для прочих упоминаний), но флагается.
|
||
- **18 = inflection_gap** — корень dst присутствует в форме, которой нет в сиде (обычно МН.Ч.): `元石→первокамень` рендерится «первокамней/первокамни/первокамнями» (сид дал только ед.ч.); так же `凡人→смертный`→«смертных/смертными», `蛊师→гу-мастер`→«гу-мастеров».
|
||
- **0 = genuine drift** — среди 55 промахов флаггера реального рассогласования терминологии НЕТ. *(Уточнение оркестратора: адверсариальный поиск ВНЕ зоны видимости флаггера нашёл ровно 1 дрейф-вхождение — гл.18/0 рендерит 古月方源 раздельно «гу юэ фан юань» против «гуюэ…»×35 и «гуюэ»×154 в остальном корпусе; post-check структурно слеп к этому классу: полное имя longest-match'ится на 方源, чей dst присутствует → промах не фаерится. Alias-слепое пятно зафиксировано в D24.)*
|
||
- **Вывод:** машинерия (инъекция + decl-aware post-check + флаггер) работает; **истинная терминоконсистентность ≈ 99.5% (1 наблюдение дрейфа на ~190 поверхностей клан-имени, вне видимости флаггера)** *(испр. оркестратором: было «≈100% (0 дрейфа)»)*. Измеренный <98% — целиком артефакт **неполноты decl в сиде** (нет именительного-в-decl + нет мн.ч.), воспроизведён двумя независимыми методами. Порог 98% ДОСТИЖИМ; правка — сиду (дописать nom+мн.ч. в `decl.forms`) ИЛИ post-check (всегда проверять базовый dst, а не только при пустом decl). Это ровно почему `postcheck_gate` дефолтно OFF (флаггер): флип ON сейчас = флаг-шторм на легитимных именительных.
|
||
|
||
### G2 flag-rate (первый замер человеческой петли на реальной книге)
|
||
|
||
- **3/57 чанков (5.3%) флагнуто** после redrive (4/57=7.0% до redrive; redrive снял 1 транзиентный length).
|
||
- **Концентрация: 2 из 25 глав** несут все флаги — гл.1 (классический зачин «第一节:纵身亡魔心仍不悔» — эхо на плотной архаике, ср. register-оговорка D22.5) и гл.10 (length). **23/25 глав — чисто.** Человеческая петля front-loaded на классику/плотный ханьский зачин, не размазана.
|
||
- Стиль-флаггеры (наблюдаемость): **14, все `dialogue_dash`** (0 ё / 0 транслит-междометий / 0 разрядов 万億).
|
||
|
||
### Находки для оркестратора (НЕ чинил — правят wire/вердикты → изменение поведения)
|
||
|
||
1. **[major] Эскалация draft→deepseek-v4-pro неэффективна под дефолтным max_tokens.** deepseek-thinking требует ≥8000 (quirks), а `max_output_ratio=2.2`+`min_max_tokens=2048` дают ~2–3k на чанк → эскалация возвращает empty/length (finish=length), сжигая ~3× цену draft впустую. На ch1/0,1 хоп deepseek-v4-pro дал compl=2048/3291 finish=length. Известный техдолг («min-budget Kimi≥16k/Gemini≥8k — комментарии, не схема») подтверждён эмпирически для deepseek. **Вопрос: ввести per-model floor max_tokens для thinking-моделей (schema, не комментарий)?** Правит снапшот → решение оркестратора/владельца.
|
||
2. **[major] Post-check `dstFormPresent` не проверяет базовый dst (именительный) при непустом `decl.forms`** (mempostcheck.go:87-89: фолбэк на base только при пустом decl). Даёт 37/55 ложных промахов на именительных. Правка: либо сиду дописать nom+мн.ч. в `decl.forms` (зона полигона), либо коду — всегда добавлять базовый dst к проверяемым формам (правит вердикты флаггера → изменение поведения). Гейтит осмысленность/флип `postcheck_gate`.
|
||
3. **[info] deepseek-flash эхает на классическом зачине гл.1** (cjk_artifact 76–82%, finish=stop — интринсик, не бюджет). Ожидаемо (D18/D22.5), гейт ловит корректно. Не баг.
|
||
|
||
### Вердикт
|
||
|
||
**Критерии приёмки Фазы 1 (`02-mvp-plan`) ВЫПОЛНЕНЫ — как инфраструктурная веха — С ОГОВОРКАМИ.**
|
||
- Деньги (committed==SUM, честный потолок, resume $0, kill-9 ≤1 вызов, budget_usd-гейт эскалации), диспозиции (echo-эскалация+ре-гейт, flag+skip+continue, мусор не в TM), redrive (rescue+D15.3), живой OpenReadOnly-status, телеметрия/паспорта — **подтверждены исполнением, без исключений.**
|
||
- Консистентность D10: **суть выполнена (дрейф ≈0: 1 вхождение вне видимости флаггера — см. разбор)**; формальный порог 98% по флаггеру не достигнут из-за неполноты decl-сида — не машинный/модельный отказ, воспроизведено, actionable (находка 2).
|
||
- Верность НЕ мерена (D1.1, по контракту — пилот Ф2.5).
|
||
- *(Оговорки вердикта дополнены оркестратором при верификации, D24):* (а) **объём**: прогнан срез 25/2283 глав (~80k zh-символов), не «том целиком» буквы критерия 1 — полный объём двигается в этап B по этапности промта; (б) **coverage-гейт**: recall-тест «≥90% искусственных пропусков» НЕ гонялся (гейт OFF по дефолту) — остаётся отдельной задачей, вторая половина критерия 4 (ноль молчаливых потерь) выполнена; (в) **grok-биллинг** (под-критерий 2) не мерен — редактор glm-5 по D20.3, grok на wire отсутствовал; (г) **budget_usd эскалации** проверен только в направлении «>0 → стреляет» (D22.11), отказ по исчерпанию не исполнялся; (д) parallel-экспорт устарел для спасённого redrive'ом ch1/4 (показывает старый флаг без перевода) — перегенерить на этапе B.
|
||
|
||
### Вопросы владельцу
|
||
|
||
1. **Этап B (полная книга 2283 гл.): да / нет / потолок?** Этап A стоил **$0.41** за 25 глав; полная проекция **~$37** (glm-5-editor). Нужен явный «да» + `ceilings.book_usd`/`day_usd` (согласие на трату, Р6). Рекомендация: `book_usd≈45`, `day_usd` по темпу (сейчас ~$0.016/гл × скорость).
|
||
2. **Редактор этапа B:** glm-5 (как A) или ждать чистый xAI-ключ под grok-4.3? По D20.3 glm-5 для приёмки допустим (B — та же инфра-веха). Напоминание: glm-5-output на 28% дороже grok/токен.
|
||
3. **Сид перед этапом B:** дописывать полноту decl (nom+мн.ч.) сейчас (полигон), чтобы D10-флаггер стал осмысленным, или гнать этап B с флаггером как есть (гейт OFF, прогон не блокирует — просто шумный retrieval_state)? Приёмку инфры B не гейтит; но без этого D10-число останется заниженным.
|
||
|
||
*(Ревью оркестратора 11.07, воркфлоу 5 осей — всё исполнением по копии store/логам/экспортам: деньги воспроизведены до float-epsilon (все 130 чекпоинтов пересчитаны из usage×прайсов), классификация 55 промахов реплицирована бит-в-бит независимой реализацией матчера, SIGKILL/honest-stop/resume сверены по phase-логам, конфиг-паритет с pipeline-c1 подтверждён diff'ом с ровно двумя санкционированными дельтами. Правки текста и дополнительные оговорки внесены выше с пометками «испр. оркестратором». Ратификация вердикта и обе развязки — D24; ответы на вопросы 1–3 — в D24.4–24.5.)*
|
||
|
||
## 2026-07-11 — Оркестратор №3: лендинг приёмки этапа A и research/17, D24/D25, задания
|
||
|
||
Передача роли №2 принята (промт 4c48f89). Два ревью-цикла, оба мультиагентными воркфлоу, всё исполнением/по первоисточникам:
|
||
|
||
1. **Приёмка этапа A — верифицирована и залендена (7ca14c2), вердикт ратифицирован D24.** 5 осей ($0, по копии store/логам/экспортам): все хедлайны воспроизведены — деньги до float-epsilon, классификация 55 промахов бит-в-бит, SIGKILL/стоп/resume по логам, конфиг-паритет. Найдено и исправлено при лендинге: денежная опечатка ×10 ($0.0733→$0.00732), смешение двух resume в одной строке, «committed==SUM» после redrive (корректно «≥», D15.3), «0 дрейфа»→«≈99.5%» (1 вхождение гл.18/0 古月方源 раздельно — alias-слепое пятно вне видимости флаггера, зафиксировано D24.2); вердикт дополнен оговорками (объём 25/2283; coverage-recall не гонялся; grok-биллинг не мерен; budget_usd-отказ не исполнялся). Числа собственного пересчёта отчёта (1780/1938 и 370/390) третьей стороной не воспроизводятся (метод не приложен; реплики дают диапазоны, вывод устойчив) — методика этапа B обязана быть скриптом.
|
||
2. **Развязки приёмки ратифицированы (D24.3–24.4):** per-model floor `min_max_tokens` схемой (deepseek 8000 / gemini 8000 / kimi 16000; хоп берёт флор своей модели; блокер этапа B — при прайоре эха 25% без флора ≈$3.6 эскалаций-пустышек на книге) и post-check «базовый dst всегда проверяется» (код, не сид; 37/55 ложных) + сид-обогащение мн.ч. (полигон; 18/55). Порядок: **фиксы → единый resnapshot → этап B** (~300 глав по переопределению владельца, ~$5; редактор glm-5).
|
||
3. **research/17 — ревью завершено, залендено с ревью-шапкой (a148f41), абсорбция D25.** 12 агентов: 19/19 первоисточников существуют (0 несуществующих; 8 с нюансами — ключевой: морф-оговорка Exel et al. процитирована с инверсией); анти-якорение критиком соблюдено (лексический аудит §A, errata-паттерн), но НАШ мандат засеял §A осями и списком дыр → конвергенция ≠ независимое подтверждение (урок D25.10); метки §B2/«Итога» переграждены в PLAUSIBLE. Абсорбция: release-state контракт (задача с гейтом «до читательского экспорта»), fidelity-каскад shadow (Ф2, НЕ вперёд пилота), sequential-судья только как вложенный анализ D13.3, L3-расширения в спеку D22.7 (методика валидации — владельцу: конфликт с гардрейлом «не анализировать»), trust boundary в контракт сейчас (action-gate — именованный блокер Ф3), review bundle в minimal-форме, echo-калибровка полигону, over-stylization метрика в voice-арм. Курс не разворачивается; пилот Ф2.5 остаётся решающей точкой и не разбавляется.
|
||
4. **Задания выданы:** `BACKEND_PACKAGE5_SESSION_PROMPT.md` (floor + post-check + golden re-capture + coverage-recall/budget-отказ тесты + D23.4-микро) ∥ `POLYGON_PACKAGE4_SESSION_PROMPT.md` (сид мн.ч. — гейтит этап B; D22.8 major; проба судьи-дублёра; echo-калибровка; дополнения пре-регистрации пилота; P4-хвост) → затем этап B (`ACCEPTANCE_SESSION_PROMPT.md` ред. 11.07). Доко-дрейф ja-приёмки в 02-mvp-plan закрыт (v3.1); GPT_EXTERNAL_ASCENT_PROMPT — в архив.
|
||
5. **Владельцу (сводно, см. CURRENT-STATE):** «да»+потолок на этап B (после лендинга №5+сида); билингв-якорь пилота (Q1 — рекрут vs en-мост в пре-регистрации); publishable/waiver-подпись — при постройке экспорта; L3 FN-bound и методика валидации — при спеке; юр-пакет и чистый xAI-ключ — висят.
|
||
|
||
## 2026-07-11 (позже) — Оркестратор: качество-первым (D26)
|
||
|
||
Владелец прочитал 25 глав этапа A — **нечитаемо, слабейшее звено редактура**. Первый человеческий замер читаемости на реальной книге; D24 не пересматривается (приёмка мерила инфраструктуру по D1.1), но очередь перестроена — **D26**: этап B заморожен до читаемого конфига на 25 главах; полигону выдан промт **exp12 «диагностика качества»** (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`: армы draft-only / glm-5-моно / glm-5-билингв / grok-моно / grok-билингв / gemini-премиум / grok-без-констрейнтов на 3 чистых главах; слепые пакеты владельцу; LLM-судьи вторично с билингвальной сверкой смысла; root-cause разбор худших мест; кап $5; текущий xAI-ключ допустим — D19.4); полигон №4 — второй приоритет; бэкенд №5 без изменений, после него — пакет D15.2 (пер-стадийный reuse = дешёвая итерация редактора). Оценка research/17 владельцу дана честно (~6/10: две контракт-аддиции + задачи, по качеству перевода — ничего, не его мандат). Разъяснена «гигиена чистого ключа» (без data-sharing + без NSFW-истории; к exp12 не требуется).
|
||
|
||
**Позже (11.07, ночь): D27 — ключевая политика xAI по решению владельца.** Отдельный чистый ключ не заводится: текущий (с data-sharing-промо — уточнение владельца, supersedes скобку D19.4) идёт на все тесты и пилот, data-sharing отключается перед продом. «Чистый ключ» снят из блокеров пилота; вынужденная glm-5-замена умирает (grok доступен для exp12/пере-прогона/этапа B). Риски зафиксированы принятыми (копирайт 蛊真人 в обучение — только свои тесты; NSFW-история аккаунта), рекомендация-митигация: пилотный корпус (вне претрейна!) гнать при временно выключенном data-sharing — ждёт «да/нет» владельца. Механику отключения сверить с вендор-докой перед релизом (в чек-лист первого боевого прогона). Инцидент git при синке D26: `add -A` подмёл чужие незакоммиченные правки живой бэкенд-сессии №5 — размотано soft-reset'ом немедленно, содержимое чужих файлов не тронуто; впредь стейджинг только пофайловый.
|
||
|
||
**Ночь: бэкенд-пакет №5 отревьюирован и залендён (aa47e25), ратификация D28.** Внешнее ревью 5 осей исполнением в scratchpad-копиях (при двух живых сессиях в дереве), ~10 мутаций переисполнено независимо: **все оси ACCEPT, 0 critical/major**. Гипотеза «фиксы мертвы (golden пуст)» убита исполнением в обе стороны (флор фикстурной модели валит golden wire-диффом; oblique-only сид флипает вердикты 2/1/2→1/0/1) — пустой дифф data-driven. Scope чист (ровно 4 флора в models.yaml, exp12-файлы полигона не тронуты). D24.4 амендирован (recall-трейдофф — поймал сам пакет); fix-лист D28.3 (fbHash-пин хопа, provider_local×floor note, косметика, models.yaml→D27) — в пакет D15.2, промт которого выдаётся после развязки exp12 (D28.4: reuse×смена-редактора взаимодействуют).
|
||
|
||
**12.07 (позже): exp12 отревьюирован и залендён (75db9e1), ратификация D30 — флип D1 и пакет качественных фиксов.** 4 оси ревью, всё исполнением по diag/-артефактам и store-копии: ядро диагноза подтверждено (пассивность моно-редактора бит-в-бит: 3/6 grok-чанков байт-идентичны черновику; вёрстка — от промптов дословно; дефекты — в черновике; риг A1′≈прод). Снято ревью: «единогласный #1 A2» (gpt-5-mini 9/9 за A5; выбор glm-5 = цена ×13 + чистота), «fidelity-гейт пройден 5.0» (судьи давали 5.0 сырому черновику; A2 сам внёс инверсию «пожертвуй мной» → re-gate верности обязателен на пере-прогоне), утечка gemini 6/6 (не 4), мина статусов сида v2 (спорные со status:approved ушли бы в hard-constraints — до подписи владельца → draft). Ратифицировано D30: флип D1 моно→билингв (supersede D17.в), reflow, санитайзер, глоссарий v2 условно, exp13 бейк-офф переводчиков (+grok-ON арм), COGS-рамка (флип +15–25%, «$1.5–2»=опция Б отдельно), трек дешёвых моделей владельца (архитектура конфиг-первая — фронтир позже без переделки кода). Промты выданы: `BACKEND_D152_SESSION_PROMPT.md` (этап А гейтит пере-прогон) ∥ `POLYGON_EXP13_SESSION_PROMPT.md`.
|
||
|
||
**12.07: research/16 «Ридер-IDE» отревьюирован и залендён (458b0ea), ратификация D29.** 4 оси (источники ×2 по первоисточникам, независимая реплика $0-пробы, red-team контракта против кода/D15.2-спеки): **ACCEPT_WITH_FIXES**. Ядро принято: чанк = несущий якорь; precision-гейт YELLOW перед показом цветов (<10% ложных/флаг); детект-флаггер, не форс-структура; числовой confidence — никогда без QE. Поправки ревью: числа пробы — верх метрик-диапазона 44–58% на stale-базе (DB-истина 57.4%/70.4%, редактор 90.7%, не 93%); «полностью из read-model» — оверклейм (src/dst_range, source_file_hash, спаны = net-new → нужна настоящая `tmctl export`-команда с ассемблером); passport-3-тир = явный амендмент вердикт-правила D12/exp07 (при gate-on glossary_miss уже катится в fail); override-ключ = хеш СЫРОГО src-текста (не content_hash=rendered msgs — ловушка), override — новое provenance-состояние, не «verdict-нейтрален». Плюс находка реплики: 8/54 финалов несут markdown-`###` → нормализация выхода в экспорт-контракт. Абсорбция: D29.1(а–д) в пакет D15.2; полигону 4 задачи (precision — только post-hoc, пре-регистрацию exp12 не трогать); Ф3-хвост — в F3-brief.
|
||
|
||
**12.07 (вечер): тотальная ревизия документации (D31) по мандату владельца.** Мультиагентный staleness-аудит 5 кластеров (read-only, каждый клейм сверен с D-логом). Применено дисциплиной D23.3 (историю не переписывать — только баннеры/пометки/архив): (1) **PROGRESS.md разделён** — закрытая хроника 04–10.07 (~330KB) в `archive/PROGRESS-2026-07-04-10.md` с дословными заголовками (grep-рефы кода целы); живой файл 393→63KB (~85–100K токенов экономии на онбординге). (2) D-лог: карта актуальности сверху (superseded-цепочки). (3) CLAUDE.md: шапка-пайплайн БИЛИНГВ/~$0.85, счётчик D1–D31, «Текущее состояние» под дорожку D30.9. (4) Баннеры/пометки живых доков architecture/experiments/research (главное: опасные editor-grok строки `00-provider-quirks` — reasoning-off = no-op — исправлены; `04-editor-quality`/`08-cost-model` баннеры; `04-api-providers`/`gap-2` под D30/D14–D22; `13`/`14` post-check-каветка снята decl-путём). (5) Промты: старые в архив (ORCHESTRATOR v2 / ACCEPTANCE v1 / READER_IDE), написаны заново **ORCHESTRATOR хендофф №3** и **ACCEPTANCE под пере-прогон+этап B**. Сознательно не тронуто (низкий приоритет, покрыто картой D-лога): `01`/`02`/`10`-эксперименты; backend/README и eval/README — чужие зоны, в fix-листы D15.2/exp13.
|
||
|
||
**12.07 (ночь): exp13 отревьюирован и залендён с ревью-шапкой, ратификация D32.** 4 оси исполнением по diag/-сырью и конфигу @HEAD (при двух живых сессиях в дереве). **Сид v2 ПРИНЯТ** (трансформ байт-воспроизводим — дефект провенанса D30.5 закрыт; 6 спорных → status:draft, 0 hard-lock; мн.ч. D24.4 влито → полигон-№4 сид-задача закрыта; гейты 30/30 честны; бюджет $5.50 сходится; пре-рег заморожен; слепота цела) — гейтится подписью владельца 6 спорных+род «гу» (`diag/glossary_v2_signoff.md`). **Смена переводчика flash→pro ОТКЛОНЕНА по данным** (повтор класса exp12): «7 сигналов сходятся» ложно (делятся 3-3 flash-верность/pro-стиль; флагманы расходятся); #1 pro держится на gemini (gpt-5-mini-якорь ставит mistral #1, pro #3); pro ЕДИНСТВЕННЫЙ рендерит заглавный 蛊 как «гусеницы» ×2 — катастрофа класса забракованных армов; по верности (ось черновика-под-редактором) flash≥pro, pro ×3.7 дороже; подъём даёт свзяка, не переводчик. **Черновик остаётся flash** (= текущий конфиг, escalate_to=pro без изменений — коллизия снята). Методика-фиксы полигону в любой будущий бейк-офф (fidelity-first агрегация, катастроф-скрин, leave-one-out, per-call кап, grok-reasoning wire-квирк). Бэкенд отдельно отчитался «пакет D15.2 ЭТАП А завершён» — отревьюирую следующим циклом (код backend/ не лендил).
|
||
|
||
**12.07 (ночь, позже): бэкенд-пакет D15.2 ЭТАП А отревьюирован и залендён (00f8e36), ратификация D33.** 4 оси исполнением в scratchpad-копиях WIP: golden ACCEPT, wiring ACCEPT, sanitizer/spec-scope ACCEPT_WITH_FIXES. Верифицировано: golden байт-в-байт (TM_UPDATE_GOLDEN=1 → тот же sha256), дифф-класс ровно санкционированный, 3 новых поведения запинены мутацией (floor/union/isFinal); билингв {{text}} доказан рендер-пробой; reflow консистентен; **конфиг-флип D32 соблюдён** (editor=glm-5, draft=flash, эскалация не тронута, grok-редактора нет); build/vet/test-race зелёные; спека v3.1 только дизайн (этап Б не утёк); скоуп backend-only. **2 major-дефекта санитайзера, которые backend-ревью пропустило** (D33.1, чинить до пере-прогона, вливается в тот же resnapshot): (а) хвостовой класс не ловит «Основные правки для справки» — целевую gemini-утечку A5/5_1; (б) класс «битые словоформы» ложно флагает «около колонны»/«стало талой» как «Первок предок» (флаг-шторм на прозе). Промт фикса выдан (`BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`). Ответы бэкенду: editor grok→glm-5 подтверждён (D30.1); FALSE-POSITIVE-классы санитайзера НЕ приемлемы как «принятые FP» — чинить; этот resnapshot = единый resnapshot пере-прогона. Этап Б+В — промт после пере-прогона (исход чтения уточнит экспорт В).
|
||
|
||
## Бэкенд
|
||
|
||
*(Закрытая хроника пакетов №0–№4 (04–10.07) перенесена в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md) — ревизия D31.)*
|
||
|
||
### 2026-07-11 (пакет-5) — Фиксы приёмки этапа A (D24.3/24.4) + тесты-оговорки + D23.4-хвосты ЗАВЕРШЕНО
|
||
|
||
По `BACKEND_PACKAGE5_SESSION_PROMPT.md`. **Ничего не коммичено** (лендинг — оркестратор). `go build ./... && go vet ./... && go test -race ./...` — зелёные. Все новые тесты mutation-verified (реверт фикса валит именно его тест — подтверждено исполнением). Финал — агентское адверсариальное ревью диффа (4 оси find→refute-by-default verify, author≠reviewer): 1 CONFIRMED minor (неточность коммента о recall у union — закрыт, см. оговорку 4), 0 critical/major. Осведомлён о D26-заморозке этапа B: пакет №5 остаётся в очереди (line-4 CURRENT-STATE) и гейтит этап B; фиксы валидны независимо от editor-диагностики exp12.
|
||
|
||
**Сделано:**
|
||
|
||
1. **Per-model floor `min_max_tokens` (D24.3) — смена wire-поведения.** Поле в схему `capabilities` (`config.CapabilitiesConfig.MinMaxTokens`), резолвится через `ResolveCapability` (провайдер→модель) и живёт в `llm.Capability` (тег `json:",omitempty"`) → **фолдится в snapshot автоматически** и для primary (`ResolveCapability(st.Model)`), и для hop (`ResolveCapability(st.EscalateTo)`) — правка флора = громкий `--resnapshot`. Применение: `Runner.applyModelFloor(base, model)` ДО request_hash — на праймари (`stagerun.go`, по `st.Model`) И на хопе (`escalation.go` `maybeEscalate`, по `st.EscalateTo`: `hopMaxTokens` в fbHash И в runAttempt — ровно фикс этапа A, где хоп наследовал 2048/3291 → finish=length). Флоры в `models.yaml`: deepseek-v4-flash/pro **8000**, gemini-3.1-pro-preview **8000**, kimi-k2.6 **16000**; glm-5/5.1/grok-4.3 — без поля. Комментарии-заглушки «дать ≥8000/16000» → схема. Валидация `min_max_tokens<0`. README-техдолг обновлён (комментарий→схема). Флор не течёт в тело как ключ (`applyToBody` его не читает) — только через max_tokens; резерв EstimateUSD растёт на флорнутых вызовах, committed по факту не меняется.
|
||
|
||
2. **Post-check `dstFormPresent`: базовый dst всегда проверяется (D24.4) — смена вердиктов.** Множество проверяемых форм = `{normalizeTargetForm(dst)} ∪ declForms` ВСЕГДА (было: база — только фолбэк при пустом decl). Закрывает 37/55 ложных промахов этапа A (nominative_gap: approved-dst в именительном, decl только косвенные). Union монотонен (только промах→пасс) → precision↑; poisoning ловится по-прежнему (тест). recall на измеренных данных не страдает, НО строго это precision/recall-трейдофф с узким классом ложных пропусков — см. оговорку 4. inflection_gap (18/55, мн.ч.) остаётся сид-фиксом полигона.
|
||
|
||
3. **Golden re-capture — дифф-класс ПУСТОЙ (byte-identical, sha256 совпал, git diff пуст).** Прогон `TM_UPDATE_GOLDEN=1` не изменил `capture.golden`. Причина (проверено чтением фикстуры): (а) фикстура использует ТОЛЬКО нефлорнутые `fake-model`/`fake-fallback` → floor 0 → нет wire-изменений; `omitempty` держит Capability-JSON нефлорнутых моделей байт-в-байт → snapshot неизменен; (б) в сиде каждый entry с непустым decl уже несёт базовый dst первой формой, а два записанных промаха (紋章→герб ch1/0; 竜の紋章→Драконья печать ch2/0) НЕ имеют в проверяемом выходе ни базовой формы, ни decl-формы → union не спасает ни один → вердикты неизменны. Пустой дифф ⊆ санкционированных классов {(a) max_tokens флорнутых, (b) postcheck-вердикты}. Оба новых поведения покрыты выделенными mutation-verified юнит-тестами (golden их не упражняет — нет флорнутых моделей/oblique-only-сида в фикстуре).
|
||
|
||
4. **Тесты (все новые mutation-verified; числа):**
|
||
- `TestMinMaxTokensFloorPrimary/Hop/FoldedIntoSnapshot` (`maxtokens_floor_test.go`, новый): primary флор на wire (max_tokens==8000); хоп re-флорится по СВОЕЙ модели (primary=512, hop=9000 — доказывает per-call, не global); правка флора двигает snapshotID. Мутации: снять primary-флор → 512≠8000 FAIL; хоп наследует базу → 512≠9000 FAIL.
|
||
- `TestPostcheckBaseDstAlwaysChecked` (`memory_e1_test.go`): repro этапа A (方源→Фан Юань, oblique-only decl + именительный в выходе → промаха НЕТ) + негатив (dst и все формы отсутствуют → промах ЕСТЬ). Мутация: реверт к empty-decl-фолбэку → положительный кейс валится с `[{方源 Фан Юань confirmed}]`.
|
||
- `TestRunnerEscalationBudgetExhaustionDeniesLaterHop` (`escalation_budget_test.go`, новый; D24.1г): 2-главный epub, оба чанка эхают, budget 0.001 < 1 хоп. Гл.1 хоп допущен (spent 0<budget) → OK; гл.2 хоп ДЕНИЕД (spent≥budget) → флаг остаётся, edit skip, escalation-spend ровно 1 хоп (денег на деньед-хоп $0), 4 вызова, exit 2. Мутация: `spent<budget+1e9` → гл.2 эскалирует, 6 вызовов FAIL.
|
||
- `TestCoverageGateCatchesArtificialExcision` (D24.1б, предсуществовал — пакет coverage-гейта): синтетические пропуски (drop 30/40/50/60% предложений × zh/ja/en) → recall **12/12 = 100%**, контроль 0 ложных. Усилил: recall-число теперь ПИННУЕТСЯ ассертом (`caught==total`), не только логом; ≥90%-бар приёмки сохранён.
|
||
- `TestErrTailTruncatesOnRuneBoundary` (`render_test.go`; D23.4): >120 байт с континьюейшн-байтом на офсете 120 → валидный UTF-8, без U+FFFD, суффикс «…». Мутация: `!RuneStart(...)&&false` → `\xd1…` невалид FAIL (реверт фикса раньше выживал сьют — гэп закрыт).
|
||
- `TestRetryLoopLogsWillRetryOnlyWhileAttemptsRemain` (`httpllm_test.go`; D23.4, slog-capture): персистентный 5xx, MaxAttempts=3 → ровно 2 «will retry» (не на последней попытке), несут `retry_in`, финал — «exhausted». Мутация: снять `att+1>=MaxAttempts break` → 3 «will retry» FAIL.
|
||
- kill9 rounds 3→5 (`kill9_test.go`, D23.4). Комментарий golden_test.go:32 смягчён (AMBIGUOUS-ячейка: выбрано смягчение коммента, НЕ правка фикстуры — держит golden байт-в-байт; ambiguous=0 в капче задокументирован, AMBIGUOUS>0-ячейка = опц. расширение фикстуры отдельной ратификацией).
|
||
|
||
**Оговорки / вопросы оркестратору:**
|
||
1. **Golden не упражняет новые поведения** (флор/union) — фикстура нефлорнута и сид уже полон базой-в-decl. Покрытие — выделенными тестами. Рекомендация (опц., отдельная ратификация): при следующем осознанном golden-рефреше добавить в фикстуру (i) стадию на флорнутой модели и (ii) entry с oblique-only decl + именительным в выходе — тогда golden запинит и wire-max_tokens флора, и union-вердикт. Не делал сейчас: это правка фикстуры = golden-дифф класса ВНЕ {a,b} санкции пакета.
|
||
2. **Реальный `configs/models.yaml` теперь даёт другой snapshot** для deepseek/gemini/kimi (флор в Capability). Ожидаемо и совпадает с планом D24.5 «фиксы → единый resnapshot → этап B»; книга gu-zhenren вне git, resnapshot на её стороне. Тесты boevoy-конфига (echo_mine) зелёные.
|
||
3. **Порядок floor vs global MinMaxTokens:** оба — max(), порядок неважен; флор только ПОВЫШАЕТ (0 не понижает). Хоп: `max(унаследованная_база_праймари, флор_хопа)` — наследование бюджета сохранено (мандат), флор добавлен сверху.
|
||
4. **⚠ Пинг (зона docs/, формулировка D24.4): «recall не страдает» у union-фикса — НЕТОЧНО.** Адверсариальное ревью пакета (4 оси find→verify, 1 CONFIRMED minor) поймало: расширение accepted-set монотонно (только промах→пасс), это precision/recall ТРЕЙДОФФ, не бесплатный выигрыш. На данных этапа A убранные промахи — все ложные (precision↑, 37/55). Но есть узкий РЕАЛЬНЫЙ класс потери recall: entry, у которого decl БЕЗ именительного И база — нарицательное слово, которое встречается в выходе отдельно, тогда как сам термин для своего вхождения ДРОПНУТ (`剑→меч` дропнут как «клинок», но «меч» стоит рядом не по делу) → bag-of-words-проверка пасует, дроп замаскирован. На реальных данных редко (транслит-имена не совпадают случайно) и ТЕРПИМО пока это ФЛАГГЕР. **Если `postcheck_gate` когда-либо флипается в hard-gate — обязателен пере-замер recall на нарицательных терминах (не предполагать).** Код НЕ менял (union = ратифицированный D24.4); поправил только собственный коммент в `mempostcheck.go` на честный трейдофф + предупреждение о промоушене. Поведение/golden не тронуты. Рекомендация: в D24.4-логе смягчить «recall не страдает» → «на измеренных данных recall не страдает; hard-gate требует пере-замера».
|
||
|
||
### 2026-07-12 (пакет D15.2 · ЭТАП А — качественные фиксы D30, гейтят пере-прогон 25 глав) — ЗАВЕРШЁН · лендится ОТДЕЛЬНО и ПЕРВЫМ
|
||
|
||
По `BACKEND_D152_SESSION_PROMPT.md` этап А. **Ничего не закоммичено** (лендинг — оркестратор). `go build ./... && go vet ./... && go test -race ./...` — зелёные. Golden re-captured осознанно (инвариант №8). Зона чистая: правил только `backend/`; чужие правки `docs/PROGRESS.md` (полигон exp13, «Полигон»-секция) и `eval/exp13_*` НЕ трогал. Финал — адверсариальное ревью диффа (воркфлоу, 4 оси find→verify-by-refute, author≠reviewer): **14 CONFIRMED (все — ложные срабатывания санитайзера на легитимной ru-прозе; 0 после фиксов), 0 в интеграции/golden/контракте вне санитайзера.**
|
||
|
||
**Сделано (4 фикса D30):**
|
||
|
||
1. **Билингв-редактор (флип D1→D30.1, supersede D17.в).** `prompts/editor.md` стал БИЛИНГВ (форма D13.1 — простой general-промпт: блок `{{text}}`=исходник + инструкция сверять смысл/чинить кальки жестов, БЕЗ сложного инжиниринга). Раннер УЖЕ передаёт `Text: ch.Text` каждой стадии (`stagerun.go:59`) → editor.md просто ссылается на `{{text}}`. Моно-вариант сохранён отдельным файлом `prompts/editor-mono.md` (подтверждающий пилот-арм D13.1; тот же reflow, отличие — наличие исходника). Тест `TestEditorPromptIsMonolingual`→`TestEditorPromptIsBilingual`.
|
||
|
||
2. **Reflow (D30.2).** Из `translator.md` и `editor.md` убрано «Сохраняй разбивку на абзацы» (корень нечитаемости exp12 §2.5-S). Редактору — мандат нормативной репараграфизации (логические ru-абзацы; реплики с нового абзаца через тире «—»; без максимума длины). Bump prompt_version: translator `v0-draft`→`v1-reflow`, editor `v1-monolingual`→`v2-bilingual-reflow` в pipeline-c1.yaml И c2.yaml (label-SHA дисциплина — общие файлы). *(Полигон-пинг: reflow залёндён как активная инструкция ПОСЛЕ их exp13-армов; пере-прогон обязан идти на этом прод-промпте — согласовано.)*
|
||
|
||
3. **Output-санитайзер (D30.3) — новый детерминированный вердикт-гейт-класс** (`sanitizer.go`, `sanitizerVersion="sanitizer-v1"`). Opt-in `gates.sanitizer.enabled` (коверейдж-паттерн), фолдится в снапшот ТОЛЬКО при enabled (`sanitizerSnapshot`, зеркало coverageSnap → переедет в verdictSnapshotID с D15.2). Дефект → `FlagSanitizerDefect` (D2 flag+skip, non-retryable/non-escalatable). **Плагин в `classifyOutput` — бежит ТОЛЬКО на ФИНАЛЬНОЙ стадии** (`isFinal`, протянут через runAttempt/maybeEscalate): промежуточный черновик легитимно черновой, редактор его чистит — санитайзить draft значило бы скипать спасающий editor (правка по ревью). Пять классов, precision>recall: ведущая преамбула (gemini 6/6), хвостовой блок заметок/правок, markdown-###, латиница-фраза (≥5 ПРОБЕЛ-смежных лат-слов ИЛИ тяжёлая доля; hex/id и ≤4-словный мото НЕ триггерят), битые словоформы (невалидные знаковые биграммы ь/ъ+буква/сдвоенные; гомоглиф кир+лат в токене; junction-дубликация ≥4 БЕЗ containment). Regex Unicode-корректны ([а-яё]/\P{L} — RE2 \w/\b ASCII-only). Санитайзер в pipeline-c1.yaml ВКЛЮЧЁН (пере-прогон: gemini течёт преамбулой, премиум-редактор за санитайзером). **⚠ Честный recall-gap (пинится `TestSanitizerBrokenWordRecallGap`):** чистый орфо-раскол «Первок предок» детерминированно НЕ ловится (нужна Ф2-морфология).
|
||
|
||
4. **Golden re-capture + расширение фикстуры D28.2** (закрывает оговорку 1 пакета-5). Осознанный re-capture. Дифф-классы: (a) `"sanitizer":{...}` в payload + флаги ch6; (b) `MinMaxTokens` в Capability + max_tokens →4000(×12)/6000(×2); (c) oblique-only union ch5; (d) 2 новые главы. Пины (все mutation-verified исполнением): **floor** (fake-model 4000, fake-fallback 6000 — хоп берёт СВОЙ 6000); **union** (ch5 老人→старик oblique-only, финал несёт номинатив «старик» → postcheck_miss=0 только через union; revert→FAIL); **sanitizer+isFinal** (ch6 draft И edit несут преамбулу — с isFinal флагается edit-финал, draft ok; revert isFinal → флагается draft → golden diff).
|
||
|
||
**Тесты (mutation-verified):** `sanitizer_test.go` — 5 классов × firing+non-firing на реальной ru-прозе, ВКЛ. все 14 ревью-FP как non-firing (полиптотон «старик старика», «Хорошо хорошо», мото «sic transit gloria mundi», «Изменения —», «Комментатор», буква-ъ, em-dash+общий-нарратив) + hex-регрессия + recall-gap + детерминизм. Golden пинит floor/union/sanitizer/isFinal (мутации подтверждены). Obsolete-D1 тесты обновлены (`TestEditorPromptIsBilingual`, `TestBoevoyConfigEditorGlm5AndGrokReasoning`: editor grok-4.3→glm-5).
|
||
|
||
**НАШЁЛ БАГ (фикстура поймала):** латиница-детектор считал hex-теги (`138fd5c384e3`) «латинской фразой» (одиночные лат-токены между цифрами) → ложно флагал ЛЮБОЙ чанк с alphanumeric-id. Фикс: фраза считается только по ПРОБЕЛ-смежным лат-словам. Пинится hex-кейсом.
|
||
|
||
**Оговорки / вопросы оркестратору:**
|
||
1. **[РЕШЕНИЕ на подтверждение] Editor-модель pipeline-c1/c2 сменена grok-4.3→glm-5** (D30.1: билингв glm-5 — кандидат value; grok reasoning-off из редакторов СНЯТ = no-op). Формально стадия-А промта — про промпты/санитайзер/golden; смену МОДЕЛИ сделал, т.к. grok-off-editor ратифицированно-мёртв и оставить = внутренне-противоречивый конфиг (билингв-промпт на no-op reasoning-off grok). Draft оставлен deepseek-v4-flash (интерим). **Пинг: полигон exp13 рекомендует draft=deepseek-v4-pro** (их «Полигон»-запись выше, на ратификацию) — если ратифицируете pro, одна строка `model:` в pipeline-c1.yaml + пересмотр хоп-1.
|
||
2. **[recall-gap санитайзера, precision>recall]** битые словоформы ловят только детерминированный минимум (невалид-знаки/гомоглиф/junction-dup). Чистый раскол «Первок предок» — Ф2-морфология. Пинится как ОСОЗНАННАЯ граница. Достаточно ли (рекомендация: да — FP роняет хороший чанк в плейсхолдер владельцу)? Плюс латиница-мото ≥5 слов — принятый редкий FP (opt-in, redrive поднимает человеку).
|
||
3. **[санитайзер = гейт, не наблюдаемость]** реализован как opt-in гейт (flag+skip), НЕ наблюдаемость-с-промоушеном. Когда OFF — не бежит (нет retrieval_state-колонки → без миграции в этапе А). Always-on наблюдаемость счётчиков при OFF = +колонка (следующий пакет, если нужно).
|
||
4. **[resnapshot]** реальный pipeline-c1.yaml даёт другой снапшот (промпты+модель+санитайзер) — это ЕДИНЫЙ resnapshot пере-прогона (D30.9); gu-zhenren вне git.
|
||
|
||
**Попутно (fix-листы, безопасные, зелёные):** models.yaml — комменты xai/gemini приведены к D27 (единый ключ+data-sharing, off перед продом) и D22.6/exp11 (Gemini fail-closed на эротике, первичный судья эротики Grok; grok из редакторов СНЯТ D30.1); `mempostcheck.go:84` D24.3/D24.4→D24.4 (D28.3в); `escalation.go applyModelFloor` — note о provider_local×floor латентной интеракции (D28.3б). D22.9 `redrive --resnapshot` — покрытие УЖЕ есть (`TestParseRedriveSelectorExplicit` + `TestRedriveResnapshotAcceptsDrift`), no-op.
|
||
|
||
**Статус этапов Б/В (НЕ гейтят пере-прогон — по этапности промта идут следом):**
|
||
- **Спека D15.2 доведена до v3.1** (§0-бис: D22.2-амендменты — `SourceLang`/`TargetLang`→`verdictSnapshotID` (cjk-gate/coverage-коридор вне рендера; editor.md не рендерит target_lang), `Context.CacheTTL` демотирован до advisory (wire-инертен — `clients.go:38` шлёт `prov.CacheTTL`), `prov.CacheTTL`→`wireSnapshotID`; axis-тест `RequestHash` §12.9; паритетные не-цели §8 (classify-Source editor-строк, Retries/BudgetUSD вне ключа, транспорт); line-ref-нот про рефактор D23). Реализация РАЗБЛОКИРОВАНА в спеке.
|
||
- **Реализация Б (три хеша/guard_hash/verdict-split/миграция v8/fast-path v2/dry-run+--accept-rebill) и В (`tmctl export`/annotations/цвет-мап/override) — НЕ начаты этой сессией.** Осознанное решение: Б трогает денежно-критичный resume-путь (`RequestHash`, fast-path), где рывковая частичная реализация рискует ровно минами F1/D15 (тихая переоплата / stale-serve), а безопасный лендинг Б связан (fast-path снимает loud-гейт согласия → dry-run обязан его заменить, §7) — всё-или-ничего. Бюджет сессии ушёл на гейтящий этап А (полный цикл + ревью, поймавшее 14 реальных FP санитайзера) + v3.1-спеку. Хендофф чистый: спека v3.1 = дизайн-оф-рекорд, план §12 + тест-лист §12.9 готовы для следующей бэкенд-сессии. Дерево -race зелёное на границе А.
|
||
|
||
### 2026-07-12 (мини-сессия D33.1/33.2 — 2 обязательных фикса санитайзера + golden re-capture, гейтят пере-прогон) — ЗАВЕРШЕНО
|
||
|
||
По `BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`. **Ничего не закоммичено** (лендинг — оркестратор). `go build ./... && go vet ./... && go test -race ./...` — все пакеты зелёные; gofmt чисто. Зона: только `backend/` (3 файла: `sanitizer.go`, `sanitizer_test.go`, `testdata/golden/capture.golden`). Чужой untracked `eval/exp13_seed_signoff.py` (полигон) НЕ трогал. **Все 4 фикса/пина mutation-verified исполнением** (revert→FAIL, restore→ok — по каждому в изоляции).
|
||
|
||
**Сделано:**
|
||
|
||
1. **[major D33.1а] Хвостовой класс теперь ловит «Основные правки для справки:».** В `editMetaAnywhereRE` добавлена high-precision альтернатива `основн…правк…` — гейтится «… для справки» ИЛИ двоеточием, так что нарративное «Основные правки внёс редактор газеты» (без summary-метки) НЕ фаерит. Ловит и «Основные правки для справки:» (утечка A5/5_1, exp12:229), и colon-вариант «Основные правки:». Пины: 2 fire-теста, воспроизводящие СТРУКТУРУ утёкшего блока (заголовок + список правок; копирайтную главу не встраивал — диагностика в заголовке) + 1 clean-пин на нарративную форму без метки.
|
||
|
||
2. **[major D33.1б] Класс junction-дубликации СНЯТ (опция (б)), НЕ сужен.** Разобрал: опция (а) «перекрытие ≥ бо́льшей части ОБОИХ токенов» математически обратна — все четыре кейса (три FP + единственный синтетический реальный «Первопред предок») делят overlap РОВНО 4 руны, причём у реального кейса доля перекрытия НИЖЕ (4/9) чем у FP (4/5); никакой порог на длину/долю overlap их не разделяет, а канонический «Первок предок» не ловился и так (recall-gap). Класс ловил мало реального и много ложного на частом предлоге «около» → флаг-шторм на 25 главах. Убраны `junctionDuplicated`, конста `junctionOverlap`, петля в `detectBrokenWords`; остались две ZERO-FP сигнатуры (невалид-знак ь/ъ, гомоглиф кир+лат). Пины: 3 clean-кейса «около колонны»/«около колодца»/«стало талой» (mutation: восстановил детектор → все три фаерят). `TestSanitizerBrokenWordRecallGap` сохранён (assertion как есть; коммент обновлён — «Первок предок» по-прежнему не ловится, теперь by-design).
|
||
|
||
3. **[minor D33.2] Быстрые сужения (в тот же resnapshot, не блокеры):** (а) markdown-заголовок требует букву/цифру после хешей → декоративные сцен-брейки «# # #», «## ***», «### ---» больше не фаерят (пины + fire «### 1. Вступление»); (б) heavy-латиница исключает капитализированные бренд-токены из счёта (`hasUpperLatin`) → список «iPhone, iPad, MacBook, Apple Watch, Google Pixel» не фаерит, а лоуэркейс-англ-фраза ловится фразовым детектором (пин). Хвостовые «Примечание:»/«Комментарий:» уже ловятся `trailingNoteRE` — без правки. Разговорный префикс «Конечно!/Готово!» и recall-gap «Первок предок» — приняты как границы (не трогал).
|
||
|
||
4. **Golden re-capture (`TM_UPDATE_GOLDEN=1`) — дифф-класс РОВНО санкционированный.** `sanitizerVersion` `sanitizer-v1`→`v2` (правка правил = loud --resnapshot, инвариант №8). Аудит диффа исполнением: маскированный дифф (все hex-хеши + версия → плейсхолдер) **ПУСТ** — т.е. изменились ТОЛЬКО `snapshot_id` + `snapshot_payload` (строка `"version":"sanitizer-v2"`, дважды: fresh+resume) + каскад request/content-хешей, ключёванных на snapID. Ноль дрейфа disposition/flag/final_text/cost/postcheck_miss/injected_ids/term-order; 0× `snap_match=false`; счётчик строк 206=206. Фикстура ch6 упражняет только класс Preamble (не затронут) → новых санитайзер-вердиктов НЕТ, только version-fold-каскад. Другого класса диффа нет → стоп/пинг не потребовался.
|
||
|
||
**Итог по вопросу промта («сузил/снял»):** класс «битые словоформы» — junction-подкласс **СНЯТ** (precision-обоснование выше); два high-precision подкласса сохранены.
|
||
|
||
## Полигон
|
||
(секция параллельной сессии — записи добавлять сюда)
|
||
|
||
*(Закрытая хроника сессий 1–3, 18+ пакетов и exp10/11 (04–10.07) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
|
||
|
||
### 2026-07-11 — exp12 «диагностика качества 25 глав» (D26, приоритет №1) — армы+судьи+root-cause СДЕЛАНЫ, чтение владельца ждём
|
||
|
||
Мандат `POLYGON_QUALITY_DIAG_SESSION_PROMPT.md` + аддендум оркестратора (D27: единый xAI-ключ, grok-армы без ограничений; backend/ — живая сессия №5, ничего там не гонял/не читал WIP; пакеты чтения → `diag/reading/`). **Ничего не закоммичено.** Отчёт: `docs/experiments/12-quality-diagnosis.md`. Артефакты/тексты — `/home/ubuntu/books/gu-zhenren/diag/` (ВНЕ git). Скрипты `eval/exp12_*.py`. **Потрачено ≈$2.22 из капа $5** (армы $0.78 / судьи $1.31 / демо $0.13; 0 ошибок).
|
||
|
||
**Дизайн (пре-регистрация §1 заморожена ДО платных вызовов):** 3 чистые главы выбраны формулой (диалого-плотность на исходнике, high/mid/low = гл.7/5/14, не черри-пик); армы A0 черновик · A1 glm-моно(=этап A, store $0) · A2 glm-билингв · A3 grok-моно · A4 grok-билингв · A5 gemini-билингв · A6 grok-моно-без-констрейнтов; +A1′ контроль рига. Инъекция глоссария реконструирована из `retrieval_state.injected_ids` (воспроизводит боевой блок; rig-фиделити A1′≈A1 sim 0.984–1.0).
|
||
|
||
**Находки (мех. + судьи вторично; чтение владельца — главный, ещё не пришло):**
|
||
1. **Ядро: моно-редактор ПАССИВЕН.** Активность (1−sim к черновику): glm-моно **0.013**, grok-моно **0.001** (3/6 чанков char-identical!), grok-моно-без-констр 0.004, **grok-билингв тоже 0.006** (reasoning-off инертен в ОБОИХ режимах). Реально правят только glm-билингв 0.14 и gemini-билингв 0.34. На всех 54 чистых чанках этапа A медиана draft→final sim **0.978**, канцелярит-маркеров снято **0**. «Нечитаемо, слабейшее редактура» = **редактор почти не редактирует**; нечитаемость унаследована от черновика.
|
||
2. **Монолингвальный режим (D1/D17) — корень.** Моно-редактор и пассивен, и структурно СЛЕП к искажениям черновика (без исходника не знает, что «ударил головой»=磕头 земной поклон). Фикс = **билингв** (флип D1 — ратификация оркестратора).
|
||
3. **grok-4.3 reasoning-off непригоден как редактор** (no-op; худший у судей). exp04-ранг-1 был на дефолт-reasoning+билингв; боевой off = инертен (quality-transfer риск exp08/D26 подтверждён числами). Грок-редактор — только reasoning-ON (D6.2-резерв).
|
||
4. **Судьи (gemini+grok+gpt5-mini, кросс-семейно, self-family excl, 26/27 парс):** билингв ≫ моно; **A2 glm-билингв единогласный #1 по стилю И верность 5.0** — **fidelity-гейт «гладко-неверное» пройден** (билингв не купил гладкость ценой смысла — страх кальки D1 на срезе не подтвердился). Оговорка: судьи держат вёрстку константной → недооценивают структурный дефект; валидируют модель×режим, не фикс вёрстки.
|
||
5. **Root-cause (кейсы владельца, гл.1 сцена смерти, сверено с zh):** структурный дефект №1 = **построчные абзацы** (оба промпта велят «Сохраняй разбивку на абзацы» → пайплайн копирует кит. «предложение=строка», для ru деструктивно; бьёт по всем главам). Остальные кейсы — ошибки ЧЕРНОВИКА deepseek (时辰 не переведён, 派→«фракции» вместо секты, 磕头→«ударил головой», 练成→«совершенствование»), НЕ спасённые пассивным моно-редактором; 1 «smooth-wrong»-подозрение (清白之身→«невинность») проверено — верно. Демо §2.6 (gemini-билингв + разрешение реверстать абзацы + жанр-правила) чинит ПРАКТИЧЕСКИ ВСЕ кейсы одним прогоном (абзацы 49→25, «фракции»→«школы», «обесчестил»).
|
||
|
||
**Рекомендация конфига (provisional, §3; смену дефолта НЕ делаю — ратифицирует оркестратор):** три ортогональных фикса — (а) убрать «Сохраняй разбивку на абзацы» из брифа zh→ru + разрешить реверстку (дешевле всего, заметнее всего); (б) **редактор билингв, не моно** (флип D1); (в) модель — **glm-5 билингв** (судейский #1, верность 5.0, **$0.42/25 гл**), премиум-потолок gemini-билингв ($5.6/25 гл, селективно); grok-off снять. Плюс курация глоссария (моя зона): 春秋蝉 «Цикада Весны и Осени»? · 派→секта · 时辰→глосса. Дорожка: ратификация (флип D1+вёрстка = D-блок) → пере-прогон 25 глав кандидатом → чтение владельца → этап B.
|
||
|
||
**Раунд 2 (чтение владельца состоялось, §4 отчёта):** вердикт — **ни один из 7 не дотягивает до чтения** («машинный, модели не следят за сюжетом»). Новое: (1) **⚠ gemini (A5) ТЕЧЁТ преамбулой** в выход («Вот отредактированный перевод…», wire-verified 4 чанка) → дефект продакшн-редактора + раздул мою метрику активности A5; glm/grok чисто → **gemini понижен**. (2) **Глоссарий — сквозная первоклассная проблема** (владелец прав): все армы делят один сид; 修炼/人祖 — GAP (не в сиде, «совершенствование»/«Первопредок» = выбор модели → засидить культивация/Рен-Зу?), 蛊师/蛊虫/甲乙丙丁/花酒行者 — lock (гу-мастер/гу-тварь/разряд-Г/Винный-Странник → переголосовать с владельцем); таблица current→pref в §4.2, пере-курация = моя зона после утверждения. (3) **Идея «модель гуглит термины» (владелец) — в доках НЕТ**; ближайшее D25.5 (веб=недоверенные данные, webfetch=Ф3-блокер) → автолукап = Ф3+, near-term = засид глоссария из фан-конвенций; **пинг оркестратору** зафиксировать owner-proposal в архитектуру. (4) **Кандидат-фикс** (glm-билингв+реверстка+конвенции, `diag/arms/CAND/`) — конвенции ставит, БЕЗ утечки, но реверстку абзацев делает нестабильно → layout надёжнее отдельным reflow-пассом/сильной моделью. (5) **Монитор** `diag/reading/monitor.html` (локальный, вне хостинга — копирайт) — оригинал+варианты+кандидат, кнопки копировать для флагман-сверки владельца. Рекомендация §3 дополнена: **4-й равноправный фикс — пере-курация глоссария**; gemini понижен.
|
||
|
||
**Раунд 3 (флагман-сверка состоялась, §5 отчёта):** владелец прогнал монитор через ДВА фронтир-флагмана (GPT + Claude) слепо + любительский релейный перевод (контроль). Un-blind по ключу монитора (`diag/reading/_РАСШИФРОВКА_ФЛАГМАНОВ.md`; полный разбор Claude — `ОЦЕНКА_ФЛАГМАНА.md`). **Корректность проверена:** оба читали `monitor.html` (8 вариантов — столько только у монитора) + `translate.txt`, ключи не открывали, конфаундинга меток монитор↔пакеты нет (чистые 8-ранги), «переработки» выведены чтением и un-blind'ятся ровно в {A5,A2,CAND} = доказательство слепоты; единственный de-blind — gemini сам палит утечкой (мой стриппер снял ведущую форму, пропустил хвостовую в `A5/5_1`). **Конфиг-итог (оба флагмана СОГЛАСНЫ):** gemini-билингв (GPT 7.7 / Claude ранг 1.0 — лучшее ЯДРО, но течёт) > glm-билингв (7.3/2.7) ≈ КАНДИДАТ (7.2/2.3) ≫ **glm-МОНО=этап A (6.2/6.0, низ — подтверждает «нечитаемо»)** ≈ черновик/grok-no-op (~5). **Тройная триангуляция** (механика §2.2 + судьи §2.3 + 2 флагмана): билингв-переработка ≫ моно/пассив; практич. выбор — glm-билингв/КАНДИДАТ. **Флагманы добавили сверх:** (а) никто не publishable («крепкий сетевой», не издательская проза); (б) чтобы победить фан — 3 вещи: принудительный глоссарий + евро-вёрстка с тире + сноски на аллюзии; (в) нужен **output-санитайзер** (утёкшие заметки/непереведённые слова/латиница-в-кириллице/диакритики/битые словоформы — новый класс дефектов вне гейтов); (г) сквозные ошибки ЧЕРНОВИКА deepseek (族长≠家老, 本命蛊, 长生=бессмертие не долголетие, 失神, 花酒行者 теряет 花); (д) экспертные глоссарии от обоих — материал для пере-курации. **Стратегия честно:** сценарий A+B — инкремент даёт «лучше фана», но «издательский уровень» требует более сильного ЯДРА (переводчик, пилот Ф2.5) → приоритет ядра растёт.
|
||
|
||
**Ждём:** (1) **Пере-курация глоссария** — утверждение владельцем терминов (§4.2 + флагман-таблицы: врата→апертура, 真元, 本命蛊→жизненный гу, 长生→бессмертие, 族长/家老; спорное — Первопредок/Жэнь Цзу, культивация/совершенствование — за владельцем) → засид GAP + переголос lock → resnapshot. (2) **Оркестратору:** ратификация флипа D1 (моно→билингв) + бриф вёрстки + **новые задачи**: output-санитайзер (класс «мгновенной нечитаемости»), сноски-на-аллюзии, и — по сигналу флагманов «издательский уровень требует ядра» — поднять приоритет выбора базового переводчика/пилота Ф2.5; фиксация owner-proposal «автолукап терминов = Ф3». Дефолт сам не трогаю. (3) Полигон №4 (сид мн.ч.) — второй приоритет, не начат.
|
||
|
||
### 2026-07-12 — exp13 «бейк-офф ПЕРЕВОДЧИКОВ + финализация сида v2» (D30.6, приоритет №1) — СДЕЛАНО
|
||
|
||
Мандат `POLYGON_EXP13_SESSION_PROMPT.md` + D30.6/30.10. **Ничего не закоммичено, КРОМЕ пре-регистрации** (D30.10-гейт: коммит §1 до первого платного вызова — 5bc75d0, path-scoped только exp13-док). Отчёт: `docs/experiments/13-translator-bakeoff.md` (§1 пре-рег заморожен → §2 результаты → §3 рекомендация → §4 сид v2 → §5 лимитации → §6 итог). Артефакты `diag/arms13/` + `diag/reading/monitor13.{html,md}` (ВНЕ git). Скрипты `eval/exp13_*.py`.
|
||
|
||
**Рекомендация (на ратификацию оркестратора — дефолт НЕ трогал): переводчик пере-прогона = `deepseek-v4-pro`** (superseding deepseek-v4-flash в draft-стадии). Триангуляция **7 сигналов** (агент-верность/проза + GPT + Opus + API-судьи верность/стиль + гейты) сходится: deepseek-pro — общее место **2.50 ①**, лучший СТИЛЬ, 2-я верность, самый стабильный, без катастроф; ~$0.23/25 глав. Порядок: pro **2.50** > mistral 2.92 > grok 3.10 > flash-база 3.16 > glm-5 3.33. Нюансы: база flash — лучшая верность (2.53) но худший стиль (течёт англ. «cultivation», markdown-###); mistral — лучшая проза но режет смысл + выброс заголовков (полнота); grok/glm-5 нестабильны (grok перевернул 供奉; glm-5 成→«десятки»). **Гипотеза D30.6 «качество сменой одной строки model:» — подтверждена ЧАСТИЧНО** (pro>flash по стабильности/стилю, не разгромно; подъём даёт СВЯЗКА draft+билингв-редактор+sanitizer+глоссарий). Сквозные дефекты (англ.-течь, ###, 成) — цели sanitizer D30.3 + сид v2, не выбора переводчика. Все армы прошли гейты (0 эхо/refusal/объём — контест честный).
|
||
|
||
**Сид v2 финализирован (D30.5):** `guzhenren-seed-v2.yaml` (57 терминов) единым трансформом `eval/exp13_seed_v2.py` (супрсидит exp12-скрипт — дефект провенанса/статусов). Спорные (修炼/修行, 人祖, 花酒行者, 蛊虫, 本命蛊 + род «гу») → **status:draft** (не в hard-constraints до подписи); бесспорные (8 правок + 5 добавлений) → approved; влито мн.ч. (D24.4: 元石/凡人/蛊师). **Таблица владельцу на подпись: `diag/glossary_v2_signoff.md`.** Аддендум провенанса — exp12 §4-addendum.
|
||
|
||
**Флаги оркестратору/бэкенду:**
|
||
- **Reflow-строка (мой пинг D30.2 закрыт):** бэкенд залендил `translator.md` reflow как АКТИВНУЮ инструкцию (в 05:50, ПОСЛЕ моего арм-прогона); мои армы гнались с reflow-как-удалением. Ранг устойчив, но **пере-прогон 25 глав обязан идти на залёнженном прод-промпте**. Кросс-контаминации НЕ было (reflow-guard харнеса; все 24 вызова прошли ⇒ старый промпт был у всех армов; бэкенд правил файл после).
|
||
- **⚠ Перерасход бюджета:** армы $0.109 + судьи $5.387 = **$5.50 vs кап $5** (~+10%). Коарс-кап (между судьями, не по-вызову) + gemini думал дороже оценки ($3.14) + kimi $2.0. Дисциплинарный промах, зафиксирован; фикс — кап по каждому вызову. Данные собраны, дальше не трачу.
|
||
- **Слепота цела** (Opus поднял флаг «метки не перетасованы» — опровергнут кодом: три перестановки различны, mistral совпадением в слоте V3 трижды; попутно вскрыт реальный дефект mistral — выброс заголовков).
|
||
- Если pro становится праймари черновика — **пересмотреть хоп-1 эскалации** (был deepseek-pro; теперь первый кросс-семейный = glm-5.1).
|
||
|
||
**Ждём от владельца:** (1) **подпись спорных сида v2** (`diag/glossary_v2_signoff.md`) → проставлю статусы; (2) флагман-сверка через `monitor13.md` (опц., 4-й голос — GPT+Opus уже дали, сходятся с судьями). **Оркестратору:** ратификация draft=deepseek-v4-pro (D-блоком) → единый resnapshot (draft=pro, editor=glm-5-билингв, reflow, сид v2, sanitizer) → пере-прогон 25 глав с re-gate верности. Полигон №4 (сид мн.ч.) — влит в v2, отдельная задача закрыта.
|
||
|
||
## Память
|
||
(секция ресёрч-сессий памяти — записи добавлять сюда)
|
||
|
||
*(Хроника валидации банка (04–05.07, research/13–14, вердикт 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» (11.07 → research/16, D29) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
|