# Адаптивный/обучающийся слой памяти: стоит ли гибрид, огибающая осуществимого, арбитраж

Дата: 2026-07-05. Сессия **«Адаптивный слой памяти»** (промт `docs/archive/prompts/ADAPTIVE_MEMORY_RESEARCH_PROMPT.md`). Предмет — вопрос владельца: не будет ли **максимально эффективным гибрид** «отлаженный детерминированный банк памяти (Р3) + слой, обучающийся ПО ХОДУ перевода книги» (in-context / локальный LoRA / kNN-MT / online-retrieval / само-коррекция), и **как именно смёржить под наш жёсткий локально-стоимостный контур**. Мандат — адверсариально проверить, стоит ли оно того, а не поверить в модность.

Метод (как в валидации банка, `research/13`): многоагентный ресёрч по 6 направлениям (kNN-MT / in-context-демонстрации / adaptive-online-MT / локальный LoRA / adaptive-RAG-петли / свежее 2025–2026) + **независимая адверсариальная верификация каждой несущей находки по первоисточнику** (24 верификатора: 19 CONFIRMED, 5 OVERCLAIM с точной поправкой) + **две исполняемые пробы на нашем стенде/ключах** (`eval/adaptive_probe.py` — доступ к логитам у флагманов; `eval/adaptive_incontext.py` — демонстрации vs глоссарий на реальном zh→ru) + чтение реального кода `backend/` на git HEAD. Все заблокированности проверены **пробой, а не по памяти** (мандат §Жёсткий контур). Прод-код не пишется — только `eval/` и этот документ.

> **Одна фраза.** Гибрид **в основном НЕ стоит того**: всё, что «учится» на уровне декодера/логитов/весов флагмана — **физически заблокировано** (подтверждено живой пробой), а то, что реально помогает (копирование точного рекуррентного термина; коррекция под надёжный внешний сигнал) — **уже принадлежит детерминированному ядру** и в обучающемся слое было бы строго хуже. Остаётся **ровно один** кандидат, влезающий в контур: **непараметрические in-context демонстрации** для СТИЛЯ серой зоны — но он **не проходит БАР-(в) по имеющимся данным** (мой zh→ru замер: демонстрации НЕ бьют детерминированный soft-глоссарий по консистентности, 0.833 vs 0.875) и его надо **гейтить тем же in-house eval'ом, что и сам банк**. Плюс: гипотеза владельца «эмбеддинги→CPU, 8 ГБ VRAM→обучающийся модуль» **верна в посылке, но пуста в следствии** — освобождать VRAM правильно, но **обучающегося модуля, который на эти 8 ГБ бьёт базис, нет**.

---

## TL;DR — вердикт по каждому кандидату (правило БАР)

БАР (из промта): любой мёрж обязан (а) оставить детерминированный горячий путь авторитетным; (б) влезть в VRAM/стоимость (локаль-first); (в) **эмпирически бить eval-валидированный детерминированный базис на zh/ja→ru** по консистентности/fidelity/цене; (г) оправдать сложность. Не проходит (в) → **не мёржить**.

| Механизм «учится по ходу книги» | Осуществим? | БАР | Вердикт |
|---|---|---|---|
| **kNN-MT на флагмане-переводчике** | ❌ blocked (нужны hidden states декодера) | — | **НЕ мёржить** (физически невозможно) |
| **Constrained/beam decoding, forced tokens на флагмане** | ❌ blocked (нет доступа к декодеру/beam) | — | **НЕ мёржить** (физически невозможно) |
| **Frontier-LoRA / online-SGD весов флагмана** | ❌ blocked (нет тренируемых адаптеров у провайдеров; fine-tuning сворачивается) | — | **НЕ мёржить** (физически невозможно) |
| **Локальный kNN-MT черновик (наш декодер)** | 🟡 технически да | (в) ✗ | **НЕ мёржить**: чистый выигрыш уже у банка; на слабой локали чинит не то |
| **Книга-LoRA на локальном reranker/ключ-энкодере** | 🟡 технически да (впритык) | (в) ✗ | **НЕ мёржить**: data-poor, «learns-less», нет разделяющего порога у bge-m3 |
| **Локальный само-корректирующийся LLM-цикл** | 🟡 да, но | (в) ✗ | **НЕ мёржить**: intrinsic self-correction деградирует без внешнего верификатора (а он у нас уже детерминированный) |
| **In-context ДЕМОНСТРАЦИИ (серая зона: стиль/auto/ambiguous)** | ✅ да (0 VRAM, memory+prompt) | (в) **?** | **ПИЛОТИРОВАТЬ под eval** — единственный кандидат; но индикатив: НЕ бьёт базис по консистентности |
| **Детерминированный консистентность-кэш + precision-gated adaptive-retrieval** | ✅ да (0 ML, 0 VRAM) | (в) н/п | **ВНЕДРЯТЬ** — это гигиена банка, а не «обучающийся слой» |

---

## §0. Жёсткий контур подтверждён живой пробой (не по памяти)

Мандат требовал перепроверить заблокированность методов **пробой**, а не по памяти. Проба `eval/adaptive_probe.py` (2026-07-05, живые ключи, наши боевые модели):

