Ratify D28 accepting backend package 5 with D24.4 recall-tradeoff amendment and D15.2 fix-list additions; sync status docs

This commit is contained in:
Claude (backend session) 2026-07-11 02:16:46 +03:00
parent aa47e257c4
commit 4dabade8b4
3 changed files with 14 additions and 3 deletions

View file

@ -39,4 +39,4 @@ Go-бэкенд издательского художественного пер
## Текущее состояние (2026-07-11)
Фаза 0 ✅; машинерия Ф1 построена и отрефакторена (бэкенд №14, полигон №13 — D20D23; golden-гард = инвариант №8, OpenReadOnly-status). **Приёмка Ф1 этап A (25 глав 蛊真人 zh→ru, D18) ВЫПОЛНЕНА и ратифицирована с оговорками — D24**: $0.41, деньги/kill-9/resume/redrive подтверждены исполнением, дрейф ≈0; флаггер D10 шумел из-за decl-сида → фиксы ратифицированы (floor `min_max_tokens` D24.3, post-check базовый dst D24.4). **research/17 (внешняя критика GPT-5.6) принят — D25** (курс цел; release-state контракт до читательского экспорта, trust boundary в контракт). Книга на стенде `/home/ubuntu/books/gu-zhenren/` (GB18030; текст и производные ВНЕ git). **⚠ Качество-первым (D26): первое чтение владельцем 25 глав — нечитаемо (редактура); этап B ЗАМОРОЖЕН до читаемых 25 глав. К запуску владельцем: бэкенд-мини-пакет №5 (`BACKEND_PACKAGE5_SESSION_PROMPT.md`) ∥ полигон-диагностика exp12 (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md` — приоритет №1) → пере-прогон 25 глав выигравшим конфигом → этап B · ридер-IDE ресёрч**. Полигон №4 — второй приоритет. Реализация D15.2 — после №5 (v3.1-правки первым шагом — D22.2). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1; **ключ xAI един с data-sharing, off перед продом — D27**, «чистый ключ» снят). Ключи: DEEPSEEK, ZAI, KIMI, OPENAI, GEMINI, XAI, MISTRAL. Стенд: WSL2, GTX 1070 8GB (прокси-грабли: localhost из-под прокси даёт 403 — no-proxy транспорт для local).
Фаза 0 ✅; машинерия Ф1 построена и отрефакторена (бэкенд №14, полигон №13 — D20D23; golden-гард = инвариант №8, OpenReadOnly-status). **Приёмка Ф1 этап A (25 глав 蛊真人 zh→ru, D18) ВЫПОЛНЕНА и ратифицирована с оговорками — D24**: $0.41, деньги/kill-9/resume/redrive подтверждены исполнением, дрейф ≈0; флаггер D10 шумел из-за decl-сида → фиксы ратифицированы (floor `min_max_tokens` D24.3, post-check базовый dst D24.4). **research/17 (внешняя критика GPT-5.6) принят — D25** (курс цел; release-state контракт до читательского экспорта, trust boundary в контракт). Книга на стенде `/home/ubuntu/books/gu-zhenren/` (GB18030; текст и производные ВНЕ git). **⚠ Качество-первым (D26): первое чтение владельцем 25 глав — нечитаемо (редактура); этап B ЗАМОРОЖЕН до читаемых 25 глав. Бэкенд №5 залендён (D28: floor max_tokens + post-check union, все оси ACCEPT); идёт полигон-диагностика exp12 (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`) → пере-прогон 25 глав выигравшим конфигом → этап B · ридер-IDE ресёрч**. Полигон №4 — второй приоритет. Пакет D15.2 — промт после развязки exp12 (D28.4; v3.1-правки первым шагом — D22.2). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1; **ключ xAI един с data-sharing, off перед продом — D27**, «чистый ключ» снят). Ключи: DEEPSEEK, ZAI, KIMI, OPENAI, GEMINI, XAI, MISTRAL. Стенд: WSL2, GTX 1070 8GB (прокси-грабли: localhost из-под прокси даёт 403 — no-proxy транспорт для local).

