diff --git a/backend/prompts/editor-mono.md b/backend/prompts/zh-ru/editor-mono.md similarity index 100% rename from backend/prompts/editor-mono.md rename to backend/prompts/zh-ru/editor-mono.md diff --git a/backend/prompts/editor.md b/backend/prompts/zh-ru/editor.md similarity index 100% rename from backend/prompts/editor.md rename to backend/prompts/zh-ru/editor.md diff --git a/backend/prompts/judge-selector.md b/backend/prompts/zh-ru/judge-selector.md similarity index 100% rename from backend/prompts/judge-selector.md rename to backend/prompts/zh-ru/judge-selector.md diff --git a/backend/prompts/translator.md b/backend/prompts/zh-ru/translator.md similarity index 100% rename from backend/prompts/translator.md rename to backend/prompts/zh-ru/translator.md diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index cae08fc2..28b05ad8 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -9,6 +9,10 @@ > - **Ждём от владельца:** тачпойнты exp16 (карта подписи/пол · мини-голд алиасов · precision@30, `books/gu-zhenren/exp16/`, ~30–40 мин — для сид-дельты к пере-прогону) · развилки плана §10 (W1.5-UX · DC5-стих-политика · Edit-ceiling · и др.) · реплика ja→ru (тест общности §B5) · **ре-чек прайса DeepSeek у катовера слагов 24.07** (до него платных deepseek-прогонов нет) · чтение пере-прогона (после R1+resnapshot) · старые висящие: планка запуска (лучше-фана/гибрид/издательский) · билингв-якорь пилота (D25.9-Q1) · контаминация пилот-корпуса (D27.4) · publishable/waiver (D25.1) · FN-bound L3 (D25.4) · юр-пакет · провенанс 12-*-доков. > - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `archive/PROGRESS-2026-07-10-13.md` (D39.6-гигиена). Записи ниже — живая эра D39. +## Оркестратор №7 — research/22 (доменные харнессы) ПРИНЯТ и залендён; вердикт: калибрующий, не переворачивающий, 24.07 + +Сессия сдала ревизию-2 (после СОБСТВЕННОГО 9-агентного адверсариала синтеза, поймавшего её факт-ошибки — прецедент мандата 12.07 в лучшей форме). Мой спот-чек 5/5 (detectCJKLeak/cheapgate-v4/ledger наши · ProofreadTask/GenDic их). **Оценка:** ядровые ставки ПОДТВЕРЖДЕНЫ рынком+академией (fused-майнинг>bolt-on доказан смертью KeywordGacha; DelTA-роадмап = наш пройденный путь; TransAgents назвали нашу D39.20-проблему и не решили; north-star «измеренная редактура» НЕ роадмапится никем — окно открыто). **Мы безоговорочно впереди:** COGS-телеметрия · 18+ · общность · измеренность (recall 0.932, вклад ролей). **Позади:** Q4 выпуск/epub (разрыв РАСТЁТ — bbm/Immersive активно куют) · gate+repair-петля QA (они чинят typed-error→адресный ре-перевод, мы флагаем). **В планы:** слой-3 diff-редактор получает прецедент AiNiee/LinguaGacha (приоритет↑, пак-15/16) · epub-tag-rewrite не держать до Ф3 бесконечно (кандидат после пилота) · Q7-леджер дополнить (глагольный вид/addition/voice-flattening) · Problem.py-классы reflow-aware (char-freq, control-code) · LinguaGacha = бенчмарк-кандидат №1 · SakuraLLM мониторить (канал B/ja→ru). «D39.7-коллизия» разрешена: не коллизия, ссылка на стандарт. Промт → архив. + ## Оркестратор №7 — паки 12+13 ПРИНЯТЫ (25-агентный воркфлоу) и залендены; директива общности → норматив+фикс-лист; промт пака-14 выдан, 24.07 **Лендинг двумя коммитами по зонам** (`7fe0a5b` пак-12, `2f91b04` пак-13). Приёмка: build/vet + полный `-race` зелёные (сам) + воркфлоу 25 агентов/0 ошибок: пак-12 все пункты CONFIRMED, wire-нейтральность доказана по коду (маршалинг запроса не тронут); пак-13 все 10 CONFIRMED (сид↔дельта-гард loud, heading = langpack-данные с golden-no-op, книго-чекеры сняты сессией по директиве, FP-фиксы исполнением); **golden исчерпывающе: 113 пар хеш-only + 4 version-строки + 10 строк ЕДИНСТВЕННОГО wire-изменения (gender-аннотация в драфт-глоссарий, «род должен доезжать» D39.21) — категория «прочее» = 0**; зоны дизъюнктны, санкция echo_mine соблюдена. Нюансы зафиксированы: джиттер поверх 5-мин капа (+25% максимум, анти-herd, принято) · additive при total=0 (анти-undercount, принято) · few_shot:false у dspro-редактора (зеркало арма, принято). **Директива владельца «движок не врастает в книгу/пару» → норматив `12-go-style-notes.md` §0 + CLAUDE.md-гардрейл + генеральность-аудит:** подтверждённые (пережили refute-pass) утечки: **古月 в общем zh-langpack (книжный клан как «фамилия»!)** · ru-инъекция-строки для любой пары (`memory.go:601`) · refusal-блэклист в Go (`disposition.go:235`) · zh-числительные+sourceAbbrevs чанкера · терминаторы/фонотактика майнера · DC1/register-таблицы чекеров · fertility-fallback. **Промт пака-14 «генеральность-пасс» выдан** (байт-точность/парити EXACT, 古月 через книго-расширение langpack). Go-стиль-вопросы владельца закрыты в 12-*: источник = Google Go Style Guide (+Decisions/Best Practices/Effective Go/CodeReviewComments); `_test.go` рядом с кодом = требование тулчейна; 50 файлов в пакете = норма, сплит только по концептуальной подсистеме. Сид: 资质=«талант» добавлен (D39.21, lint OK); гу-ср.род → brief-слот следующего прогона (enum пола wire = male/female/hidden, среднего нет — nit пака-14+). **research/22 сдан сессией (обнаружен аудитом зон) — ПРИДЕРЖАН до ревью оркестратора, в паки не вмешан.** diff --git a/docs/README.md b/docs/README.md index 8a3c7400..73090dc9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,7 @@ - `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1–D39.16); при конфликте с любым доком он выше.** - `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, топ-риски, курс-коррекции**; **[`08-sync-audit-ledger.md`](architecture/08-sync-audit-ledger.md) — верифицированный ледджер синк-аудита «сломанного телефона» (65 находок, D39)** · **[`09-target-architecture.md`](architecture/09-target-architecture.md) — целевая 7-слойная архитектура + фазовый план арх-ресета (D39; инвариант общности §0.1)** · [`10-prompt-architecture.md`](architecture/10-prompt-architecture.md) — консолидированная промпт-заметка (концерн 4); **[`11-implementation-plan.md`](architecture/11-implementation-plan.md) — РАТИФИЦИРОВАННЫЙ план стройки пере-прогонного стека (D39.12; дизайн-оф-рекорд бэкенд-пака, три рубежа верификации)**; `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/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** · **`21` обзор LLM-транспорта чужих харнессов (23.07: наш транспорт опережает/вровень со всеми 11; рекомендации DEFER до после пере-прогона, Q7-квирки — кандидаты до вендор-сверки)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. +- `research/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** · **`21` обзор LLM-транспорта чужих харнессов (23.07: наш транспорт опережает/вровень со всеми 11)** · **`22` доменные харнессы перевода (24.07: калибрующий — ядро подтверждено, впереди COGS/18+/общность/измеренность, позади Q4-выпуск и gate+repair-петля; сиквел `02`/`05`)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. - `PROGRESS.md` — **журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений). - **Активные хендофф-промты (пост-паки-12/13, 24.07):** [`BACKEND_GENERALITY_PASS_SESSION_PROMPT.md`](BACKEND_GENERALITY_PASS_SESSION_PROMPT.md) (**пак-14 генеральность-пасс — ТЕКУЩИЙ**: подтверждённые утечки пара/книга-данных из Go в langpack/сид; байт-точность+парити EXACT; норматив — [`architecture/12-go-style-notes.md`](architecture/12-go-style-notes.md)) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **Паки 12/13 ЗАЛЕНДЕНЫ 24.07** (`7fe0a5b`/`2f91b04`, приёмка 25-агентным воркфлоу; их промты + research/22-промт → архив после ревью research/22). Дальше: пак-15 = канал B вживую + хвосты слоя 7 → пак-16 = слой 3 diff-based редактор → голос/состояние D21 + C2/C3. Закрытые — в `archive/prompts/`. - `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять). diff --git a/docs/DOMAIN_HARNESS_RESEARCH_SESSION_PROMPT.md b/docs/archive/prompts/DOMAIN_HARNESS_RESEARCH_SESSION_PROMPT_2026-07-24.md similarity index 100% rename from docs/DOMAIN_HARNESS_RESEARCH_SESSION_PROMPT.md rename to docs/archive/prompts/DOMAIN_HARNESS_RESEARCH_SESSION_PROMPT_2026-07-24.md diff --git a/docs/research/22-domain-harness-survey.md b/docs/research/22-domain-harness-survey.md new file mode 100644 index 00000000..4bea9d06 --- /dev/null +++ b/docs/research/22-domain-harness-survey.md @@ -0,0 +1,345 @@ +# research/22 — Доменные харнессы перевода: конкуренты vs наш бэкенд + +> **РЕВЬЮ-ШАПКА ОРКЕСТРАТОРА (лендинг 24.07.2026).** Отчёт прошёл ДВА рубежа самой сессии (19-агентный по чужому коду + 9-агентный адверсариал собственного синтеза, поймавший её же факт-ошибки — ревизия 2 их вшила). Мой спот-чек при лендинге: 5/5 несущих клеймов сошлись байт-в-байт (наши `detectCJKLeak sanitizer.go:188/411` · `cheapgate-v4 cheapgates.go:55` · `ledger Reserve/SettleWithCheckpoint` — существуют; их AiNiee `ProofreadTask` typed-error→адресный proofread и GalTransl `GenDic` greedy set-cover — ровно как заявлено). **Флаг «D39.7-коллизия» разрешён: коллизии нет** — «риг-стандарт D39.7» в промтах/доках означает стандарт, УСТАНОВЛЕННЫЙ решением D39.7 (exp15: per-vote/полные окна/floor), а не отдельный D-номер рига; подпись в `eval/rerun2_judge/judge.py` корректна как ссылка на стандарт. Рекомендации §2 — кандидаты, абсорбция по решениям в PROGRESS/D-логе; оценка важности и маппинг в планы — отчёт оркестратора владельцу 24.07. + +> **Ресёрч-сессия, 2026-07-24. Роль — ресёрч ($0: ни одного вызова моделей, чужие тулзы не +> запускались, ключи не тронуты; `backend/` read-only). НЕ закоммичено — лендит оркестратор.** +> **РЕВИЗИЯ 2 (после второго адверсариального рубежа, см. §0).** Сиквел research/21 (транспорт +> агент-CLI) И **углублённый file:line-разбор конкурентов, УЖЕ обозренных на маркет-уровне в +> `research/02-competitors` и на уровне глоссарий-кода в `research/05-memory-glossary`** (этот +> отчёт — их продолжение, не первичное открытие; ценность = file:line-глубина + Q6-чекер-таксономия +> + новички + датированный Q7-корпус, НЕ вердикт — его 02/05/15 уже вынесли). + +## §0. Дисциплина верификации (два рубежа, мандат 12.07) + +**Рубеж 1 — атомы (клеймы о чужом коде).** Мульти-агентный воркфлоу (19 агентов, 0 ошибок): по +ридеру на репо → адверсариальный верификатор (author≠reviewer, открыть каждый несущий `file:line`). +Код-верифицированных несущих клеймов **~88** (AiNiee 22 · GalTransl 15 · Luna 14 · TransAgents 14 · +bbm 12 · translation-agent 12): **CONFIRMED все кроме 4 IMPRECISE** (сдвиг строки-якоря, клейм верен), +**0 REFUTED**. README≠код поймал 2 вендор-овер-клейма (bbm «summary», TransAgents «beyond human»). + +**Рубеж 2 — синтез (сам этот отчёт).** 9 агентов сквозняком по всей архитектуре (01–11), всему +research (01–21), всем backend-пакетам, eval + критик полноты. **28 MAJOR / 23 MINOR находки — +ревизия 2 их впитала.** Крупнейшие правки (все сверены мной по HEAD `b8a7863`): +- **Факт-ошибка (была):** пак-13 и пак-12 **ЗАЛЕНДЕНЫ** (`2f91b04`, `7fe0a5b`), пак-14 в работе. + Первая версия писала «пак-13 строит/UNBUILT/закрывает разрыв» — неверно. Чекеры percent/latin/ + broken-word ПОСТРОЕНЫ (`cheapgates.go:55` `cheapgate-v4-percent-latin-brokenword`), но + **observability-only** — разрыв с их gating+repair НЕ закрыт (см. Q6). +- **Ложный негатив (был):** у нас ЕСТЬ residual-CJK-детектор на выходе — `detectCJKLeak`/ + `isCJKLeakRune` с gloss/ruby-whitelist (`sanitizer.go:188,411,83`) = аналог AiNiee. Первая версия + писала «нет / пак-13 строит». +- **Пропущенная ось:** COGS-телеметрия (`store/ledger.go` Reserve/Settle + потолки BookUSD/DayUSD; + `ledger/pricing.go` CacheWrite-премия) — мы лидируем **безоговорочно vs все 7**; prompt-cache + вшит (`render.go:223`, `provider_anthropic.go`). NovelTrans-Stripe = биллинг клиентов, не COGS. +- **Кредит прайор-арта:** база нашего глоссария (src→dst/#info, matched-only, sticky, токен-бюджет) + сознательно взята у GalTransl/SakuraLLM/SillyTavern (`research/05:66-84,146,152`); уникальна — + только КОМПОЗИЦИЯ (род+склонение+скоуп+trust+priority-eviction). SakuraLLM (следование глоссарию + через ДООБУЧЕНИЕ) — пропущенный Q1-механизм. + +## Лицензии материала (сверены 23–24.07) + +| Репо | Лицензия | Код в клоне | Метод | +|---|---|---|---| +| AiNiee | **AGPL-3.0** | 45.7k Py LOC | читать+описывать; копировать НЕЛЬЗЯ | +| GalTransl | **GPL-3.0** | 32.9k Py LOC | читать+описывать; копировать НЕЛЬЗЯ | +| LunaTranslator | **GPL-3.0** | 71.6k Py (в скоупе ~перевод/глоссарий) | читать+описывать; копировать НЕЛЬЗЯ | +| TransAgents | Apache-2.0 (⚠ README-бейдж CC BY 4.0) | **НЕТ кода** — README+outputs | README/артефакты only | +| bilingual_book_maker | MIT | 9.0k Py LOC | описание паттернов | +| translation-agent | MIT | 1.8k Py LOC | описание паттернов | +| KeywordGacha | **БЕЗ лицензии** | клон удалён | ТОЛЬКО онлайн README/DeepWiki/issues | + +**Ни строки чужого кода в textmachine. Все клеймы о коде — `repo/file:line`, README помечен «(README)».** + +--- + +## §1. Вердикт: кто впереди по осям (и по планам/подходам) + +**Кратко: мы впереди на защищаемом ЯДРЕ (память-банк-КОМПОЗИЦИЯ Q1, экономика/детерминизм майнинга +Q2, строгость связности Q3 [предварительно], доказательность ролей Q5) + на трёх осях, которых нет +у конкурентов вовсе (деньги, 18+, общность языка/структуры). Позади на ВЫПУСКЕ (Q4). Q6 — детекция +теперь построена (паки залендены), но GATING+REPAIR-петля у них есть, у нас нет.** + +| Ось | Кто впереди | Почему (с поправками ревизии 2) | +|---|---|---| +| **Q1 глоссарий** | **МЫ — но на заимствованной базе** | База (src→dst/#info, matched-only, sticky, токен-бюджет) взята у GalTransl/SakuraLLM/SillyTavern-WorldInfo (`05:77,94,152`); **уникальна только КОМПОЗИЦИЯ** — per-терм род+склонение+`since/until`-скоуп+trust-диспозиция+priority-eviction (`15:16` прайор-арт-скрин подтверждает уникальность этой формулы, и что matched-инъекция НЕ уникальна). SakuraLLM — 4-й Q1-подход (дообучение). ⚠ Композиция НЕ измерена на вебновеллах; авто-DST-рендер = «главный продуктовый гэп» (`07:148`). | +| **Q2 автодобыча** | **Раскол** | Мы: $0-детерм-код, verified-канон, компактная подпись, **измеренный recall** (0.932 held-out / 0.965 full-slice, `eval/design11/ws3`). Они: LLM-NER ловит редкое (dst неверифицирован) + **одноклик-автопопуляция без подписи** — скорость, которую фабрика-юзер может предпочесть (наш verified-dst = осознанный correctness-trade). Set-cover GalTransl — техника для LLM-тира, которого у нас НЕТ. | +| **Q3 связность** | **МЫ по строгости (предварительно)** | Единственные среди ХАРНЕССОВ с эмпирикой (exp15). НО: (а) exp15 на PD-классике/претрейне = **предварительно** (`ourmap:115`, дисциплина CLAUDE.md); (б) наш банк закрывает лишь **~14%** ru-дискурс-ошибок, СТРУКТУРНО мимо дейксиса ~37% / эллипсиса ~29% (`08:113-114`) → «обходим провал» → «частично замещаем»; (в) **DelTA** (академ., измерил +4.58пп LTCR-1, +15.5…32.7пп на вебновеллах, `03:11`,`05:110`) — не «никто не мерил память». Наш чанкер «никогда не режет предложение» нейтрализует класс `chunk-boundary-split`, на который жалуются юзеры bbm/TA. | +| **Q4 выпуск/форматы** | **ОНИ (явно)** | bbm/AiNiee — зрелый epub-билингв (in-place tag-rewrite, TOC/сноски/CSS), PDF; **Immersive Translate (18097★, `02:26`) — крупнейший Q4-конкурент**, book-mode параллель-текст. У нас — JSON-export, ридер-IDE только в research/16. Наш крупнейший гэп; отложен планом (Ф3). Авторинг сносок/колонки — ни у кого. | +| **Q5 мульти-агент** | **МЫ по доказательности** | Единственные с ИЗМЕРЕННЫМ вкладом ролей (D39.20 ×3; + внешняя опора, которую мы недокредитовали: WMT24 zh→ru метрика-инверсия — Google-NMT обошёл ВСЕ мультиагент по d-BLEU, `18:161`; TransAgents = наш ближайший аналог, `18:118`). Их роли — театр (часть — single-call CoT). TransAgents-omission: 7 ролей **не починили** omission (базовый gpt-4 тоже омитит) — датапоинт ЗА нас. Живой судья у нас = eval-side, в проде НЕ подключён (честно). | +| **Q6 выпускной QA** | **Раскол: детекция ~вровень, GATING+REPAIR — они** | Пак-12/13 **ЗАЛЕНДЕНЫ** (`2f91b04`): percent/latin/broken-word/юнит/число-чекеры + `detectCJKLeak` = детекция теперь широкая. НО все — **observability-only** (флаг, не диспозиция; промт-пак-13 пп.3/10). У AiNiee/GalTransl чекеры **ГЕЙТЯТ + драйвят ре-перевод** — этой петли у нас нет (= рек №1). Плюс: часть классов $0-детерминизмом не берётся вовсе (DC5 стих 42–74% FP, `eval/design11/ws5`). Мы впереди по семантик-сигналу (план слой-5) + числам/единицам. | +| **Деньги/COGS** ⭐НОВОЕ | **МЫ безоговорочно** | `store/ledger.go` reserve→settle (kill-9-атомарно) + потолки BookUSD/DayUSD; `pricing.go` пер-модель с CacheWrite-премией; prompt-cache вшит; ~$0.85/ранобэ (D30.4). **Ни один из 7 не публикует замера COGS.** NovelTrans = Stripe-биллинг (продуктизация, не телеметрия). Owner-north-star `07:32`. | +| **18+/канал B** ⭐НОВОЕ | **МЫ** | Роутер Mistral+grok+abliterated (D14/D19.1/D22). DazedMTL/OpenNovel/Sakura-local делают NSFW, но **не в паре с качество+консистентность+ru** (`02:110` §6.6). | +| **Общность языка/структуры** ⭐НОВОЕ | **МЫ** | Все 7 + новички — zh/ja→EN или структуро-специфичны (VN-hook/galgame/RPG-JSON). Наш адаптивный чанкер + pair-keyed langpack (§0.1 `09:29-31`, D39.16) обобщают ДАННЫМИ. ⚠ ja→ru сеам-построен, но НЕ протестирован (честный гэп). | + +### Стратегический слой (планы/подходы) + +1. **Рынок сходится к НАШЕЙ архитектуре, но без нашей эмпирики.** `NovelTrans` (новичок, MIT, + 04.2026; **⚠ имя коллизирует с WMT24-статьёй NovelTrans `11-gap-3:173` — разные проекты**) — + зеркал: мульти-агент + RAG-память (Redis HNSW) + Stripe-биллинг + Chrome-ext. НО 33★, 0 измерений → + референс архитектуры. Аналогично prior-art: `Nuanxed` (B2B AI+human-post-edit, HarperCollins, + `02:51`/`09:155`) — продуктизация, которую мы не строим. +2. **Bolt-on глоссарий-тул проигрывает fused-майнингу.** Автор `KeywordGacha` (neavo) сам + soft-депрекейтил свой майнер (#150) в пользу встроенного в `LinguaGacha`. Подтверждает наш + W1.5-курс (майнинг ВНУТРИ волнового цикла). +3. **Ближайший конкурент по НАШЕЙ паре — `LinguaGacha`** (zh/ja→русский; **уже обозрен 04.07, + `02:33`,`05:82` — НЕ новичок**; его one-click-глоссарий + retranslation-by-keyword мы уже пометили + «must-have»). Single-pass + неверифицированный dst → упрётся в консистентность, которую мы + механизируем. Бенчмарк-кандидат №1. +4. **Форвард-роадмапы конкурентов** мы разобрали ТОНКО (только сигнал #150) — честный остаточный + гэп: открытые milestones AiNiee/GalTransl/LinguaGacha не свипнуты. Наш план — стадийный + (паки-12/13 залендены → масштаб книги · канал B · Ф2 · ja→ru). + +--- + +## §2. Топ-рекомендации по импакту (пересмотрены ревизией 2) + +Приоритет = импакт на north-star (верность) × дешевизна × вписанность в план. **Многие «взять» +оказались УЖЕ В ПЛАНЕ** — переформулированы как «расконсервировать/подтверждает», не «новое». + +1. **[ВЫСОКИЙ] Замкнуть петлю «чекер→типизированная-ошибка→адресный ремонт спана».** Наши чекеры + (пак-13 залендён, но observability-only) флагают, НЕ чинят. AiNiee: флаг С типом → single-line + proofread (`ProofreadTask.py:250`); LinguaGacha — retranslation-by-keyword. **Уже в плане:** + целевой слой-3 = diff-редактор (search/replace-спаны + детерм. Go-apply, ограниченный + blast-radius, omission-safe, `09:107-111`) → **расконсервировать Q4b-diff-редактор с прецедентом + AiNiee/LinguaGacha**, не «новая кража». *Метрика: defect-residual.* +2. **[СРЕДНИЙ, был ВЫСОКИЙ] Только offline language-ID mismatch.** Residual-source-script у нас УЖЕ + есть (`detectCJKLeak`, `sanitizer.go:188/411`); language-ID-на-абзацах тоже **уже план** + (`04-unhappy-paths:54`). Net-new = лишь mediapipe/ONNX-реализация (`LanguageChecker.py:309`) — и + она **конфликтует с default-B** («код≥локаль», пак-13 отверг даже pymorphy, `11-plan:31`) → + флажить как policy-исключение, НЕ «$0/offline». *Метрика: wrong-language rate.* +3. **[НИЗКИЙ, был СРЕД-ВЫСОКИЙ] Set-cover бюджет-кап — условно/отложено.** GalTransl `GenDic.py:591`. + Контингентно на LLM-тир майнера, которого НЕТ и нет в near-term-роадмапе; текущий COGS майнинга = + $0. Держать как опцию ЕСЛИ строим LLM-тир слепых зон §B4. *Метрика: 0 сейчас.* +4. **[СРЕДНИЙ] In-place epub tag-rewrite (bbm/AiNiee) — БЕЗ resume.** `helper.py:19` insert_trans + + exclude-tag + TOC-uid-fix. **Resume ВЫЧЕРКНУТ из кражи:** у нас УЖЕ сильнее — checkpoint-keyed, + kill-9-атомарный, cross-run, $0-резюм ×3 доказан (`store/ledger.go:117-123`, D39.20); их + pickled-resume = process-crash in-memory. *Метрика: publishable-robustness (не верность).* +5. **[СРЕДНИЙ, с оговоркой] 12-класс Problem.py как чек-лист — но reflow-aware.** GalTransl + `Problem.py`. ⚠ punctuation add/drop + line-parity **воюют с нашим editor-reflow** (их VN = + line-by-line без reflow; наш редактор легитимно сливает пунктуацию/абзацы) — брать нельзя вслепую; + у нас уже есть alignment-protected repetition-детектор + dialogue-linter в плане (`04:77,95`). + Брать: char-freq-degeneration, control-code-loss. *Метрика: детекция.* +6. **[НИЗК-СРЕД, A/B] Явный critique-артефакт — УЖЕ обозрен.** translation-agent `utils.py:100`; но + TEaR/Trilateral Collaboration уже в `03-academic:51,113` и в нашем дизайне (`07:32`). Открыт лишь + ЭМПИРИЧЕСКИЙ фит на вебновелл-срезе, не новизна. НЕ веровать (issue #10 «negative optimization»). +7. **[НИЗКИЙ] Halve-chunk-on-retry (AiNiee `TaskExecutor.py:393`)** для волнового ретрая. +8. **[НИЗК-СРЕД] Q7-леджер: детекция многого УЖЕ в плане.** Omission/inversion-ДЕТЕКЦИЯ = слой-5 + reflow-бэкстоп (`11-plan:683-689`, пак-4) — не «неосвоенная идея», только REPAIR-половина открыта. + **Добавить в леджер-кандидаты** (из `12-*`-таксономий, north-star-класс): консистентность + времени/вида глагола (BlonDe 38.7%, ru-вид `12-error-taxonomies:8`), addition/фабрикация, + voice-flattening; + `chunk-boundary-split` (мы нейтрализуем конструкцией — усиливает Q3). + +--- + +## §3. Таблицы «есть у них / нет у нас» (Q1, Q2, Q6) + +### Q1 — глоссарий-системы +Ось асимметрична в нашу пользу, НО база заимствована (`02`/`05`). «Есть у них / нет у нас»: + +| Механизм | У кого | У нас | +|---|---|---| +| Следование глоссарию через **ДООБУЧЕНИЕ модели** | SakuraLLM (`05:77`) | НЕТ (мы — промпт-инъекция; фронтир достигает того же промптом) | +| Одна колонка src = литерал ИЛИ regex | AiNiee `GlossaryHelper.py:90` | НЕТ (мелочь) | +| Богатый персона-профиль в промпт | AiNiee `PromptBuilder.py:690` | Частично (Speech/FirstPerson, не полный) | +| **Одноклик авто-DST-рендер без подписи** | AiNiee/GalTransl/KeywordGacha/LinguaGacha | НЕТ — осознанный correctness-trade (майнер не пишет dst); наш «главный продуктовый гэп» `07:148` | + +Наш перевес (уникальна КОМПОЗИЦИЯ, не части — `15:16`): per-терм Gender/Decl(JSON-формы)/Speech/ +FirstPerson/Nickname (`glossary.go:19-48`) · спойлер-скоуп since/until (`memory.go:454-464`) · +trust-диспозиция confirmed/ambiguous/reject + trustGateEvent (`memory.go:89-93,718-793`) · +токен-бюджет priority-eviction (**паттерн SillyTavern World Info `05:94,152`, заимствован+расширен**, +`memory.go:437-451`) · role-рендер (`memory.go:539-600`). *matched-only инъекция СОВПАДАЕТ (не наш +эксклюзив, `15:16`): у нас `memory.go:358-452`, у них `GlossaryHelper.py:212`/`noundict.py:82`.* + +### Q2 — автодобыча термов + +| Механизм | У кого | У нас | +|---|---|---| +| Set-cover бюджет-кап LLM-NER | GalTransl `GenDic.py:591-684` | НЕТ (LLM-тира нет; см. рек №3) | +| Map-reduce 2-й LLM-пасс dedup/тип | AiNiee `AnalysisTask.py:362,514` | Частично (алиас-кластеризация ДЕТЕРМ PROP-слой `miner_alias.go:71`; NOM-слой в LLM не построен) | +| LLM-NER recall редкого/полисемии | AiNiee/KeywordGacha | Частично (V-C паттерны + banknote; floor=3 слеп к редкому by construction) | +| **Одноклик авто-популяция без подписи** | AiNiee/GalTransl/KeywordGacha/LinguaGacha | НЕТ — verified-dst-дисциплина (осознанно) | +| Gender при экстракции | KeywordGacha 角色性别 | Частично (evidence-счётчики + подпись владельца) | +| Cross-chunk voting: один dst | GalTransl/KeywordGacha `find_best` | Есть сильнее — canon-по-ВСЕМ-вхождениям (research/20 §C2) | +| Verbatim-occurrence guard | KeywordGacha `search_for_context` | Есть BY CONSTRUCTION (майнер читает source) | + +**Наш перевес:** $0/детерминизм, **ИЗМЕРЕННЫЙ recall** (0.932 held-out / 0.965 full-slice, +`eval/design11/ws3_miner_verify.py:8`; competitors 0 замеров), verified-канон. **Острие: наш майнер +на полной книге gu-zhenren = 13618 кандидатов** (паритет-тест D39.16), capped `emitRankCap=200` + +precision30 (`miner_emit.go:23-207`). У AiNiee юзер видит каждого выжившего (unbounded); у KeywordGacha +sign-off-UI НЕТ; наша подпись per-КЛАСТЕР — впереди по UX, но авто-DST мы отдаём владельцу. + +### Q6 — выпускной QA + +⚠ Пак-12/13 **ЗАЛЕНДЕНЫ** (`2f91b04`) — детекция построена, но **observability-only** (флаг, не гейт). + +| Дефект-класс | У кого gating+repair | У нас (после паков) | +|---|---|---| +| Checker→typed-error→scoped repair | AiNiee `ProofreadTask.py:250`; LinguaGacha retrans-by-keyword | **НЕТ** (флагаем, не чиним) — рек №1 / план слой-3 | +| Residual-source-script на ВЫХОДЕ | AiNiee `AdvancedChecks.py:173` (гейт) | **ЕСТЬ детекция** `detectCJKLeak` gloss/ruby-whitelist (`sanitizer.go:188,411`) — но observ-only | +| Offline language-ID (модель) | AiNiee `LanguageChecker.py:309` | НЕТ (план `04:54`; модель конфликтует с default-B) | +| Degeneration char-freq | GalTransl `Problem.py:69` | Есть loop-detect (не char-freq) | +| Punctuation add/drop, line-parity | GalTransl `Problem.py:74` | Осознанно НЕТ (воюет с editor-reflow, `04:95`) | +| Control-code/placeholder-preservation | AiNiee `check_regex.json` | Частично (sanitizer-классы) | +| Number/unit-magnitude equality | — (у них НЕТ) | **ЕСТЬ** DC1/DC2 + percent (`cheapgates.go:92`, залендено) — наш эксклюзив | +| Стих/аллюзия | — | Не берётся $0-детерм (42–74% FP `eval/design11/ws5`) → owner-curation | + +Наш перевес (helper-фиксы ревизии 2): echo-детектор — `disposition.go:210,263-266` (не `:281-298`); +AiNiee Jaccard — kanji-exclusion гейтит line-skip, НЕ сам Jaccard (не «kanji-excl»). Двухъярусный +sanitizer + семантик-сигнал (план слой-5 `09:122` — ось, которой у них нет). + +--- + +## §4. Per-question разборы (сжато; полные «их спектр» — в ревизии 1, здесь дельты ревизии 2) + +**Q1.** Их спектр: AiNiee (двойная система, gender в character-табл, matched-only, БЕЗ бюджета/ +скоупа/склонения) · GalTransl (src\tdst\tnote, gender free-text) · Luna (GptDict+info, VNDB-gender) · +bbm (нет; только Qwen-MT vendor `terms`) · **SakuraLLM (ДООБУЧЕНИЕ под глоссарий, `05:77`)** · +KeywordGacha (онлайн). Наш механизм — `glossary.go:19-48` + `memseed.go` + `memory.go`. **Вердикт: +мы впереди по КОМПОЗИЦИИ, база заимствована (02/05), уникальность формулы = `15:16`.** Взять: +SakuraLLM-подход (для локального канала B?); soft>hard-constraint (`05:14,156`) подтверждает наш +no-hard-constraint выбор. + +**Q2.** Разобрано §3. Дельта: авто-популяция = их продуктовое преимущество (наш `07:148`-гэп); +recall у нас ИЗМЕРЕН (0.932 held-out); KeywordGacha #150→LinguaGacha = fused-майнинг > bolt-on. + +**Q3.** Их: rolling-src (AiNiee) / rolling-dst (GalTransl contextNum=8, Luna, bbm N=3, все OFF/ +переврано) / весь-source (translation-agent, катастрофа на масштабе). Наш: волны + edit-единицы + +sticky, carryover ОТВЕРГНУТ (exp15). **Дельты ревизии 2:** (а) exp15 = PD-классика = предварительно; +(б) банк ≈14% ru-дискурс-ошибок, дейксис ~37%/эллипсис ~29% СТРУКТУРНО открыты (`08:113`); (в) +**DelTA/DocMTAgent** (Apache-2.0, измерил память +4.58пп/+15.5-32.7пп на вебновеллах, `03:11`,`05:110`) += ближайший академ-аналог, «никто не мерил память» — неверно, сузить до ДЕПЛОЙ-харнессов; DelTA +ПОДТВЕРЖДАЕТ нашу ставку структурная-память>длинный-контекст. Наш чанкер нейтрализует +`chunk-boundary-split` (`chunker.go:286` never-split-sentence). + +**Q4.** Их: bbm (epub sibling-insert, PDF, `helper.py:19`) · AiNiee (in-place `EpubWriter.py:46`) · +**Immersive Translate (18097★, `02:26`) — крупнейший** · Ebook-Translator-Calibre-Plugin (2538★, +`02:31`). Наш: `tmctl export` JSON + `--pairs`; banknote срезает сноски но НЕ ре-аттачит; ридер-IDE = +research/16 only. **Они впереди явно** (наш крупнейший гэп, отложен Ф3). Взять: epub tag-rewrite +(БЕЗ resume — наш сильнее). Авторинг сносок/колонки — ни у кого → banknote-в-сноску = дифференциатор. + +**Q5.** Их: TransAgents (7 ролей, код-less, персона-театр; **omission — роли НЕ починили, базовый +gpt-4 тоже омитит** `verify__TransAgents`, не «роли ВЫЗВАЛИ») · translation-agent reflect→improve +(README «BLEU sometimes worse») · bbm/AiNiee single-call CoT · GalTransl same-model proofread · +NovelTrans (33★, 0 замеров). Наш: линейный translator→БИЛИНГВ-editor; **судья Ф2 НЕ подключён в +проде** (`pipeline.go:285`), живой судья = eval-side (⚠ D39.7 — коллизия нумерации: ратиф. D39.7 = +exp15-floor, rerun2-риг помечен D39.7 лишь в eval-коммите `cd107e1` → флаг оркестратору). **Мы +впереди по доказательности** — недокредитованная внешняя опора: WMT24 zh→ru инверсия (`18:161`), +TransAgents-аналог (`18:118`). Взять: рек №1 (=план слой-3), critique-артефакт (=`03:51,113`+`07:32`). + +**Q6.** Разобрано §3. Ключ: паки залендены → детекция широкая, но observability-only; GATING+REPAIR +(их сила) = наш открытый гэп = рек №1; часть классов $0-недостижима (стих). + +**Q7.** Датированный корпус (полная таблица — ревизия 1) + **пропущенные классы из `12-*` +(north-star, не только issue-трекеры):** консистентность времени/вида глагола (`12-error-taxonomies:8`), +addition/фабрикация, voice-flattening, `chunk-boundary-split` (мы нейтрализуем). **Уже в плане +(не «неосвоено»):** omission/inversion-детекция = слой-5 (`11-plan:683`). Три кандидата ревизии 1 +(omission-имя, кросс-глава-контекст #967, export-revert #1044) остаются, но omission-детекция — уже +план; открыт лишь repair. + +--- + +## §5. Фаза-0: новички vs прайор-арт (ревизия 2: половина — НЕ новички) + +| Проект | Лицензия | Статус | Примечание | +|---|---|---|---| +| **Glossarion** (Shirochi-stack) | MIT | **Новичок** (94★, 8224 коммита) | mine→translate→rebuild + QA-scan; single-pass | +| **NovelTrans** (YuBing-link) | MIT | **Новичок** (33★, 04.2026) | мульти-агент+RAG+Stripe+ext; 0 замеров; ⚠ имя ≠ WMT24-NovelTrans (`11-gap-3:173`) | +| LinguaGacha (neavo) | НЕТ | **НЕ новичок** — обозрен 04.07 (`02:33`,`05:82`) | zh/ja→ru; бенчмарк-кандидат №1; features уже «must-have»-помечены | +| DocuTranslate (xunbu) | MPL-2.0 | **НЕ новичок** — `02:34` (1165★→1218★) | тот же проект +50★ | + +**Крупные прайор-арт-конкуренты, которые отчёт-ревизия-1 пропустил (все в `02-competitors`):** +Immersive Translate (18097★, крупнейший Q4) · Ebook-Translator-Calibre (2538★) · SakuraLLM (4635★, +дообученная модель, Q1-подход + backend для GalTransl/AiNiee/Luna) · DazedMTL (18+ pipeline, `02:36`) · +Nuanxed (B2B human-post-edit, `02:51`) · DelTA/DocMTAgent (академ., Apache-2.0, измеренная память, +`03`/`05:110`). **Вывод свипа держится:** measured-литкачество не опубликовано ни одним ДЕПЛОЙ- +харнессом (DelTA — академ-исключение, мерил консистентность памяти, не худож. качество). + +--- + +## §6. Appendix per-repo +(Без изменений от ревизии 1 — верификация рубежа-1: AiNiee 21/22 CONFIRMED · GalTransl 15/15 · +Luna 13/14 · TransAgents 13/14 · bbm 12/12 · translation-agent 11/12; 4 IMPRECISE, 0 REFUTED. +KeywordGacha/новички — онлайн, confidence=low.) Полные разборы «их спектр» — в git-истории ревизии 1. + +--- + +## §7. Форвард-роадмапы конкурентов vs наш план (веб-свип 24.07, $0) + +Метод: 3 агента, 13 проектов — GitHub Milestones + ROADMAP.md + pinned/enhancement-issues + README +«планы/计划» + траектория релиз-ноутов. **Ключевой факт: формального роадмапа НЕТ почти ни у кого** +(11 из 13 без Milestones и ROADMAP → «планы» = инференс из релизов, confidence low). Формальный +роадмап только у: SakuraLLM (TODO #42), NovelTrans (README-таблица), translation-agent (README TODO, +но заморожен), TransAgents/DelTA (paper future-work). + +### §7.1 Куда они идут (вектор) + +| Проект | Роадмап | Вектор движения | Релевантно нам | +|---|---|---|---| +| AiNiee | нет (low) | больше форматов/плагинов, ASR (FunASR); neavo УШЁЛ на v5.2 | — (breadth) | +| GalTransl | нет (low) | ещё движки/провайдеры/языки (qwen-mt, 302.AI, тай/хинди/вьет), GUI-зрелость | — | +| LunaTranslator | нет (low) | rolling-инкремент: игры/OCR/TTS/оверлей (релиз каждые 1–3 дня) | — | +| **SakuraLLM** | **TODO #42 (med)** | Qwen3+RL/GRPO, **двунаправленный zh↔ja↔ko**, квантизация, ~6GB VRAM | ⚠ канал B / локаль-ассист / ja→ru — следить | +| LinguaGacha | нет (low) | нативная консистентность имён, ARM, CLI; **явно НЕ в мульти-агент/редактор** | ⭐ наш редактор-слой — НЕ на их пути | +| KeywordGacha | **заморожен** (v0.20.2, ~13 мес) | поглощён LinguaGacha (Name Field v0.102.0, 2026-06) | ⭐ fused>bolt-on подтверждён живьём | +| Glossarion | нет (low) | ширь: форматы/провайдеры/**манга**/QA-глубина (quotation/header-чекеры) | QA растёт | +| NovelTrans | **README-таблица (med)** | **100% инфра/скейл/observability** (Nginx HA, Resilience4j, RabbitMQ, Jaeger, Milvus) — НОЛЬ про качество/редактора | зеркал архитектуры, но роадмап = продакшн, не верность | +| DocuTranslate | нет (low) | format-fidelity (DOCX/EPUB) + провайдер-ширь (DeepSeek-V4) | — | +| bilingual_book_maker | нет (low) | **PDF-layouts, structure-aware MD, EPUB-tag-safety** (коммиты 07–19.07.2026) | ⚠ Q4-разрыв растёт | +| translation-agent | README TODO (заморожен, ~29 коммитов) | глоссарий-создание/инъекция + doc-level human-eval | «те же задачи, что мы» — но мёртв | +| TransAgents | paper (заморожен, апр-2025) | лучше human-eval длинных текстов; **omission = главная нерешённая слабость** | ⭐ назвали нашу D39.20-проблему, не решили | +| **Immersive Translate** | нет (med, closed) | **мультимодал (манга/картинки/видео), мобайл (Babel Browser), документ (BabelDOC), AI-Expert (роль-ассайн)** | ⚠ Q4/формат-лидер (18.3k★) уходит вперёд; AI-Expert ~ prompt-роли | +| DelTA/DocMTAgent | paper (заморожен, янв-2025) | **удешевить память-агента: детерм-NER вместо LLM, dense-retrieval, меньше вызовов** | ⭐ их «будущее» = то, что мы УЖЕ построили ($0-майнер) | + +### §7.2 Их вектор vs наш план + +Наш план (паки-12/13 залендены, пак-14 в работе): **масштаб целой книги · канал B (18+) · +Ф2-механизмы (голос/состояние D21, native-Gemini судья) · ja→ru §B5 → пилот Ф2.5**; target-arch +слой-3 diff-редактор, слой-5 семантик-сигнал. + +- **Нашей north-star (верность/translationese через ИЗМЕРЕННУЮ редакторскую глубину) НЕТ ни на одном + роадмапе.** Фан-тулзы идут в ширь; LinguaGacha ЯВНО отказывается от мульти-агента; NovelTrans-роадмап + = чистая инфра; Immersive = потребительский мультимодал. → **окно «первого с памятью серии + + измеренной редактурой» остаётся открытым.** +- **Два подтверждения нашего курса ЧУЖИМИ роадмапами:** + - ⭐ **fused-майнинг > bolt-on — доказан событием:** neavo ушёл из AiNiee (v5.2) строить LinguaGacha; + KeywordGacha ЗАМОРОЖЕН ~13 мес, а LinguaGacha ПОГЛОТИЛ его экстракцию терминов нативно (Name Field + v0.102.0). Отдельный тул умер, встроенный живёт — ровно наш W1.5. + - ⭐ **Роадмап DelTA = наш пройденный путь:** их future-work (заменить LLM-NER детерм-выравниванием/ + скриптами, dense-retrieval вместо LLM, срезать вызовы) — направление, которое мы УЖЕ реализовали + ($0-детерм-майнер, recall 0.932 held-out). Мы впереди заявленного шага академ-фронтира. + - **TransAgents назвали нашу проблему, но не решили:** их paper-flag «content-omission — главная + нерешённая слабость» + «почему LLM-судьи любят flair» = наша D39.20 анти-корреляция + гладкость↔верность. Мы механизируем против того, что они только диагностировали. +- **Где ИХ роадмапы уводят вперёд (честно):** + - ⚠ **Q4/форматы разрыв РАСТЁТ:** bbm (PDF-layouts), Immersive (BabelDOC/мультимодал), DocuTranslate + (format-fidelity) активно куют выпуск, пока наш Q4 отложен. Аргумент за то, чтобы epub-tag-rewrite + (рек №4) не откладывать до Ф3 бесконечно. + - ⚠ **SakuraLLM** (Qwen3+RL, двунаправленный CJK, 6GB VRAM) — релевантен каналу B / локаль-ассисту / + ja→ru; готовая специализированная модель, мониторить. + +### §7.3 Итог «по планам» +Мы **впереди по НАПРАВЛЕНИЮ** (единственные строим измеренную редакторскую глубину + композитную +память + канал B + деньги — рынок это НЕ роадмапит), **и наш путь дважды подтверждён чужими +роадмапами** (fused-майнинг живёт/bolt-on мёртв; академ-DelTA хочет прийти туда, где мы уже стоим). +**Позади — только выпуск (Q4), и там конкуренты активно двигаются** — единственная ось, где +промедление стоит позиции. + +--- + +## Самопроверка сессии (мандат 12.07) + +- **Два рубежа исполнением** (§0): рубеж-1 верифицировал ЧУЖОЙ код (~88 клеймов, 4 IMPRECISE, 0 + REFUTED); **рубеж-2 (9 агентов сквозняком по всему репо) верифицировал МОЙ СИНТЕЗ** и поймал: факт- + ошибку (пак-13 залендён, не unbuilt), ложные негативы (detectCJKLeak/cost-ledger/prompt-cache/ + resume — у нас ЕСТЬ), непрокредитованный прайор-арт (02/05/15/18), 3 пропущенные оси (деньги/18+/ + общность), overstated-вердикты (Q1-независимость, Q3-абсолютизм, «пак-13 закрывает»). **Все + несущие правки сверены мной по HEAD `b8a7863` (git log, cheapgates.go, sanitizer.go, ledger.go).** +- **README≠код**, лицензионная дисциплина, $0 — соблюдены; refusal_corpus не тронут. +- **Что ДЕРЖИТСЯ (22 CONFIRM):** ядровые вердикты — мы впереди по Q1-композиции/Q2-экономике/Q3- + строгости[предв.]/Q5-доказательности + 3 новые оси; позади по Q4; Q6 = детекция построена, + gate+repair открыт. Анти-корреляция гладкость↔верность, fused>bolt-on, verified-dst-trade — все + подтверждены прайор-артом. +- **Форвард-роадмапы конкурентов свипнуты (§7, 3-агентный веб-свип 24.07):** 11 из 13 без формального + роадмапа; каждый planned-item несёт source-url + дату; инференс из релизов помечен confidence=low + (фичи не выдуманы). Итог усилил вердикт «по планам»: наш курс дважды подтверждён чужими роадмапами. +- **Остаточные честные гэпы сессии:** D39.7-коллизия нумерации — оркестратору; отчёт НЕ закоммичен.