| Модель стека (роль) | token `logprobs` | `logit_bias` | hidden states |
|---|---|---|---|
| deepseek-v4-flash (черновик) | **есть** (top-5) | принят | нет (никогда) |
| grok-4.3 (редактор) | **нет** (200, поле пустое) | **отказ HTTP 400** | нет |
| gemini-3.1-pro-preview (премиум) | **нет** — HTTP 400 «Unknown name logprobs» | отказ 400 | нет |
| gpt-5-mini | **нет** — **HTTP 403 «not allowed to request logprobs»** | отказ 400 | нет |

Читается так:
1. **kNN-MT на флагмане определённо заблокирован** — и это **двойная** дверь. kNN-MT ключует датастор **внутренним hidden state декодера** (Khandelwal 2010.00710, ICLR 2021, дословно: «the 1024-dimensional representation input to the final layer feedforward network»), **не** выходным логитом. Ни один закрытый API не отдаёт pre-softmax представление декодера. Даже единственный, кто отдаёт хоть что-то (DeepSeek — выходные logprobs), даёт **softmax-выход, а не hidden state** → датастор kNN-MT построить нельзя в принципе.
2. **Логит-стиринг на флагмане почти недоступен**: `logit_bias` принимают только DeepSeek и GLM (и, вероятно, молча игнорируют); grok/gemini/openai — отказ. А для русской морфологии (subword-токены) грубый logit_bias всё равно бесполезен.
3. **Verify-by-probe поймал ошибку литературы.** Свежая работа «Log Probability Tracking of LLM APIs» (arXiv 2512.03816) утверждает, что **«все модели xAI»** и семейство GPT-4.1 возвращают logprobs. **Живая проба это опровергает для наших моделей/даты**: grok-4.3 не возвращает, gpt-5-mini отдаёт **403**. Урок валидации подтверждён: имя/возможность модели проверять пробой, не по документу.
4. **Fine-tuning у провайдеров закрывается, а не открывается**: Gemini API не поддерживает тюнинг после депрекации 1.5-Flash-001 (май 2025), только Enterprise с непрозрачным `adapter_size` без экспорта логитов/hidden state; OpenAI сворачивает self-serve fine-tuning в чёрный ящик без логитов. → **frontier-LoRA как роль переводчика заблокирован и в 2026 не разблокировался.**

**Следствие для всего ответа:** ни kNN-MT, ни constrained decoding, ни дообучение флагмана-переводчика невозможны. Всё «обучение» может жить только (а) на **локальном** декодере (llama.cpp/vLLM отдают логиты/hidden states — это **можно**) или (б) как **непараметрическая** инъекция в промпт закрытого API (memory+prompt). Эти два коридора и разбираются ниже.

---

## §1. Огибающая осуществимого

**Коридор A — локальный декодер (логиты/hidden states доступны).** Физически открыт, но упирается в качество локали: exp03/exp06 — локаль **рендерит zh→ru реалии мусором** (render 0.26 на zh, Палладий-мусор), значит её роль — **support** (спот сущностей recall ~0.98, скрининг, эмбеддинги, дешёвый судья), **не финальный переводчик и не рендерер канона**. Всё, что можно обучить локально (kNN-MT-датастор, LoRA), наследует эту слабость.

**Коридор B — непараметрическая инъекция в промпт закрытого API.** Открыт полностью (0 VRAM, только память+промпт). Сюда попадают: soft-глоссарий (**уже есть** — средний слой Р3), running-summary (DelTA-паттерн, **уже спроектирован**), и **новое** — few-shot **демонстрации** (прошлые подтверждённые пары/пассажи книги). Только последнее — реально «новый» механизм.

**Что вычёркнуто явно (заблокировано, §0):** kNN-MT-на-флагмане, constrained/beam/forced decoding, frontier-LoRA/online-SGD переводчика, Self-RAG с reflection-токенами (требует дообучения генератора, 2310.11511).

**Что влезает в 8 ГБ рядом с bge-m3 и SQLite-банком:** см. §5 (VRAM-арбитраж) — короткий ответ: bge-m3 на GPU (~2.4 ГБ FP32) + резидентная support-локаль 8–9b (5–6.6 ГБ) уже насыщают 8 ГБ (замер: 30b-a3b полигона держит 6.4 ГБ, стенд идёт под потолок). Обучающийся модуль **вытесняет** либо эмбеддер, либо support-локаль — резидентно «банк + эмбеддер + reranker + адаптер» вчетвером не живут.

---

## §2. In-context демонстрации — «бесплатный выигрыш» (единственный проходящий отбор кандидат)