View file

@ -1,7 +1,7 @@
# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-11). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1D25); этот файл — ЖУРНАЛ, не спека.**
> - **Фаза:** 0 ✅; машинерия Ф1 построена и отрефакторена (бэкенд №14, полигон №13 — все залендены после внешних ревью, D21D23). **Приёмка Ф1 этап A (25 глав 蛊真人) ВЫПОЛНЕНА и ратифицирована с оговорками — D24** ($0.41; деньги/kill-9/resume/redrive подтверждены исполнением; дрейф ≈0). **research/17 принят — D25.** **⚠ КАЧЕСТВО-ПЕРВЫМ (D26): владелец прочитал 25 глав — нечитаемо, слабейшее звено редактура (первый человеческий замер; конфиг glm-5-моно никем не выбирался как лучший — D20.3-замена + оспоренный D1/D17). Этап B ЗАМОРОЖЕН до читаемых 25 глав.** **Очередь: бэкенд-мини-пакет №5 (`BACKEND_PACKAGE5_SESSION_PROMPT.md`) ∥ полигон-диагностика exp12 (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`: армы моно/билингв × glm/grok/gemini на 3 главах, слепое чтение владельца, root-cause; кап $5) → пере-прогон 25 глав выигравшим конфигом → этап B → D15.2 (после №5 бэкенд может начинать v3.1+реализацию — смена редактора без переоплаты черновиков).** Полигон №4 — второй приоритет. Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6; чистый ключ СНЯТ — D27: единый xAI-ключ с data-sharing, off перед продом).
> - **Фаза:** 0 ✅; машинерия Ф1 построена и отрефакторена (бэкенд №14, полигон №13 — все залендены после внешних ревью, D21D23). **Приёмка Ф1 этап A (25 глав 蛊真人) ВЫПОЛНЕНА и ратифицирована с оговорками — D24** ($0.41; деньги/kill-9/resume/redrive подтверждены исполнением; дрейф ≈0). **research/17 принят — D25.** **⚠ КАЧЕСТВО-ПЕРВЫМ (D26): владелец прочитал 25 глав — нечитаемо, слабейшее звено редактура (первый человеческий замер; конфиг glm-5-моно никем не выбирался как лучший — D20.3-замена + оспоренный D1/D17). Этап B ЗАМОРОЖЕН до читаемых 25 глав.** **Очередь: бэкенд №5 ЗАЛЕНДЁН (D28, aa47e25: floor+union+тесты — все 5 осей ревью ACCEPT) → полигон-диагностика exp12 ИДЁТ (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`: армы моно/билингв × glm/grok/gemini, слепое чтение владельца, root-cause; кап $5) → пере-прогон 25 глав выигравшим конфигом → этап B → пакет D15.2 (промт после развязки exp12 — D28.4).** Полигон №4 — второй приоритет. Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6; чистый ключ СНЯТ — D27: единый xAI-ключ с data-sharing, off перед продом).
> - **Стек:** черновик DeepSeek V4 Flash (thinking ON — эхо-мина; temperature там wire-no-op) · редактор **grok-4.3** `reasoning_effort:none` (D1-монолингв оспорен — решает пилот-арм D13.1/D17) · судья/апекс Gemini 3.1 Pro (**wire-слаг `-preview`**; mandatory thinking; биллинг `additive_total` — D22.3) · эскалация A: DeepSeek V4 Pro → GLM-5.1 → Gemini-preview (заведена, пакет №3) · **канал B (18+): переводчик Mistral (18/18 чист вкл. эротику) · эскалация grok-4.3 reasoning-ON (⚠ НЕ на архаичных zh — register-оговорка D22.5) · abliterated-скрининг · судьи: эротика — Grok (дублёр гейтится пробой D22.6), violence/SFW — Grok+Gemini** (DeepSeek в explicit запрещён ToS — D14.1). Anthropic выброшен, OpenAI оставлен. 7 ключей.
> - **Экономика:** `experiments/08-cost-model-v2.md` (~$0.69 ранобэ / ~$10.94 вебновелла-500). ⚠ Resume: любой `--resnapshot` = переоплата книги — онгоинг гейтится D15.2 (v3.1 → реализация); exp08 v3 (annotator/voice-строки) заказан D21.8. Gemini-недоучёт 146×/вызов закрыт additive_total (D22.3).
> - **Ждём от владельца:** **слепое чтение сэмплов exp12** (~12 часа — ключевой сигнал диагностики) + его 1020 худших мест из 25 глав для root-cause · **решение по билингв-якорю пилота** (рекрут zh/ja→ru-аннотаторов или явное принятие en-моста в пре-регистрации — D25.9-Q1) · «да/нет» на митигацию контаминации пилотного корпуса (временное выключение data-sharing на окно пилотных прогонов — D27.4) · семантика «publishable»/подпись waiver — при постройке читательского экспорта (D25.1) · FN-bound и методика валидации L3 — при приёмке спеки (D25.4) · провенанс двух внешних 12-*-доков · решение по юр-пакету (+rights manifest, D25.8). *(Этап B заморожен D26; чистый xAI-ключ СНЯТ из блокеров — D27: единый ключ с data-sharing, отключение перед продом.)*
@ -92,6 +92,8 @@
**Позже (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×смена-редактора взаимодействуют).
## 2026-07-04 — Старт проекта (MVP-сессия)
- Прочитан стартовый бриф `START_PROMT.MD` (37 пунктов идей).

