Ratify D31 documentation revision: actuality map, banners and supersession marks across architecture/experiments/research, fixed archive relative links, bumped contract range

This commit is contained in:
Claude (backend session) 2026-07-11 05:50:23 +03:00
parent 25e7942a7e
commit 3faecdee03
15 changed files with 69 additions and 45 deletions

View file

@ -1,9 +1,9 @@
# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-12). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1D30); этот файл — ЖУРНАЛ, не спека.**
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-12). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1D31); этот файл — ЖУРНАЛ, не спека.**
> - **Фаза:** 0 ✅; Ф1-машинерия ✅ (D21D28); **приёмка этап A ✅ с оговорками (D24); этап B заморожен (D26) до читаемых 25 глав.** **exp12-диагностика ПРИНЯТА (D30): «нечитаемо» = пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + нет санитайзера; дефекты смысла — в черновике.** Ратифицировано D30: **флип D1 моно→билингв** (supersede D17.в; re-gate верности на пере-прогоне обязателен), reflow-вёрстка (промпты чинятся), output-санитайзер (новый гейт-класс), глоссарий v2 условно (спорные → draft до подписи владельца), **exp13 бейк-офф ПЕРЕВОДЧИКОВ** (deepseek качеством не мерен — главный невыжатый рычаг), COGS флипа +1525% (~$0.85/ранобэ; «$1.52» = отдельная опция Б). **Очередь: бэкенд-пакет D15.2 (`BACKEND_D152_SESSION_PROMPT.md`: этап А=промпты+санитайзер гейтит пере-прогон; Б=v3.1+реализация; В=export/override D29) ∥ полигон exp13 (`POLYGON_EXP13_SESSION_PROMPT.md`: переводчики + сид v2) → единый resnapshot → пере-прогон 25 глав кандидатом → чтение владельца → этап B.** Трек владельца: дешёвые модели сейчас, фронтир потом (архитектура конфиг-первая — D30.7). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6).
> - **Стек (пост-D30):** черновик — **кандидат по exp13** (интерим deepseek-v4-flash, thinking ON — эхо-мина) · редактор — **БИЛИНГВ (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). ⚠ Resume: любой `--resnapshot` = переоплата книги — онгоинг гейтится D15.2 (v3.1 → реализация); exp08 v3 (annotator/voice-строки) заказан D21.8. Gemini-недоучёт 146×/вызов закрыт additive_total (D22.3).
> - **Экономика:** `experiments/08-cost-model-v2.md` — до-флиповый ~$0.69 ранобэ / ~$10.94 вебновелла-500; **после флипа D1 → ~$0.85/ранобэ (+1525%, D30.4)**; «$1.52» = опция Б (селективный апекс+память, НЕ подписана); пере-съём = exp08 v3 (D21.8/D25.8). ⚠ Resume: любой `--resnapshot` = переоплата книги — онгоинг гейтится реализацией D15.2 (идёт, D30.9). Gemini-недоучёт 146×/вызов закрыт additive_total (D22.3).
> - **Ждём от владельца:** **подпись спорных терминов сида v2** (修炼/культивация · 人祖/Первопредок · род «гу» · 花酒行者 — таблицу даст exp13) · **флагман-сверка exp13** (переводчики, monitor-паттерн) · DashScope-ключ для qwen-арма exp13 (опционально) · **планка запуска** (лучше-фана/гибрид/издательский + готовность к COGS опции Б ~$1.52 — мемо-эскалация 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 $24, BYOK, Anthropic-Sonnet), переопределённые позже — см. блок выше и 05-decisions-log.
@ -98,6 +98,8 @@
**12.07: research/16 «Ридер-IDE» отревьюирован и залендён (458b0ea), ратификация D29.** 4 оси (источники ×2 по первоисточникам, независимая реплика $0-пробы, red-team контракта против кода/D15.2-спеки): **ACCEPT_WITH_FIXES**. Ядро принято: чанк = несущий якорь; precision-гейт YELLOW перед показом цветов (<10% ложных/флаг); детект-флаггер, не форс-структура; числовой confidence никогда без QE. Поправки ревью: числа пробы верх метрик-диапазона 4458% на 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 разделён** — закрытая хроника 0410.07 (~330KB) в `archive/PROGRESS-2026-07-04-10.md` с дословными заголовками (grep-рефы кода целы); живой файл 393→63KB (~85100K токенов экономии на онбординге). (2) D-лог: карта актуальности сверху (superseded-цепочки). (3) CLAUDE.md: шапка-пайплайн БИЛИНГВ/~$0.85, счётчик D1D31, «Текущее состояние» под дорожку 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/D14D22; `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.
## Бэкенд
*(Закрытая хроника пакетов №0№4 (0410.07) перенесена в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md) — ревизия D31.)*

View file

@ -11,7 +11,7 @@
## Структура
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1D30); при конфликте с любым доком он выше.**
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1D31); при конфликте с любым доком он выше.**
- `01-decisions.md` — принципы Р1Р10; `02-mvp-plan.md` — фазы и приёмка (v3, 09.07); `03-implementation-notes.md` — контракты Фазы 0; `04-unhappy-paths.md` — ~70 режимов отказа → механизм; `06-memory-risk-registry.md` — реестр рисков банка памяти; **[`07-strategic-review.md`](architecture/07-strategic-review.md) — стратегический аудит (09.07): вердикт end-to-end, топ-риски, курс-коррекции**; `components.puml`/`pipeline.puml` — диаграммы v3 (владелец смотрит PlantUML-расширением VS Code; вручную НЕ рендерить).
- `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22).
- `research/` — фактура исследований 0405.07: `0110` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**.

View file