**Литература подтверждает тезис в АБСТРАКТЕ, но не в нашем направлении.**
- **Демонстрации > терминология** для стиля и консистентности рекуррентных терминов: Moslem et al. (EAMT 2023, arXiv 2301.13294) — EN→ZH COMET zero-shot 59.87 → fuzzy 2-shot **73.90** → 10-shot 75.30; **добавление 10 glossary-терминов ПОВЕРХ fuzzy-2-shot — плоско** (73.90→73.57). Li/Luo/Briakou/Cherry (Google, arXiv 2503.05010) — retrieved-демонстрации бьют terminology (COMET +2.7/+1.7/+0.1 против +0.3/+0.3/+0.3 у терминологии), причём **терминология почти ничего не даёт сильным моделям**.
- **Критическая рамка (Li et al., верифицировано):** **~65% выигрыша демонстраций — от совпадения СТИЛЯ корпуса, а не от перевода терминов.** Это ровно **серо-зонная/стилевая** роль, которую наш контур разрешает, и **НЕ** точностно-критичный матч approved-имён, который держит детерминированный горячий путь.

**Где ВРЕДИТ (тоже подтверждено):**
- **Power of Noise (Cuconasu, SIGIR 2024, 2401.14887):** семантически близкий, но неответный дистрактор роняет генерацию **сильнее всего** (near-miss хуже случайного шума). → «лучше ничего, чем мусор» — тот же принцип, что в банке.
- **Over-trust в MT (не только QA!):** «Exposing the Cracks» (2510.00829) — при шумном retrieval низкоресурсные направления «often produce nonsensical translations», а **бо́льшие reasoning-модели БОЛЕЕ подвержены** и рационализируют подставленное; Context-Adoption-Rate: Fr→En 2.5→0.7 (−72%) под противосмысловым контекстом. Это прямая эмпирика страха владельца — но на **ru-как-источник**, не target.
- **Lost-in-the-middle (N. Liu, 2307.03172)** + раздувание кэшируемого префикса: демонстрации в промпте ломают стабильный кэш-префикс Р5 (их надо в волатильный хвост → рост input-токенов).

**Моя проба на реальном zh→ru** (`eval/adaptive_incontext.py`, 魯迅《阿Q正传》, чанк с 8 рекуррентными персонажами, канон В. Рогова, deepseek-v4-flash, N=3, метрика = детерминированный post-check банка «каноническая форма в выходе»):

| Плечо | канон-консистентность | толкование |
|---|---|---|
| A. без памяти | **0.458** | своя транслитерация дрейфует от канона |
| B. soft-глоссарий (**базис Р3**) | **0.875** | инъекция глоссария сильно тянет к канону (+0.42) |
| C. глоссарий + демонстрации (**слой**) | **0.833** | демонстрации **НЕ бьют** глоссарий (−0.04, в шуме) |
| D. глоссарий + дистрактор-демонстрации | **0.875** | near-miss не укусил на этой метрике/масштабе |
| E. глоссарий с ОДНОЙ отравленной строкой (赵太爷→«Ли») | **0.833**, отравление принято **0/3** | сильная модель **сопротивлялась** отраве на известном имени |

**Поправка (диагностика `eval/adaptive_reask.py`):** строгий accept-регэксп **занизил** глоссарий. Персистентный промах 王胡 — **артефакт метрики, не провал adherence**: модель рендерила канон Рогова «Бородатого Вана» (склонённое), а `Ван\b` не ловит суффикс. Склонение-толерантный матч → **глоссарий = 8/8 = 1.000** (оба репа, ноль реальных провалов adherence). То есть **на этом чанке детерминированный глоссарий УЖЕ насыщает консистентность** — demos не бьют его **потому что бить нечего** (потолок). Это (а) усиливает вердикт §2, (б) — **живая инстанция несущего невалидированного риска research/13 §2**: post-check регэкспом в русской морфологии undercount'ит И даёт ложные флаги → **post-check обязан лемматизировать (pymorphy2/Natasha), а не регэкспить.**

Три индикативных вывода (малый N, hand-built accept-регэксп → риск само-подтверждения, одна книга/модель — **не** финальный eval):
1. **Детерминированный soft-глоссарий сильно работает на zh→ru** (без памяти 0.458 → глоссарий **~1.0** после поправки на склонение) — впервые индикативно подтверждено на нашем направлении (валидация банка это на zh→ru не мерила). Хорошая новость для ядра. Оговорка: чанк «лёгкий» (глоссарий насыщается) → реальную ценность demos и re-ask надо мерить на **трудных** чанках (длинные/плотные, где adherence падает на 17–36%, 2310.05824).
2. **Демонстрации НЕ бьют глоссарий по консистентности** (0.833 vs 0.875) — ровно как предсказывает Li (выигрыш демо — 65% стиль, а не термин-матч, чего эта метрика не видит). Значит **выигрыш демонстраций, если он есть, — стилевой, а не консистентность/fidelity**, а БАР-(в) меряет именно консистентность/fidelity.
3. **Отравленную строку сильная модель отвергла** на ИЗВЕСТНОМ имени (阿Q-канон в претрейне) — мягкое свидетельство против слепого over-trust, но **НЕ** тест на НОВОМ термине без прайора (там over-trust реален — 2510.00829).

**Вердикт по §2:** демонстрации — единственный кандидат, влезающий в контур (0 VRAM, memory+prompt), но по имеющимся данным **не проходит БАР-(в)**: не бьёт базис по консистентности, а их стилевой выигрыш (а) не измерен на zh/ja→ru нигде, (б) не то, что меряет критерий, (в) приносит риски дистрактора/спойлера/раздувания. → **пилотировать под тем же WMT25-3-режимным eval'ом, что и банк, добавив стилевую ось; НЕ мёржить до прохождения.**

