textmachine/docs/research/22-domain-harness-survey.md

43 KiB
Raw Blame History

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.

→ ПОСТРОЕНО (25.07, оркестратор №7): разрыв Q6 «gating+repair» закрыт паком-16 (D39.24, 2d7f589) — слой-3 diff-редактор по прецеденту AiNiee ProofreadTask: позиционная детекция checks.RepairCandidates (internal/checks/repair.go) + read-only скан остатка + машинерия ремонта за enabled:false; включение платного пути = решение владельца по замеру остатка; промпты ремонта — prompts/<пара>/repair/<класс>.md.

Ресёрч-сессия, 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 агентов сквозняком по всей архитектуре (0111), всему research (0121), всем 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-механизм.

Лицензии материала (сверены 2324.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 стих 4274% 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 (флаг, не гейт). ⚠ Поправка D39.108 (приёмка экспа 20): строка таблицы «detectCJKLeak — но observ-only» УСТАРЕЛА — с включением санитайзера класс работает вердикт-гейтом D30.3 (chunkrun.go isFinal-тройка), подтверждено исполнением на утёкших финалах; observ-only остаётся верным только для НЕ-финальных стадий (строка 46).

Дефект-класс У кого 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-детерм (4274% 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/оверлей (релиз каждые 13 дня)
SakuraLLM TODO #42 (med) Qwen3+RL/GRPO, двунаправленный zh↔ja↔ko, квантизация, ~6GB VRAM ⚠ канал B / локаль-ассист / ja→ru — следить
LinguaGacha нет (low) нативная консистентность имён, ARM, CLI; явно НЕ в мульти-агент/редакторЭРРАТА 05.09: ПРОТУХЛО И ОПРОВЕРГНУТО. С 31.07.2026 проект строит агентный редактор — замер research/30 §4.1 (03.09): 305 коммитов за 25.0703.09, 104 из них в агентных каталогах, восемь скилов, обзор по четырём осям. Утверждение оставлено телом как улика, а не как факт. ⇒ срок годности харнесс-обзора — НЕДЕЛИ, а не месяцы; ни одна строка этой таблицы не цитируется без пере-проверки даты наш редактор-слой — НЕ на их пути
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 (коммиты 0719.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-коллизия нумерации — оркестратору; отчёт НЕ закоммичен.