@ -373,6 +373,17 @@ D1 остаётся дефолтом Фазы 1 (менять конфигура
9. **Дорожка:** бэкенд-пакет D15.2 (промт ВЫДАН — `BACKEND_D152_SESSION_PROMPT.md`: v3.1 + фикс-листы D22.9/D23.4-остаток/D28.3 + D29.1-экспорт/override + D30.2/30.3 промпты/санитайзер + golden-refresh с расширением фикстуры D28.2) ∥ полигон exp13 (`POLYGON_EXP13_SESSION_PROMPT.md`) + финализация сида v2 → единый resnapshot → **пере-прогон 25 глав кандидат-конфигом** (переводчик по exp13; glm-5-билингв; reflow; сид v2; санитайзер) с re-gate верности → чтение владельца → этап B.
10. Гигиена полигону (из ревью, в exp13): каждый платный скрипт персистит usage/cost; пре-регистрацию коммитить до первого платного вызова; parse-чек полноты ранжирования судьи; флагман-сырьё — в diag/.
## D31. Тотальная ревизия документации (12.07, оркестратор, по мандату владельца). ✅
Проект за 8 дней дорос до D30; половина «истин» в онбординг-доках перевёрнута (CLAUDE.md в шапке говорил «монолингвальный редактор grok-4.3»), PROGRESS распух до 393KB. Полный staleness-инвентарь мультиагентным аудитом (5 кластеров: architecture / experiments / research / PROGRESS / root+prompts; read-only, каждый клейм сверен с D-логом построчно). **Дисциплина: исторические записи НЕ переписываются (D23.3) — только баннеры/inline-пометки/архив/актуализация живых доков.** Применено:
1. **PROGRESS.md разделён (9e3762e):** закрытая хроника 0410.07 (~330KB: день-0, стратревью, пакеты бэкенда №04, сессии полигона 13+18+, память/голос/ридер-IDE) → `archive/PROGRESS-2026-07-04-10.md` с точка-во-времени-баннером и **дословно сохранёнными заголовками** (на них ссылаются комменты кода `models.yaml:31`/`models.go`/`llm.go` и eval-скрипты — grep-совместимость). В живом файле: CURRENT-STATE + отчёт приёмки этапа A + оркестраторские записи 1112.07 + якоря секций «Бэкенд/Полигон/Память/Голос/Ридер-IDE» для аппенда сессий. **393→63KB (~85100K токенов экономии на онбординге).** Единственный числовой line-ref в репо (`05-decisions-log:122 → PROGRESS:230`, уже сломан дрейфом до сплита) и 5 name-refs живых доков репойнчены на архив.
2. **D-лог получил карту актуальности сверху** (что чем superseded — быстрый чек при чтении контракта); титул обновлён до D1D31.
3. **CLAUDE.md актуализирован:** шапка-пайплайн (моно-grok → БИЛИНГВ-кандидат-glm-5, COGS ~$0.85), счётчик D1D31, блок «Текущее состояние» под дорожку D30.9; гардрейл grok reasoning-off помечен «из редакторских ролей снят»; добавлен указатель на архив PROGRESS. Гардрейлы/зоны/онбординг-порядок — целы.
4. **Баннеры/пометки живых доков:** architecture — шапка-указатель на `01-decisions` (модели/цены проигрывают D-логу), точка-во-времени на `03-implementation-notes`/`07-strategic-review` (вердикты развязаны), inline на `02-mvp-plan` v3.2 (флип D1, дорожка), `06-memory-risk-registry` (+D24.2/G2/D28.1), критическая пометка §3.2 (content-hash, не счётчик — D8). experiments — **опасные editor-grok строки `00-provider-quirks` (reasoning-off = no-op редактор) исправлены** + gemini-судья/additive_total/преамбула-утечка дописаны; баннеры на `04-editor-quality` (рекомендация отменена) и `08-cost-model-v2` (до-D30 экономика); указатели на `09-pilot-protocol` (пост-D13 амендменты) и `07-coverage-precision` (content_filter жив на Gemini). research — баннер `04-api-providers` обновлён под D30, баннер `11-gap-2` (канал B пересобран), указатели `15`/`17` (флип D1 меняет editor-слот/§C), inline `13`/`14` (post-check реализован decl-путём, не pymorphy).
5. **Промты:** старые версии в архив (`ORCHESTRATOR v2`, `ACCEPTANCE v1`, `READER_IDE` — задача закрыта D29); **написаны заново: ORCHESTRATOR хендофф №3** (пост-D31, дорожка D30.9, столпы обновлены) и **ACCEPTANCE под пере-прогон+этап B** (баннерная стратегия старого исчерпала себя — три противоречащих слоя; сохранены золотой чек-лист методологии этапа A + re-gate верности D30.1 + методика D10 скриптом + alias-слепое пятно + echo-rate чекпоинт).
6. **Сознательно НЕ тронуто (низкий приоритет, покрыто картой актуальности D-лога):** `01-token-calibration`/`02-refusal-benchmark`/`10-explicit-benchmark` — нишевые закрытые эксперименты, стейл-части кросс-ссылаются корректно; правки backend/README (D1D23→D1D31, «D15.2 после правок») и eval/README (exp04/exp08-каветки) — ЧУЖИЕ зоны, переданы в fix-листы пакета D15.2 и exp13 (не правил из оркестраторской ревизии). Провенанс `12-*`-доков — по-прежнему открытый вопрос владельца.
## Сопутствующие правки доков (оркестратор, 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`.

View file

@ -55,16 +55,16 @@
## 2026-07-09 — Стратегическое ревью + консолидация доков (оркестратор)
- **Стратегическое ревью выполнено** → [`architecture/07-strategic-review.md`](architecture/07-strategic-review.md) (коммит b1d54b6). Метод: 14 сборщиков (8 репо-аудиторов + 6 SOTA-веб) → 9 адверсариальных верификаторов (8 CONFIRMED / 1 PARTIAL; 6 находок воспроизведены исполнением временных Go-тестов). Вердикт: **архитектура end-to-end цела**, наука-2026 подтверждает C1-схему/чанки+гейты/терминологию/DeepSeek-draft; детерминированному пути памяти аналогов не найдено. Топ-находки: D1-моноредактор получил внешне измеренный налог верности (2605.13368, вкл. en→ru); `--resnapshot` = переоплата книги (блокер онгоинга); 4 дыры границ доверия памяти (одна — ложно отсеяна 44-агенткой 0/3); слепота exp04 структурно сломана (ключ в артефакте при оценке); memory_eval контаминирован эхом глоссария; 18+ — ноль замеров (critical); DeepSeek выбыл из explicit-канала B по ToS 27.03.2026.
- **Стратегическое ревью выполнено** → [`architecture/07-strategic-review.md`](../architecture/07-strategic-review.md) (коммит b1d54b6). Метод: 14 сборщиков (8 репо-аудиторов + 6 SOTA-веб) → 9 адверсариальных верификаторов (8 CONFIRMED / 1 PARTIAL; 6 находок воспроизведены исполнением временных Go-тестов). Вердикт: **архитектура end-to-end цела**, наука-2026 подтверждает C1-схему/чанки+гейты/терминологию/DeepSeek-draft; детерминированному пути памяти аналогов не найдено. Топ-находки: D1-моноредактор получил внешне измеренный налог верности (2605.13368, вкл. en→ru); `--resnapshot` = переоплата книги (блокер онгоинга); 4 дыры границ доверия памяти (одна — ложно отсеяна 44-агенткой 0/3); слепота exp04 структурно сломана (ключ в артефакте при оценке); memory_eval контаминирован эхом глоссария; 18+ — ноль замеров (critical); DeepSeek выбыл из explicit-канала B по ToS 27.03.2026.
- **Роль оркестратора передана этой сессии (решение владельца 09.07).** Владелец подтвердил курс: Rust-переписывание — НЕТ до пост-пилота (Р1/Go остаётся); архив + онбординг-доки — одобрены.
- **Ратифицированы D13D17** ([05-decisions-log](architecture/05-decisions-log.md)): D13 поправки пилота (арм моно-vs-билингв, гетерогенные кандидаты C2, панель 23 семейства × 11+ повторов, починка харнесса ДО прогона); D14 канал B (минус DeepSeek-explicit, плюс проба Mistral, xAI-опора = AUP); D15 resume/онгоинг (комментарии-фиксы + status/redrive сейчас, content-addressed reuse — гейт онгоинга); D16 фиксы границ памяти; D17 D1 понижен до «дефолт Ф1, оспорен — решает пилот».
- **Ратифицированы D13D17** ([05-decisions-log](../architecture/05-decisions-log.md)): D13 поправки пилота (арм моно-vs-билингв, гетерогенные кандидаты C2, панель 23 семейства × 11+ повторов, починка харнесса ДО прогона); D14 канал B (минус DeepSeek-explicit, плюс проба Mistral, xAI-опора = AUP); D15 resume/онгоинг (комментарии-фиксы + status/redrive сейчас, content-addressed reuse — гейт онгоинга); D16 фиксы границ памяти; D17 D1 понижен до «дефолт Ф1, оспорен — решает пилот».
- **Консолидация доков:** `02-mvp-plan` → v3 (мёртвые пороги сняты, интерим-18+ переписан, фазы синхронизированы); обе `*.puml` → v3 (минус Opus/BYOK/«≤2×», плюс ре-гейт эскалации, три класса отказов D12, человек в петле, фазовые пометки); superseded-баннеры на `research/01/02/03/04/09`; провенанс-шапки на два внешних `12-*`-дока; закрытые промты → `docs/archive/prompts/`; онбординг: корневой `CLAUDE.md` + `backend/README.md` + `eval/README.md` + обновлённый `docs/README.md`.
- **Хендофф-промты выданы (09.07):** [`BACKEND_SESSION_PROMPT_REVIEW_FIXES.md`](BACKEND_SESSION_PROMPT_REVIEW_FIXES.md) — гигиена (комментарии resume, prompt_version-бамп) → фиксы памяти D16 → `tmctl status`/`redrive` → спека content-addressed resume (D15.2) → reasoning-буфер additive (D13.6) → перепроверка отсевов 44-агентки; [`POLYGON_SESSION_PROMPT_PILOT_HARNESS.md`](POLYGON_SESSION_PROMPT_PILOT_HARNESS.md) — memory_eval (эхо-контроль, полные выходы, fidelity, M0M3, синк с Go) → гигиена оценочных артефактов → протокол пилота v2 (D13) → проба Mistral (⚠ нужен `MISTRAL_API_KEY` от владельца) → kana-precision → подготовка вебновелл-среза. ⚠ Порядок запуска: бэкенд-сессию первой или одновременно — полигон синкает зеркало памяти с кодом ПОСЛЕ D16-фиксов (в промте оговорено).
### 2026-07-09 (вечер) — Внешнее ревью и приёмка обоих пакетов (оркестратор)
- **Оба пакета приняты и залендены** (backend 153277e, eval 9afea37) после внешнего ревью (7 ревьюеров, всё исполнением: CLI-прогоны на моках $0, мутационные реверты в scratchpad-копии, пересчёт данных из raw). Вердикты: backend-d16 / backend-ops / spec-d15 / eval-harness / eval-protocol — ACCEPT_WITH_FIXES; backend-misc / координация — ACCEPT. Самоотчёты обеих сессий соответствуют диффам; заявленные цифры полигона воспроизведены точно (M0 0.567/94.6 · M1 1.0/93.4 · M2 1.0/93.4 · M3 0.467/49.0, echo 0/5; kana-таблица байт-в-байт; вебновелл-эхо 4/16 подтверждено по сырым выходам).
- **Ратификации** → полный текст в [`05-decisions-log.md`](architecture/05-decisions-log.md) §«Ратификации 09.07»: (1) kana/Han-исключение из source-границы (D16.3) — ратифицировано, kana-омографы → B6, MIN=3 — дефолт; (2) **спека D15.2: направление да, реализация заблокирована** — 3 дизайн-дыры (fast-path-гард слабее текущего; расщепление memory_version обязательно; замена consent-гейта); (3) Mistral: refusal принят, fidelity-числа НЕ приняты (нет сырых артефактов — переснять с персистом); (4) Pearmut-отказ ратифицирован.
- **Ратификации** → полный текст в [`05-decisions-log.md`](../architecture/05-decisions-log.md) §«Ратификации 09.07»: (1) kana/Han-исключение из source-границы (D16.3) — ратифицировано, kana-омографы → B6, MIN=3 — дефолт; (2) **спека D15.2: направление да, реализация заблокирована** — 3 дизайн-дыры (fast-path-гард слабее текущего; расщепление memory_version обязательно; замена consent-гейта); (3) Mistral: refusal принят, fidelity-числа НЕ приняты (нет сырых артефактов — переснять с персистом); (4) Pearmut-отказ ратифицирован.
- **Fix-листы след. пакетов** (в D-логе §Ратификации, пп.56): бэкенду — homophone first-wins (major), GB18030-ingest, мутационное закрепление redrive-инварианта, snapshot-чек до ResetChunkStages + minors; полигону — дозеркалить suppressUnboundedPhonetic и апостроф-фолд (критично для en→ru руки), эхо-детектор хвоста, Mistral-переснятие + minors.
- Гигиена: `*.key.json` в .gitignore; **правило git-координации мультисессий** внесено в CLAUDE.md (признание инцидента: перезапись истории оркестратором 09.07 при грязном дереве полигона стёрла его незакоммиченные правки — восстановлены сессией).
- **Ждём от владельца (без изменений):** explicit-18+ фрагменты (последний critical-блокер D14.4), приёмочная ja→ru книга (epub) для прогона D9, провенанс двух внешних 12-*-доков; решение по юр-пакету (EU-хостинг/провайдер-матрица данных/compliance-паспорт — обсуждено 09.07).
@ -84,7 +84,7 @@
- **Роль принята** по `ORCHESTRATOR_SESSION_PROMPT.md`; онбординг по порядку промта; артефакты проб ресёрч-сессии продублированы из волатильного /tmp в `/home/ubuntu/books/gu-zhenren/research15-probes/` (вне git).
- **Внешнее ревью research/15 выполнено** (9 агентов: 5 спот-чеков первоисточников — кандидаты из самоотчёта сессии, пересчёт проб из сырья, консистентность, red-team ратификации, аудит доков). Вердикт **ACCEPT_WITH_FIXES → залендён (5953b37)**: DelTA — CONFIRMED точно; RoleLLM/Voita/similarity/WMT25 — CONFIRMED_WITH_NUANCE (нюансы вписаны пометками *(ревью)*); P4/P1/P3/бюджет пересчитаны поштучно — сходятся; микро-дефекты счёта исправлены оркестратором (0/26→0/29; «~35%»→«3067% по армам»; deepseek-эха rt 111/182/149; пятый судья gemini-2.5-flash; строгий маркер-пересчёт 0/4→2/4→3/4→4/4 — порядок армов устойчив).
- **Ратифицирован D21** ([05-decisions-log](architecture/05-decisions-log.md)): voice-профиль (Ф2, с оговорками: заморозка per-job до D15.2, приоритет/кап бюджета инъекции, brightness — гипотеза-под-пилот, editor-слот не исключён, курация сида владельцем + кросс-семейный судья); address_pair = материализация журнала D7 (флаггер безусловно, инъекция — после пробы на трудных парах); reveal-окна (переобоснованы без 12-common); армы пилота с тирингом (минус двухпроходность/min_p); скоуп Annotator Ф2 с честным ресурсом голда; **анти-эхо wiring гейтится fidelity-хвостом P4 (35 пар) и только для deepseek-драфта**; клеймы уникальности сужены (скрининг ≠ FTO); exp08 v3 заказан.
- **Ратифицирован D21** ([05-decisions-log](../architecture/05-decisions-log.md)): voice-профиль (Ф2, с оговорками: заморозка per-job до D15.2, приоритет/кап бюджета инъекции, brightness — гипотеза-под-пилот, editor-слот не исключён, курация сида владельцем + кросс-семейный судья); address_pair = материализация журнала D7 (флаггер безусловно, инъекция — после пробы на трудных парах); reveal-окна (переобоснованы без 12-common); армы пилота с тирингом (минус двухпроходность/min_p); скоуп Annotator Ф2 с честным ресурсом голда; **анти-эхо wiring гейтится fidelity-хвостом P4 (35 пар) и только для deepseek-драфта**; клеймы уникальности сужены (скрининг ≠ FTO); exp08 v3 заказан.
- **Аудит доков «что упустили»**: найдено и исправлено — CURRENT-STATE/README/CLAUDE.md отставали на два цикла (D18D20, канал B v2, 7 ключей); quirks-строка «editor/translator ВСЕГДА reasoning:none» противоречила D19.1 (сужена до редактора); поручение D19.2 «обобщающая строка эхо-класса в quirks» не выполнено — включено в D21.9, чтобы не потерялось; backend/eval README-хвосты обновлены.
- **Live-фактчек Gemini (вопрос владельца, 09.07):** /models-листинг живьём — 2.5-flash / 3.5-flash / 3.1-flash-lite все числятся; офиц. deprecations-страница — **вся 2.5-серия shutdown 16.10.2026** (замены 3.1-pro-preview / 3.5-flash / 3.1-flash-lite) → миграция судьи memory_eval оправдана вдвойне (флейки + EOL); интермиттентный 404 вендором НЕ документирован (наблюдение проб = аномалия, слаг в списке); `PROHIBITED_CONTENT` — неконфигурируемый фильтр-класс (safety_settings не влияют, в отличие от SAFETY). Вписано в quirks-календарь и erotica-промт.
- **Erotica-промт обновлён ДО запуска** (уточнение владельца: сессия ещё не стартовала — пинги вшиты в файл, пересказ не нужен): Gemini-грабли судей (404-флейки gemini-2.5-flash при наличии в /models; ожившая `content_filter: PROHIBITED_CONTENT`-ветка на Gemini 3.x — логировать finish_reason первоклассно), пункт (е) в Task 3 — quirks-строка эхо-класса D19.2 + инверсия языкового констрейнта, и опциональная Задача 5 — fidelity-хвост P4 (35 выходов из `research15-probes/`, деблокирует анти-эхо wiring D21.6; приёмку сессии не гейтит).
@ -118,11 +118,11 @@
### 2026-07-04 — Сессия 1: шаг 0 (перевалидация) завершён
- Донорский код vojo сверен построчно + воркфлоу из 4 критиков (консистентность, Go-исполнимость, донор, онлайн-фактчек цен). Вердикт: **архитектура v2 исполнима, кодить можно**; блокеров нет. Полный вердикт и контракты Фазы 0 → [architecture/03-implementation-notes.md](architecture/03-implementation-notes.md).
- Донорский код vojo сверен построчно + воркфлоу из 4 критиков (консистентность, Go-исполнимость, донор, онлайн-фактчек цен). Вердикт: **архитектура v2 исполнима, кодить можно**; блокеров нет. Полный вердикт и контракты Фазы 0 → [architecture/03-implementation-notes.md](../architecture/03-implementation-notes.md).
- Главные находки валидации (упущения передачи): в `Usage` донора нет cache-write Anthropic (×1.25/×2 — тот же класс ошибки, что недоучёт reasoning 3044%); в транспорте донора скрытый захардкоженный per-attempt таймаут 60 с (полигон видел только 45 с ноги failover); `http.Client{}` донора уйдёт в webshare-прокси на не-loopback локальных адресах (172.x); **Grok 4.1 Fast retired 15.05.2026** — слаги молча редиректят на grok-4.3 с ценой ×9, таблица Р4 устарела; store.go на SQLite — переписывание по семантике, не «адаптация <20%».
- Окружение: git-репо инициализирован, Go 1.26.4 установлен (~/sdk/go, PATH в .bashrc).
**РЕШЕНО** (04.07) → ответ оркестратора ниже + ратифицировано в [05-decisions-log](architecture/05-decisions-log.md) (D1D7); детали в 03-implementation-notes §5:
**РЕШЕНО** (04.07) → ответ оркестратора ниже + ратифицировано в [05-decisions-log](../architecture/05-decisions-log.md) (D1D7); детали в 03-implementation-notes §5:
1. Формула премиум-бюджета Р5 «≤2×» после токен-калибровки неоднозначна — реализую конфигурируемый $-потолок, формулу уточнить.
2. Политика инвалидации TM сверх brief_hash (prompt_version в ключе? модель? перечанкование?) — реализую консервативный вариант, нужно подтверждение.
3. Канал B остался без дешёвого Grok (4.1 Fast retired, grok-4.3 дороже ×9) — перевыбрать модель канала B к Фазе 2.
@ -137,7 +137,7 @@
> 3. **Канал B**: Р4 обновлён — интерим до Фазы 2: DeepSeek офиц. + локальная abliterated; Grok 4.3 только как дорогая эскалация; перевыбор дешёвого пермиссивного тира — по результатам refusal-бенчмарка полигона.
> 4. **Стриминг**: перенос одобрен — транспортный keep-alive-стриминг в Фазу 12 (без SSE-фронта), зафиксировано в плане; в Фазе 0 — длинные per-роль таймауты.
> 5. **Р5 обновлён** сноской на токен-калибровку (×1.41.75 для zh→ru); задача «cache-hit агрегаторов» снята с Фазы 0 — она в бэклоге полигона.
> **Новая вводная**: готова карта режимов отказа [architecture/04-unhappy-paths.md](architecture/04-unhappy-paths.md) (~70 режимов → механизмы). Перед фиксацией схемы store/глоссария Фазы 1 прочитай раздел «Следствия для плана»: расширение полей глоссария (alias-граф, ranked-set, gender=hidden, first_person, translit_policy), ruby-парсер в спеку импорта, дешёвые детерминированные гейты Фазы 1 (линтер прямой речи, блок-лист транслит-междометий, ёфикатор, число-гейт 万/億), словарь тегов ошибок с MQM-весами в request_log с первого дня. Пороги coverage-гейта уже сняты полигоном (см. его секцию, эксперимент 02).
> **Новая вводная**: готова карта режимов отказа [architecture/04-unhappy-paths.md](../architecture/04-unhappy-paths.md) (~70 режимов → механизмы). Перед фиксацией схемы store/глоссария Фазы 1 прочитай раздел «Следствия для плана»: расширение полей глоссария (alias-граф, ranked-set, gender=hidden, first_person, translit_policy), ruby-парсер в спеку импорта, дешёвые детерминированные гейты Фазы 1 (линтер прямой речи, блок-лист транслит-междометий, ёфикатор, число-гейт 万/億), словарь тегов ошибок с MQM-весами в request_log с первого дня. Пороги coverage-гейта уже сняты полигоном (см. его секцию, эксперимент 02).
### 2026-07-04 — Сессия 2: Фаза 0 (каркас) ЗАВЕРШЕНА
@ -161,7 +161,7 @@
draft→edit с resume; cmd/tmctl (translate/report); черновики промптов ролей.
- **Финал — агентное селфревью**: `/code-review` (8 линз) + воркфлоу-критики (4 линзы задания) с адверсариальной
верификацией; подтверждённые находки исправлены двумя волнами (детали и остаточный техдолг —
[03-implementation-notes §6](architecture/03-implementation-notes.md)). Коммиты: `dc6ea8e` каркас →
[03-implementation-notes §6](../architecture/03-implementation-notes.md)). Коммиты: `dc6ea8e` каркас →
`a32ec2e` волна 1 → волна 2.
Учтено из ответа оркестратора: ключ TM `(chunk_src_hash, lang_pair, model_id, prompt_version, brief_hash,
@ -208,7 +208,7 @@ timeout-путь «оплачено-но-потеряно» (≤1 вызов, у
### Внешнее ревью Фазы 0 — принято (04.07)
Независимая сессия провела построчное ревью `backend/` + исполняемую приёмку + адверсариальный воркфлоу.
**Вердикт: Фаза 0 принята, блокеров ноль.** Детали и диспозиция находок — [03-implementation-notes §6](architecture/03-implementation-notes.md).
**Вердикт: Фаза 0 принята, блокеров ноль.** Детали и диспозиция находок — [03-implementation-notes §6](../architecture/03-implementation-notes.md).
Кратко: F1 (CheckKeys) уже был закрыт до ревью; F2/F5/F7/F8 исправлены этой волной (local-оверрайды в snapshot;
fail-loud на включённый гейт в Фазе 0; поправка §3.4 под подтверждённый ключ TM; `*.db.lock` в .gitignore);
F3/F4/F6 — в техдолг (F3: граница timeout-недоучёта уточнена — до `MaxAttempts1`, не «≤1»; честный фикс —
@ -270,7 +270,7 @@ read-пути `report`. Фикс: строки материализуются п
Уже решено (не пере-обсуждаем): премиум-бюджет (формула Р5 + $5/$30), ключ TM (консервативный), стриминг
keep-alive (Ф12), инъекция глоссария (`selective`), пороги coverage (полигон), epub v1 (текст по spine).
> **Ответ оркестратора на все [НУЖНО РЕШЕНИЕ] + Q3/Q4 (04.07) → полный контракт в [architecture/05-decisions-log.md](architecture/05-decisions-log.md).**
> **Ответ оркестратора на все [НУЖНО РЕШЕНИЕ] + Q3/Q4 (04.07) → полный контракт в [architecture/05-decisions-log.md](../architecture/05-decisions-log.md).**
> Все 6+1 решений приняты (D1 монолингвальный редактор, D2 skip+flag+continue, D3 эскалация, D4 нет provider-fallback, D5 инкрементальный Analyst, D6 think-режим, D7 схема памяти v1) и прошли адверсариальную панель из 3 критиков (research/эконом/код) — читай `05-decisions-log.md` целиком перед Фазой 1, там уточнения меняют реализацию. Самое важное для тебя:
> 1. **`snapshotID` расширить memory-state + context-assembly hash ДО инъекции памяти** (D5.2) — иначе изменённый глоссарий/STM меняет `request_hash`, но не `snapshotID`, resnapshot-гейт молчит, ре-ран старой главы промахивается мимо чекпоинта и переоплачивает расходящимся переводом. Это общий гейт, держит D1 и D5.
> 2. **Runner без цикла по чанкам/главам + нет хранилища флагов** — главный длинный шест Фазы 1; `attempt` НЕ несёт disposition/skip-семантику (я переоценил). Строить цикл + таблицу флагов + `flag_reason` первым.
@ -297,7 +297,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
> 5. **Схему памяти v2 (твой шаг 4) держи до реестра рисков от сессии «Валидация банка памяти».** Владелец выделил банк памяти (главная точка отказа пайплайна) в отдельную адверсариальную сессию (промт `docs/archive/prompts/MEMORY_RESEARCH_SESSION_PROMPT.md`, финализирован); её выход — `architecture/06-memory-risk-registry.md` — вход, по которому ты фиксируешь схему store/глоссария. Шаги 13 (runner-loop / snapshotID / чанкер) от схемы памяти не зависят — иди по ним, шаг 4 гейтит валидация. snapshotID под память (D5.2) проектируй с запасом, но финальную схему полей не морозь.
> 6. **Коррекция контура (владелец): EU-SaaS, прямые ключи, BYOK отменён** — в коде это НИЧЕГО не меняет (бэкенд всегда был на прямых ключах; BYOK был продуктовым концептом Р8/Р9, не кодом). Обновлены только Р5/Р8/Р9/Р10 в `01-decisions.md`. Дефолт редактора Фазы 1 — `grok-4.3` (эксп.04) — в `pipeline-c1.yaml` edit-стадию на него (xAI, thinking OFF, capability: temperature шлётся).
> **Ответ оркестратора на 4 вопроса Фазы 1 (04.07) → полностью в [05-decisions-log.md D8D11](architecture/05-decisions-log.md).** Онбординг-поправки ратифицированы (grok-editor не Kimi; deepseek-v4-pro резолвить через /models, не хардкодить; gemini `-preview` несущий; models.yaml обновляешь сам; F4 в A, F3 явно). A/B/C-план принят. Ответы:
> **Ответ оркестратора на 4 вопроса Фазы 1 (04.07) → полностью в [05-decisions-log.md D8D11](../architecture/05-decisions-log.md).** Онбординг-поправки ратифицированы (grok-editor не Kimi; deepseek-v4-pro резолвить через /models, не хардкодить; gemini `-preview` несущий; models.yaml обновляешь сам; F4 в A, F3 явно). A/B/C-план принят. Ответы:
> - **Q1 (D8): content-hash материализации памяти**, не version-counter (drift-proof; счётчик переоткрывает баг тихой переоплаты). Хэшируй полное состояние инъектируемого пула на старте джобы (per-chunk выбор уже в request_hash).
> - **Q2 (D9): приёмочная книга — ja→ru ранобэ.** Ставит ruby-извлечение на критический путь (форсирует закрытие дыры §4). Границы: фуригана первого появления → глоссарий-лок имени, НЕ ruby в выходной вёрстке. Хедж если ruby-тайм-синк — в D9.
> - **Q3 (D10): знаменатель — ВСЕ approved-термины** (имена+титулы/термины), матчит R7 + бьёт по жалобе №1 (коллапс рангов). names-only — под-метрика. Порог 98% на детерминированном слое достижим; недостижимость → ревизия порога, не знаменателя.
@ -318,7 +318,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
**Техдолг вперёд (не блокирует Веху 2):** capabilities эскалационных моделей НЕ в snapshot (только стадии) — закрыть при заводке цикла эскалации (тот же класс D5.2, но пути исполнения ещё нет); `memoryVersion` — заглушка до банка памяти v2 (при инъекции памяти заполнить запрос); Kimi `max_tokens≥16000` не выразим в capability-схеме (при wiring эскалации).
> **Ответ оркестратора на 4 вопроса coverage-гейта + failure-model (04.07) → полный контракт в [05-decisions-log.md D12](architecture/05-decisions-log.md), заземлён ресёрчем durable-execution.** Отличная Веха 1. Кратко:
> **Ответ оркестратора на 4 вопроса coverage-гейта + failure-model (04.07) → полный контракт в [05-decisions-log.md D12](../architecture/05-decisions-log.md), заземлён ресёрчем durable-execution.** Отличная Веха 1. Кратко:
> - **4 вопроса — все A.** Q1: наивный split, `refusal_bench.py` = источник истины, Go зеркалит бит-в-бит, изменения лок-степ Python-first (§3.7 quote-absorbing → v1.1, свою доку реконсиль сам). Q2: минимальный single-hop — **не противоречит D4** (это escalation на детерминированном контент-провале, не outage-своп). Q3: только excision_suspect (верхняя аномалия ложно флагает — ru 1.41.9×; D10 ждёт памяти v2). Q4: opt-in до валидации precision владельцем.
> - **Таксономия отказа — ТРИ класса**, не бинар: транзиентный/бюджетный → same-model retry ({length,empty}); детерминированный контент-провал (echo/cjk/excision/refusal, **HTTP 200 — детект в app-слое post-settle, не транспорт**) → single-hop escalation на другую модель (1 хоп→флаг, отдельная ось в request_hash, budget-cap, re-gate, канал B изолирован ТИПОМ); outage/системный → circuit-breaker → **пауза+resume** (не mass-swap).
> - **F3 фикс:** idempotency-key = существующий `request_hash`, заморожен на входе, заголовком где поддержано — но ⚠ **проверено: OpenAI поддерживает, DeepSeek/xAI/Gemini/Kimi НЕТ** → capability-флаг `supports_idempotency_key`; для центрального стека **at-most-once cap** на класс «billed-but-unconfirmed» (≤1 доп. вызов, не MaxAttempts1) + консервативный settle оценки на post-send timeout. Честная модель — «at-most-once billed, replay бесплатен».
@ -694,7 +694,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
- **Task 4 — сид 蛊真人 финализирован (D19.3).** `白凝冰``gender: hidden` + `status: approved` + `until_ch: 0` (note: выставить главу раскрытия; механизм D5.1). Валидация **$0 бэкенд-путём** (transient `go test` на боевом loader `loadGlossarySeed` + `approvedSharedKeyCollisions`**49 записей чисто, hidden/approved, 0 коллизий**; временный тест удалён, backend/ дерево чистое). Снят блокер №1 полной приёмки.
- **Task 3 — fix-лист D19.5/D20 закрыт (af).** (a) `mistral_fidelity.py` — агрегация MEAN при n=2 (было `sorted[n//2]`=max; поле `fidelity_mean`), +404-retry для gemini-флейков. (b) **Цена Mistral сверена офиц.:** `mistral-large-2512` (Large 3) = **$0.50/$1.50** (OpenRouter-зеркало + аггрегаторы; 75% срез от Large 2); $2/$6 = LEGACY Large 2 (2411, ретайр 31.05.2026), офиц. FAQ mistral.ai показывает УСТАРЕВШИЙ generic-пример — 4× расхождение генерационное, не ошибка. (c) provenance-нота в `ahq_final.json` meta (pre-Task-1 mirror; для zh no-op). (d) эхо-детектор line-start FP на прозе с «Глоссарий» — задокументирован (консервативный, видимый флаг). (e) `glossary_line_tokens` синк с Go: 々U+3005/U+3007→CJK, halfwidth-кана FF66FF9D→CJK, ゛゜U+309B/C→other (каждый code-point сверен scratch-`unicode.In`; Py↔Go parity=5/5). (f) **строка эхо-класса в `00-provider-quirks.md`** (поручение D19.2, не выполнялось): «reasoning-off + плотный CJK = зона эха — свойство КЛАССА, не квирк вендора» + P4-инверсия языкового констрейнта. Плюс миграция судьи `providers.json gemini`: 2.5-flash (EOL 16.10.2026 + 404-флейк, +баг двойного `extra_body`) → **gemini-3.1-flash-lite** (live-смоук 07-10: finish=stop; 3.5-flash даёт 503 — не берём). Логирование `finish_reason` сделано первоклассным в `refusal_bench.call_provider` (+распознавание Gemini `PROHIBITED_CONTENT`/`SAFETY` как content-filter — ожившая ветка D2.4).
- **Task 1+2 — эротика-рука прогнана на ВСЕХ ТРЁХ парах / трёх регистрах** (полный отчёт → **[experiments/11-erotica-benchmark.md](experiments/11-erotica-benchmark.md)**). **zh: 金瓶梅** (PD, ctext упр-слой) — 6 adult-only (классика); аудит исключил 3 главы (回27/51/52) за 春梅/书童. **ja: 異世界魔術師** (novel18, 洗脳-гарем) — **первично отклонил всю книгу (слишком консервативно), по решению владельца пересобрал ADULT-ONLY per-fragment**: 6 фрагментов (совр. вебновелла), L3-сцены (第8話 幼い顔, 第35話 幼女-аукцион, 第32話) ИСКЛЮЧЕНЫ, участники возрастно-верифицированы. **en: «Fifty Shades» кн.1** (владелец положил epub→txt) — 6 фрагментов Ana(21)×Christian(27), контракт-глава ch11 + Elena-бэкстори про 15-летнего ИСКЛЮЧЕНЫ. 0 hard-minor-маркеров ни в одном фрагменте (18 всего). Армы (=violence exp10): Mistral, grok reason-ON/OFF, DeepSeek(контроль), local abliterated 8b; судьи Grok+Gemini на Mistral-переводах.
- **Task 1+2 — эротика-рука прогнана на ВСЕХ ТРЁХ парах / трёх регистрах** (полный отчёт → **[experiments/11-erotica-benchmark.md](../experiments/11-erotica-benchmark.md)**). **zh: 金瓶梅** (PD, ctext упр-слой) — 6 adult-only (классика); аудит исключил 3 главы (回27/51/52) за 春梅/书童. **ja: 異世界魔術師** (novel18, 洗脳-гарем) — **первично отклонил всю книгу (слишком консервативно), по решению владельца пересобрал ADULT-ONLY per-fragment**: 6 фрагментов (совр. вебновелла), L3-сцены (第8話 幼い顔, 第35話 幼女-аукцион, 第32話) ИСКЛЮЧЕНЫ, участники возрастно-верифицированы. **en: «Fifty Shades» кн.1** (владелец положил epub→txt) — 6 фрагментов Ana(21)×Christian(27), контракт-глава ch11 + Elena-бэкстори про 15-летнего ИСКЛЮЧЕНЫ. 0 hard-minor-маркеров ни в одном фрагменте (18 всего). Армы (=violence exp10): Mistral, grok reason-ON/OFF, DeepSeek(контроль), local abliterated 8b; судьи Grok+Gemini на Mistral-переводах.
**Три главных вывода (18/18 фрагментов):**
1. **Mistral держит эротику чисто на ВСЕХ трёх (6/6 zh + 6/6 ja + 6/6 en)** — дефолт-переводчик канала B (D19) валиден на классике, совр. вебновелле И совр. романе. DeepSeek тоже 6/6×3 (переводит explicit несмотря на ToS; исключён юридически D14.1).
@ -714,7 +714,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
- **Task 1 — зеркало ↔ Go синхронно (fix-лист ревью, гейтит пилот).** Дозеркалено в `memory_eval.py`/`declmetric.py`: (1a) `suppressUnboundedPhonetic` D16.3 — source word-boundary для Latin/Cyrillic (rose⊄roseanne, кросс-скрипт=валидная граница, кана/Han НЕ проверяются) + self-test мирроры Go-тестов `TestSourcePhoneticWordBoundary`/`TestKanaNotSourceBoundaryChecked`; (1b) апостроф-фолд `‘’ʼ'→'` с ОБЕИХ сторон (норм-src + `declmetric.normalize_target`) + parity-asserts (критично для en→ru руки: д'Артаньян/O'Brien); (1c) эхо-детектор ловит хвостовой/встроенный глоссарий-эхо (не только лидирующую преамбулу); (1d) байт-синк заголовка инъекции с Go, ts(UTC) в refusal-записи, trad2simp dedup-guard (508→500, 8 консистентных дублей — fail-loud на несогласованный + md5-parity self-test с Go-embed), карантин-маркер в `memory_eval_indicative.json`, exp09 §6-bis «precision trap-set-относительная» пометка, докстринг-cleanup. **Адверсариальное parity-ревью (differential-тест: Go x/text vs Python по 1.1M code points + 20328 строк, оба Unicode 15.0):** NFKC/NFC/apos/dash — байт-в-байт; 3 находки пофикшены (İ→'i' — единственный `.lower()`≠Go рун; эхо-детектор ужат чтобы не резать легит-прозу с «глоссарий» в середине; `glossaryLineTokens` ー・ исключены из cjk-корзины по Go), 2 латентных (kana/hangul range-аппрокс, C0-space) задокументированы как нереачабельные для zh-книги. `--self-test`/declmetric parity/kana_precision — зелёные; Go-эталон-тесты зелёные.
- **Task 2 — Mistral fidelity ПЕРЕСНЯТ с полным персистом (D14.2 §3).** `eval/mistral_fidelity.py`: 5 PD-фрагментов (2 zh+2 ja+1 en), 2 кросс-семейных судьи (gemini-2.5-flash+gpt-5-mini, D13.3), медиана. **zh 93.0 / ja 95.0 / en 93.0 → OVERALL ≈93.8** (n=5; *исправлено оркестратором: «95.4» был артефактом агрегации — sorted[n//2] при 2 судьях = max, см. exp02*), все `ok`, эхо нет. Сырьё+судейские JSON+usage — `data/mistral_fidelity/raw_20260709T165023Z/`; exp02 §Mistral обновлён. **D14.2-fidelity готов к финализации.**
- **Task 3 — 18+ рука закрыта на violence/dark (последний critical, exp10).** Корпус: 10 zh violence/gore фрагментов 蛊真人 (проаудированы отд. агентом: связность+жестокость+**скрин уровня-3=чисто**; аудит поймал баг экстракции global-节-индекс vs номер главы). **3b refusal/excision (0 отказов у ВСЕХ):** grok-4.3 reasoning-OFF **эхает 40%** (4/10, тот же класс, что deepseek-эхо) → контроль reasoning-ON = **10/10 чисто** (причина — reasoning-off); Mistral **10/10 чисто**; DeepSeek(контроль) 9 ok/1 эхо (переводит насилие без отказа, D14.1); abliterated-8b 8 ok/2 excision (n=10; *исправлено оркестратором по jsonl*), 30b чисто но слишком медленно на 8GB. **3c судьи:** Grok-4.3 **10/10 judged, 0 отказов** (fidelity 6292); **Gemini-3.1-pro НЕ отказывается судить explicit** под издательской рамкой (10/10, 0 отказов) → **замена судьи 18+ НЕ нужна** (открытый вопрос D14.4 закрыт). Провенанс: `data/refusal_results_explicit/`, `data/explicit_judges/raw_*`. Полный отчёт → **[experiments/10-explicit-benchmark.md](experiments/10-explicit-benchmark.md)**.
- **Task 3 — 18+ рука закрыта на violence/dark (последний critical, exp10).** Корпус: 10 zh violence/gore фрагментов 蛊真人 (проаудированы отд. агентом: связность+жестокость+**скрин уровня-3=чисто**; аудит поймал баг экстракции global-节-индекс vs номер главы). **3b refusal/excision (0 отказов у ВСЕХ):** grok-4.3 reasoning-OFF **эхает 40%** (4/10, тот же класс, что deepseek-эхо) → контроль reasoning-ON = **10/10 чисто** (причина — reasoning-off); Mistral **10/10 чисто**; DeepSeek(контроль) 9 ok/1 эхо (переводит насилие без отказа, D14.1); abliterated-8b 8 ok/2 excision (n=10; *исправлено оркестратором по jsonl*), 30b чисто но слишком медленно на 8GB. **3c судьи:** Grok-4.3 **10/10 judged, 0 отказов** (fidelity 6292); **Gemini-3.1-pro НЕ отказывается судить explicit** под издательской рамкой (10/10, 0 отказов) → **замена судьи 18+ НЕ нужна** (открытый вопрос D14.4 закрыт). Провенанс: `data/refusal_results_explicit/`, `data/explicit_judges/raw_*`. Полный отчёт → **[experiments/10-explicit-benchmark.md](../experiments/10-explicit-benchmark.md)**.
- **Task 4 — сид-глоссарий 蛊真人 передан (D18/D10).** 49 терминов (35 approved/14 draft) по 节125, схема = `memseed.go seedTerm` (согласована), dst по Палладию, decl заполнены, spoiler-окна (血颅蛊 since_ch193 и др.). Валидирован (парс + Go-guard проверки чисто). Файл `/home/ubuntu/books/gu-zhenren/guzhenren-seed.yaml` (ВНЕ git). **Бэкенду:** сид готов для задачи-5 приёмки; схема совпадает.
- **Task 5 — терсный precision закрыт (вебновелл-режим exp07).** `eval/dialogue_precision.py`: детектор ловит встроенную атрибуцию (`方源道:“…”`), сегментация по строкам. 24 терсных чанка 蛊真人 (density 1.0) + 10 контроль; grok-перевод + gemini completeness-судья. **Ложных excision_suspect = 0/24 (0%)** (min len_ratio 2.69≫2.2, min sent_cov 0.75). Recall-оговорка: судья пометил 8/24 с мелкими пропусками, гейт не флагнул → precision-safe, recall-слаб для мелких (нижняя граница, Ф2). exp07 обновлён.
@ -773,22 +773,22 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
Инфраструктура: `eval/` (venv, токенизаторы DeepSeek V3.2/Qwen3/Qwen2.5/GLM-4.6 + tiktoken), PD-корпус 16 текстов zh/ja/en/ru с 3 параллельными парами. Ключи — `eval/.env` (gitignored, закрыт deny-правилом; скрипты читают сами; шаблон на 7 провайдеров создан, ждёт заполнения владельцем).
- **Эксперимент 01 (задача 1) — завершён** → [experiments/01-token-calibration.md](experiments/01-token-calibration.md). Два расхождения с research/09 >15%: иероглиф = 0.860.93 ток. (in-family) против 0.650.75; «выход≈вход±20%» сломано — zh→ru **1.88×B** (en→ru 1.53, ja→ru 1.29). COGS (контур прямых ключей): стандарт-вебновелла DeepSeek $1.85→$2.57, премиум-микс ≈$28→**≈$49** ($26 batch); ранобэ ja→ru подешевел ($3.9→$3.1). Оговорка про ru-агрегаторский контур добавлена (п.1 вводных учтён).
- **Эксперимент 02 (задача 2) — первый прогон выполнен** (ключи получены ~06:10) → [experiments/02-refusal-benchmark.md](experiments/02-refusal-benchmark.md). 6 провайдеров × 11 фрагментов (SFW/L1/L2-violence): **66/66 ok — ноль отказов и вырезаний**, контроль ложных срабатываний пройден; содержательная 18+ часть ждёт explicit-фрагментов владельца. **Пороги len_ratio для coverage-гейта готовы** (п.2 вводных): zh→ru <2.2, jaru <1.4, enru <0.70, sent_cov <0.75 таблица в 02, забирайте в конфиг v1. Побочные находки для продакшн-конфига провайдеров: thinking GLM-4.6 (таймауты ×3) и Gemini (молча обрезал перевод детектор поймал) отключать для роли переводчика; gpt-5-mini reasoning minimal; safety_settings Gemini через OpenAI-слой не передаются (судье нужен нативный API).
- **Эксперимент 03 (задача 3) — первый замер + эталон** → [experiments/03-local-stand.md](experiments/03-local-stand.md). По п.3 вводных: (а) 30b-a3b в WSL **влезает** (mmap, без OOM), но на ollama даёт лишь **10 tok/s** — «Расхождение» с research/06 (2530 обещаны через llama.cpp `--n-cpu-moe`; ставится в фоне — перемерить; Р4 менять пока не надо: рекомендация там и так llama-server); частично виноват и лимит WSL RAM 20GB — поднят до 26GB (`.wslconfig`, вступит после рестарта WSL); (б) 8b @ 27 tok/s (6.6GB VRAM) — на роли скрининга/экстракции годен. **Эталон DeepSeek снят: разрыв качественный** — API даёт корректные реалии («ворота Расёмон на улице Судзаку», «Новогоднее жертвоприношение») за ~$0.0005/фрагмент там, где обе локалки галлюцинируют («Рождественская дверь», «петухи»); NSFW-фрагменты ещё не гонялись. Для бэкенда: лег-таймаут vojo 45 с несовместим с чанками (63278 с) — нужен свой профиль + стриминг. План расширения пула: ваниль qwen3:8b (цена абляции) → Qwen3.5-9B → RuadaptQwen3 (докачиваются в фоне).
- **Эксперимент 01 (задача 1) — завершён** → [experiments/01-token-calibration.md](../experiments/01-token-calibration.md). Два расхождения с research/09 >15%: иероглиф = 0.860.93 ток. (in-family) против 0.650.75; «выход≈вход±20%» сломано — zh→ru **1.88×B** (en→ru 1.53, ja→ru 1.29). COGS (контур прямых ключей): стандарт-вебновелла DeepSeek $1.85→$2.57, премиум-микс ≈$28→**≈$49** ($26 batch); ранобэ ja→ru подешевел ($3.9→$3.1). Оговорка про ru-агрегаторский контур добавлена (п.1 вводных учтён).
- **Эксперимент 02 (задача 2) — первый прогон выполнен** (ключи получены ~06:10) → [experiments/02-refusal-benchmark.md](../experiments/02-refusal-benchmark.md). 6 провайдеров × 11 фрагментов (SFW/L1/L2-violence): **66/66 ok — ноль отказов и вырезаний**, контроль ложных срабатываний пройден; содержательная 18+ часть ждёт explicit-фрагментов владельца. **Пороги len_ratio для coverage-гейта готовы** (п.2 вводных): zh→ru <2.2, jaru <1.4, enru <0.70, sent_cov <0.75 таблица в 02, забирайте в конфиг v1. Побочные находки для продакшн-конфига провайдеров: thinking GLM-4.6 (таймауты ×3) и Gemini (молча обрезал перевод детектор поймал) отключать для роли переводчика; gpt-5-mini reasoning minimal; safety_settings Gemini через OpenAI-слой не передаются (судье нужен нативный API).
- **Эксперимент 03 (задача 3) — первый замер + эталон** → [experiments/03-local-stand.md](../experiments/03-local-stand.md). По п.3 вводных: (а) 30b-a3b в WSL **влезает** (mmap, без OOM), но на ollama даёт лишь **10 tok/s** — «Расхождение» с research/06 (2530 обещаны через llama.cpp `--n-cpu-moe`; ставится в фоне — перемерить; Р4 менять пока не надо: рекомендация там и так llama-server); частично виноват и лимит WSL RAM 20GB — поднят до 26GB (`.wslconfig`, вступит после рестарта WSL); (б) 8b @ 27 tok/s (6.6GB VRAM) — на роли скрининга/экстракции годен. **Эталон DeepSeek снят: разрыв качественный** — API даёт корректные реалии («ворота Расёмон на улице Судзаку», «Новогоднее жертвоприношение») за ~$0.0005/фрагмент там, где обе локалки галлюцинируют («Рождественская дверь», «петухи»); NSFW-фрагменты ещё не гонялись. Для бэкенда: лег-таймаут vojo 45 с несовместим с чанками (63278 с) — нужен свой профиль + стриминг. План расширения пула: ваниль qwen3:8b (цена абляции) → Qwen3.5-9B → RuadaptQwen3 (докачиваются в фоне).
- Бэклог принят: проверка проброса cache-hit агрегаторами (п.4, нужны ключи) — в шагах ниже. Задачи 45 не начаты (bge-m3 уже на стенде).
### 2026-07-04 — Сессия 2 полигона (после рестарта WSL с RAM 26GB)
- **llama.cpp `--n-cpu-moe` для 30b-a3b — перемерено, «Расхождение» с research/06 подтверждено**: потолок генерации на GTX 1070 **~13.5 tok/s** (не 2530). Таблица конфигов в [03](experiments/03-local-stand.md): ollama 10 → llama.cpp `--cpu-moe` 11.2 → `--n-cpu-moe 33` 13.5 (VRAM 2.9→7.8GB, prefill 105→208). Узкое место — пропускная способность CPU-RAM (DDR4/Pascal), не рантайм; llama.cpp честно лучше ollama (+35% ген., ×23 prefill), но 30b-a3b на этом железе — только фоновые роли (~2.5 мин/главу). Скрипт: `eval/llama_moe_bench.sh`.
- **Замер 4 новых dense-моделей** (ваниль qwen3:8b / qwen3.5:9b / +abliterated / ruadapt) — готово, таблица в [03](experiments/03-local-stand.md). Три вывода: (1) **абляция бесплатна** — qwen3.5 vanilla vs abliterated идентичны по скорости и SFW-качеству → 18+-роль можно на abliterated без штрафа; (2) поколение 3.5>3 умеренно (лучше понимание, 25% токенов, 10% скорости); (3) **RuAdapt: токен-выигрыш подтверждён (40% ru-токенов), но перевод развалился** (羅生門→«дерево с колокольчиками») → редактор ru-стиля, не переводчик (как и предупреждал research/06). Разрыв с API держится у всех. **Побочная находка для бэкенда:** thinking у Qwen3.5+/GLM/Gemini для роли переводчика обязателен к отключению (иначе пустой/обрезанный вывод — ловилось дважды: эксп. 02 и здесь).
- **Think-режим (проверка гипотезы владельца «reasoning поднимет качество в разы»)** — [03](experiments/03-local-stand.md), раздел «Влияние thinking». Итог: (а) прежняя «пустота» — артефакт тесного контекста (рассуждения не влезали с ответом), не зависание; (б) с ctx 16k think **завершается и реально чинит реалии** (羅生門: «Радзёмон»→«Рашо-мон»; 朱雀 с китайского чтения на японское) — гипотеза частично подтвердилась; (в) но локально нежизнеспособен: 8,6 мин и ~11k токенов рассуждений на 1400 знаков (вебновелла ≈ 200 ч). **Новый пункт бэклога → оркестратору/бэкенду: проверить think-ON vs OFF по КАЧЕСТВУ на быстром облачном черновике/редакторе (DeepSeek/GLM)** — потенциальный дешёвый рычаг качества, раз reasoning вытаскивает реалии.
- **llama.cpp `--n-cpu-moe` для 30b-a3b — перемерено, «Расхождение» с research/06 подтверждено**: потолок генерации на GTX 1070 **~13.5 tok/s** (не 2530). Таблица конфигов в [03](../experiments/03-local-stand.md): ollama 10 → llama.cpp `--cpu-moe` 11.2 → `--n-cpu-moe 33` 13.5 (VRAM 2.9→7.8GB, prefill 105→208). Узкое место — пропускная способность CPU-RAM (DDR4/Pascal), не рантайм; llama.cpp честно лучше ollama (+35% ген., ×23 prefill), но 30b-a3b на этом железе — только фоновые роли (~2.5 мин/главу). Скрипт: `eval/llama_moe_bench.sh`.
- **Замер 4 новых dense-моделей** (ваниль qwen3:8b / qwen3.5:9b / +abliterated / ruadapt) — готово, таблица в [03](../experiments/03-local-stand.md). Три вывода: (1) **абляция бесплатна** — qwen3.5 vanilla vs abliterated идентичны по скорости и SFW-качеству → 18+-роль можно на abliterated без штрафа; (2) поколение 3.5>3 умеренно (лучше понимание, 25% токенов, 10% скорости); (3) **RuAdapt: токен-выигрыш подтверждён (40% ru-токенов), но перевод развалился** (羅生門→«дерево с колокольчиками») → редактор ru-стиля, не переводчик (как и предупреждал research/06). Разрыв с API держится у всех. **Побочная находка для бэкенда:** thinking у Qwen3.5+/GLM/Gemini для роли переводчика обязателен к отключению (иначе пустой/обрезанный вывод — ловилось дважды: эксп. 02 и здесь).
- **Think-режим (проверка гипотезы владельца «reasoning поднимет качество в разы»)** — [03](../experiments/03-local-stand.md), раздел «Влияние thinking». Итог: (а) прежняя «пустота» — артефакт тесного контекста (рассуждения не влезали с ответом), не зависание; (б) с ctx 16k think **завершается и реально чинит реалии** (羅生門: «Радзёмон»→«Рашо-мон»; 朱雀 с китайского чтения на японское) — гипотеза частично подтвердилась; (в) но локально нежизнеспособен: 8,6 мин и ~11k токенов рассуждений на 1400 знаков (вебновелла ≈ 200 ч). **Новый пункт бэклога → оркестратору/бэкенду: проверить think-ON vs OFF по КАЧЕСТВУ на быстром облачном черновике/редакторе (DeepSeek/GLM)** — потенциальный дешёвый рычаг качества, раз reasoning вытаскивает реалии.
- **Справочник провайдерских граблей** → [experiments/00-provider-quirks.md](experiments/00-provider-quirks.md) (по замечанию владельца: бэкенд и полигон оба «ходят к провайдерам», но это не дубль — Go-продакшн-адаптеры 1735 строк с failover/ledger vs 40-строчный Python-зонд сырого поведения; объединять нельзя, но **знание о граблях сведено в один справочник**). Собраны: thinking-управление (GLM/Gemini/gpt-5/Qwen — у каждого по-своему!), Kimi только temp=1, Gemini 3.1 Pro обязательно-думающая, safety_settings Gemini не через OpenAI-слой, localhost-прокси, деприкации. **Бэкенду: читать при правке адаптеров `internal/llm`.**
- **Справочник провайдерских граблей** → [experiments/00-provider-quirks.md](../experiments/00-provider-quirks.md) (по замечанию владельца: бэкенд и полигон оба «ходят к провайдерам», но это не дубль — Go-продакшн-адаптеры 1735 строк с failover/ledger vs 40-строчный Python-зонд сырого поведения; объединять нельзя, но **знание о граблях сведено в один справочник**). Собраны: thinking-управление (GLM/Gemini/gpt-5/Qwen — у каждого по-своему!), Kimi только temp=1, Gemini 3.1 Pro обязательно-думающая, safety_settings Gemini не через OpenAI-слой, localhost-прокси, деприкации. **Бэкенду: читать при правке адаптеров `internal/llm`.**
- **Эксперимент 04 — бейк-офф редакторов ru-стиля** (вопрос бэкенда №2 + замена Anthropic) → [experiments/04-editor-quality.md](experiments/04-editor-quality.md). Метод: DeepSeek-черновик → 4 редактора (glm-4.6/kimi-k2.6/gemini-3.1-pro/grok-4.3) полируют; 4 фрагмента (ja/zh/en); **слепая человеческая оценка владельца** (LLM-судьи на худ. качестве ненадёжны). Артефакт для оценки: https://claude.ai/code/artifact/25394796-96f0-4f3f-b8d0-de000d415472. **Объективно уже видно:** grok-4.3 — быстрый/дешёвый (~13с, без reasoning); **kimi-k2.6 дорогой** (~11k reasoning-токенов на абзац → биллятся как выход); gemini-3.1-pro обязательно-думающая. Цена входит в решение наравне со стилем. **Оценка стиля — на владельце (ожидает).** Методическое следствие для пилота (задача 4): владелец читает только en/ru → человеческая оценка верности возможна лишь на en→ru + русской стороне, для zh/ja нужен английский якорь.
- **Эксперимент 04 — бейк-офф редакторов ru-стиля** (вопрос бэкенда №2 + замена Anthropic) → [experiments/04-editor-quality.md](../experiments/04-editor-quality.md). Метод: DeepSeek-черновик → 4 редактора (glm-4.6/kimi-k2.6/gemini-3.1-pro/grok-4.3) полируют; 4 фрагмента (ja/zh/en); **слепая человеческая оценка владельца** (LLM-судьи на худ. качестве ненадёжны). Артефакт для оценки: https://claude.ai/code/artifact/25394796-96f0-4f3f-b8d0-de000d415472. **Объективно уже видно:** grok-4.3 — быстрый/дешёвый (~13с, без reasoning); **kimi-k2.6 дорогой** (~11k reasoning-токенов на абзац → биллятся как выход); gemini-3.1-pro обязательно-думающая. Цена входит в решение наравне со стилем. **Оценка стиля — на владельце (ожидает).** Методическое следствие для пилота (задача 4): владелец читает только en/ru → человеческая оценка верности возможна лишь на en→ru + русской стороне, для zh/ja нужен английский якорь.
**Эксперимент 04 — РЕЗУЛЬТАТ (04.07):** слепую оценку сделали два фронтир-судьи (GPT + Opus 4.8), сверяясь с **каноническими переводами** (Фельдман/Рогов/Морозов), **сошлись независимо**. Ключ: A=grok-4.3, B=glm-4.6, C=gemini-3.1-pro, D=kimi-k2.6. Итог: стиль **gemini > grok > kimi > glm**; верность **grok > gemini > glm > kimi**; value **grok ≫ gemini > glm > kimi**. **Рекомендация дефолта редактора Фазы 1: `grok-4.3`** (лучший баланс качество/цена, надёжен по смыслу, ~13с/без reasoning), **премиум-эскалация `gemini-3.1-pro`** (лучшая проза, культурные узлы на уровне канона). **GLM-4.6 (текущее допущение Р4 «редактор=GLM») эмпирически слабейший — снять с дефолта; Kimi убрать (худший value: 11k reasoning/абзац, последний по верности).****оркестратору: правка Р4** (полигон архдоки не трогает). Полный разбор — [04-editor-quality.md](experiments/04-editor-quality.md).
**Эксперимент 04 — РЕЗУЛЬТАТ (04.07):** слепую оценку сделали два фронтир-судьи (GPT + Opus 4.8), сверяясь с **каноническими переводами** (Фельдман/Рогов/Морозов), **сошлись независимо**. Ключ: A=grok-4.3, B=glm-4.6, C=gemini-3.1-pro, D=kimi-k2.6. Итог: стиль **gemini > grok > kimi > glm**; верность **grok > gemini > glm > kimi**; value **grok ≫ gemini > glm > kimi**. **Рекомендация дефолта редактора Фазы 1: `grok-4.3`** (лучший баланс качество/цена, надёжен по смыслу, ~13с/без reasoning), **премиум-эскалация `gemini-3.1-pro`** (лучшая проза, культурные узлы на уровне канона). **GLM-4.6 (текущее допущение Р4 «редактор=GLM») эмпирически слабейший — снять с дефолта; Kimi убрать (худший value: 11k reasoning/абзац, последний по верности).****оркестратору: правка Р4** (полигон архдоки не трогает). Полный разбор — [04-editor-quality.md](../experiments/04-editor-quality.md).
**⚠️ КОРРЕКЦИЯ ВВОДНЫХ ОТ ВЛАДЕЛЬЦА (04.07) → ОРКЕСТРАТОРУ, фундаментально:** владелец **НЕ в РФ**; бэкенд на **EU-сервере**, все вызовы моделей идут оттуда; модель — **обычный SaaS с прямыми ключами** (владелец платит за токены, клиент платит за сервис). **BYOK НЕ делается — ни сейчас, ни в планах** (стопнуть в доках). Следствие: **весь «ru-контур / BYOK / агрегаторы» неверен**Р5 «два контура чей ключ» схлопывается в один (прямые ключи), почти весь Р8 (152-ФЗ/259-ФЗ/ЮKassa/ИП) неприменим. Остаётся валидным ru как **язык перевода** (рынок ru-читателей), меняется только доставка. **Правки Р5/Р8/Р9 — на оркестраторе** (полигон архдоки не трогает). Полигон: проверку ru-агрегаторов из очереди **снял**.
@ -800,8 +800,8 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
- [x] ~~Проверка ru-агрегаторов~~**СНЯТА** (BYOK отменён владельцем, см. коррекцию выше).
- [—] **Банк памяти (задача 5 + шире)** — по решению владельца выносится в **отдельную сессию «Валидация банка памяти»** (главная точка отказа пайплайна; не бросаться в код без разбора опасных сценариев). Полигон подготовил черновик промта → `docs/archive/prompts/MEMORY_RESEARCH_SESSION_PROMPT.md`; **оркестратору вычитать/финализировать**, затем владелец запускает. Замер эмбеддингов (bge-m3 vs Qwen3-Embedding vs LaBSE) — часть мандата той сессии.
- [ ] Довалидация токен-калибровки на 35 главах реальных вебновелл (файлы владельца).
- [~] Задача 4 (пилот выбора ядра, Фаза 2.5): протокол BWS + панель LLM-судей — **протокол готов** ([experiments/09](experiments/09-pilot-protocol.md)) + харнесс `eval/pilot/`; решающий прогон ждёт корпус владельца (см. Сессия 3).
- [x] **Валидация precision coverage-гейта — гейтит боевой флип** (D12 Q4) → [experiments/07](experiments/07-coverage-precision.md): 0 FP/57, флип по precision безопасен, порог ≥2 флага/главу; вебновелл-срез ждёт корпус владельца (см. Сессия 3). Бэкенд-мини-набор (выпиленные предложения) проверяет recall (≥90%); флип `gates.coverage.enabled:true` упирается в **false-positive rate** на легитимно диалого-плотных главах (сегментация наивная, quote-absorbing §3.7 в v1.1 — на диалогах `sent_cov` может ложно проседать). Прогони гейт (пороги эксп.02: zh-ru<2.2/ja-ru<1.4/en-ru<0.70, sent_cov<0.75) на реальных чанках zh/jaru, замерь долю ложных excision_suspect. Оракул = `eval/refusal_bench.py::classify_output` (тот же, что порт в Go держать в синхроне). Выход: доля ложных флагов по типам глав оркестратор/владелец ставит порог N допустимых флагов и решает флип.
- [~] Задача 4 (пилот выбора ядра, Фаза 2.5): протокол BWS + панель LLM-судей — **протокол готов** ([experiments/09](../experiments/09-pilot-protocol.md)) + харнесс `eval/pilot/`; решающий прогон ждёт корпус владельца (см. Сессия 3).
- [x] **Валидация precision coverage-гейта — гейтит боевой флип** (D12 Q4) → [experiments/07](../experiments/07-coverage-precision.md): 0 FP/57, флип по precision безопасен, порог ≥2 флага/главу; вебновелл-срез ждёт корпус владельца (см. Сессия 3). Бэкенд-мини-набор (выпиленные предложения) проверяет recall (≥90%); флип `gates.coverage.enabled:true` упирается в **false-positive rate** на легитимно диалого-плотных главах (сегментация наивная, quote-absorbing §3.7 в v1.1 — на диалогах `sent_cov` может ложно проседать). Прогони гейт (пороги эксп.02: zh-ru<2.2/ja-ru<1.4/en-ru<0.70, sent_cov<0.75) на реальных чанках zh/jaru, замерь долю ложных excision_suspect. Оракул = `eval/refusal_bench.py::classify_output` (тот же, что порт в Go держать в синхроне). Выход: доля ложных флагов по типам глав оркестратор/владелец ставит порог N допустимых флагов и решает флип.
- [x] ~~**Эксперимент 05 — memory-bet**~~**СНЯТ как низкосигнальный** (решение владельца). Прогон был, но его ось C0-vs-C1 («бредит ли модель без глоссария») предрешена, а C3/C2 лишь пере-подтвердили уже процитированную литературу (2510.00829) — тест не мог изменить ни одного решения. Артефакты (doc/скрипт/данные) удалены. Единственный actionable-вывод (post-check + disposition обязательны) уже зафиксирован в реестре `architecture/06` (A2/E1) независимо от этого прогона. **Урок для eval:** тест ставить только если его исход мог бы перевернуть решение И не установлен литературой. Ценность вместо этого — валидация самого МЕХАНИЗМА (см. ниже).
- [x] **Референс горячего пути банка памяти + self-tests**`eval/memory_hotpath.py` (11/11 PASS). Исполняемая спека механизма (не продукт): нормализация trad→simp/kana, точный матч ключей/алиасов с запретом одиночных (омографы 送灶/炎/修/气 НЕ инъектируются), спойлер-фильтр `since_ch/until_ch` (hard-reject), sticky для местоименных чанков, disposition confirmed/ambiguous/reject, post-check (ловит и утечку, и отравление). **Бэкенду:** порт в Go 1:1, тесты T1T10 → unit-тесты; `[PROD]`-замены: OpenCC, Aho-Corasick, pymorphy/`decl`.
@ -815,7 +815,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
> **Правило решения:** C1≈C2 по качеству но C1 дешевле → банк оправдан; C2≫C1 → пересмотреть (нужен полнее контекст); C3 роняет vs C0 → страх владельца подтверждён, post-check/disposition обоснованы.
> **Env:** `eval/.venv` нет `openai`/`dotenv` — доставить (`pip install openai python-dotenv` в venv); ключи из `eval/.env` через dotenv; base_url/слаги в `providers.json`+`00-provider-quirks` (deepseek-chat депрекейт 24.07 — жив сейчас; grok base `https://api.x.ai/v1`). **Оговорка: ИНДИКАТИВНЫЙ** (малый N, LLM-судья) — как retrieval_bench; полная версия с человеческими BWS-аннотаторами = пилот Ф2.5. Выход: `docs/experiments/05-memory-bet.md` + сводка сюда. Сильнее сигнал, если владелец подложит 12 главы реальной вебновеллы с повторяющимися именами — но PD-阿Q хватит для старта.
> **Задачи от оркестратора (04.07, из журнала решений [architecture/05-decisions-log.md](architecture/05-decisions-log.md)):**
> **Задачи от оркестратора (04.07, из журнала решений [architecture/05-decisions-log.md](../architecture/05-decisions-log.md)):**
> 1. **Пересчитать ОБА cost-числа** (не только премиум) на реальном Фаза-1 стеке — расширено после D8D11: дефолт-редактор теперь **grok-4.3 ($1.25/$2.50)**, не GLM/DeepSeek → и **стандарт-микс** подорожал (ja→ru ранобэ ~$0.73, не $0.17; порог приёмки $0.6 устарел). Дай: (а) стандарт-микс (DeepSeek-draft + grok-editor) на ранобэ ja→ru и вебновелле zh→ru; (б) премиум-микс с апексом Gemini 3.1 Pro (обязательный thinking, reasoning-as-output $12/M; batch 50% только судье/QA, НЕ inline-эскалации; эскалированный чанк платит Gemini дважды). Дефолты $5/$30 и порог $0.6 — заглушки до пересчёта.
> 2. **Замерить, эмитят ли DeepSeek/GLM/Kimi/grok `finish_reason=content_filter`** (D2.4, теперь и grok — он дефолт-редактор): бэкенд ветвит диспозицию по нему, но OpenAI-совместимый слой отдаёт finish_reason сырым — если провайдеры его не шлют, реальная страховка только refusal-blacklist. Дешёвый зонд на отказном фрагменте. Плюс, если есть ключ: подтвердить capability-квирки **gpt-5-nano** (бэкенд предполагает = mini: max_completion_tokens + omit temperature + effort minimal — верифицировать).
> 3. **Think-ON vs OFF по КАЧЕСТВУ на облачных translator/editor** (DeepSeek/GLM/Kimi — subset-billing, безопасно по потолку): гипотеза владельца про reasoning частично подтвердилась локально (羅生門→Радзёмон), DRT (arXiv:2412.17498) подтверждает для роли переводчика. Это ключевой вход в пилот Ф2.5 — мерить именно translator/editor, не только Terminologist.
@ -827,13 +827,13 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
Три ближние задачи закрыты; всё адверсариально верифицировано воркфлоу (5 линз, вердикт CONDITIONAL GO → все must-fix внесены). Артефакты — `eval/coverage_precision.py`, `eval/content_filter_probe.py`, `eval/cost_model_v2.py`, `eval/pilot/{declmetric,memory_eval}.py`, `docs/experiments/0709`.
- **Задача 1 — precision coverage-гейта → флип МОЖНО (D12/Q4).** [experiments/07](experiments/07-coverage-precision.md). **0 ложных срабатываний на 57 хороших переводах** (LLM deepseek+grok × 2 + канон Рогова/Фельдмана), 0/26 нарратив, 0/31 «диалог» (маркер-прокси). Диалог: русский дробит CJK → `sent_cov ≥ 1` (не проседает); ближайший к полу 0.75 — 0.886 (ja-нарратив, запас 18%). Коридоры len_ratio НЕ узки (zh запас +20%, ja +14%). Go↔Python паритет-тест зелёный. **Оговорка широты (честно):** «диалог»-страт — классика Лу Синя с цитируемыми ТЕРМИНАМИ, НЕ вебновелл-диалог; §3.7 НЕ воспроизведён но и НЕ опровергнут; человеческий слой глава-гранулярен. **[→ бэкенду/владельцу]** флип `gates.coverage.enabled:true` по precision безопасен; порог главы **≥2 флага=fail, 1=attention**; коридоры не менять; **пере-снять на реальных вебновеллах владельца** до снятия 1-флаг-толерантности (просьба ниже).
- **Задача 1 — precision coverage-гейта → флип МОЖНО (D12/Q4).** [experiments/07](../experiments/07-coverage-precision.md). **0 ложных срабатываний на 57 хороших переводах** (LLM deepseek+grok × 2 + канон Рогова/Фельдмана), 0/26 нарратив, 0/31 «диалог» (маркер-прокси). Диалог: русский дробит CJK → `sent_cov ≥ 1` (не проседает); ближайший к полу 0.75 — 0.886 (ja-нарратив, запас 18%). Коридоры len_ratio НЕ узки (zh запас +20%, ja +14%). Go↔Python паритет-тест зелёный. **Оговорка широты (честно):** «диалог»-страт — классика Лу Синя с цитируемыми ТЕРМИНАМИ, НЕ вебновелл-диалог; §3.7 НЕ воспроизведён но и НЕ опровергнут; человеческий слой глава-гранулярен. **[→ бэкенду/владельцу]** флип `gates.coverage.enabled:true` по precision безопасен; порог главы **≥2 флага=fail, 1=attention**; коридоры не менять; **пере-снять на реальных вебновеллах владельца** до снятия 1-флаг-толерантности (просьба ниже).
- **Побочно (D§85, → бэкенду):** `finish_reason=content_filter` **не эмитит ни один** из 5 ядровых провайдеров на SFW-violence (все `stop`/200/перевели) → ветка мертва, страховка = refusal-blacklist (подтверждает D2.4). Нюанс: **gemini-3.1-pro** (апекс) единожды дал `content_filter:PROHIBITED_CONTENT`, но не воспроизвёл на 4 контрольных → изредка срабатывает, не системно.
- **Побочно (→ бэкенду):** **draft-эхо классической zh — системно:** deepseek-v4-flash эхнул **13/24** zh-чанков Лу Синя, grok-non-reason **10/24** (лёгкая правка исходника вместо перевода, не усечение) → ловит интринсик echo-гейт; single-hop эскалация черновика оправдана; вебновеллы вне претрейна — риск ниже.
- **Задача 2 — COGS v2 на grok-editor стеке → оба порога мертвы.** [experiments/08](experiments/08-cost-model-v2.md). Прайсы — офиц. доки, датированы 2026-07-05, кросс-верифицированы (воркфлоу). **Стандарт-микс (draft+editor):** ja→ru ранобэ **$0.69**, zh→ru вебновелла-500 **$10.94**, en→ru роман **$0.93** — **редактор ~8890% стоимости** (grok-выход ×9 draft). **$0.6 мёртв.** **Премиум (Gemini apex):** ранобэ $5.0, вебновелла центр **~$82** (rf-условно $66112; ниже якоря $100), роман $6.8 — **полный apex больших работ НЕ дефолт** (переполняет $30). Селективный apex (15%): вебновелла $24.6. **[→ бэкенду/оркестратору]** (1) **[ИСПРАВЛЕНО 05.07 — проба была багом]** editor slug остаётся **grok-4.3**; reasoning отключается ЯВНЫМ `reasoning_effort:none` (дефолт grok = low → без явного none думает), переснято (xAI docs + exp08:70-74). Прежнее «grok-4.3 форсирует / не отключается» — НЕВЕРНО; (2) `budget_usd` под селективный apex ($2 ранобэ/роман; вебновелла — потолок-на-главу/`apex_fraction`); (3) батч 50% только Gemini-судье; (4) **rf Gemini НЕ измерим через OpenAI-слой** (thoughts=0) — нужен нативный API перед привязкой премиум-бюджета.
- **Задача 2 — COGS v2 на grok-editor стеке → оба порога мертвы.** [experiments/08](../experiments/08-cost-model-v2.md). Прайсы — офиц. доки, датированы 2026-07-05, кросс-верифицированы (воркфлоу). **Стандарт-микс (draft+editor):** ja→ru ранобэ **$0.69**, zh→ru вебновелла-500 **$10.94**, en→ru роман **$0.93** — **редактор ~8890% стоимости** (grok-выход ×9 draft). **$0.6 мёртв.** **Премиум (Gemini apex):** ранобэ $5.0, вебновелла центр **~$82** (rf-условно $66112; ниже якоря $100), роман $6.8 — **полный apex больших работ НЕ дефолт** (переполняет $30). Селективный apex (15%): вебновелла $24.6. **[→ бэкенду/оркестратору]** (1) **[ИСПРАВЛЕНО 05.07 — проба была багом]** editor slug остаётся **grok-4.3**; reasoning отключается ЯВНЫМ `reasoning_effort:none` (дефолт grok = low → без явного none думает), переснято (xAI docs + exp08:70-74). Прежнее «grok-4.3 форсирует / не отключается» — НЕВЕРНО; (2) `budget_usd` под селективный apex ($2 ранобэ/роман; вебновелла — потолок-на-главу/`apex_fraction`); (3) батч 50% только Gemini-судье; (4) **rf Gemini НЕ измерим через OpenAI-слой** (thoughts=0) — нужен нативный API перед привязкой премиум-бюджета.
- **Задача 3 — подготовка пилота Ф2.5.** [experiments/09](experiments/09-pilot-protocol.md) (протокол: ядро C0C3 BWS, судья-панель+s\*, memory-eval WMT25-3-режим, think-ON/OFF, Annotator A/B, en-якорь для zh/ja верности) + харнесс `eval/pilot/`. **Decl-метрика** (`declmetric.py`, pymorphy3+stored-decl, mirror Go post-check) — склонённые формы (Вэйчжуане/Вана/Дэна) 0 ложных флагов. **memory_eval.py** — WMT25-3-режим, инъекция = **зеркало Go-контракта memory.go** (спойлер/disposition/sticky/containment/per-lang-minkey валидированы; `memory_hotpath.py` устарел до cc57c7b — не переиспользовал). **Индикатив (Ah-Q, N=5):** C0 консист. 0.58, **C1(банк) 1.0 = C2(длинный контекст) 1.0**, C3(неверный) 0.60 → банк ≈ длинный контекст по консистентности при меньшей инъекции; неверная инъекция не помогает. **[← владельцу нужно]** корпус 2535 глав с приватными эталонами (рекуррентные имена, диалог/нарратив); человеческие BWS-аннотаторы; explicit-18+ фрагменты для канала B (gitignored).
- **Задача 3 — подготовка пилота Ф2.5.** [experiments/09](../experiments/09-pilot-protocol.md) (протокол: ядро C0C3 BWS, судья-панель+s\*, memory-eval WMT25-3-режим, think-ON/OFF, Annotator A/B, en-якорь для zh/ja верности) + харнесс `eval/pilot/`. **Decl-метрика** (`declmetric.py`, pymorphy3+stored-decl, mirror Go post-check) — склонённые формы (Вэйчжуане/Вана/Дэна) 0 ложных флагов. **memory_eval.py** — WMT25-3-режим, инъекция = **зеркало Go-контракта memory.go** (спойлер/disposition/sticky/containment/per-lang-minkey валидированы; `memory_hotpath.py` устарел до cc57c7b — не переиспользовал). **Индикатив (Ah-Q, N=5):** C0 консист. 0.58, **C1(банк) 1.0 = C2(длинный контекст) 1.0**, C3(неверный) 0.60 → банк ≈ длинный контекст по консистентности при меньшей инъекции; неверная инъекция не помогает. **[← владельцу нужно]** корпус 2535 глав с приватными эталонами (рекуррентные имена, диалог/нарратив); человеческие BWS-аннотаторы; explicit-18+ фрагменты для канала B (gitignored).
**[ПРОСЬБА ВЛАДЕЛЬЦУ]** 35 глав реальной вебновеллы/ранобэ zh/ja с любым русским ориентиром → `eval/data/samples/<lang>/` — закрывает (а) диалог-плотный срез coverage-precision (эксп.07), (б) довалидацию токен-калибровки r (эксп.01/08), (в) старт memory-eval на большом глоссарии. Для zh — вне претрейна (обход эхо-мины).
@ -845,8 +845,8 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
### 2026-07-04 — Сессия «Валидация банка памяти» завершена
Метод: многоагентный ресёрч по 7 направлениям + независимая адверсариальная верификация по первоисточникам + completeness-критик (15 агентов) + локальный эмпирический бенчмарк retrieval на реальном PD-корпусе + чтение кода `backend/`. **Выходы:**
- [research/13-memory-bank-validation.md](research/13-memory-bank-validation.md) — вердикт (что менять, обоснование, источники).
- [architecture/06-memory-risk-registry.md](architecture/06-memory-risk-registry.md) — **реестр рисков (вход бэкенду перед фиксацией схемы store/глоссария Фазы 1)**.
- [research/13-memory-bank-validation.md](../research/13-memory-bank-validation.md) — вердикт (что менять, обоснование, источники).
- [architecture/06-memory-risk-registry.md](../architecture/06-memory-risk-registry.md) — **реестр рисков (вход бэкенду перед фиксацией схемы store/глоссария Фазы 1)**.
- Эмпирика: `eval/retrieval_bench.py`, `eval/data/retrieval_bench/` (реюз PD-корпуса полигона, не дублируя инфру).
**Вердикт (кратко):** архитектура ДЕРЖИТ, но **go/no-go на саму ставку сейчас нельзя** — центральный детерминированный no-LLM горячий путь **академически нов** (DelTA — LLM-в-цикле per-предложение), сравнение «банк vs длинный контекст» на реальном zh/ja→ru стеке **не проведено**, acceptance-критериев/baseline/cost-модели нет.
@ -890,11 +890,11 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
> **[СЕССИЯ ЗАКРЫТА, 04.07]** Выходы: research/13 (+§«Честные слабые места»), architecture/06, `eval/memory_hotpath.py` (спека), `eval/retrieval_bench.py` (эмбеддинги). Эксп-05 снят как низкосигнальный. **Перед кодом реализующей сессии — прочитать research/13 §«Честные слабые места»:** F1 подан как решённый, но там развилка (snapshot материализует байты vs store версионирует глоссарий); post-check в русской морфологии — несущий, но невалидированный (померить до доверия как гейту); «пусто=безопасно» — размен на ложный-пропуск, который тоже тихий; ставка на детерминированный no-LLM путь — cost-driven, не evidence-driven (DelTA валидирует LLM-в-цикле). Гигиена: фоновых процессов нет, ollama полигона не тронут, `eval/.venv` дополнен (torch-cpu/sentence-transformers/openai/dotenv — переиспользуемо).
> **[ДОБАВЛЕНО после закрытия] Локалка × банк памяти — экстракция терминов, ВЕРИФИЦИРОВАННЫЙ бенчмарк (дыра G1)** → [experiments/06-local-extraction.md](experiments/06-local-extraction.md), `eval/extract_bench.py`. 13 моделей × 12 кейсов (zh/ja/en + эдж: катакана-запад, буддийские имена, алиасы), запросы через `refusal_bench.call_provider`+`providers.json` (квирки верны: deepseek thinking-ON+max_tokens 8000 — прошлый пустой был МОЯ ошибка бюджета, не свойство модели), **каждый ответ health-верифицирован** (пустой/echo не засчитан как recall 0). Итог: **(1) СПОТ сущностей решён у всех, локаль вкл.** (recall ~0.98 на всех языках, 0 галлюцинаций). **(2) РЕНДЕР dst — разрыв с ЯЗЫКОВЫМ градиентом у локали:** en 0.82 / ja 0.53 / **zh 0.26** (阿Q→«Ах-Чу», 赵太爷→«Тяо Тай-Я» — Палладий-мусор → **эмпирика для B6**); облако-топ zh 0.75/ja 0.98/en 1.0. **(3) бо́льшая локаль не помогает** (30b render 0.55≈8b, ×3 медленнее). **(4) deepseek thinking помогает рендеру** (0.85 vs 0.58 off; на экстракции thinking-off здоров — echo бьёт перевод, не JSON). Рендер-value: **gemini-2.5-flash** (0.92/1.4с). **Дизайн-следствие (уточняет Р4/G1):** спот=дешёвая 8b (все языки); рендер dst язык-зависим — zh обязательно облако/человек + таблица Палладия (B6), en локаль потянет. ruadapt ненадёжен (5/12 health).
> **[ДОБАВЛЕНО после закрытия] Локалка × банк памяти — экстракция терминов, ВЕРИФИЦИРОВАННЫЙ бенчмарк (дыра G1)** → [experiments/06-local-extraction.md](../experiments/06-local-extraction.md), `eval/extract_bench.py`. 13 моделей × 12 кейсов (zh/ja/en + эдж: катакана-запад, буддийские имена, алиасы), запросы через `refusal_bench.call_provider`+`providers.json` (квирки верны: deepseek thinking-ON+max_tokens 8000 — прошлый пустой был МОЯ ошибка бюджета, не свойство модели), **каждый ответ health-верифицирован** (пустой/echo не засчитан как recall 0). Итог: **(1) СПОТ сущностей решён у всех, локаль вкл.** (recall ~0.98 на всех языках, 0 галлюцинаций). **(2) РЕНДЕР dst — разрыв с ЯЗЫКОВЫМ градиентом у локали:** en 0.82 / ja 0.53 / **zh 0.26** (阿Q→«Ах-Чу», 赵太爷→«Тяо Тай-Я» — Палладий-мусор → **эмпирика для B6**); облако-топ zh 0.75/ja 0.98/en 1.0. **(3) бо́льшая локаль не помогает** (30b render 0.55≈8b, ×3 медленнее). **(4) deepseek thinking помогает рендеру** (0.85 vs 0.58 off; на экстракции thinking-off здоров — echo бьёт перевод, не JSON). Рендер-value: **gemini-2.5-flash** (0.92/1.4с). **Дизайн-следствие (уточняет Р4/G1):** спот=дешёвая 8b (все языки); рендер dst язык-зависим — zh обязательно облако/человек + таблица Палладия (B6), en локаль потянет. ruadapt ненадёжен (5/12 health).
> **[В ОЧЕРЕДИ, 05.07] Исследование «Адаптивный/обучающийся слой памяти»** — промт `docs/archive/prompts/ADAPTIVE_MEMORY_RESEARCH_PROMPT.md` (подготовлен сессией валидации по запросу владельца). Вопрос: стоит ли гибрид «детерминированный банк + слой, обучающийся по ходу книги», и как смёржить под контур (локаль-first, дешёвое API ок, флагман без логитов → kNN-MT/frontier-LoRA заблокированы; обучаемое — только на локали, роль support, не переводчик). Центр — арбитраж «кто побеждает» (логика + VRAM 8ГБ). БАР: обязан бить eval-валидированный детерминированный базис на zh/ja→ru, иначе не мёржить. Тайминг: Фаза 2+, целить в реальные дыры (после in-house eval банка). Запускает владелец отдельной сессией.
### 2026-07-05 — Сессия «Адаптивный слой памяти» ЗАВЕРШЕНА → [research/14-adaptive-memory.md](research/14-adaptive-memory.md)
### 2026-07-05 — Сессия «Адаптивный слой памяти» ЗАВЕРШЕНА → [research/14-adaptive-memory.md](../research/14-adaptive-memory.md)
Метод: 6-направленный ресёрч + 24 адверсариальных верификатора (**19 CONFIRMED / 5 OVERCLAIM** с поправкой) + **2 исполняемые пробы на стенде/ключах** + чтение кода на git HEAD. **Вердикт: гибрид в основном НЕ стоит того; ровно ОДИН eval-гейтед кандидат.**
@ -921,7 +921,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
(секция ресёрч-сессии «Голос и состояние» — записи добавлять сюда)
### 2026-07-09 — Сессия «Голос и состояние» ЗАВЕРШЕНА → [research/15-voice-and-state.md](research/15-voice-and-state.md)
### 2026-07-09 — Сессия «Голос и состояние» ЗАВЕРШЕНА → [research/15-voice-and-state.md](../research/15-voice-and-state.md)
Метод: 12 направлений-сборщиков → адверсариальная верификация несущих клеймов refute-by-default (~60 верификаторов) → completeness-критик → 6 доборов (91 агент, ~3.2M ток., 0 отказов) + **живые пробы на SFW-чанках 蛊真人** ($0.04 — знаменатель $2.50 это жёсткий кап probe_runner.py, мандат ≤$3 на ec578ef / ≤$4 после 17ccea4; итог сессии с P4 — $0.28 (уточнено оркестратором); сырые артефакты в scratchpad сессии + дубль `/home/ubuntu/books/gu-zhenren/research15-probes/`; боевой драфт-промпт deepseek, редактор grok `reasoning_effort:none`, судьи кросс-семейно со свапом позиций). Зоны чужие не тронуты, ничего не закоммичено.
@ -953,7 +953,7 @@ keep-alive (Ф12), инъекция глоссария (`selective`), пор
(секция ресёрч-сессии «Ридер-IDE: выравнивание, статусы, HITL-редактура» — записи добавлять сюда)
### 2026-07-11 — Сессия «Ридер-IDE» ЗАВЕРШЕНА → [research/16-reader-ide-alignment.md](research/16-reader-ide-alignment.md)
### 2026-07-11 — Сессия «Ридер-IDE» ЗАВЕРШЕНА → [research/16-reader-ide-alignment.md](../research/16-reader-ide-alignment.md)
Метод (research/1315): мультиагентный веб-ресёрч (13 сборщиков по 5 кластерам) → адверсариальная верификация refute-by-default (13 верификаторов; вендор-клейм ≠ замер; доки/скриншоты CAT — источник поведения) → 26 агентов, 0 ошибок, ~1.23M ток., 652 веб-обращения; вердикты CONFIRMED/PLAUSIBLE/REFUTED. **+ $0-проба парности абзацев** на боевом прогоне этапа A (read-only `acceptance/guzhenren-25ch-parallel.txt` + `guzhenren-acc-a.db`). Живых LLM-вызовов: **$0**. Зоны чужие не тронуты, ничего не закоммичено.

View file

@ -11,7 +11,7 @@
| Провайдер | base_url | Модель (на 2026-07-04) | env-ключ |
|---|---|---|---|
| DeepSeek | `https://api.deepseek.com/v1` | **`deepseek-v4-flash`** (`deepseek-chat` не в /models, но работает как алиас до депрекации 24.07.2026; эхает zh — см. ниже, брать v4-flash с thinking) | `DEEPSEEK_API_KEY` |
| xAI Grok | `https://api.x.ai/v1` | **`grok-4.3`** (дефолт-редактор/переводчик; для thinking-OFF слать явный `reasoning_effort:"none"` — см. thinking-таблицу ниже; слаг НЕ меняем на non-reasoning вариант — он = grok-4.3+`none` под капотом, ретайр 15.05.2026). `grok-4-fast` не в /v1/models, но работает как алиас (HTTP 200). | `XAI_API_KEY` |
| xAI Grok | `https://api.x.ai/v1` | **`grok-4.3`** *(→ D30.1: из роли РЕДАКТОРА reasoning-off СНЯТ — no-op, exp12; grok — эскалация канала B reasoning-ON и судья 18+, не дефолт-редактор)* (для thinking-OFF слать явный `reasoning_effort:"none"` — см. thinking-таблицу ниже; слаг НЕ меняем на non-reasoning вариант — он = grok-4.3+`none` под капотом, ретайр 15.05.2026). `grok-4-fast` не в /v1/models, но работает как алиас (HTTP 200). | `XAI_API_KEY` |
| GLM (Z.ai) | `https://api.z.ai/api/paas/v4` | `glm-4.5-air` (дёшево) / `glm-4.6`; в /models: glm-4.7, glm-5, glm-5.1, glm-5.2 | `ZAI_API_KEY` |
| Gemini | `https://generativelanguage.googleapis.com/v1beta/openai` | `gemini-2.5-flash`, `gemini-2.5-pro`, `gemini-3.1-pro-preview` | `GEMINI_API_KEY` |
| Kimi (Moonshot) | `https://api.moonshot.ai/v1` (intl, **не** `.cn`) | `kimi-k2.6` (доступны k2.5, k2.7-code) | `KIMI_API_KEY` |
@ -32,7 +32,7 @@
| **Gemini 3.1 Pro** | thinking **обязателен** | `thinking_budget:0` → HTTP 400 «only works in thinking mode». НЕ отключать; дать большой `max_tokens` (≥8000) |
| gpt-5-mini (reasoning) | reasoning ON, выжигал бюджет → пустой ответ | `reasoning_effort: "minimal"`; **без `temperature`**; `max_completion_tokens` вместо `max_tokens` |
| **Kimi K2.6** | думающая, **очень многословная**: ~11k reasoning-токенов на абзац; reasoning в `reasoning_content`, ответ в `content`; при малом бюджете reasoning съедает лимит → `content` **пуст** (finish=length, не ошибка!) | дать `max_tokens` ≥16000; ответ из `content`. **Дорогой в роли редактора** — reasoning биллится как выход |
| **grok-4.3 (xAI)** | reasoning **ON по дефолту = `low`** (must-be-explicit: не задал → думает) | **Off-switch (Chat Completions) — ПЛОСКИЙ `reasoning_effort:"none"` в теле** (`reasoning_effort` ∈ {none,low,medium,high}). ⚠ **Вложенная форма `extra_body.reasoning.effort:"none"` — это Responses API; Chat Completions её МОЛЧА ГЛОТАЕТ** (остаётся дефолт `low`) — из-за этого exp08-проба ложно решила «не отключается». Проверено 05.07: `reasoning_effort:"none"``usage.reasoning_tokens=0`, дефолт→444, `low`→384 (на правке ~2000 ток.). reasoning у xAI **аддитивен к completion** (billed = completion+reasoning). `grok-4.20-0309-non-reasoning` = grok-4.3 + `effort:none` под капотом (ретайр 15.05.2026) → слаг не нужен, слать `none` явно. Для роли РЕДАКТОРА (ru-вход) — ВСЕГДА явный `reasoning_effort:"none"`; для роли ПЕРЕВОДЧИКА на плотном CJK reasoning-off НЕПРИГОДЕН (D19.1: эхо 4/10 + дегенеративный луп; ⚠ языковой констрейнт в system при `none` ИНВЕРТИРУЕТ эхо 3/10→9/10 — research/15 P4) — эскалация канала B идёт reasoning-ON. *(Сужено оркестратором по D19.1/D21; было «editor/translator».)* Источник: docs.x.ai/developers/model-capabilities/text/reasoning. |
| **grok-4.3 (xAI)** | reasoning **ON по дефолту = `low`** (must-be-explicit: не задал → думает) | **Off-switch (Chat Completions) — ПЛОСКИЙ `reasoning_effort:"none"` в теле** (`reasoning_effort` ∈ {none,low,medium,high}). ⚠ **Вложенная форма `extra_body.reasoning.effort:"none"` — это Responses API; Chat Completions её МОЛЧА ГЛОТАЕТ** (остаётся дефолт `low`) — из-за этого exp08-проба ложно решила «не отключается». Проверено 05.07: `reasoning_effort:"none"``usage.reasoning_tokens=0`, дефолт→444, `low`→384 (на правке ~2000 ток.). reasoning у xAI **аддитивен к completion** (billed = completion+reasoning). `grok-4.20-0309-non-reasoning` = grok-4.3 + `effort:none` под капотом (ретайр 15.05.2026) → слаг не нужен, слать `none` явно. **Для роли РЕДАКТОРА reasoning-off СНЯТ (D30.1): grok reasoning-off — no-op-редактор** (exp12 §2.2: активность 0.001, 3/6 чанков байт-идентичны черновику; exp04-ранг был на дефолт-reasoning + БИЛИНГВ). Если grok когда-либо вернётся в редакторы — только reasoning-ON (D6.2-буфер). Для роли ПЕРЕВОДЧИКА на плотном CJK reasoning-off НЕПРИГОДЕН (D19.1: эхо 4/10 + дегенеративный луп; ⚠ языковой констрейнт в system при `none` ИНВЕРТИРУЕТ эхо 3/10→9/10 — research/15 P4) — эскалация канала B идёт reasoning-ON. *(Сужено оркестратором по D19.1/D21; было «editor/translator».)* Источник: docs.x.ai/developers/model-capabilities/text/reasoning. |
| Qwen3.5 / локальные | thinking ON | ollama: `think: false` + `num_predict` cap. Иначе рассуждения (в поле `thinking`, не `response`) забивают контекст |
**Находка (эксп. 03):** reasoning реально улучшает реалии/имена в переводе (羅生門: «Радзёмон»→«Рашо-мон»), но локально нежизнеспособен (8.6 мин/фрагмент). **Открытый вопрос для бэкенда: проверить think-ON на быстром облачном черновике/редакторе как рычаг качества.**
@ -55,7 +55,7 @@
## Контент-фильтры / safety
- **Gemini**: `safety_settings` через OpenAI-совместимый слой **не передаются** (HTTP 400 «Unknown name safety_settings»). Дефолт фильтров у 2.5/3 — OFF (gap-2). Для явного контроля фильтров (роль судьи 18+) нужен **нативный** Gemini API, не OpenAI-слой.
- **Gemini**: `safety_settings` через OpenAI-совместимый слой **не передаются** (HTTP 400 «Unknown name safety_settings»). Дефолт фильтров у 2.5/3 — OFF (gap-2). Для явного контроля фильтров (роль судьи 18+) нужен **нативный** Gemini API, не OpenAI-слой.**D22.6: на ГРАФИЧНОЙ эротике Gemini 3.x fail-closed `PROHIBITED_CONTENT` (8× wire-verified, exp11) — фильтр НЕконфигурируем, нативный API не спасает; судья эротики — только Grok. На violence/SFW Gemini-судья жив.** `finish_reason` приходит СОСТАВНОЙ строкой `'content_filter: PROHIBITED_CONTENT'` (точные матчеры мертвы — D22.8а). Биллинг Gemini: thinking ТОЛЬКО в `total_tokens``reasoning: additive_total`, иначе недоучёт 146×/вызов (D22.3). ⚠ **В роли редактора Gemini течёт сервис-преамбулой в выход («Вот отредактированный…», 6/6 чанков — exp12) → за output-санитайзером D30.3.**
- **Qwen Model Studio**: внешний фильтр `data_inspection_failed` на вход/выход, неотключаем (риск молчаливых вырезаний) — не тестировано (нет ключа).
- Детект отказов/вырезаний — см. `eval/refusal_bench.py` (паттерны soft-отказа + coverage-гейт по len_ratio/sent_cov, пороги в эксп. 02).

View file

@ -1,5 +1,7 @@
# Эксперимент 04. Качество редактора ru-стиля (бейк-офф)
> **⚠ Рекомендация ОТМЕНЕНА (ревизия D31 / D30.1, 12.07).** Этот бейк-офф короновал grok-4.3 как дефолт-редактор, но: (а) мерил редакторов **БИЛИНГВАЛЬНО** (исходник+черновик, строка 7) на **дефолт-reasoning**, тогда как боевой D1 был МОНО + `reasoning_effort:none` — quality-transfer риск (exp08 §Ограничения) **материализовался** (exp12: grok reasoning-off = no-op-редактор, активность 0.001; glm-моно = нечитаемый этап A); (б) слепота LLM-плеча структурно сломана (D13.5). **Актуальный редактор: БИЛИНГВ, кандидат glm-5-билингв** (exp12/D30.1; GLM-4.6 был слабейшим ЗДЕСЬ — перемерен на GLM-5), gemini — премиум-эскалация только за санитайзером (течёт преамбулой 6/6, D30.3), grok reasoning-off из редакторов снят. Токен-замеры/методика — историческая фактура; **вывод о дефолте не абсорбировать**. Финал редактора — пере-прогон кандидатом (D30.9) + подтверждающий арм пилота D13.1.
Дата: 2026-07-04. Отвечает на вопрос бэкенда №2 (дефолт редактора для Фазы 1) и решение владельца заменить Anthropic. Скрипт: `eval/editor_bench.py`; сравнение: `eval/build_editor_artifact.py` → артефакт.
## Метод

View file

@ -9,7 +9,7 @@
- **Коридоры len_ratio не слишком узкие:** zh хорошие 2.643.74 (пол 2.2, запас ≥20%), ja хорошие 1.592.35 (пол 1.4, запас ≥14%). Ложных срабатываний по нижней границе len_ratio — ноль.
- **Рекомендация: флип МОЖНО (по precision).** Порог главы: **≥2 флага/главу = «fail», 1 флаг = «attention»** — консервативно к невиданному диалого-плотному вебновелл-корпусу. Коридоры/пороги менять не нужно.
- **Побочно (важно бэкенду): draft-эхо на классическом zh — не единичный баг, а системный.** deepseek-v4-flash эхнул **13/24** zh-чанков Лу Синя, grok-4.20-non-reasoning — **10/24** (лёгкая правка исходника вместо перевода, cjk_share 7885%). Это ловит **интринсик echo-гейт** (не coverage) — но означает, что классическая/литературная zh требует эскалации черновика.
- **Побочно (D§85): `finish_reason=content_filter` не эмитит НИ ОДИН** из 5 провайдеров (deepseek/glm/kimi/gemini/grok) на SFW-violence — все `finish=stop`, 200, перевели. Ветка диспозиции по content_filter практически мертва на переводимом контенте → реальная страховка — refusal-blacklist (подтверждает D2.4).
- **Побочно (D§85): `finish_reason=content_filter` не эмитит НИ ОДИН** из 5 провайдеров (deepseek/glm/kimi/gemini/grok) на SFW-violence — все `finish=stop`, 200, перевели. Ветка диспозиции по content_filter практически мертва на переводимом контенте → реальная страховка — refusal-blacklist (подтверждает D2.4). *(→ сужено D21.9/D22.6: верно для SFW/violence и 5 ядровых; на Gemini 3.x ветка ЖИВА и на ГРАФИЧНОЙ эротике СИСТЕМНА — 8× `PROHIBITED_CONTENT` СОСТАВНОЙ строкой, точный матчер мёртв (D22.8а). refusal-blacklist остаётся страховкой.)*
- **Оракул↔Go:** Go-тесты паритета (`Oracle|Coverage|Split`) зелёные на HEAD → замер Python-оракулом Go-верен.
**Ограничение:** корпус — PD-классика (нарратив-смещённая проза), не современные вебновеллы/ранобэ (плотнее диалогом, звукоподражания, терсные реплики). Механизм («ru дробит → sent_cov растёт») должен держаться и там, но **решающий диалого-плотный срез — на реальных главах владельца** (просьба ниже).

View file

@ -1,5 +1,7 @@
# Эксперимент 08. COGS v2 на ратифицированном Ф1-стеке (draft=DeepSeek, editor=grok, apex=Gemini)
> **⚠ Точка-во-времени 05.07 (ревизия D31 / D30, 12.07).** Модель стоит на ДВУХ снятых посылках: `h_e=0.5` (МОНО-редактор без исходника) и `editor=grok reasoning-off`обе флипнуты D30.1 (редактор БИЛИНГВ, вход +60% токенов; кандидат glm-5-билингв). **COGS-рамка → D30.4: флип D1 = +1525%, ~$0.830.86/ранобэ; «$1.52» = опция Б (селективный апекс+память), НЕ подписана.** Пере-съём заказан как **exp08 v3** (D21.8: строки annotator+voice/pair; D25.8: API-only vs all-in COGS раздельно + human-minutes). Сам док ЧЕСТНО предсказал обе проблемы (см. §Ограничения — quality-transfer риск grok-моно). Токен-множители/пропорции стадий — живая фактура; конкретные $-числа читать через D30.4.
**Дата:** 2026-07-05 · **Зона:** полигон · **Гейтит:** дефолты `budget_usd` и приёмочные $-пороги Ф1 (D-эконом, D11/Q4).
**Заменяет:** цифры эксп.01 (были на Sonnet-редакторе) и оба устаревших порога — стандарт $0.6, премиум $5/$30.

View file

@ -1,5 +1,7 @@
# Эксперимент 09. Протокол пилота Фазы 2.5 — выбор ядра, memory-bet, судья, think-режим (v2, D13)
> **⚠ Указатель ревизии D31 (12.07).** Протокол жив (решающая точка проекта). НЕ внесены пост-D13 амендменты — при подготовке решающего прогона добавить: **D30.1** (арм «моно vs билингв» из решающего → ПОДТВЕРЖДАЮЩИЙ — флип D1 принят досрочно exp12; редактор-стек: билингв, кандидат glm-5-билингв, grok reasoning-off снят; draft под вопросом exp13 — D30.6); **D21.4** (тиринг армов voice-A/B/C/D + судейские армы формата/сэндвича с echo-охранной метрикой + minimal-diff-редактор); **D25.3** (prefix-анализ судьи 1/3/5 vs full-11 из ТЕХ ЖЕ данных — sequential-stopping как замена протокола отклонён); **D25.6** (инструментировка minutes/flag + typed resolutions + аудит unflagged); **D30.10** (span-цитирующие судьи reasoning-ON, раздельные вызовы стиль/верность — урок exp12: скаляры без спанов нечувствительны). Блокеры (D27.1): корпус вне претрейна, аннотаторы ≥3, билингв-якорь (D25.9-Q1), проба судьи-дублёра 18+ (D22.6).
**Дата:** 2026-07-05 · **v2:** 2026-07-09 (поправки D13, починка харнесса, Pearmut-вердикт) · **Зона:** полигон (флагман) · **Статус:** протокол + харнесс (memory_eval починен и валидирован индикативом); решающий прогон ждёт корпус владельца + человеческих аннотаторов.
**Закрывает решения:** выбор ядра C0C3 (Р2), go/no-go на банк памяти (research/13 §Вердикт), валидность LLM-судьи (research/11-gap-3), think-ON/OFF (D6), ценность пре-пасса Annotator (04-unhappy).

View file

@ -1,6 +1,6 @@
# LLM API провайдеры для художественного перевода (zh/ja/en/ru): цены, качество, цензура
> ⚠ **SUPERSEDED ЧАСТИЧНО (09.07.2026).** Рекомендации ролей устарели: редактор — grok-4.3 (эксп.04, D3), НЕ GLM/Kimi/Sonnet; Anthropic удалён; grok-4.1-fast ретайрнут. Канал B: DeepSeek для explicit ЗАПРЕЩЁН его ToS (upd 27.03.2026) — D14; Mistral (policy 11.06.2026) — кандидат-фолбэк. Актуальные цены — `../experiments/08-cost-model-v2.md` + `backend/configs/models.yaml`; квирки — `../experiments/00-provider-quirks.md`; стек — D3/Р4.
> ⚠ **SUPERSEDED ЧАСТИЧНО (обновлено ревизией D31, 12.07.2026).** Рекомендации ролей устарели: **редактор — БИЛИНГВ, кандидат glm-5-билингв (D30.1); grok reasoning-off из редакторов СНЯТ как no-op (exp12); gemini — премиум-эскалация только за санитайзером (течёт преамбулой 6/6 — D30.3)**; переводчик deepseek — интерим до бейк-оффа exp13 (D30.6). Anthropic удалён; grok-4.1-fast ретайрнут. Канал B: переводчик-дефолт **Mistral** (policy 11.06.2026), эскалация grok reasoning-ON (⚠ не на архаичном Хане — D22.5), DeepSeek для explicit ЗАПРЕЩЁН его ToS — D14.1; судья эротики — только Grok (Gemini fail-closed — D22.6). Ключ xAI един, С data-sharing, off перед продом (D27). Актуальные цены — `../experiments/08-cost-model-v2.md` (читать через D30.4) + `backend/configs/models.yaml`; квирки — `../experiments/00-provider-quirks.md`; стек — D-лог (карта актуальности сверху).
Дата исследования: **2026-07-04**. Все цены проверены на официальных страницах прайсинга на эту дату (исключения помечены). Валюта — USD за 1M токенов, формат «input / output».

View file

@ -1,5 +1,7 @@
# 11. Gap-2: 18+ маршрутизация — де-юре и де-факто политики провайдеров (июль 2026)
> **⚠ Enforcement-матрица жива; состав канала B пересобран (ревизия D31 / D14D22, 12.07).** Не абсорбировать как текущий стек: «xAI — основной NSFW-канал MVP» → переводчик-дефолт канала B = **Mistral** (D19.1), grok = эскалация reasoning-ON; «Gemini — рабочий judge для 18+» → **fail-closed на графичной эротике** (8× `PROHIBITED_CONTENT`, неконфигурируемо — D22.6; жив на violence/SFW); DeepSeek де-факто NSFW-практика ≠ наша политика — **выведен из explicit по ToS (D14.1)**. Ключ xAI един, С data-sharing (D27). Per-provider enforcement-факты ниже — актуальны.
Цель: разрешить противоречие doc 04 ↔ doc 08 по OpenAI, дать проверенный срез enforcement-практики по всем провайдерам и зафиксировать двухканальную маршрутизацию NSFW для MVP. Все даты и статусы проверены поиском на 04.07.2026; непроверенное помечено.
> **⟶ ЧАСТИЧНО ПЕРЕОПРЕДЕЛЕНО (2026-07-05).** Роутинг вокруг «избегания Anthropic-аккаунтов» неактуален — Anthropic выброшен из стека целиком (Р4/D3, `c7f8a95`). Двухканальная модель A/B и срез enforcement-политик провайдеров остаются справочником.

View file

@ -227,7 +227,7 @@
1. **F1 (фикс snapshotID) — УЖЕ РЕАЛИЗОВАН бэкендом (commit 5eaf2d9), тем самым «материализующим» вариантом, к которому я склонялся** (snapshot содержит `context_assembly` + `MemoryVersion` = хеш материализованной памяти; `memoryVersion()` пока хеширует константу-заглушку до приземления банка v2, комментарий в коде явно держит инвариант). **Каветат снят.** Узкий остаток: при приземлении глоссария заменить заглушку на реальный хеш замороженных материализованных строк — иначе инвариант тихо регрессирует. (Я держал это как «открытый гейт, а фикс — лишь направление» по УСТАРЕВШЕМУ чтению кода начала сессии — на деле бэкенд уже ушёл далеко вперёд и это сделал.)
2. **Пост-check в русском — несущий И невалидированный.** Весь safety-аргумент реестра держится на пост-check как «главном детекторе тихой деградации». Но проверка «утв. `dst` присутствует» в русском требует **склонение-осознанного матча** (лемматизатор), и он ошибается: ложно-отрицательное (форма есть, но матч промахнулся) → ложный флаг → шум → редакторы перестают верить флагам → safety рушится. В `memory_hotpath` я использовал игрушечные регэксп-корни. **Надёжность пост-check в русской морфологии — сама по себе непроверенный research-вопрос; если он шумит, вся защита слабеет.** Замерить до того, как доверять ему как гейту.
2. **Пост-check в русском — несущий И невалидированный.** Весь safety-аргумент реестра держится на пост-check как «главном детекторе тихой деградации». Но проверка «утв. `dst` присутствует» в русском требует **склонение-осознанного матча** (лемматизатор), и он ошибается: ложно-отрицательное (форма есть, но матч промахнулся) → ложный флаг → шум → редакторы перестают верить флагам → safety рушится. В `memory_hotpath` я использовал игрушечные регэксп-корни. **Надёжность пост-check в русской морфологии — сама по себе непроверенный research-вопрос; если он шумит, вся защита слабеет.** Замерить до того, как доверять ему как гейту. *(→ СНЯТО исполнением, D31: пост-check реализован decl-aware путём — `decl.forms` в сиде + D24.4 union базовой формы, НЕ pymorphy-лемматизация; замерен на этапе A — 0% ложных на full-decl, 67% на base-only → держится OFF-флаггером ровно как каветка требовала; D28.1 честный precision/recall-трейдофф — hard-gate флип требует пере-замера recall; D24.2 alias-слепое пятно ≈99.5%.)*
3. **«Пусто = безопасно» — подано слишком сильно; дизайн меняет ложную-инъекцию на ложный-ПРОПУСК, а пропуск тоже тихий.** Recall точного матча в моём бенчмарке — **0.571**: ~43% релевантных записей НЕ инъектируются (косвенные упоминания, перефраз, местоимения сверх sticky). Пропущенная запись → несогласованный рендеринг → ровно тот дрейф, которого боимся. Precision-first — защитимая ставка, но это **размен**, и net-положителен ли он — именно то, что должен померить Ф2.5. Я эту напряжённость в собственной рекомендации сгладил.

View file

@ -180,7 +180,7 @@
Раз гибрид отклонён — правильный ход не «обучать ранкер», а **добивать детерминированную сторону**. Замер `eval/adaptive_levers.py` (трудный чанк 阿Q, 11 сущностей, 1600 знаков, deepseek+grok) даёт кривую рычагов и порядок внедрения бэкенду:
- **L1 — post-check ЛЕММАТИЗИРУЮЩИЙ (pymorphy3), не регэксп. Внедрять ПЕРВЫМ.** Наивный `\b`-регэксп на трудном чанке даёт **1836% ложных флагов** (deepseek 2/11, grok 4/11 — склонённые формы, отрендеренные верно). pymorphy3 их снимает и **сворачивает OOV-транслит** (Вана→ван, Дэна→дэн, Вэйчжуане→вэйчжуан). Это количественная валидация несущего невалидированного риска research/13 §2 (регэксп-шум → редакторы не верят флагам → safety рушится). Дешевле всего, чинит больше всего.
- **L1 — post-check ЛЕММАТИЗИРУЮЩИЙ (pymorphy3), не регэксп. Внедрять ПЕРВЫМ.** *(→ реализовано ИНОЙ формой, D31: боевой post-check — decl-aware через `decl.forms` сида + D24.4 union базовой формы; pymorphy3-лемматизация НЕ принята, проблему ложных флагов регэкспа закрыл decl-набор — 0% ложных на full-decl, этап A; D25.8 фиксирует «наш decl-aware путь» как ответ на морф-оговорку Exel et al.)* Наивный `\b`-регэксп на трудном чанке даёт **1836% ложных флагов** (deepseek 2/11, grok 4/11 — склонённые формы, отрендеренные верно). pymorphy3 их снимает и **сворачивает OOV-транслит** (Вана→ван, Дэна→дэн, Вэйчжуане→вэйчжуан). Это количественная валидация несущего невалидированного риска research/13 §2 (регэксп-шум → редакторы не верят флагам → safety рушится). Дешевле всего, чинит больше всего.
- **L2 — RECALL матчера: нормализация (полная, тестируемая) + alias-граф + sticky.** Точный матч на trad/alias формах: recall **0.00 → +норм 0.50 → +alias 0.75**. Живой баг: неполная trad-карта (爺→爷) молча промахнула 赵太爷 → **A4 подтверждён: нормализацию покрыть и тестировать бит-в-бит** (OpenCC, не мини-карта). Крупнейший рычаг рекола (retrieval_bench recall 0.571 — 43% упоминаний не инъектится).
- **L3 — post-check + точечный re-ask** (verifier-gated correction, M2). На трудном чанке добивает реальные промахи adherence (deepseek 0.82→0.91). Не чинит гомограф/односимвольный ключ (钱) — и не должен.
- **L4 — таблица Палладия/Поливанова (B6): потолок ПРАВИЛЬНОСТИ.** L1L3 поднимают «использует ли модель канон»; L4 — «правильный ли канон». Локаль zh 0.26, облако-топ 0.75 — только детерминированная таблица закрывает разрыв.

View file

@ -1,5 +1,7 @@
# 15 — Голос и состояние: контекст-инжиниринг сверх терминологии
> **⚠ Указатель ревизии D31 (12.07).** Ф2-механизмы (voice-профиль, address_pair, reveal-окна, anti-echo P4) ратифицированы D21 и живы — тело не трогать. Но эмпирика **редакторского слота** здесь снята на конфигурации, которую D30 объявил дефектной: **P3 «голос выигрывается на ДРАФТЕ, не на редактуре» мерялась на ПАССИВНОМ моно-grok-редакторе** (вернул черновик дословно 3/4 — это и был дефект, exp12/D30.1, а не свойство роли редактора). После флипа D1 (редактор БИЛИНГВ и АКТИВНЫЙ) премиса «редактор не сгладит голос» НЕ мерена — voice-слот пере-оценить в пилоте (D21.1г editor-слот не исключён).
**Дата:** 2026-07-09 · **Сессия:** «Голос и состояние» (промт `docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md`) · **Зона записи:** этот файл + секция в PROGRESS.
**Метод:** мультиагентный веб-ресёрч по образцу research/13/14 — 12 направлений-сборщиков → адверсариальная верификация каждого несущего клейма по первоисточникам (refute-by-default; ~60 верификаторов) → completeness-критик → 6 доборов пробелов; 91 агент, ~3.2M токенов, 0 отказов. Плюс **живые пробы** на чанках 蛊真人 (deepseek-v4-flash боевым промптом, судьи grok-4.3/gemini — кросс-семейно, свап позиций; потрачено **$0.28 из $4**; сырые выходы персистированы в scratchpad сессии, сводка — §Пробы). ⚠ Амендмент мандата 3-bis (коммит 17ccea4, эхо-мода) залетел ПОСЛЕ старта сессии и был увиден постфактум — веб-часть (а)(б) оказалась закрыта completeness-критиком до его прочтения, проба (в) выполнена дополнением (§Пробы P4) с учётом exp10/D19 полигона. Каждый факт — URL+дата (фетчи 2026-07-09); препринт ≠ peer-review, вендор-клейм ≠ замер. Вердикты: **CONFIRMED** (первоисточник прямо подтверждает) / **PLAUSIBLE** (правдоподобно, прямого подтверждения нет) / **REFUTED**.
**Зоны не тронуты:** `backend/`, `eval/`, `architecture/` — только чтение; ничего не закоммичено; текст книги и производные — вне git.

View file

@ -1,6 +1,7 @@
# Внешняя критика «восхождение»: независимая карта и дифф
> **⚠ Ревью-шапка оркестратора (11.07.2026, D25; тело документа ниже НЕ редактировалось).** Провенанс: внешний критик GPT-5.6 по мандату `GPT_EXTERNAL_ASCENT_PROMPT.md` (анти-якорный трёхфазный протокол), 2026-07-10. Вердикт адверсариального ревью (12 агентов: 19 первоисточников по живым URL, протокол-аудит, line-refs, red-team §C/§D): **ACCEPT_WITH_FIXES — абсорбция ТОЛЬКО через D25**, не напрямую. Поправки чтения:
> 0. **(добавлено D31, 12.07)** Тело пре-датирует D30: §C-таблица (строка «Редактор») описывает проектную колонку как «D1 монолингвальный editor, понижен D17» — **устарело: D30.1 флипнул D1, редактор БИЛИНГВ** (рекомендация критика «bilingual adequacy-preserving edit» принята досрочно через exp12; подтверждающий арм пилота D13.1 сохранён). «$0.69/ранобэ» (§B1.5) → ~$0.85 (D30.4), но КЛЕЙМ «не all-in cost» верен и абсорбирован D25.8.
> 1. **Метки §B2 и «Итога» читать как PLAUSIBLE, не CONFIRMED**: ценностные сравнения «чей путь сильнее» — неизмеренные гипотезы по определению §1 самого документа; «PARTIAL» (§B2-голос) — вне его словаря вердиктов.
> 2. **Конвергенция §A↔проект на осях, засеянных мандатом, — НЕ независимое подтверждение**: девять обязательных осей и фаза-3(г) мандата встроили наши выводы (недоверие судьям, переоплата снапшота, род-спойлеры, список признанных дыр с D-номерами) в задание до написания §A. Независимую ценность несут незасеянные оси (A3 режимы faithful/light-edit/adaptation, A10.1 rights manifest, A10.3 ingestion round-trip, A10.5 book-level сплиты, A10.7 span lineage, A6 canary suite, A9 fault-injection) и явные расхождения. Анти-якорение со стороны критика при этом соблюдено (лексический аудит: внутренние маркеры в §A отсутствуют, словарь систематически другой, расходится с контрактом на реальных развилках; errata-без-правки-§A — честный сигнал); фриз §A — attested, not proven (файл вне git до этого коммита; впредь — хешировать §A до фазы 2).
> 3. **Первоисточники: 19/19 существуют и в основном поддерживают клеймы**; нюансы (полный список в D25): морф-оговорка Exel et al. (EAMT 2020) процитирована с инверсией — морфологию ломают КОНКУРИРУЮЩИЕ constrained-decoding методы, собственный train-by метод авторов её для русского решает; Tan et al. — «шести LLM» = метаданные venue, PDF говорит 9 (6 рефайнеров); Kim (ACL Ind. 2025) — скоуп GEMBA-MQM-класса, не все LLM-судьи; Target 2026 — направление пары zh→en из абстракта не верифицируемо (Benjamins 403); IEICE 2026 — оценка существующих LLM (>87% floor), не спец-модель.