---

## §3. Локальная параметрическая адаптация (LoRA/continual) — для какой роли окупается

**Ни для какой, по имеющимся доказательствам.**
- **Данные:** одна книга даёт **сотни** approved-пар — data-poor. «LoRA Learns Less and Forgets Less» (Biderman, TMLR 2024, 2405.09673): LoRA **недоучивает** новый домен (нужно ~10× больше данных, чем full-FT), хотя и меньше забывает (регуляризатор). На сотнях пар выигрыш сомнителен.
- **Не чинит корневую слабость:** локаль ломает zh-реалии в **представлениях** (upstream), а не в выходной проекции. Даже kNN-MT — это (приблизительно, Gao 2305.13034, EMNLP 2023 — поправка верификатора: «a specific case of fine-tuning», не «математически эквивалентно») **implicit GD только на output-projection**, т.е. переставляет верхний слой в **уже сломанном** пространстве. LoRA низкого ранга — тот же потолок. → **рендерер-канона роль закрыта** (её держит облако/человек+таблица Палладия, G1/B6).
- **Reranker/ключ-энкодер:** bge-m3 эмпирически **не даёт разделяющего порога** (валидация банка, пересечение распределений) — нет доказательства, что книга-LoRA на ключ-энкодере это чинит; а reranker 2-го эшелона **не бьёт** precision-1.0 детерминированный горячий путь (там он и не нужен).
- **Test-time training** звучит близко, но единственная сильная работа (2411.07279) — **поправка верификатора: измерена на ARC-головоломках (symbolic grid), НЕ на MT**; перенос на перевод — ноль.
- **Железо (каветат владельца (a), верифицировано + замер стенда):** единственный первоисточник по консумерским 8 ГБ (2509.12229) — **поправка: тренирует ТОЛЬКО 1.5B**, batch≤2, и **на RTX 4060 (Ada sm_89), НЕ Pascal**. 7B-QLoRA ~8–10 ГБ пик (Dettmers 2305.14314) → **не сорезидентен ни с чем** (ни с bge-m3, ни с reranker). Все числа — Ampere/Ada; **перенос на Pascal GTX 1070 не гарантирован** (см. §5 — реальный замер bnb-4bit на sm_61).

**Вердикт по §3:** нет источника, где per-book локальный LoRA бьёт детерминированный базис на zh/ja→ru; корневая слабость (реалии) им не чинится; данных мало; железо — впритык и Pascal-неопределённо. **НЕ мёржить.**

---

## §4. Локальный kNN-MT / retrieval-augmented ДЕКОДИНГ

**На флагмане — blocked (§0). На локали — технически да, но не стоит.** Четыре независимых довода (все верифицированы):
1. **Чистый выигрыш kNN-MT уже у нас.** Единственная гарантированная победа kNN-MT — скопировать точный рекуррентный target-токен из датастора. Это **ровно** то, что делает детерминированный Aho-Corasick approved-глоссарий — но с **жёсткой** гарантией против **мягкой** интерполяции kNN (kNN подмешивает как вес, модель может перебить). Дублировать это обучающимся слоем — строго хуже (теряем гарантию, возвращаем тихую инъекцию).
2. **Не чинит реалии на слабой базе** (Gao 2305.13034 — output-projection only; §3).
3. **Шумный retrieval деградирует** (Jiang 2210.08808, EMNLP 2022: 45.92→42.22 BLEU от шума — но на **сильной** De-En базе; слабая локаль даёт хуже дискриминированные ключи → именно тот шумный режим).
4. **Tiny datastore = самый слабый режим** (Khandelwal: выигрыши от датасторов 159K–18.3M токенов; одна книга ~10⁵ токенов — на нижней границе или ниже) + **~×100 латентность** vanilla (эффективные варианты — Wang 2204.06175, Martins chunk-based — снимают ценой качества).

**Вердикт по §4:** локальный kNN-MT-черновик, кормящий API-редактора — **не** новый выгодный мёрж: его консистентность-выигрыш принадлежит банку, а адаптационный выигрыш ограничен слабой локалью, на которой он сидит. **НЕ мёржить.**

---

## §5. VRAM-арбитраж («кто побеждает») — прямой ответ на гипотезу владельца

Гипотеза владельца: **эмбеддинги+векторный поиск целиком на CPU/RAM, все 8 ГБ VRAM — под обучающийся модуль (LoRA/reranker/адаптер).**

**Посылка — ВЕРНА (подтверждено).**
- **Нигде в пайплайне нет real-time эмбеддинга.** Горячий путь — детерминированный Aho-Corasick (микросекунды, CPU-дёшево), **без модели**. Эмбеддинги — Фаза-2 второй эшелон, генерация кандидатов на ревью, **пачечная**. Каветат (b) закрыт: эмбеддинг — фон, не интерактив.
- **CPU-числа (замерены валидацией банка, не переоткрываю):** bge-m3 CPU ~78 мс/текст → вся книга (~5–10k чанков+резюме) ≈ 7–13 мин **пачкой**; brute-force cosine <20 мс на 100k. Латентность неважна (фоновый инжест). bge-m3 в RAM ~2.4 ГБ из 32 — незаметно.
- **CPU-контеншн с горячим путём и Go-раннером (каветат c) — планируем:** горячий путь микросекундный и не конкурирует; сами переводческие вызовы **сетевые** (ждут API), CPU простаивает; эмбеддинг-инжест ставится **между главами/на границе джоб**, вне критического пути. Контеншн управляем расписанием, не архитектурой.