View file

@ -291,7 +291,7 @@ D1 остаётся дефолтом Фазы 1 (менять конфигура
1. **Вердикт ратифицирован: критерии Ф1 выполнены как инфраструктурная веха — с оговорками**, дополненными верификацией: (а) объём — срез 25/2283 глав, полный объём двигается в этап B; (б) recall-тест coverage-гейта «≥90% искусственных пропусков» не гонялся (гейт OFF) — **задача бэкенд-пакету №5** (синтетический мини-набор пропусков юнит/интеграционным тестом, без wire); (в) grok-биллинг не мерен (glm-5 по D20.3) — закроется пилотом/чистым ключом; (г) budget_usd эскалации проверен только в направлении «>0 → стреляет», отказ по исчерпанию — в тест-лист №5. Ни одна оговорка — не машинный отказ.
2. **Alias-слепое пятно post-check зафиксировано** (найдено red-team-ревью): 1 дрейф-вхождение вне видимости флаггера — гл.18/0 рендерит 古月方源 раздельно «гу юэ фан юань» (против «гуюэ»×154 в корпусе); longest-match поглощает вложенный алиас (古月) внутри полного имени, dst родителя (方源→Фан Юань) присутствует → промах не фаерится. Истинная консистентность этапа A ≈99.5%, не 100%. Класс редкий (~1/190 поверхностей клан-имени); фикс в Ф1 НЕ заказывается; полигону — пометка класса в `06-memory-risk-registry` при следующем касании + учесть в методике D10-пересчёта этапа B.
3. **Развязка (а) — per-model floor `min_max_tokens`: РАТИФИЦИРОВАН схемой** (capability-слой models.yaml, НЕ комментарий): применяется при деривации max_tokens ЛЮБОГО вызова модели — праймари-аттемпты И эскалационные хопы (`stagerun.go:89-92`; хоп наследует бюджет праймари — `maybeEscalate`), ДО request_hash (wire-видимо). Флоры по quirks: deepseek-v4-flash/pro **8000**, gemini-3.1-pro-preview **8000**, kimi-k2.6 **16000**; glm-5/5.1 (reasoning off) и grok-4.3 (`reasoning_effort:none`) — без флора. Основание: эмпирика этапа A — хопы deepseek-v4-pro получили унаследованные 2048/3291, вернули finish=length (один — 0 байт контента), ~3× цены draft впустую; при реализации прайора эха ~25% (exp10/D18) на полной книге это ≈$3.6 эскалаций-пустышек и ~25% глав без перевода → **флор = блокер этапа B**. Резерв-инфляция EstimateUSD тривиальна (≤$0.10/вызов на самом дорогом тарифе); committed не растёт (биллинг по факту). Изменение wire → снапшот → **golden update ратифицирован** (процедура инварианта №8, D23.1).
4. **Развязка (б) — post-check `dstFormPresent`: правка КОДА, сид — дополнительно.** Код: базовый dst ВСЕГДА в множестве проверяемых форм (union `declForms normalizeTargetForm(dst)`, `mempostcheck.go:85-96`) — закрывает 37/55 ложных промахов (nominative_gap). Рациональ кода-над-сидом: базовая форма — сама approved-форма; требовать её дублирования в decl — избыточный ввод, на который наступит каждая будущая книга; правка только снижает false positives (recall не страдает). Сид (полигон): дописать мн.ч. в `decl.forms` счётных терминов (元石/凡人/蛊师-класс) — закрывает 18/55 (inflection_gap); C4-автозаполнение decl остаётся Ф2. Правка кода меняет вердикты (verdict-ось) → golden update тем же пакетом; правка сида меняет memory content-hash (D8) → тот же resnapshot.
4. **Развязка (б) — post-check `dstFormPresent`: правка КОДА, сид — дополнительно.** Код: базовый dst ВСЕГДА в множестве проверяемых форм (union `declForms normalizeTargetForm(dst)`, `mempostcheck.go:85-96`) — закрывает 37/55 ложных промахов (nominative_gap). Рациональ кода-над-сидом: базовая форма — сама approved-форма; требовать её дублирования в decl — избыточный ввод, на который наступит каждая будущая книга; правка только снижает false positives *(уточнение D28.1, поймано самим пакетом №5: строго — precision/recall-трейдофф; узкий реальный класс ложных пропусков — нарицательная база рядом «не по делу» при дропнутом термине; на данных этапа A recall не пострадал; **флип `postcheck_gate` в hard-gate требует пере-замера recall на нарицательных терминах**)*. Сид (полигон): дописать мн.ч. в `decl.forms` счётных терминов (元石/凡人/蛊师-класс) — закрывает 18/55 (inflection_gap); C4-автозаполнение decl остаётся Ф2. Правка кода меняет вердикты (verdict-ось) → golden update тем же пакетом; правка сида меняет memory content-hash (D8) → тот же resnapshot.
5. **Порядок этапа B (ответ на развязку хендоффа «до или после фиксов»): ФИКСЫ — ДО.** (i) бэкенд-мини-пакет №5 (п.3+4 код, coverage-recall тест п.1б, budget_usd-отказ тест, golden re-capture, mutation-verified) ∥ сид-обогащение полигона; (ii) ЕДИНЫЙ resnapshot; (iii) этап B на новом снапшоте: **скоуп переопределён владельцем — срез ~300 глав, проекция ~$4.96** (нужен «да» + потолок; рекомендация `book_usd≈7`; editor glm-5 — сравнимость с этапом A и D20.3). Этап B дополнительно обязан: echo-rate чекпоинт против прайора ~25% (статистика на ~680 чанках vs 3.5% этапа A на 57); контроль эскалаций после флора (length-класс хопов должен начать проходить ре-гейт; cjk_artifact-класс гл.1 останется — интринсик); перегенерация parallel-экспорта (stale ch1/4); методика D10-пересчёта — скриптом в артефактах.
6. **Ответы на вопросы отчёта владельцу:** №1 — скоуп B изменён владельцем на ~300 глав, потолок за ним; №2 — glm-5 (grok ждёт чистого ключа и нужен пилоту, не приёмке); №3 — сид дописать ДО этапа B (тот же resnapshot, что и фиксы; D10-флаггер на B становится осмысленным).
@ -330,6 +330,15 @@ D1 остаётся дефолтом Фазы 1 (менять конфигура
4. **Митигация контаминации (рекомендация оркестратора, дёшево):** на окно прогонов ПИЛОТНОГО корпуса (вебновеллы вне претрейна — их «чистота» = валидность замеров) data-sharing временно выключать, затем включать обратно; PD-классика и 蛊真人 (в претрейне) — шарить без ограничений. Статус: предложено владельцу, ждёт его «да/нет» к пре-регистрации пилота.
5. **Перед релизом:** механику отключения сверить с вендор-докой xAI (немедленность, независимость от промо-периода; уже переданное не отзывается) — правило двух направлений; задача уходит в чек-лист первого боевого прогона.
## D28. Приёмка бэкенд-пакета №5 (11.07 ночь, оркестратор). ✅
Внешнее ревью (5 осей: floor-wire / postcheck-union / golden-empty / tests-mutations / scope-report; всё исполнением в scratchpad-копиях при ДВУХ живых сессиях в дереве; ~10 мутаций переисполнено независимо, повторный `-race` после каждого реверта): **все оси ACCEPT, 0 critical/major. Пакет залендён (aa47e25).** Ключевая проверка: альтернативная гипотеза «floor/union мертвы (потому golden пуст)» убита исполнением в обе стороны — флор на фикстурной модели валит golden диффом wire-класса (11×max_tokens + snapshotID), oblique-only сид флипает postcheck-вердикты 2/1/2→1/0/1; пустой дифф — data-driven (фикстура нефлорнута, сид несёт базу первой формой). Scope чист (ровно 4 флора в models.yaml, PROGRESS — один аддитивный ханк, чужие exp12-файлы не тронуты, контрабанды нет).
1. **D24.4 амендирован** (поймано самим пакетом, подтверждено ревью репро 剑→меч): «recall не страдает» → честный precision/recall-трейдофф; флип `postcheck_gate` в hard-gate — только после пере-замера recall на нарицательных терминах (пометка внесена в D24.4).
2. **Ответы на оговорки пакета:** (1) расширение golden-фикстуры (флорнутая модель + oblique-only entry) — ПРИНЯТО как задача следующего ОСОЗНАННОГО golden-рефреша (реализационный пакет D15.2; ревью подтвердило исполнением, что это дифф вне санкции {a,b} текущего пакета — отложено корректно); (2) resnapshot реального конфига — ожидаем, ровно план D24.5; (3) композиция floor×global = max() подтверждена исполнением в обе стороны (global 9500 бьёт флор 8000; флор бьёт global 512).
3. **Fix-лист бэкенду (в реализационный пакет D15.2, попутно):** (а) mutation-pin fbHash-зеркала хопа — hop-checkpoint-replay тест (краш после settle хопа + resume при исчерпанном budget_usd: десинк fbHash↔runAttempt сегодня выжил бы сьют; кода-дефекта НЕТ — гэп покрытия); (б) note/реестр: `provider_local` MaxTokens-override молча побеждает флор на wire для local-моделей (сегодня флорнутых local нет — латентно, не пкг5-дефект); (в) косметика: коммент `mempostcheck.go:84` «D24.3/D24.4»→«D24.4»; (г) стейл-комменты models.yaml «чистый ключ/data-sharing» привести к D27 при следующем касании файла.
4. **Очередь бэкенда:** свободен. Реализационный пакет D15.2 (v3.1-правки D22.2 первым шагом + fix-листы D22.9/D23.4-остаток/D28.3) — промт выдаётся ПОСЛЕ развязки exp12: селективный reuse и смена редактора взаимодействуют (D20.1-Q1 пер-стадийная гранулярность), исход диагностики может добавить пакету требования — не плодить ревизии промта.
## Сопутствующие правки доков (оркестратор, 09.07)
`02-mvp-plan.md` → v3 (мёртвые пороги/интерим-18+/фазовые списки синхронизированы с D-логом); обе `*.puml` → v3 (убраны Opus/BYOK/«≤2×», дорисованы ре-гейт эскалации, три класса отказов D12, человек в петле, фазовые пометки); superseded-баннеры на `research/01, 02, 03, 04, 09`; провенанс-шапки на `research/12-architecture-as-antipattern.md` и `12-common-failures.md` (происхождение не зафиксировано — до уточнения владельцем числа оттуда не абсорбировать как факты); закрытые промты → `docs/archive/prompts/`; онбординг: корневой `CLAUDE.md` + `backend/README.md` + `eval/README.md`.