**Следствие — ПУСТО (это и есть развязка).** Освободить 8 ГБ можно, но **обучающегося модуля, который на них бьёт детерминированный базис, НЕТ** (§2–§4): локаль не рендерит zh (роль рендерера закрыта), reranker не бьёт precision-1.0 горячий путь, книга-LoRA data-poor и не чинит реалии, kNN-MT-выигрыш уже у банка. **Освобождённый VRAM правильнее отдать УЖЕ существующим support-ролям локали** (спот сущностей recall 0.98 — write-path банка G1; NSFW-скрининг/черновик; дешёвый судья-гейт), которые контур уже требует, чем гипотетическому обучающемуся слою.

**Реальный замер потолка на стенде (2026-07-05, `eval/adaptive_probe`-инфра + изолированный CUDA-env):**
- Резидентно сейчас: `qwen3-abliterated:30b-a3b` полигона — **6.4 ГБ VRAM** (не выселял; координация — PROGRESS-пинг).
- **WSL2-квирк (важно для «арбитра»):** CUDA видит `free=7.0 ГБ / total=8.59 ГБ` даже при резидентном 30b — WSL2 **спилит в shared system RAM** сверх физических 8 ГБ. То есть «8 ГБ» на этом стенде **мягче**, но спил идёт по DDR-скорости (как эксперт-офлоад 30b-a3b) → «влезло по CUDA» ≠ «влезло быстро». Арбитраж по `max_memory_allocated` процесса, не по nvidia-smi.
- **bnb-4bit на Pascal sm_61 — реальный замер** (изолированный CUDA-env, Qwen2.5-0.5B, 3 train-step): bitsandbytes 0.49.2 официально таргетит sm≥75 (Turing), но **QLoRA-4bit NF4 фактически РАБОТАЕТ на Pascal sm_61** (loss считается, backprop идёт, peak 1.00 ГБ на 0.5B). **Но на Pascal 4-bit ~×9 МЕДЛЕННЕЕ fp16-LoRA** (5.6с vs 0.6с на 3 шага) — оптимизированных NF4-ядер под Pascal нет, dequant-оверхед доминирует → **на этой карте преимущество QLoRA по скорости ИНВЕРТИРУЕТСЯ**: влезает в fp16 — бери fp16-LoRA; QLoRA нужен только для 7B+ (в fp16 ~14 ГБ весов не влезают), где он единственный вариант, но медленный. Потолок «удобно тренируется» — **~1.5–3B** (QLoRA ~2–4 ГБ); **7B-QLoRA ~8–10 ГБ = на/за физическим пределом 8 ГБ** (в WSL2 спилит в RAM → ещё медленнее), и **7B-тренировка + резидентный reranker одновременно не живут**. Каветат владельца (a) подтверждён замером: 4-bit нужен для 7B, но на Pascal он медленный; макс. удобная модель ~1.5–3B.

**Вердикт по §5:** CPU-эмбеддинг/GPU-free сплит — **правильный дефолт** (посылка верна, каветаты b/c закрыты), но **не ради обучающегося слоя** (его нет под БАР), а ради существующих support-ролей и чтобы **не** держать эмбеддер резидентно зря. Гипотеза владельца подтверждена как **инженерная гигиена**, опровергнута как **путь к «обучающемуся модулю, бьющему базис»**.

---

## §6. Adaptive online-retrieval + само-корректирующая петля — что реально без тяжёлого ML

**Скептическая литература решает вопрос за нас.**
- **Intrinsic self-correction деградирует** без надёжного внешнего сигнала: «LLMs Cannot Self-Correct Reasoning Yet» (Huang, ICLR 2024, 2310.01798) — точность плоско/падает после само-коррекции; Kamoi (TACL 2024, 2406.01297) — **надёжный внешний верификатор — единственный различитель** успеха и провала. В MT: TEaR (2402.16379) +0.39 COMET и **один раунд лучший** (итерации портят); систематика WMT24-literary (2605.13368) — рефайнмент улучшает **fluency/style/terminology, но не adequacy**; Chen (2306.03856) — BLEU падает при рефайнменте.
- **У нас надёжный внешний верификатор УЖЕ есть** — детерминированный Aho-Corasick post-check на approved-глоссарии. То есть «детект дрейфа → коррекция approved-термина» **уже решено** детерминированно и **не должно** уезжать в обучающийся слой (нарушит контур-5).
- **Реально новая зона** — auto/ambiguous сущности **без** approved-ответа. Здесь работает **детерминированный консистентность-кэш** (first-seen/majority-vote рендеринга, БЕЗ ML) + **precision-gated adaptive retrieval** КАКИЕ серо-зонные записи инъектить, с **hard-abstention** (паттерн risk-sensitive bandit 2604.27283 — штраф за ложную инъекцию > пропуск, воздержание first-class — но **без онлайн-обучения**, просто как precision-gate). Опциональный локальный CRAG-подобный оценщик (2401.15884, дообученный T5) мог бы заменить отсутствующий разделяющий cosine-порог bge-m3 — но это Фаза-2, low-trust, и тоже гейтится.

**Вердикт по §6:** петля «детект→коррекция» ценна, но её **надёжная** часть уже детерминирована; «обучение» сверх — это **бухгалтерия глоссария** (кэш растёт), а не ML.

---

## §7. Предложенные архитектуры мерджа (творческий мандат, каждая — против БАР)

### M1 — «In-context демонстрации в серой зоне» (пилот под eval; единственный проходящий отбор)
- **Компоненты:** банк v2 как есть + retrieval прошлых подтверждённых пассажей книги как few-shot **демонстрации** ТОЛЬКО для стиля/консистентности **серо-зонных** терминов (auto/ambiguous/редкие реалии), в **волатильном хвосте** промпта после кэш-брейкпоинта.
- **Арбитраж:** approved+точный матч — банк, **неоспорим**; демонстрации — только **обогащают** серую зону; **каждая** инъекция гейтится детермининированным post-check; precision-first фильтр + hard-abstention (Power of Noise). Демонстрации **никогда** не имеют write-authority над approved-именами.
- **Где мог бы бить базис:** гипотетически стиль/регистр рекуррентных редких терминов (Li: 65% выигрыша — стиль).
- **БАР:** (а) ✓; (б) ✓ 0 VRAM, +input-токены; (в) **✗ по индикативу** (0.833 vs 0.875 на консистентности; стиль не измерен); (г) сложность средняя (retrieval + гейт + кэш-раскладка). → **пилотировать под WMT25-3-режимным eval'ом на zh/ja→ru + стилевая ось (win-rate человека/сильного судьи); не мёржить до прохождения.**

### M2 — «Детерминированный консистентность-кэш + precision-gated adaptive-retrieval» (внедрять; не ML)
- **Компоненты:** для auto/ambiguous БЕЗ approved — first-seen/majority-vote кэш рендеринга (детерминированное расширение банка); adaptive выбор КАКИЕ серо-зонные записи инъектить (risk-sensitive precision-gate, abstention first-class).
- **Это «обучение по ходу книги»** в тривиальном смысле (глоссарий растёт) — **без модели/VRAM/логитов.**
- **Арбитраж:** кэш **предлагает** → post-check **гейтит** → batch-судья/человек **промоутит** в approved (закрывает G1/F5/B1 first-wins-навсегда осью «редакционного времени»).
- **БАР:** (а) ✓; (б) ✓ 0 VRAM; (в) не претендует бить fidelity — **закрывает реальную дыру recall-0.571** (косвенные/перефразные серо-зонные) дёшево; (г) малая. → **внедрять как гигиену банка v2.**

### Отвергнуто (не проходит БАР)
- **Локальный kNN-MT-черновик** (§4): чистый выигрыш уже у банка; на слабой локали чинит не то. **НЕ мёржить.**
- **Книга-LoRA на reranker/ключ-энкодере** (§3): data-poor, learns-less, нет разделяющего порога, Pascal-неопределённость. **НЕ мёржить.**
- **Constrained decoding / frontier-LoRA / Self-RAG на флагмане** (§0): физически blocked.

---

## §8. Арбитраж «кто побеждает» (сводно)

1. **approved + точный/леммный матч** → детерминированный банк, **неоспорим** (контур-5). Обучающийся слой сюда не входит **никогда**.
2. **Серая зона** (auto/ambiguous/стиль/2-й эшелон) → обучающийся слой (демонстрации, кэш-подсказки) может **обогащать**, но: каждая инъекция гейтится **детерминированным post-check**; при конфликте побеждает **precision-first фильтр** (лучше воздержаться, чем инъектить неуверенное); промоушен в approved — только через batch-судью/человека.
3. **Резюме/факты** → отдельный гейт фактичности (D1), не «авторитет по умолчанию».
4. **VRAM** → эмбеддер на CPU (дефолт); 8 ГБ — существующим support-ролям локали, **не** обучающемуся слою (§5).

---

## §9. Максимизация коэффициента канон-консистентности — детерминированные рычаги (по запросу владельца)

Раз гибрид отклонён — правильный ход не «обучать ранкер», а **добивать детерминированную сторону**. Замер `eval/adaptive_levers.py` (трудный чанк 阿Q, 11 сущностей, 1600 знаков, deepseek+grok) даёт кривую рычагов и порядок внедрения бэкенду:

- **L1 — post-check ЛЕММАТИЗИРУЮЩИЙ (pymorphy3), не регэксп. Внедрять ПЕРВЫМ.** Наивный `\b`-регэксп на трудном чанке даёт **18–36% ложных флагов** (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): потолок ПРАВИЛЬНОСТИ.** L1–L3 поднимают «использует ли модель канон»; L4 — «правильный ли канон». Локаль zh 0.26, облако-топ 0.75 — только детерминированная таблица закрывает разрыв.
- **Побочно подтверждено:** 钱 (односимвольный ключ, гомограф Цянь/деньги) упорно промахивается даже после re-ask → **правило `min_key_len`/запрет одиночных ключей (A3) обязательно** — 钱 из глоссария выкинуть или заменить целой сущностью (钱府→«дом Цянь»).

**Где ваш инстинкт «тюнить ранкер» легитимен (честно):** ТОЛЬКО во втором эшелоне (fuzzy/семантика, кандидаты для человека) — у bge-m3 нет разделяющего порога (retrieval_bench), и research/13 §5 оставил лазейку: другое представление / sparse-голова / маленький cross-encoder reranker может разделять лучше. Это Фаза-2, low-trust, коэффициент горячего пути (§9) не двигает. Инстинкт верен, цель — второй эшелон, не костяк.

## Честные слабые места рекомендаций (по этим пунктам пишут решение)

1. **Ни одна цифра литературы не на zh/ja→ru — тотально.** Все 24 верификации: DelTA, Moslem, Li, Power-of-Noise, self-correction-скептики, kNN-MT, LoRA, ModernMT/Lilt — англо-центричны или ru только как источник. Ближайшее к нам — **WMT24 Discourse-Level Literary (2412.11732) с добавленным zh→ru document-level треком** и **DITING (2510.09116)** zh-en вебновелла — но это **бенчмарки-оценки**, не методы адаптации, и ja→ru литературной адаптации/бенчмарка **не существует вовсе** (2505.05423 держит ru только как источник). Любая рекомендация по ja→ru — по аналогии, не по данным.
2. **Мой in-context замер — индикативный, с широкими CI.** N=3, одна книга/чанк/модель, accept-регэкспы построил сам (риск само-подтверждения), метрика меряет **консистентность канона, а не стиль** — а именно стиль демонстрации и должны улучшать. «Демо не бьют глоссарий» доказано **для консистентности**, НЕ опровергнуто для стиля. Стилевую ось (win-rate) я не мерил — это дыра, которую должен закрыть пилот.
3. **Over-trust я мерил на ИЗВЕСТНОМ имени** (阿Q-канон в претрейне) — модель отраву отвергла. На **новом** термине без прайора over-trust реален (2510.00829) — мой E-плечо это НЕ покрывает. Не читать «отраву отвергли» как «инъекция безопасна».
4. **bnb-4bit на Pascal — замерил на 0.5B, экстраполировал на 7B.** Факт: NF4 работает на sm_61, но ~×9 медленнее fp16-LoRA (нет Pascal-ядер); потолок удобной тренировки ~1.5–3B. Но **полный потолок QLoRA-7B + резидентный reranker одновременно на ЧИСТЫХ 8 ГБ** я прямым прогоном не мерил (не выселял 30b полигона; экстраполяция из 0.5B-footprint + Dettmers; WSL2-спил в shared RAM мутит «влезло/не влезло»). Точное число — за **скоординированным** стенд-окном (выселить 30b). На вердикт не влияет: кандидата, который на эти 8 ГБ бьёт базис, всё равно нет (§3).
5. **«Демонстрации не помогают» может перевернуться на СЛАБОЙ модели.** Moslem мерил GPT-3.5; наш черновик deepseek-v4-flash сильнее и, возможно, **не нуждается** в демонстрациях (потолок). На более слабой/дешёвой модели или на редких терминах вне претрейна демо могут дать больше — узкий сценарий, где M1 мог бы окупиться (проверять на пилоте).
6. **Distractor-плечо (D) — слабый тест Power-of-Noise.** Мои дистракторы off-topic, а имена заякорены глоссарием → шум не укусил. **Near-miss омограф на ИМЯ** (реальный режим A3) я не тестировал — там вред вероятнее.
7. **Я рекомендую в основном НЕ строить — а это тоже ставка.** Сильнейший контр-аргумент: DelTA/Moslem показывают выигрыш памяти-с-адаптацией, и наш детерминированный no-adaptation путь — ставка по экономике/контуру, не по доказательствам. Защитима (§0 блокировки + §2 индикатив), но это ставка «дешёвое-детерминированное поверх дорогого-обучающегося», как и в валидации банка.

---

## Что делать (сжато для оркестратора/бэкенда)

- **Внедрять (Фаза 1–2, дёшево, 0 ML):** M2 — консистентность-кэш auto/ambiguous + precision-gated adaptive-retrieval + hard-abstention. Это гигиена банка v2, закрывает recall-0.571-дыру и B1 first-wins.
- **Пилотировать под eval (Фаза 2.5), НЕ мёржить сейчас:** M1 — in-context демонстрации в серой зоне; добавить **стилевую ось** (win-rate человека/сильного судьи) к WMT25-3-режимному протоколу банка; критерий — бьёт ли базис по стилю БЕЗ потери консистентности/fidelity и без роста дистрактор-вреда.
- **Не строить:** локальный kNN-MT, книга-LoRA, constrained decoding, self-correction-как-обучающийся-слой.
- **VRAM:** дефолт «эмбеддер→CPU» принять; освобождённые 8 ГБ — существующим support-ролям локали, не обучающемуся слою; скоординированный стенд-замер QLoRA-Pascal-потолка — если когда-нибудь понадобится (сейчас не нужен, кандидата нет).

---

## Источники (проверены 2026-07-05; 19 CONFIRMED / 5 OVERCLAIM с поправкой верификаторов)

**Заблокированность (проба + первоисточник):** kNN-MT ключ = hidden state — Khandelwal «Nearest Neighbor MT» ([2010.00710](https://arxiv.org/abs/2010.00710), ICLR 2021); kNN ≈ GD только на output-projection — Gao ([2305.13034](https://arxiv.org/abs/2305.13034), EMNLP 2023, *поправка: «a specific case of fine-tuning», не «математически эквивалентно»*); logprob-выживание API — [2512.03816](https://arxiv.org/abs/2512.03816) (*опровергнуто живой пробой для grok/gpt-5*); Self-RAG требует дообучения — [2310.11511](https://arxiv.org/abs/2310.11511). Живая проба: `eval/adaptive_probe.py`, `eval/data/adaptive_probe.json`.

**In-context демонстрации:** Moslem «Adaptive MT with LLMs» (EAMT 2023, [2301.13294](https://arxiv.org/abs/2301.13294)); Li/Cherry «Retrieval vs Fine-Tuning at Inference» ([2503.05010](https://arxiv.org/abs/2503.05010)); Power of Noise (SIGIR 2024, [2401.14887](https://arxiv.org/abs/2401.14887)); over-trust в MT «Exposing the Cracks» ([2510.00829](https://arxiv.org/abs/2510.00829)); lost-in-the-middle ([2307.03172](https://arxiv.org/abs/2307.03172)). Проба: `eval/adaptive_incontext.py`, `eval/data/adaptive_incontext.json`.

**Локальный LoRA/kNN-MT:** QLoRA (Dettmers, [2305.14314](https://arxiv.org/abs/2305.14314)); профиль на консумере (*поправка: 1.5B, RTX 4060 Ada, не Pascal*, [2509.12229](https://arxiv.org/abs/2509.12229)); LoRA Learns Less/Forgets Less (Biderman, TMLR 2024, [2405.09673](https://arxiv.org/abs/2405.09673)); test-time training (*поправка: ARC, не MT*, [2411.07279](https://arxiv.org/abs/2411.07279)); adaptive kNN-MT (Zheng, ACL 2021, [2105.13022](https://arxiv.org/abs/2105.13022)); robust kNN-MT (Jiang, EMNLP 2022, [2210.08808](https://arxiv.org/abs/2210.08808)); efficient/chunk kNN-MT ([2204.06175](https://arxiv.org/abs/2204.06175), 2022.emnlp-main.284).

**Само-коррекция/adaptive-RAG:** Huang «Cannot Self-Correct Yet» (ICLR 2024, [2310.01798](https://arxiv.org/abs/2310.01798)); Kamoi (TACL 2024, [2406.01297](https://arxiv.org/abs/2406.01297)); TEaR ([2402.16379](https://arxiv.org/abs/2402.16379)); WMT24-literary рефайнмент ([2605.13368](https://arxiv.org/abs/2605.13368)); Adaptive-RAG (NAACL 2024, 2024.naacl-long.389); CRAG ([2401.15884](https://arxiv.org/abs/2401.15884)); FLARE ([2305.06983](https://arxiv.org/abs/2305.06983)); risk-sensitive abstention-bandit ([2604.27283](https://arxiv.org/abs/2604.27283)).

**Adaptive/online классический MT (механизм, не вендор-числа):** Farajian (2017, multi-domain per-sentence); Wuebker «Compact Personalized» (EMNLP 2018); Peris «Online Learning for NMT PE» ([1706.03196](https://arxiv.org/abs/1706.03196)); Simianer «Immediate Adaptation R0/R1» (NAACL 2019); Wang «Non-Parametric Online from Feedback» ([2109.11136](https://arxiv.org/abs/2109.11136)). ModernMT/Lilt — вендор-маркетинг, **не** цитируется как доказательство.

**Заземление на наше направление:** DelTA (ICLR 2025, [2410.08143](https://arxiv.org/abs/2410.08143), *LTCR-1 = самосогласованность-с-первым*); WMT24 Discourse-Level Literary с **zh→ru** ([2412.11732](https://arxiv.org/abs/2412.11732)); DITING zh-en вебновелла ([2510.09116](https://arxiv.org/abs/2510.09116)); LiTransProQA (ru только источник, [2505.05423](https://arxiv.org/abs/2505.05423)).

**Проба-инфра:** `eval/adaptive_probe.py` (логиты/logit_bias флагманов), `eval/adaptive_incontext.py` (демо vs глоссарий, zh→ru А-Q), реюз `eval/refusal_bench.call_provider`+`providers.json`, корпус `eval/data/samples` (魯迅 阿Q + канон Рогова). Изолированный CUDA-env (Pascal QLoRA-проба) — в scratchpad, не в репозитории.
