Land doc-sync pass: redraw both puml diagrams to post-pack-16 reality, status-banner architecture docs 01-09, sweep built-markers into research 18-22, refresh README and PROGRESS with polygon pings
This commit is contained in:
parent
ccb7bfa114
commit
85fe02a92f
19 changed files with 235 additions and 259 deletions
|
|
@ -1,12 +1,12 @@
|
|||
# Промт: полигон-сессия, пакет №4 — сид этапа B + fix-лист D22.8 + задачи D25 (2026-07-11)
|
||||
|
||||
> **⚠ СТАТУС (оркестратор №4, D36.1, 12.07) — НЕ архивирован, ЧАСТИЧНО отработан, residual ЖИВ.**
|
||||
> Как отдельная сессия пакет №4 **НЕ запускался**. Отработана только **Задача 1 (сид-мн.ч.)** — влита в сид v2 внутри exp13 (D32, `guzhenren-seed-v2.yaml`). **Открыто (пилот/18+/echo-трек — ОРТОГОНАЛЬНО текущему exp14, НЕ вносить в него):**
|
||||
> - **Задача 2 (fix-лист D22.8):** (а) content-filter матчер подстрокой + самотест; (б) параметризация языка/жанра `explicit_judges.py`; (в) **миграция судьи `memory_eval.py` с gemini-2.5-flash** (EOL 16.10.2026 — `00-provider-quirks.md:72`); **(ж) проба судьи-дублёра 18+ (D22.6) — НАЗВАННЫЙ БЛОКЕР ПИЛОТА** (`09-pilot-protocol.md`, CURRENT-STATE).
|
||||
> Как отдельная сессия пакет №4 **НЕ запускался**. Отработана только **Задача 1 (сид-мн.ч.)** — влита в сид v2 внутри exp13 (D32, `guzhenren-seed-v2.yaml`). **Открыто (пилот/18+/echo-трек — ортогонально бэкенд-курсу, в паки НЕ вносить):**
|
||||
> - **Задача 2 (fix-лист D22.8):** (а) content-filter матчер подстрокой + самотест; (б) параметризация языка/жанра `explicit_judges.py`; (в) **миграция судьи `memory_eval.py` с gemini-2.5-flash** (EOL 16.10.2026 — `00-provider-quirks.md:74`); **(ж) проба судьи-дублёра 18+ (D22.6) — НАЗВАННЫЙ БЛОКЕР ПИЛОТА** (`09-pilot-protocol.md`, CURRENT-STATE).
|
||||
> - **Задача 3 (D25):** echo-калибровка (D25.7); дополнения пре-регистрации пилота (D25.2/25.6/25.8 → `09-pilot-protocol.md`); minimal-pairs shadow fidelity (совместить с корпусом пилота).
|
||||
> - **Задача 4 (D21.9):** P4 fidelity-хвост (35 пар); wire-аудит темп-свипа; D22.8-минорки (U+FF70 kana, append-only провенанс, judge-raw).
|
||||
>
|
||||
> **Порядок:** это ПИЛОТ-трек, downstream от текущей качественной развязки (exp14). При активации пилота — переупакую residual в свежий пилот-преп-промт (или гони отсюда, слаги судей — live-фактчеком `/models`). **exp14 (`POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md`) — приоритетнее.** 18+: только существующие артефакты `eval/data`, счётчики/метаданные в отчёт.
|
||||
> **Порядок (обновлено 25.07, пост-D39.22):** это ПИЛОТ-трек, downstream текущего курса «разработка бэкенда» (эксп пере-прогона ЗАКРЫТ D39.22; exp14 закрыт D37, его промт в архиве). При активации пилот-препа — переупакую residual в свежий промт (или гони отсюда, слаги судей — live-фактчеком `/models`); судья-дублёр 18+ (п.2ж) остаётся НАЗВАННЫМ БЛОКЕРОМ пилота. Гигиена D39.20: авто-QA слепых пакетов ключевать слепыми метками. 18+: только существующие артефакты `eval/data`, счётчики/метаданные в отчёт.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
# Журнал прогресса
|
||||
|
||||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-07-19, пост-D39.16). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1–D39.16); этот файл — ЖУРНАЛ.**
|
||||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-07-25, пост-пак-16/D39.25; буллеты эры exp15/16 ниже — хроника, их «очереди» исполнены записями ниже). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1–D39.25); этот файл — ЖУРНАЛ.**
|
||||
> - **Фазы:** 0 ✅ · Ф1-инфра ✅ (D20–D28; golden = инвариант №8) · арка «качество-первым» D26→D38.5 ЗАКРЫТА (хроника — `archive/PROGRESS-2026-07-10-13.md`; итог: потолок в организации, не в моделях). **АРХ-РЕСЕТ D39 (13.07):** синк-аудит «сломанного телефона» (65 находок / 0 refuted — `architecture/08-sync-audit-ledger.md`) → целевая 7-слойная архитектура + фазовый план (`architecture/09-target-architecture.md`); инвариант общности §0.1 (любая книга/пара/структура); промпт-тема консолидирована в `architecture/10-prompt-architecture.md`.
|
||||
> - **Трек A (build-now) ЗАКРЫТ:** пак-1 (D39.2, `d3f6b34`: trust-gated suppressor [терм-дрейф закрыт в КОДЕ] · export-contract нормализация · pair-сеам `prompts:{zh-ru}` fail-loud · реестр role→инъекция · target-гейты · quality-report) + пак-1.5+F1–F9 (D39.5, `dc30c7d`: `tmctl export` [manifest-join+drift-гард; полигон-экстракция впредь ТОЛЬКО через него] · fold-first санитайзер [HIGH-обход закрыт] · bounded глосс-whitelist · пример zh→ru). Адверсариал-долг 529 погашен (D39.4: 8 осей, 0 CRIT/1 HIGH/6 MED — всё в фикс-листах/ledger).
|
||||
> - **Трек B (ресёрч) ЗАЛЕНДЕН:** research/19 нарезка+когезия+контракт t/e+волны W0–W3 (D39.1; конфликт exp14↔research/18 разрешён: эмиссия≠окно≠связность) · research/20 банк-майнинг W1.5 (D39.6; детектор-лестница V-A/B/C, алиас-ярусы, banknote-v1, плагины P1–P6, §D-пре-рег; конфаунд инъекции ⇒ cold-start срез).
|
||||
> - **exp15 ЗАВЕРШЁН И ЗАЛЕНДЕН (D39.7, `fe34a16`):** «граница вредит» отозван (артефакт окна судьи, свинг +0.689 после фикса), все когезия-эффекты под шум-полом 0.126, «sequential нигде не лучше» (LOO-stable, НЕ ратифицированный зелёный свет волне), фертильность 1.20·cjk+0.39·other; $12.79/$15. **Слепое чтение ИСПОЛНЕНО (D39.8):** планка не пройдена никем, дефекты распределены по армам (читатель подтвердил floor-null; V2-брак = риг без гейтов, не carryover-рычаг) → битва качества пере-прогона = дефект-классы (时辰-юниты · числа b1 · gender-enforce · стих/аллюзии · регистр-лексикон), не нарезка. **Q4a ИСПОЛНЕН И ЗАЛЕНДЕН (D39.9, $1.32/$2):** верность НЕ покупается на translate-стадии (flash уже верен 25/0/27; pro ×3.67 не ратифицирован); смысл ломает glm-РЕДАКТОР (свап glm→mistral/deepseek-pro = приоритетный арм пере-прогона); exp14b-правила дефектны → $0-ре-аудит в exp16. **exp16 ИСПОЛНЕН И ЗАЛЕНДЕН (D39.10, $0.02/$10):** WHICH подтверждена (код-детектор V-C recall 0.97 held-out, $0) / WHAT опровергнута для ко-оккуренции → dst-канал = банкнота (идея владельца оправдана) + облако+Палладий; 9B-споттер не нужен (0.895 ≤ код); Z1 → облако; ре-аудит exp14b: ядро D38 держится, errata не нужна. Тачпойнты владельцу: карта подписи (пол) · мини-голд алиасов · precision@30 (books/gu-zhenren/exp16/). **Исследовательская программа ЗАВЕРШЕНА.** **Директива владельца (D39.11): стройка ТОЛЬКО после ДИЗАЙН-СИНТЕЗ сессии.** **План РАТИФИЦИРОВАН (D39.12, `architecture/11-implementation-plan.md`)** — три рубежа верификации, 4 гейтнутых арма. **Пак-11 (единой сессией, блоками):** ✅ Block A (D39.13: output-чанкер+edit-единицы+src→dst-редактор [закрытие D30.1]+eager-clients+rate-guard+base/enriched+банкнота-ядро) · ✅ continuation (D39.14: Go-майнер паритет-EXACT+банкнота-12-точек+DC-чекеры+`export --pairs`+арм-конфиги+волновой снапшот-аддитив; рубеж-2-долг погашен, clean bill, фикс-лист FL-1/2/3) · ✅ **арх-проход (D39.16: язык-данные майнера → `internal/lang`+`configs/langpacks/` байт-точно [парити EXACT, golden байт-идентичен], граница компиль-enforced; `x/text/language.Tag` ОТВЕРГНУТ [CLDR-инстабильность в вердиктах]; DC-чекеры/снапшот-фолд DEFER [майнер offline/нейтральность]; FL-1/2/3 залендены).** **Очередь:** R1 драйвер-свитч (волновой исполнитель W1/W1.5/W2 + структурный golden-рерайт + фолд `pack.Version()`/загрузка langpack при wiring майнера живым; промт `BACKEND_PLAN11_SESSION_PROMPT.md` АКТИВЕН + `backend/PACK11_CONT_REPORT.md §R1`) → приёмка → единый resnapshot (D30.9, §8-манифест) → пере-прогон 3–10 глав (армы glm/mistral/deepseek-pro) → чтение владельца (интерим-планка 2 претензии, D35). ja→ru-реплика = тест общности §B5 (DEFER-чекеры едут туда). 残: POLYGON_PACKAGE4 residual-трекер (пилот/18+/echo — отложен, D36.1); ре-чек прайса DeepSeek 24.07.
|
||||
> - **Стек (не менялся с D38.5):** draft deepseek-v4-flash (thinking ON) → editor glm-5 БИЛИНГВ v3-discourse (P1a+чэнъюй+few_shot-тумблер; свап-кандидаты mistral/deepseek-pro = армы пере-прогона) → судья gemini-3.1-pro-preview; канал B Mistral+grok; 7 ключей; ~$0.85/ранобэ (D30.4).
|
||||
> - **Стек:** draft deepseek-v4-flash (thinking ON) → **editor deepseek-v4-pro БИЛИНГВ ИНТЕРИМ (D39.22; glm-5 резерв, mistral вон D39.20)**, промпт v3-discourse (P1a+чэнъюй+few_shot-тумблер) → судья gemini-3.1-pro-preview; канал B Mistral+grok; 7 ключей; ~$0.85/ранобэ (D30.4).
|
||||
> - **Ждём от владельца:** тачпойнты 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-*-доков.
|
||||
> - **ОТКРЫТЫЕ ПЕТЛИ (норма 25.07, перепись 180 инцидентов: класс NEVER_CLOSED больше не копим — каждая петля обязана получить диспозицию решено/отложено-с-записью/отклонено; ведёт оркестратор).** *Владелец:* мини-каноны сид-дельты — 元-корень (предложение «изначальн-») и 春秋蝉 (подписано «Весенне-осенняя цикада», ждёт подтверждения) · **включение платной петли ремонта — по замеру остатка на пост-профилактическом прогоне (D39.24; заменил mini-live гейт D6)** · ja→ru-реплика §B5 (тайминг) · старые Ф2.5-блокеры (билингв-якорь — D25 п.9 Q1 · контаминация корпуса — D27 п.4 · судья-дублёр D22.6 · планка запуска · publishable/waiver — D25 п.1 · FN-bound L3 — D25 п.4 · юр-пакет · xAI-ключ off перед продом D27). *Оркестратор:* ~~ратификация дизайна пака-16~~ РЕШЕНО D39.24 (25.07) · фантом-гард D-ссылок в чек-листе лендинга (действует) · **doc-sync pass (аудит владельца 25.07):** puml-диаграммы от 12.07 — ДО арх-ресета (нет волн/сплита пакетов/петли/лейблов) — перерисовать под текущую архитектуру (НЕ рендерить) · свип ресёрч-баннеров «→ построено паком-N» (research/19 чанкер → пак-11; research/20 майнинг → паки 11/13; промпт-выводы → пак-15) · статус-баннеры на 02-mvp-plan/03-implementation-notes (10/11 — проставлены 25.07). *Бэкенд:* ~~пак-16 ф.2~~ ЗАЛЕНДЕНА 25.07 · per-class исходы ремонта — схемное решение (класс не durable), принимается ВМЕСТЕ с включением петли · ниты общности (владелец 25.07, хвост ближайшего пака): Detail-строки чекеров → шаблоны/цитаты из данных (статический 时辰-текст в generic-файле соврёт второй паре) · множитель ×2 `lintTimeUnits` (`checkers.go:174`) → ключ данных. *Полигон (residual):* нет новых.
|
||||
> - **ОТКРЫТЫЕ ПЕТЛИ (норма 25.07, перепись 180 инцидентов: класс NEVER_CLOSED больше не копим — каждая петля обязана получить диспозицию решено/отложено-с-записью/отклонено; ведёт оркестратор).** *Владелец:* мини-каноны сид-дельты — 元-корень (предложение «изначальн-») и 春秋蝉 (подписано «Весенне-осенняя цикада», ждёт подтверждения) · **включение платной петли ремонта — по замеру остатка на пост-профилактическом прогоне (D39.24; заменил mini-live гейт D6)** · ja→ru-реплика §B5 (тайминг) · старые Ф2.5-блокеры (билингв-якорь — D25 п.9 Q1 · контаминация корпуса — D27 п.4 · судья-дублёр D22.6 · планка запуска · publishable/waiver — D25 п.1 · FN-bound L3 — D25 п.4 · юр-пакет · xAI-ключ off перед продом D27). *Оркестратор:* ~~ратификация дизайна пака-16~~ РЕШЕНО D39.24 (25.07) · фантом-гард D-ссылок в чек-листе лендинга (действует) · ~~doc-sync pass~~ **ИСПОЛНЕН 25.07** (запись ниже: оба puml перерисованы под пост-пак-16 · баннеры на 01/02/03/04/06/07/08/09 · ресёрч-свип 18/18c/19/20/21/22 · README/POLYGON_PACKAGE4 освежены; residual — пинги полигону в его зоне) · приёмка пака-17 фаза 1 (когда придёт отчёт: эхо-блок сразу, ратификация пропорционально). *Бэкенд:* ~~пак-16 ф.2~~ ЗАЛЕНДЕНА 25.07 · per-class исходы ремонта — схемное решение (класс не durable), принимается ВМЕСТЕ с включением петли · ниты общности (владелец 25.07, хвост ближайшего пака): Detail-строки чекеров → шаблоны/цитаты из данных (статический 时辰-текст в generic-файле соврёт второй паре) · множитель ×2 `lintTimeUnits` (`checkers.go:174`) → ключ данных. *Полигон (residual):* **6 пингов doc-sync аудита 25.07 (зона `docs/experiments/` — оркестратор не правит):** (1) `00-provider-quirks.md:13,73` — катовер deepseek-chat 24.07 ПРОШЁЛ, пост-катовер факт (жив ли алиас, цены) не внесён — live-проба `/models` + вендор-дока; (2) `00-provider-quirks.md:69` — оговорка «mistral-editor-арм до guard» superseded D39.20 (mistral вон из редакторов; rate-limit-цифры оставить — нужны переводчику канала B пака-17); (3) `09-pilot-protocol.md:3` — ⚠-указатель застрял на D31/glm-5: продлить до пост-D39.22 (dspro-интерим · планка ≤2 не пройдена rerun2 · авто-QA слепыми метками D39.20 · стайл-каноны D39.21), тело не трогать; (4) `15-segmentation-empirics.md:6-7` — шапка до сих пор «НИ ОДНОГО платного вызова», а эксп залендён REV.2 (D39.7/D39.8, $12.79) — перевернуть статус-блок; (5) `16-bank-mining.md:3` — дописать финал «ИСПОЛНЕН И ЗАЛЕНДЁН (D39.10); gender-тачпойнт §7 закрыт (D39.19); продолжение — Go-майнер парити EXACT»; (6) `experiments/README.md` — индекс без строк exp15/16 (сверка застряла на D38.2).
|
||||
> - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `archive/PROGRESS-2026-07-10-13.md` (D39.6-гигиена). Записи ниже — живая эра D39.
|
||||
|
||||
## Оркестратор №7 — DOC-SYNC PASS ИСПОЛНЕН (аудит владельца 25.07): puml перерисованы, 14 доков синканы с D1–D39.25, 6 пингов полигону, 25.07
|
||||
|
||||
Метод: 6-агентный аудит-воркфлоу (код-реальность для диаграмм + сверка каждого стейл-дока с D-логом/кодом, всё file:line) → мои спот-чеки несущих клеймов исполнением (6/6 сошлись: «F1 CLOSED» `snapshot.go:177` · `Escal.Chains` без потребителей в раннере · repair отсутствует в c1 = disabled · STM-кнобы удалены · tmctl-команды · `RepairCandidates` `checks/repair.go:71`) → правки моими руками. **Диаграммы:** `components.puml`/`pipeline.puml` перерисованы с нуля под пост-пак-16 реальность (волновой исполнитель · сплит пакетов пака-15 · снапшоты per-wave/BASE-ENRICHED · майнинг-стоп exit 3 · repair-петля [FLAG] · конфиг-слои данными · generic-лейблы D39.25 как план пака-17; НЕ рендерились — смотреть расширением). **Статус-баннеры (тела НЕ переписаны, дисциплина D23.3):** 01-decisions (dspro-интерим, xAI-концентрация распалась, Р4→D39.25) · 02-mvp-plan (дорожка v3.2 исполнена через арх-ресет) · 03-implementation-notes (география §3 перечёркнута сплитом; техдолг §6: clients-гонка/F4/F3 закрыты) · 04-unhappy-paths (чекеры/ремонт построены, карта сработала как ТЗ — дефект-классы rerun2 легли в её клетки) · 06-memory-risk-registry (банк ПОСТРОЕН, G1 закрыта иначе — майнер+банкнота без LLM-споттера; F1-остаток закрыт inline) · 07-strategic-review (курс исполнен) · 08-sync-audit-ledger (аудит отработан, диспозиции закрыты стройкой) · 09-target-architecture (таблица «слой → статус → пак/D»; врезка слоя 2 продлена до паков 14/15). **Ресёрч-свип «→ построено»:** 18/18-chatgpt (editor v3, арка закрыта) · 19 (чанкер/волны/exp15) · 20 (майнер/банкнота, гейт §D снят) · 21 (DEFER снят паком-12; Q7-абсорбция по-прежнему за вендор-сверкой) · 22 (Q6 gating+repair закрыт паком-16); research/15 честен — не тронут. **Освежены:** docs/README (D-диапазон D39.25, exp12–16 в карте, archive/reports описан, статус 25.07, пак-17 ЗАПУЩЕН) · POLYGON_PACKAGE4-баннер (пост-D39.22 рамка, quirks-ссылка :74). Зона полигона не тронута — 6 пингов в трекере петель. Верификация: все баннер-клеймы грунтованы file:line аудиторами + мои спот-чеки; спорных inline-правок тел — две (F1-строка в 06, врезка слоя 2 в 09), обе high-confidence по коду.
|
||||
|
||||
## Оркестратор №7 — промт пака-17 «канал B вживую» ВЫДАН (двухфазный: дизайн B1–B6 → ратификация → стройка), 25.07
|
||||
|
||||
Последний несущий кусок бэкенда перед следующим платным прогоном (прогон разом даст: итерация №2 dspro-vs-glm · замер остатка дефектов → решение о петле ремонта · живой канал B). Дизайн-вопросы: гранулярность adult-маркировки (приор: ручная, книга/главы, данные книги) · **редактор канала B** (dspro НЕЛЬЗЯ — DeepSeek вне 18+ по ToS; выбор интерим до замера) · refusal-каскад в лестнице эскалации · механическая гарантия «adult → только permissive» (флаг провайдера = данные models.yaml) · снапшот/резюм · отчётность. Инварианты: L3 — жёсткая линия (классификатор НЕ строится, спека D22.7 ждёт владельца) · live 18+ только по санкции · синтетические фикстуры · байт-точность канала A. Хвостом фазы 2 — ниты общности из петель.
|
||||
|
|
|
|||
|
|
@ -11,17 +11,17 @@
|
|||
|
||||
## Структура
|
||||
|
||||
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1–D39.22+); при конфликте с любым доком он выше.**
|
||||
- `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).
|
||||
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1–D39.25); при конфликте с любым доком он выше.**
|
||||
- `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` — диаграммы (перерисованы 25.07 под пост-пак-16 реальность: волновой исполнитель, пакетный сплит пака-15, repair-петля за `enabled:false`, generic content-labels D39.25; владелец смотрит 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), `12-quality-diagnosis`/`13-translator-bakeoff`/`14-quality-empirics`/`14b-meaning-battery` (дуга качества «мерить→строить», закрыты → D30/D32/D37/D38), `15-segmentation-empirics` (exp15: когезия под floor-шумом, фертильность — закрыт → D39.7/D39.8), `16-bank-mining` (exp16: WHICH/WHAT банк-майнинга — закрыт → D39.10).
|
||||
- `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 сверху, ниже хронология; НЕ источник решений).
|
||||
- **Активные хендофф-промты (пост-пак-16, 25.07):** [`BACKEND_PACK17_CHANNEL_B_SESSION_PROMPT.md`](BACKEND_PACK17_CHANNEL_B_SESSION_PROMPT.md) (**пак-17 канал B (18+) вживую — ТЕКУЩИЙ, ДВУХФАЗНЫЙ**: дизайн B1–B6 → ратификация → стройка; L3 — жёсткая линия, live только по санкции владельца) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 + нормы промтов/приёмки §7–11) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **Пак-16 ЗАЛЕНДЁН 25.07** (слой-3 diff-редактор: двухфазный дизайн D39.24 → стройка за `enabled:false`; отчёты с ревью-шапками — [`archive/reports/PACK16_DESIGN_2026-07-25.md`](archive/reports/PACK16_DESIGN_2026-07-25.md), [`archive/reports/PACK16_DIFF_EDITOR_REPORT_2026-07-25.md`](archive/reports/PACK16_DIFF_EDITOR_REPORT_2026-07-25.md)). **Паки 12/13/14/15 ЗАЛЕНДЕНЫ 24–25.07** (приёмка воркфлоу-линзами; отчёты с ревью-шапками — [`archive/reports/PACK14_GENERALITY_REPORT_2026-07-24.md`](archive/reports/PACK14_GENERALITY_REPORT_2026-07-24.md), [`archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md`](archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md); норматив — [`architecture/12-go-style-notes.md`](architecture/12-go-style-notes.md)). Дальше: **пак-17 = канал B вживую** (батч со следующим платным прогоном: вопросы итерации №2 + замер остатка ремонта → решение о включении петли) → голос/состояние D21 + C2/C3 → пилот Ф2.5. Закрытые — в `archive/prompts/`.
|
||||
- `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять).
|
||||
- **Активные хендофф-промты (пост-пак-16, 25.07):** [`BACKEND_PACK17_CHANNEL_B_SESSION_PROMPT.md`](BACKEND_PACK17_CHANNEL_B_SESSION_PROMPT.md) (**пак-17 канал B (18+) вживую — ТЕКУЩИЙ, ЗАПУЩЕН 25.07, ДВУХФАЗНЫЙ**: дизайн B1–B6 → ратификация → стройка; L3 — жёсткая линия, live только по санкции владельца) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 + нормы промтов/приёмки §7–11) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **Пак-16 ЗАЛЕНДЁН 25.07** (слой-3 diff-редактор: двухфазный дизайн D39.24 → стройка за `enabled:false`; отчёты с ревью-шапками — [`archive/reports/PACK16_DESIGN_2026-07-25.md`](archive/reports/PACK16_DESIGN_2026-07-25.md), [`archive/reports/PACK16_DIFF_EDITOR_REPORT_2026-07-25.md`](archive/reports/PACK16_DIFF_EDITOR_REPORT_2026-07-25.md)). **Паки 12/13/14/15 ЗАЛЕНДЕНЫ 24–25.07** (приёмка воркфлоу-линзами; отчёты с ревью-шапками — [`archive/reports/PACK14_GENERALITY_REPORT_2026-07-24.md`](archive/reports/PACK14_GENERALITY_REPORT_2026-07-24.md), [`archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md`](archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md); норматив — [`architecture/12-go-style-notes.md`](architecture/12-go-style-notes.md)). Дальше: **пак-17 = канал B вживую** (батч со следующим платным прогоном: вопросы итерации №2 + замер остатка ремонта → решение о включении петли) → голос/состояние D21 + C2/C3 → пилот Ф2.5. Закрытые — в `archive/prompts/`.
|
||||
- `archive/` — `prompts/`: закрытые сессионные промты (только история, инструкции оттуда не исполнять) · `reports/`: отчёты паков/ресёрч-сессий с ревью-шапками (живая фактура приёмок — на них ссылаются D-лог и активные промты) · архивы хроники `PROGRESS-2026-07-04-10.md`/`PROGRESS-2026-07-10-13.md`.
|
||||
|
||||
## Статус (2026-07-23, пост-D39.20 — механизация выпускного качества)
|
||||
## Статус (2026-07-25, пост-пак-16/D39.25 — механизация выпускного качества)
|
||||
|
||||
Фаза 0 ✅; Ф1-инфра ✅ (D20–D28). **АРХ-РЕСЕТ D39 ИСПОЛНЕН ЦЕЛИКОМ:** 7-слойная архитектура (`09-*`) → исследовательская программа (D39.1–D39.10) → план (D39.12, `11-*`) → стройка пака-11 (D39.13–D39.19: волновой исполнитель · чанкер output-бюджет · src→dst-редактор · Go-майнер паритет-EXACT · банкнота · `internal/lang`+langpacks · reject-set · echo-сплит). **ПЕРЕ-ПРОГОН rerun2 ИСПОЛНЕН И ПРОЧИТАН (D39.20, 23.07):** операционка вся подтверждена живьём (ОДИН resnapshot · **$0-резюм драфта ×3 арма** · echo 0 · $6.63<$15 · майнинг-стоп→подпись→reject-set); **планка ≤2 НЕ пройдена** — но дефект-классы полностью механизируемы. Три сигнала (судья dspro 0.679>glm 0.589>>mistral 0.232, floor-шум 0 · два слепых чтения): **анти-корреляция гладкость↔верность доказана трижды**; **mistral исключён как несущий редактор** (голос = north-star промпта); dspro-vs-glm → итерация №2 после механизации (драфт $0). research/21: транспорт наш опережает/вровень со всеми 11, рефакторинг отвергнут. **Эксп ЗАКРЫТ (D39.22), итерация №2 отложена; редактор = deepseek-v4-pro ИНТЕРИМ (glm-резерв); стайл-каноны D39.21 ратифицированы.** **Очередь (курс — разработка бэкенда):** паки 12–15 залендены (транспорт-гигиена · выпускной QA · генеральность · структура: движок разложен `internal/{text,seed,chunk,miner,checks,membank}`+композит-корень, конфиг-слой пары, строгий декод) → пак-16 (канал B / слой-3 diff-редактор) → сид-дельта (元/赤城/学堂家老/春秋蝉) → канал B вживую + слой-3 diff-редактор + Ф2-механизмы (D21 голос/состояние, native-Gemini судья) + ja→ru §B5 → пилот Ф2.5 (блокеры прежние: билингв-якорь D25.9-Q1, корпус, судья-дублёр D22.6). Судья 18+ = grok-фолбэк (квирк D22.6 подтверждён живьём). Ключ xAI: единый, data-sharing, off перед продом (D27).
|
||||
Фаза 0 ✅; Ф1-инфра ✅ (D20–D28). **АРХ-РЕСЕТ D39 ИСПОЛНЕН ЦЕЛИКОМ:** 7-слойная архитектура (`09-*`) → исследовательская программа (D39.1–D39.10) → план (D39.12, `11-*`) → стройка пака-11 (D39.13–D39.19: волновой исполнитель · чанкер output-бюджет · src→dst-редактор · Go-майнер паритет-EXACT · банкнота · `internal/lang`+langpacks · reject-set · echo-сплит). **ПЕРЕ-ПРОГОН rerun2 ИСПОЛНЕН И ПРОЧИТАН (D39.20, 23.07):** операционка вся подтверждена живьём (ОДИН resnapshot · **$0-резюм драфта ×3 арма** · echo 0 · $6.63<$15 · майнинг-стоп→подпись→reject-set); **планка ≤2 НЕ пройдена** — но дефект-классы полностью механизируемы. Три сигнала (судья dspro 0.679>glm 0.589>>mistral 0.232, floor-шум 0 · два слепых чтения): **анти-корреляция гладкость↔верность доказана трижды**; **mistral исключён как несущий редактор** (голос = north-star промпта); dspro-vs-glm → итерация №2 после механизации (драфт $0). research/21: транспорт наш опережает/вровень со всеми 11, рефакторинг отвергнут. **Эксп ЗАКРЫТ (D39.22), итерация №2 отложена; редактор = deepseek-v4-pro ИНТЕРИМ (glm-резерв); стайл-каноны D39.21 ратифицированы.** **Очередь (курс — разработка бэкенда):** паки 12–16 залендены (транспорт-гигиена · выпускной QA · генеральность · структура: движок разложен `internal/{text,seed,chunk,miner,checks,membank}`+композит-корень, конфиг-слой пары, строгий декод · слой-3 diff-редактор ПОСТРОЕН за `enabled:false` по двухфазному дизайну D39.24 — позиционная детекция + read-only скан остатка + машинерия ремонта §15.2; включение платного пути = решение владельца по замеру остатка на пост-профилактическом прогоне) → пак-17 = канал B вживую (ЗАПУЩЕН 25.07, двухфазный; D39.25: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities; батч со следующим платным прогоном: вопросы итерации №2 + замер остатка ремонта) → сид-дельта (元/赤城/学堂家老/春秋蝉) → Ф2-механизмы (D21 голос/состояние, native-Gemini судья) + ja→ru §B5 → пилот Ф2.5 (блокеры прежние: билингв-якорь D25.9-Q1, корпус, судья-дублёр D22.6). Судья 18+ = grok-фолбэк (квирк D22.6 подтверждён живьём). Ключ xAI: единый, data-sharing, off перед продом (D27).
|
||||
|
||||
## Доступные ключи от моделей
|
||||
DEEPSEEK_API_KEY, ZAI_API_KEY, KIMI_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, XAI_API_KEY, MISTRAL_API_KEY
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Архитектурные решения (v2, 2026-07-04)
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7).** Шапка D31 ниже сама датирована: бейк-офф exp13 состоялся — черновик deepseek-v4-flash СОХРАНЁН (D32.1); редактор = **deepseek-v4-pro ИНТЕРИМ** (D39.22; glm-5 — резерв, mistral исключён — D39.20); grok больше не редактор — концентрация xAI (Р4/Р10-риск-6) распалась, остались судья-фолбэк 18+ и эскалация. Контент-роутинг Р4 переопределён D39.25: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities (данные + конфиг), refusal причино-агностичен, «канал B» — продуктовое имя; L3 — политика ВХОДА, не чанк-классификатор. После арх-ресета D39 исполнены волновой исполнитель (D39.17), langpack/pair-слой данных (D39.16/D39.23) и слой-3 diff-редактор за `enabled:false` (D39.24) — принцип Р2 «узкие мандаты + диффы» реабилитирован стройкой. Принципы Р1–Р10 живы; вся конкретика моделей/цен/каналов проигрывает D-логу (D30–D39.25) и `configs/pipeline-c1.yaml`.
|
||||
|
||||
> **⚠ Шапка-указатель (ревизия D31, 12.07).** Принципы Р1–Р10 живы, но конкретика моделей/цен в этом доке — состояние 04–05.07 и **проигрывает D-логу**: редактор теперь БИЛИНГВ, grok reasoning-off из редакторских ролей снят, кандидат glm-5-билингв (D30.1); черновик DeepSeek — интерим до бейк-оффа exp13 (D30.6); канал B: переводчик-дефолт Mistral + grok-ON эскалация (D14.1/D19.1), Gemini-судья fail-closed на эротике (D22.6); ключ xAI един, с data-sharing (D27); COGS ~$0.85/ранобэ после флипа D1 (D30.4); кэш ≈2% стоимости, НЕ главный рычаг (exp08). Точечные пометки — по тексту.
|
||||
|
||||
Синтез по итогам исследований `docs/research/01…11-*`. v2 — после адверсариального ревью тремя критиками (техархитектура, экономика, red-team); все найденные противоречия разрешены явно. Формат — ADR-подобный: решение → обоснование → что отвергнуто. Статусы: **принято** (можно кодить), **гипотеза** (нужен пилот/валидация).
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# План MVP (v3.2, 2026-07-12)
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): точка-во-времени v3.2 (12.07) — рамка фаз жива, дорожка v3.2 ИСПОЛНЕНА, курс ушёл дальше через арх-ресет.** Ф0 ✅, Ф1-инфра ✅; из «Осталось до приёмки Фазы 1» ПОСТРОЕНЫ: границы доверия памяти D16 (trust-gate, D39.2), `tmctl status`+redrive (D15.3), санитайзер D30.3 и экспорт D29.1 (`tmctl export`, D38.3/D39.5); автопопуляция G1 superseded Go-майнером с майнинг-стопом и подписью владельца (D39.10/D39.14/D39.17). Дорожка «resnapshot → пере-прогон 25 глав → чтение» прошла ЧЕРЕЗ арх-ресет D39 (7 слоёв; паки 11–16 залендены, D39.13–D39.24): пере-прогон rerun2 исполнен и прочитан (D39.20), планка ≤2 НЕ пройдена, эксп закрыт владельцем (D39.22) — этап B и пилот Ф2.5 НЕ открыты; редактор = deepseek-v4-pro ИНТЕРИМ (glm-5 резерв, mistral вон), не grok. Интерим-18+ ниже читать через D39.25 (в движке НЕТ понятия «18+»: content-labels × provider-capabilities; канал B вживую = пак-17). Актуальный курс — CLAUDE.md «Текущее состояние» + голова D-лога; правило «при конфликте побеждает D-лог» в силе.
|
||||
|
||||
Цель MVP (бриф, п. 24): **бэкенд переводит целую книгу целиком** — консистентно, дёшево, с учётом стоимости. Интерфейс — CLI; HTTP API закладываем как тонкий слой (Фаза 3), IDE-фронт — после бэкенда.
|
||||
v2 (04.07) — после адверсариального ревью синтеза. **v3 (09.07) — синхронизация с контрактом [`05-decisions-log.md`](05-decisions-log.md) (D1–D17) после стратегического ревью [`07-strategic-review.md`](07-strategic-review.md)**: сняты мёртвые приёмочные пороги, переписан интерим-18+, фазовые списки приведены к фактам. **v3.1 (11.07, D24/D25): приёмочная книга приведена к D18 (蛊真人 zh→ru; ja→ru — второй прогон), интерим-18+ к D19/D22, этап A приёмки выполнен.** **v3.2 (12.07, D26–D31): качество-первым — этап B заморожен до читаемых 25 глав; редактор БИЛИНГВ (D30.1); дорожка: пакет D15.2 + exp13 + сид v2 → resnapshot → пере-прогон 25 глав → чтение владельца → этап B.** При конфликте этого плана с D-логом — **источник истины D-лог**.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
> **⚠ Точка-во-времени 04.07 (ревизия D31).** §3-контракты Фазы 0 — живой референс бэкенда (request_hash охраняется golden-гардом D23); §5 «[НУЖНО РЕШЕНИЕ]» — все пункты развязаны D-логом (премиум-бюджет → D11/exp08; TM-политика → Р6/D-лог; канал B → D14.1/D19.1; стриминг → keep-alive Ф2); онлайн-факты §3.9 датированы 04.07 — цены/слаги сверять с models.yaml/quirks.
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): код-география §3 перечёркнута паком-15 (D39.23).** Контракты §3 живы семантикой, но монолита `internal/pipeline` больше нет: движок разложен на `internal/{text,seed,chunk,miner,checks,membank}` + композит-корень `pipeline`; конфиг-слой §3.8 расширен `configs/pairs/<пара>` + `configs/langpacks/` + промпт-конвенцией `prompts/<пара>/<роль>.md` и строгим KnownFields-декодом (паки 15/16). Из §6-техдолга закрыты: гонка `Runner.clients` (WS1a, D39.13) · F4 — усечённый length флагуется disposition-классификатором · F3-класс — кап пере-биллинга пака-12; снапшот-дисциплина и golden-гард D23 живы в новой раскладке (golden байт-в-байт, парити EXACT — D39.23).
|
||||
|
||||
Вердикт шага 0 — перевалидации решений v2 глазами реализатора перед Фазой 0.
|
||||
Метод: собственное чтение донорского кода vojo + воркфлоу из 4 критиков (линзы: консистентность доков,
|
||||
исполнимость в Go, сверка с донором построчно, онлайн-фактчек цен/API; ~940k токенов, находки ниже отобраны и объединены).
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Карта unhappy paths: режимы отказа AI-перевода → механизмы TextMachine (v1, 2026-07-04)
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7).** Таксономия режимов отказа — действующая валидационная матрица: дефект-классы пере-прогона rerun2 (时辰-меры, разряды 千万, битые словоформы, заголовки — D39.20) легли ровно в её клетки. Но колонки «Фаза/Статус» — снимок дизайна 04.07 и проигрывают D-логу: число/масштаб/процент/латиница/broken-word-чекеры и заголовок-шаблон ПОСТРОЕНЫ (пак-13 `2f91b04`, `internal/checks`), позиционная детекция + ремонт-машинерия diff-редактора построены за `enabled:false` (пак-16, D39.24), gender доезжает до draft-wire (пак-13), ruby-захват на инжесте есть (`ruby_readings`); пар-специфика (словари, детекторы, шаблоны) едет ДАННЫМИ `configs/langpacks/`+`configs/pairs/`, не Go-кодом (пак-14/15, D39.16/D39.23, гардрейл общности 24.07); глоссарный post-check реализован decl-путём в Go, не pymorphy (D31.4; морфо-гейт рода — по-прежнему Ф2); меры → единицы читателя, generic-«гу» — средний род, стихи — смыслом (D39.21); «канал B» в движке = generic content-labels (D39.25). Annotator/голос-состояние — Ф2 (D21).
|
||||
|
||||
Синтез по `research/12-failure-modes-{ja,zh,ru-target}.md`, `12-consumer-feedback.md`, `12-error-taxonomies.md` (+ база 01/02/07). Назначение: (1) валидационная матрица архитектуры — каждый известный режим отказа обязан иметь механизм или честную пометку «дыра»; (2) ТЗ на QA-гейты и поля памяти; (3) источник регрессионных тест-кейсов (в research-доках каждый режим — с примером «оригинал → анти-паттерн MTL → верный перевод»).
|
||||
|
||||
Статусы: ✅ закрыто дизайном v2 · 🔶 закрыто частично / нужно уточнение дизайна · ❌ дыра, требует действия. Фаза — где механизм появляется по плану MVP.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
> **Дополнение (ревизия D31, 12.07):** (1) **Alias-слепое пятно post-check (D24.2, найдено ревью приёмки этапа A):** вложенный алиас внутри longest-match полного имени невидим флаггеру — 古月方源 отрендерен раздельно «гу юэ» при dst-родителе в тексте → промах не фаерится; истинная консистентность этапа A ≈99.5%, не 100%; класс редкий (~1/190 поверхностей), фикс в Ф1 не заказан, учитывать в методике D10-пересчётов. (2) G2 «flag-rate×throughput не смоделирован» — частично закрыт: первый замер на реальной книге = 5.3% (3/57 чанков), концентрация 2/25 глав (D24); minutes/flag — в пре-регистрацию пилота (D25.6). (3) Precision/recall post-check — амендмент D28.1: union базовой формы = трейдофф, hard-gate флип требует пере-замера recall.
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): банк ПОСТРОЕН — реестр читать как исполненную спеку + методологию, статусы ❌/🔶 датированы 04.07.** Паки 11–15 (D39.13–D39.23): детерминированный Go-майнер (паритет-EXACT) + банкнота с подписью владельца + reject-set закрыли петлю G1 ИНАЧЕ, чем предлагал реестр (exp16/D39.10: WHICH — код, recall 0.97, $0; канон-dst — банкнота; локальный LLM-споттер не нужен); trust-gated suppressor закрыл код-корень терм-дрейфа с громким `n_trust_gated_suppress` (D39.2); нормализация A4 — `internal/text` + данные; Палладий B6 — generic-парсер + langpack-таблицы (D39.16); инъекция, трёхслойная защита и обязательный post-check живут в `internal/membank` (A2/E1 построены); F1-остаток ЗАКРЫТ — `memoryVersion()` хеширует материализованные approved-строки (`snapshot.go:175`); gender доезжает до draft-wire (пак-13, аудит D39.21). Живой прогон подтвердил петлю подписи (2 decline + 1 promote, D39.20). Принципы реестра — действующие инварианты кода; D24.2 (alias-слепое пятно) учитывать по-прежнему.
|
||||
|
||||
Выход сессии **«Валидация банка памяти»** (промт `docs/archive/prompts/MEMORY_RESEARCH_SESSION_PROMPT.md`). Это **вход для бэкенд-сессии перед фиксацией схемы store/глоссария Фазы 1** (шаг 4 «миграция памяти v2» держится до этого реестра — §Память (с D31 в `../archive/PROGRESS-2026-07-04-10.md`), D7).
|
||||
|
||||
Метод: многоагентный ресёрч по 7 направлениям + независимая адверсариальная верификация каждой находки по первоисточникам + локальный эмпирический бенчмарк retrieval на реальном PD-корпусе (`eval/retrieval_bench.py`, `eval/data/retrieval_bench/`) + чтение реального кода `backend/`. Полный разбор с источниками и датами — `docs/research/13-memory-bank-validation.md`. Продуктовый код здесь не пишется — реестр описывает требования к нему.
|
||||
|
|
@ -70,7 +72,7 @@
|
|||
|
||||
| # | Сценарий отказа | Вер./Тяж. | Механизм защиты | Слой | Где в коде/схеме | Фаза | Статус |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| F1 | **`snapshotID` не покрывает память → тихий расходящийся ре-пэй (D5.2)**. Подтверждено кодом: `snapshotID` (`snapshot.go:82 (до пакета №4 — runner.go:145-163)`) хэширует brief/chunker/план-стадий/сэмплинг, но **не** версию approved-глоссария и **не** параметры сборки контекста; `RequestHash` (`render.go:158`) включает контент `msgs`; `render.go:23-29` декларирует рендер «чистой функцией snapshot». Как только Фаза 1 инъектит память в `msgs` (`render.go:133-136`): изменённый глоссарий/STM меняет `request_hash`, но не `snapshotID` → resnapshot-гейт (`bookrun.go:108/stagerun.go:77 (до пакета №4 — runner.go:260)`) молчит → ре-ран старой главы промахивается мимо чекпоинта и **переоплачивает расходящимся переводом**, ломая инвариант Р6 | В / 🔴🔇 | **Свернуть в snapshot ОБА:** (1) состояние памяти (**content-hash материализованного** approved-глоссария + резюме/series-bible на момент старта джобы — рендер читает **замороженную** версию, не live; **D8: content-hash, НЕ версия-счётчик** — счётчик молча дрейфует, если забыли бампнуть) и (2) context-assembly-конфиг (`glossary_injection`, `stm_depth`, `overlap`). Тогда рендер снова чист по snapshot. **✅ УЖЕ СДЕЛАНО (commit 636919c): snapshot содержит `context_assembly` (`GlossaryInjection`/`GlossaryTokenBudget`) + `MemoryVersion` — материализует память → хеш (выбран мой рекомендованный «материализующий» вариант); `Capability` тоже свёрнут. `memoryVersion()` пока хеширует константу-заглушку `tm-memory-v1\x00`, т.к. банк памяти v2 ещё не приземлился (комментарий в коде явно фиксирует инвариант).** | DET | `runner.snapshotID()`/`memoryVersion()`/`contextSnap` | сделано; активируется с v2 | ✅ структурно закрыто (636919c). **ОСТАЁТСЯ узко: при приземлении глоссария заменить константу в `memoryVersion()` на хеш ORDER BY-стабильных материализованных строк (замороженных, не live) — иначе F1 тихо регрессирует.** |
|
||||
| F1 | **`snapshotID` не покрывает память → тихий расходящийся ре-пэй (D5.2)**. Подтверждено кодом: `snapshotID` (`snapshot.go:82 (до пакета №4 — runner.go:145-163)`) хэширует brief/chunker/план-стадий/сэмплинг, но **не** версию approved-глоссария и **не** параметры сборки контекста; `RequestHash` (`render.go:158`) включает контент `msgs`; `render.go:23-29` декларирует рендер «чистой функцией snapshot». Как только Фаза 1 инъектит память в `msgs` (`render.go:133-136`): изменённый глоссарий/STM меняет `request_hash`, но не `snapshotID` → resnapshot-гейт (`bookrun.go:108/stagerun.go:77 (до пакета №4 — runner.go:260)`) молчит → ре-ран старой главы промахивается мимо чекпоинта и **переоплачивает расходящимся переводом**, ломая инвариант Р6 | В / 🔴🔇 | **Свернуть в snapshot ОБА:** (1) состояние памяти (**content-hash материализованного** approved-глоссария + резюме/series-bible на момент старта джобы — рендер читает **замороженную** версию, не live; **D8: content-hash, НЕ версия-счётчик** — счётчик молча дрейфует, если забыли бампнуть) и (2) context-assembly-конфиг (`glossary_injection`, `stm_depth`, `overlap`). Тогда рендер снова чист по snapshot. **✅ УЖЕ СДЕЛАНО (commit 636919c): snapshot содержит `context_assembly` (`GlossaryInjection`/`GlossaryTokenBudget`) + `MemoryVersion` — материализует память → хеш (выбран мой рекомендованный «материализующий» вариант); `Capability` тоже свёрнут. `memoryVersion()` пока хеширует константу-заглушку `tm-memory-v1\x00`, т.к. банк памяти v2 ещё не приземлился (комментарий в коде явно фиксирует инвариант).** | DET | `runner.snapshotID()`/`memoryVersion()`/`contextSnap` | сделано; активируется с v2 | ✅ структурно закрыто (636919c). **ОСТАЁТСЯ узко: при приземлении глоссария заменить константу в `memoryVersion()` на хеш ORDER BY-стабильных материализованных строк (замороженных, не live) — иначе F1 тихо регрессирует.** **✅ ОСТАТОК ЗАКРЫТ (пак-11, 19.07):** `memoryVersion()` хеширует материализованный замороженный approved-глоссарий через `membank.ComputeVersion` (`snapshot.go:175-190`, в коде — «F1 CLOSED»); заглушка `tm-memory-v1` снята. |
|
||||
| F2 | **Токен-бюджет: eviction не определён**. При превышении бюджета (matched + sticky > лимит) **какая запись выпадает — не задано**; выпавшая нужная запись = тихая деградация | С / 🟡🔇 | Явная политика приоритета/вытеснения (World Info inclusion-groups: approved>auto; персонажи чанка>фоновые) **+ логировать факт вытеснения** (не молча) | DET | сборщик; `retrieval-state` запись | 1 | ❌ политика и лог вытеснения не специфицированы (находка критика) |
|
||||
| F3 | **Конкурентность/порядок в SQLite**: параллельный перевод чанков + запись auto-записей ломает `first-translation-wins` и sticky (оба предполагают последовательность); modernc — один писатель | С / 🟡 | Явное правило: auto-экстракция и коммит терминов — только на **границе джоб** (impl-notes §3.2 это уже фиксирует); sticky/порядок считаются от детерминированной пересборки чекпоинтов, не от wall-clock порядка | DET | граница джоб; write-пул store | 1 | 🔶 назвать явно (находка критика) |
|
||||
| F4 | **Один SQLite-файл на книгу = SPOF**: повреждение файла молча теряет весь глоссарий+резюме | Н / 🟠🔇 | Бэкап/интеграл-чек/версионирование файла книги; экспорт TMX/TBX как побочный бэкап | DET | store; экспорт | 2 | 🔶 нет строки бэкапа/интеграла (находка критика) |
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
> **⚠ Точка-во-времени 09.07 (ревизия D31, 12.07).** Аудит корректен на свою дату; с тех пор ключевые вердикты РАЗВЯЗАНЫ: «напряжение №1» (моно-редактор D1) — разрешено флипом D30.1 (билингв; налог на верность материализовался как ПАССИВНОСТЬ моно-редактора, exp12); экономика «редактор 83–90% на grok» — пересчитывается (D30.4: флип +15–25%, кандидат glm-5-билингв; exp08 v3 заказан); G2 «не смоделирован» — первый замер сделан (5.3%, этап A, D24); resume-мина — реализация D15.2 идёт (D30.9); 18+ эмпирика — закрыта (D22.1); «чистый ключ» — снят (D27). §6–9 читать вместе с картой актуальности в шапке D-лога.
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): курс этого ревью ИСПОЛНЕН; документ — история-на-09.07.** Из него вырос арх-ресет D39 (синк-аудит `08-sync-audit-ledger.md` + 7-слойная `09-target-architecture.md`), исполненный ЦЕЛИКОМ: исследовательская программа D39.1–D39.10 → стройка паков 11–16 (D39.13–D39.24) → пере-прогон rerun2 (D39.20). Пост-D31-развязки: редактор = deepseek-v4-pro ИНТЕРИМ (D39.22; «кандидат glm-5» — резерв, mistral вон D39.20); G1-автопопуляция (курс-коррекция №10) исполнена Go-майнером с подписью владельца (D39.14/D39.17); доко-синк №11 закрыт ревизией D31 + баннер-пассом 25.07. §9-вопросы к пилоту Ф2.5 ЖИВЫ (пилот не открыт). Актуальность вердиктов — карта в шапке D-лога.
|
||||
|
||||
**Мандат:** `docs/archive/prompts/STRATEGIC_REVIEW_SESSION_PROMPT.md` — независимый аудит «от корней к цели» по пяти направлениям. Это ревью о том, держится ли замысел end-to-end, а не о багах в строчках.
|
||||
**Метод:** адверсариальный мультиагентный воркфлоу: 14 параллельных сборщиков (8 репо-аудиторов по подсистемам: доки / ресёрч / эксперименты / код пайплайна / код памяти / платформа / eval; 6 веб-ресёрчеров SOTA-2026) → 9 независимых refute-by-default верификаторов на спорных/несущих находках (6 с исполнением временных Go-тестов на реальном коде, 3 по веб-первоисточникам). Итог верификации: **8 CONFIRMED / 1 PARTIAL / 0 REFUTED**. ~2.1M токенов субагентной работы. Каждый несущий вывод заземлён `file:line` / цитатой / URL.
|
||||
**Зоны не тронуты:** `backend/`, `eval/` — только чтение (временные репро-тесты верификаторов удалены, `git status backend/` чист). `.env` не читались, refusal-корпус не открывался.
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
> (`ORCHESTRATOR_ARCH_RESET_PROMPT.md`). Диспозиции и правки в D-лог/код рождаются из него ОТДЕЛЬНО, после решения владельца.
|
||||
> Первый экземпляр процесса, которого требует **концерн 5** (сквозной findings-ledger).
|
||||
|
||||
> **⚠ СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): аудит ОТРАБОТАН — арх-ресет исполнен целиком; актуальный статус каждого рычага смотреть в D-логе, не здесь.** Диспозиции несущих находок ратифицированы D39 (п.1–8) и ЗАКРЫТЫ стройкой паков 11–16: терм-дрейф L3 → trust-gate в коде (D39.2); чанкер L2 → бюджет в ВЫХОДНЫХ токенах + edit-единицы + снос мёртвых `STMDepth`/`OverlapTokens` + `segmentationSnap` (D39.13); фантом «D35.7» формализован (D39 п.4); diff-редактор L1 → ПОСТРОЕН за `enabled:false` (пак-16, D39.24); язык-данные → `internal/lang`+langpacks (D39.15–16); пар-слой → `configs/pairs/`+промпт-конвенция (D39.23). Ледджер остаётся доказательной базой-на-13.07 (экземпляр №1 процесса концерна 5); находки в теле НЕ пере-статусуются.
|
||||
|
||||
## Провенанс
|
||||
- Многоагентный воркфлоу `sync-broken-telephone-audit`: **42 агента, 0 ошибок**, ~2.9M токенов, $0 (только чтение репо, без вызовов моделей).
|
||||
- 8 дорожек: по каждому несущему рычагу восстановлена цепочка *полигон-ресёрч → вывод оркестратора → код бэкенда*.
|
||||
|
|
|
|||
|
|
@ -7,6 +7,19 @@
|
|||
>
|
||||
> Это карта «куда и почему», а не пошаговая спека. Спеки — в хендофф-промтах сессий; контракт — в D-логе.
|
||||
|
||||
> **⟶ СТАТУС СТРОЙКИ (2026-07-25, пост-пак-16; баннер — не переписывание, тело ниже = замысел арх-ресета 13.07).** Карта «слой → статус → пак/D»:
|
||||
> | Слой | Статус | Пак / D |
|
||||
> |---|---|---|
|
||||
> | 1 Сегментация | ✅ ПОСТРОЕН: бюджет в выходных токенах снапшот-folded (`chunk.SegBudget`), edit-единицы декаплены; когезия/carryover — НЕ строится (D39.7/8: эффекты под floor 0.126; кнобы `STMDepth`/`OverlapTokens` УДАЛЕНЫ, WS2 §2а), граница `logical` — не рычаг (exp15), greedy остался | пак-11 (D39.13 WS2 · D39.17 волны · D39.18 c-lite) |
|
||||
> | 2 Пары | ✅ СЕАМ ПОСТРОЕН: `internal/lang`+langpacks (embedded · книго-overlay `langpack_extend`) · пар-агностичные чекеры · `configs/pairs/` · промпт-конвенция `prompts/<пара>/<роль>.md`; открыто: извлечение дискурс-норм/few-shot из ТЕЛА промтов (форсинг = ja→ru) | D39.16 · пак-14 · пак-15 (D39.23г) |
|
||||
> | 3 Контракт t/e | ✅ ПОСТРОЕН ЗА `enabled:false`: `checks.RepairCandidates` (позиционная детекция) · read-only скан остатка · машинерия ремонта §15.2; **включение платного пути = решение владельца по замеру остатка** | пак-16 (D39.24) |
|
||||
> | 4 Память | ✅ ПОСТРОЕН: disposition-gated suppressor + громкий лог дропа; src→dst-мэппинг билингв-редактору ДАН (вопрос закрыт) | пак-1 (D39.2) · пак-11 (D39.13 WS2 §2в) |
|
||||
> | 5 Качество | ✅ детерм. часть: `QualityReport` · число/omission-гард · DC/пак-13-чекеры · repair-остаток; семантический span-судья/полярность — НЕ строился (защита = editor-swap, D38.4) | D39.2 · D38.3 · пак-13 (`2f91b04`) · пак-16 |
|
||||
> | 6 Export | ✅ ПОСТРОЕН: `checks.ExportNormalize` на каждом финале; санитайзер-классы strip+export | D39.2 · D38.3 |
|
||||
> | 7 Гигиена | ЧАСТИЧНО: реестр role→инъекция · вынос `foldModelWire` · снос сирот/`gatesEnabled` — сделаны; **target-aware гейты — ОТКРЫТО** (ru-target-долг = ограничение, D39.24 §15.3; едет с канал-B/таргет-работой) | D39.2 · паки 11–16 |
|
||||
>
|
||||
> §1 «как есть» читать как снимок ДО стройки (const-чанкер · glm-редактор · мёртвые `STMDepth`/`OverlapTokens` — всего этого больше нет). §4 отработан целиком: трек B исполнен (exp15/exp16 — программа ЗАВЕРШЕНА, D39.7/D39.10), гейт пере-прогона пройден фактом rerun2 (D39.20; планка ≤2 НЕ пройдена, эксп ЗАКРЫТ D39.22, редактор = deepseek-v4-pro интерим). Канал B — пак-17 (дизайн); инженерная форма переопределена **D39.25**: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities, refusal причино-агностичен; «18+ линия» в §6 читать как продукт-линию, не механизм движка.
|
||||
|
||||
---
|
||||
|
||||
## 0. Стратегический вывод аудита (почему ресет)
|
||||
|
|
@ -96,11 +109,13 @@ snapshot-дисциплина, эталонные сеамы `config→stage-lis
|
|||
- Стадия резолвит промпт/правила из слоя по паре книги, а не из фикс-пути. `Book.LangPair()` оживает как ось выбора.
|
||||
- **Высота сейчас (решение владельца):** построить СЕАМ, наполнить только zh→ru; другие пары — когда придёт книга.
|
||||
Убирает латентный баг (ja-книга едет через «китайский паратаксис»-промпт) и разблокирует расширяемость дёшево.
|
||||
- **⟶ Реализация (D39.16, обновление):** данные-часть этого слоя РЕАЛИЗОВАНА для майнера — zh/Палладий-инвентари
|
||||
вынесены из `pipeline/`-констант в `configs/langpacks/<lang|pair>/` через leaf-пакет `internal/lang` (граница
|
||||
компиль-enforced; резолв по `Book.LangPair()`; байт-точно — парити EXACT, golden байт-идентичен). Извлечение
|
||||
правил из ТЕЛА промтов (дискурс-нормы, few-shot) — ещё открыто (форсинг-функция = ja→ru-реплика). `x/text/
|
||||
language.Tag` ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в снапшот-вердиктах — держим точные `isRuTarget`).
|
||||
- **⟶ Реализация (обновление 25.07):** данные-часть РЕАЛИЗОВАНА (D39.16: zh/Палладий-инвентари вынесены из
|
||||
`pipeline/`-констант в `configs/langpacks/<lang|pair>/` через leaf-пакет `internal/lang`; граница компиль-enforced;
|
||||
резолв по `Book.LangPair()`; байт-точно — парити EXACT, golden байт-идентичен) и ДОСТРОЕНА паками 14/15:
|
||||
пар-агностичные чекеры + embedded-данные + книго-overlay `langpack_extend` (пак-14) · пар-калибровки
|
||||
`configs/pairs/` + промпт-резолв конвенцией `prompts/<пара>/<роль>.md` (D39.23г). Извлечение правил из ТЕЛА
|
||||
промтов (дискурс-нормы, few-shot) — ещё открыто (форсинг-функция = ja→ru-реплика). `x/text/language.Tag`
|
||||
ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в снапшот-вердиктах — держим точные `isRuTarget`).
|
||||
|
||||
### Слой 3 — Контракт переводчик/редактор (роли = узкие проходы) · концерн 1
|
||||
- research/07 предписывает **узкие мандаты + диффы, а не полную перегенерацию** — сейчас ровно наоборот (4 мандата,
|
||||
|
|
|
|||
|
|
@ -1,158 +1,108 @@
|
|||
@startuml components
|
||||
title TextMachine — компоненты бэкенда (2026-07-12, синхронизировано с 05-decisions-log D1–D38.1)\nПометки: [OK] = построено · [Ф1*] = остаток Фазы 1 · [Ф2]/[Ф3] = планово
|
||||
title TextMachine — компоненты бэкенда (2026-07-25, синхронизировано с 05-decisions-log D1–D39.25, пост-пак-16)\nПометки: [OK] = построено · [FLAG] = построено за enabled:false · [Ф2]/[Ф3] = планово
|
||||
skinparam componentStyle rectangle
|
||||
skinparam wrapWidth 200
|
||||
skinparam wrapWidth 220
|
||||
|
||||
actor "Владелец / редактор\n(очередь флагов, подтверждение терминов,\nподпись сида v2 = approved-инвариант (D34),\nарбитр читаемости слепых прогонов [2 претензии, D35],\nBWS-оценка пилота)" as HUMAN
|
||||
actor "Владелец\n(запуск; подпись майнинг-дельты (exit 3);\nрешение о включении repair-петли по замеру остатка (D39.24);\nподтверждение терминов; чтение отчётов/паспортов;\nарбитр слепых чтений)" as HUMAN
|
||||
|
||||
package "Интерфейсы" {
|
||||
component "CLI tmctl: translate / report [OK]\n+ status / redrive [Ф1*]" as CLI
|
||||
component "HTTP API (IDE) [Ф3]" as API
|
||||
package "CLI cmd/tmctl [OK]" {
|
||||
component "translate / report / status /\nexport (--pairs) / redrive / seed-lint\nexit-контракт: 0 чисто · 1 инфра ·\n2 completed-with-flags · 3 майнинг-подпись" as CLI
|
||||
}
|
||||
|
||||
package "Оркестратор" {
|
||||
component "Проект книги [OK]\n(translation brief, brief_hash,\nконфиг ядра C0/C1/C2/C3)" as PROJ
|
||||
component "Импорт txt/epub [OK]\n(главы -> чанки, ruby-захват,\nspine-reconciliation fail-loud)" as IMP
|
||||
component "Durable jobs [OK]\n(чанк-чекпоинты, resume, kill-9-инвариант;\ncontent-addressed reuse — гейт онгоинга [Ф1.5])" as JOBS
|
||||
component "Пайплайн-раннер [OK]\n(циклы/ретраи/single-hop эскалация\nс РЕ-ГЕЙТОМ = код; состав стадий/модели/\nпороги = конфиг; disposition D2)" as RUNNER
|
||||
component "Экспорт txt/epub/TMX + отчёт\n(паспорт качества главы) [Ф1*]" as EXP
|
||||
package "internal/pipeline — композит-корень (драйвер) [OK]" {
|
||||
component "Runner [OK]: конфиг-стек fail-fast\n(book+pair+pipeline+models, строгий KnownFields-декод),\nlangpack+книжный overlay, промпт-конвенция,\nCheckRunnable (C2/C3/judge отвергнуты в Ф0)" as RUNNER
|
||||
component "Волновой исполнитель [OK] (D39.17):\nдрафт ∥ → майнинг-стоп → редактура ∥ (по edit-единицам);\nредактор НИКОГДА не пере-рендерит драфт;\nc-lite: флагнутый member выбрасывается (D39.18)" as WAVES
|
||||
component "runStage [OK]: reserve → вызов → settle+чекпойнт\nОДНОЙ tx; RequestHash tm-request-v2; $0-резюм по чекпойнту\n(rerun2: доказан ×3 арма); classify ПОСЛЕ денег;\nbilled-decode кап (пак-12)" as STAGERUN
|
||||
component "Снапшоты per-wave [OK]:\ndraft = BASE-банк · edit = ENRICHED-банк\n(«переоплата ОДНА», D30.9/D39.12);\nlangpack Version() и промпт-SHA фолдятся;\nstale → громкий стоп без --resnapshot" as SNAP
|
||||
component "Эскалация single-hop + ре-гейт [OK] (D12);\nescalation.chains = конфиг-декларация,\nмульти-хоп по цепочке лейбла [Ф2/пак-17]" as ESC
|
||||
component "Майнинг-стоп [OK]: MineBank → signature map →\nexit 3 → подпись владельца → mined_delta / mined_rejects;\nре-ран: драфт $0-резюм, пустая дельта = авто-континью" as MINING
|
||||
component "Банкнота ⟦TM-BANK-v1⟧ [FLAG]\n(срез с RAW-драфта до classify; derived-чекпойнт)" as BANKNOTE
|
||||
component "Repair-петля [FLAG] (пак-16, D39.24):\nсуб-шаг финальной стадии; таргет-вызовы по span,\nпромпт per-класс; 6 гардов + позитивный ре-гейт\n+ анти-удаление; derived tm-repair-v1;\nвключение = решение владельца по замеру остатка" as REPAIR
|
||||
component "Вердикты disposition [OK]: intrinsic classify всегда\n(refusal причино-агностичен — детектим ФАКТ, D12/D39.25;\nэхо/loop/length/empty); flag+skip+continue (D2)" as DISP
|
||||
component "$0 read-модели [OK]: status · export\n(манифест-ре-чанк, ExportNormalize) · quality-report\n(+ residual-скан RepairCandidates = замер остатка)" as READMODELS
|
||||
}
|
||||
|
||||
package "Агентные роли (промпт-конфиги)" {
|
||||
component "Translator: черновик [OK]\n(C2: N ГЕТЕРОГЕННЫХ кандидатов [Ф2])" as ROLE_TR
|
||||
component "Editor [OK] БИЛИНГВАЛЬНЫЙ (флип D1→D30.1)\n(вход = черновик + ИСХОДНИК + CONFIRMED dst-констрейнты);\nдискурс-reflow-промпт (Ван Цуй) + репараграфизация 1:N;\nкандидат glm-5, свап→mistral/deepseek-pro (D38.1);\nверность → fidelity re-gate (D34.3, полигон) + omission-гард [Ф2, D38]; пилот-арм D13.1 = ПОДТВЕРЖДАЮЩИЙ" as ROLE_ED
|
||||
component "Analyst: book brief [Ф2]" as ROLE_AN
|
||||
component "Terminologist / автопопуляция\nглоссария [Ф1*/Ф2]\n(спот=локаль, рендер=облако — exp06)" as ROLE_TERM
|
||||
component "Annotator: пре-пасс [Ф2]\n(speaker-ID, регистр, чэнъюй-маски)" as ROLE_ANN
|
||||
component "Judge / Selector [Ф2]\n(билингвальный, судья-анкета MQM;\nsecond-opinion чужого семейства\nна эскалированных чанках)" as ROLE_JU
|
||||
component "Line/Continuity Editor [Ф2+]" as ROLE_LE
|
||||
package "Подсистемы (сплит пака-15, D39.23) [OK]" {
|
||||
component "internal/chunk: ingest txt/epub\n(GB18030, ruby-захват) + чанкер по output-бюджету\n(SegBudget пары), edit-единицы" as P_CHUNK
|
||||
component "internal/checks: санитайзер D30.3 ·\ncheap-гейты v4 · DC-чекеры (пар-агностичные, данные) ·\ncoverage · regression guard · RepairCandidates ·\nExportNormalize; пакет сообщает ФАКТЫ,\nдиспозицию назначает драйвер" as P_CHECKS
|
||||
component "internal/miner: $0 банк-майнер\n(порт exp16 V-C, паритет EXACT) →\nсид-дельта YAML на подпись" as P_MINER
|
||||
component "internal/membank: Aho-Corasick Select ·\ntrust-gate (терм-дрейф закрыт, D39.2) · спойлер-окна ·\nsticky · post-check E1 · Version/BaseVersion" as P_MEMBANK
|
||||
component "internal/text: версионированный\nнормализационный субстрат (NFKC/trad2simp);\ninternal/seed: схема сид-YAML" as P_TEXT
|
||||
component "internal/lang: языковые ДАННЫЕ без поведения\n(langpack пары + embedded); Version() → снапшот" as P_LANG
|
||||
component "internal/config: book/pair/pipeline/models\nстрогий декод; CheckAdultChannel-линт" as P_CONFIG
|
||||
component "internal/llm: адаптеры openai/anthropic/local;\nтранспорт-ретраи/failover (пак-12);\ncapability-резолв в wire-форму" as P_LLM
|
||||
component "internal/store: SQLite на книгу\n(леджер reserve/settle BEGIN IMMEDIATE, чекпойнты,\nchunk_status, jobs, request_log, glossary, ruby)" as P_STORE
|
||||
}
|
||||
|
||||
package "QA-гейты (без LLM)" {
|
||||
component "Intrinsic classify [OK]\n(refusal/CJK-echo ДО length, loop-детект)" as QA_CJK
|
||||
component "Coverage / excision [OK, opt-in]\n(sent_cov + len_ratio, порт оракула)" as QA_COV
|
||||
component "Глоссарный post-check [OK]\n(decl-aware, CONFIRMED-only;\nфлаггер по умолчанию, гейт opt-in)" as QA_GLOS
|
||||
component "Output-санитайзер [OK, opt-in c1] (D30.3/D33)\n(ведущие преамбулы / хвостовые «Основные правки» —\ngemini-утечка 6/6 / латиница-врезки / markdown-###;\nCJK-Han-в-выходе — в стройке D38.1); flag+skip D2" as QA_SANITIZE
|
||||
component "Дешёвые гейты Ф1 [Ф1*]:\nтире-линтер, ёфикатор,\nтранслит-междометия, число-гейт\n+ диалог-парность-флаггер (D29.1д) + omission-гард (D38)" as QA_CHEAP
|
||||
component "Морфо-гейт рода + канцелярит\n+ T-index [Ф2] (Python-сайдкар)" as QA_MORPH
|
||||
component "Валидатор Палладия/Поливанова B6 [Ф2]\n(ruby-reading = ground truth)" as QA_TRANSLIT
|
||||
}
|
||||
|
||||
package "pkg/llm" {
|
||||
component "Роутер роль -> модель [OK]" as LLM_RT
|
||||
component "Capability-слой [OK]\n(budget_field/temperature/reasoning;\nэхо-мина DeepSeek fail-fast;\nper-model флор min_max_tokens 8000/kimi 16000, D24.3;\ngpt-5.4 reasoning=low в редакторе — medium режет вывод, D38.6)" as LLM_CAP
|
||||
component "NSFW-классификатор 0-3 [Ф2]\n(НЕ специфицирован — нужна метрика приёмки;\nуровень 3 = скип чанка + флаг)" as LLM_NSFW
|
||||
component "Failover [OK, НЕ подключён]\nтолько local->cloud для local-ролей (D4);\nоблачные draft/edit: пауза+resume, НЕ своп" as LLM_FO
|
||||
component "Адаптеры OpenAI-совместимые [OK]:\nDeepSeek / GLM / Kimi / xAI / OpenAI / Mistral /\nllama-server; нативный Gemini [Ф2]" as LLM_AD
|
||||
component "Кэш-раскладка префикса [OK]\n+ Batch (только Gemini-судья/QA) [Ф2]" as LLM_BC
|
||||
}
|
||||
|
||||
package "Банк памяти книги (SQLite на книгу) [OK: v2]" {
|
||||
component "Глоссарий v2 [OK]\n(sense, alias-граф, decl, gender=hidden,\ntranslit_policy, ревизии);\nсид v2 ПОДПИСАН владельцем (57 терминов, D34);\nstatus:draft НЕ инъектится в editor-констрейнт\n(CONFIRMED-only) — reseed промоут грейдов (корень терм-дрейфа, D38)" as MEM_GLOS
|
||||
component "Горячий путь [OK]: Aho-Corasick,\nнормализация NFKC/trad2simp/kana/ignorables,\nспойлер-окна since/until (hard-reject),\ndisposition CONFIRMED/AMBIGUOUS/REJECT,\nsticky; фиксы границ D16 [OK]" as MEM_HOT
|
||||
component "Ruby-захват [OK] -> сид auto-кандидатов;\nreading как матч-поверхность [Ф1*, D16.4]" as MEM_RUBY
|
||||
component "retrieval_state per-chunk [OK]\n(наблюдаемость инъекции/вытеснений)" as MEM_RS
|
||||
component "Резюме глава->арка->книга [Ф2]\n+ гейт фактичности резюме (реестр D1)" as MEM_SUM
|
||||
component "Series bible: ты/вы-журнал, род [Ф2]" as MEM_SB
|
||||
component "Векторный слой [Ф2, low-trust A7]\n(bge-m3, только кандидаты на ревью)" as MEM_VEC
|
||||
}
|
||||
|
||||
package "Деньги и наблюдаемость [OK]" {
|
||||
component "Ledger: reserve -> settle+checkpoint\nодной tx, потолки книга/день,\nescalation-бюджет" as OBS_LG
|
||||
component "Премиум-бюджет: budget_usd =\nclamp(price x (1-margin) - base, 0, cap)\n(D11; жёсткие $-гейты сняты)" as OBS_QB
|
||||
component "request_log + trace + retrieval_state" as OBS_TEL
|
||||
}
|
||||
|
||||
package "Eval / Полигон (зона eval/)" {
|
||||
component "Пилот-харнесс Ф2.5\n(BWS, memory-eval M0-M3, судья-панель;\nчинится до прогона — D13.5;\nблокеры: корпус вне претрейна, аннотаторы ≥3,\nбилингв-якорь, судья-дублёр 18+ — чистый ключ снят D27)" as EV_PILOT
|
||||
component "Refusal/excision-бенчмарк [OK]\n(18+ эмпирика ПОЛНА: violence exp10 + erotica exp11;\nканал B v2 собран, D14.4 закрыт)" as EV_RB
|
||||
component "Диагностик-харнесс качества\n(exp12→14b: нарезка×промпт, слепые читки,\nfidelity re-gate; трек «мерить→строить» D26–D38.1)" as EV_DIAG
|
||||
package "Конфиг-слои (ДАННЫЕ — движок общий, §0/D39.25)" {
|
||||
component "book.yaml: бриф+BriefHash;\nAdult bool = интерим до generic content-labels\n(D39.25, пак-17); langpack_extend (книжный overlay);\nmined_delta / mined_rejects" as C_BOOK
|
||||
component "configs/pairs/<пара>.yaml:\nфертильность, output-бюджеты, len_ratio" as C_PAIR
|
||||
component "configs/langpacks/<пара|язык>/:\nморфология источника, Палладий,\ndc-checkers, heading" as C_LP
|
||||
component "prompts/<пара>/<роль>.md +\nrepair/<класс>.md (конвенция, fail-loud)" as C_PROMPTS
|
||||
component "models.yaml: провайдеры/цены/capability\n(permissive = ТИП-изоляция канала B, эхо-гейт DeepSeek,\nфлоры min_max_tokens, rate_limit)" as C_MODELS
|
||||
component "pipeline-*.yaml: стадии/гейты/\nэскалация/волны/майнинг; строгий декод" as C_PIPE
|
||||
}
|
||||
|
||||
cloud "LLM-провайдеры" {
|
||||
component "DeepSeek V4: -flash = draft (thinking ON —\nэхо-мина; сохранён exp13/D32) · -pro = escalate-хоп\n(флор min_max_tokens 8000, D24.3);\nexplicit ЗАПРЕЩЁН ToS, violence OK (D14.1)" as P_DS
|
||||
component "xAI Grok 4.3: эскалация канала B (reasoning-ON),\nпервичный судья эротики; НЕ редактор\n(reasoning-off из редакторских ролей снят = no-op, D30.1);\nключ единый С data-sharing, off перед продом (D27)" as P_XA
|
||||
component "gemini-3.1-pro-preview (голый слаг→404):\nсудья SFW/violence, но fail-closed на эротике\n(PROHIBITED_CONTENT); премиум-эскалация редактора\nТОЛЬКО за санитайзером (D30.1); billing additive_total (D22.3)" as P_GM
|
||||
component "GLM (glm-5 = ДЕФОЛТ билингв-редактор, D30.1) /\nKimi (НЕПРИГОДЕН как редактор — обрезки/таймауты) /\nOpenAI (GPT-5 фронтир-арм — в дефолт НЕ нужен, D38)" as P_OTH
|
||||
component "Mistral — переводчик-ДЕФОЛТ канала B (18/18, D22.1);\nкандидат СМЕНЫ дефолт-редактора (чинит инверсии,\nкоторые glm валит, дешевле) — бейк-офф прозы (D38.1)" as P_MI
|
||||
component "llama-server (GPU 8GB: скрининг,\nabliterated канала B, эмбеддинги,\nСПОТ-экстракция)" as P_LL
|
||||
component "DeepSeek V4: -flash = draft (thinking ON — эхо-мина) ·\n-pro = РЕДАКТОР-ИНТЕРИМ (D39.22) + эскалация-хоп;\nadult-контент НЕ отправлять (ToS → capability-данные)" as P_DS
|
||||
component "GLM glm-5: редактор-РЕЗЕРВ (D39.22);\nMistral: переводчик adult-контента (D19);\nкак несущий редактор ИСКЛЮЧЁН (D39.20)" as P_GLM
|
||||
component "xAI grok-4.3: permissive, adult-цепочка,\nсудья 18+ фолбэк; ключ data-sharing, off перед продом (D27)" as P_XA
|
||||
component "gemini-3.1-pro-preview: апекс/премиум-эскалация;\nnative-судья [Ф2]; mandatory thinking, additive_total" as P_GM
|
||||
component "OpenAI gpt-5-mini · local/ollama (permissive)" as P_OTH
|
||||
}
|
||||
|
||||
database "SQLite" as DB
|
||||
component "Ф2/Ф3 (планово): голос/состояние D21 ·\nnative-Gemini судья · C2/C3-селекция ·\ngeneric content-labels × provider-capabilities (пак-17, D39.25) ·\nja→ru §B5 (тест общности) · HTTP API (IDE) [Ф3]" as FUTURE
|
||||
|
||||
CLI --> PROJ
|
||||
API --> PROJ
|
||||
PROJ --> IMP
|
||||
IMP --> JOBS
|
||||
JOBS --> RUNNER
|
||||
RUNNER --> EXP
|
||||
RUNNER --> ROLE_TR
|
||||
RUNNER --> ROLE_ED
|
||||
RUNNER --> ROLE_AN
|
||||
RUNNER --> ROLE_TERM
|
||||
RUNNER --> ROLE_ANN
|
||||
RUNNER --> ROLE_JU
|
||||
RUNNER --> ROLE_LE
|
||||
RUNNER --> QA_CJK
|
||||
RUNNER --> QA_COV
|
||||
RUNNER --> QA_GLOS
|
||||
RUNNER --> QA_SANITIZE
|
||||
RUNNER --> QA_CHEAP
|
||||
RUNNER --> QA_MORPH
|
||||
RUNNER --> QA_TRANSLIT
|
||||
HUMAN --> CLI : запуск / подпись / решения
|
||||
CLI --> RUNNER
|
||||
RUNNER --> WAVES
|
||||
WAVES --> STAGERUN
|
||||
WAVES --> MINING
|
||||
STAGERUN --> SNAP
|
||||
STAGERUN --> ESC
|
||||
STAGERUN --> BANKNOTE
|
||||
STAGERUN --> REPAIR
|
||||
STAGERUN --> DISP
|
||||
CLI --> READMODELS
|
||||
|
||||
ROLE_TR --> LLM_RT
|
||||
ROLE_ED --> LLM_RT
|
||||
ROLE_JU --> LLM_RT
|
||||
ROLE_AN --> LLM_RT
|
||||
ROLE_TERM --> LLM_RT
|
||||
RUNNER --> P_CONFIG
|
||||
RUNNER --> P_LANG
|
||||
WAVES --> P_CHUNK
|
||||
STAGERUN --> P_LLM
|
||||
STAGERUN --> P_STORE
|
||||
DISP --> P_CHECKS
|
||||
REPAIR --> P_CHECKS
|
||||
MINING --> P_MINER
|
||||
WAVES --> P_MEMBANK
|
||||
P_MINER --> P_TEXT
|
||||
P_MEMBANK --> P_TEXT
|
||||
P_CHECKS --> P_LANG
|
||||
P_MINER --> P_LANG
|
||||
READMODELS --> P_STORE
|
||||
READMODELS --> P_CHECKS
|
||||
|
||||
LLM_RT --> LLM_CAP
|
||||
LLM_CAP --> LLM_AD
|
||||
LLM_NSFW ..> LLM_RT : выбор канала A/B [Ф2]
|
||||
LLM_FO ..> LLM_AD : только local-роли (D4)
|
||||
LLM_BC ..> LLM_AD
|
||||
LLM_AD --> P_DS
|
||||
LLM_AD --> P_XA
|
||||
LLM_AD --> P_GM
|
||||
LLM_AD --> P_OTH
|
||||
LLM_AD --> P_MI
|
||||
LLM_AD --> P_LL
|
||||
LLM_NSFW ..> P_LL : классификатор 0-3 [Ф2]
|
||||
P_CONFIG --> C_BOOK
|
||||
P_CONFIG --> C_PAIR
|
||||
P_CONFIG --> C_MODELS
|
||||
P_CONFIG --> C_PIPE
|
||||
P_LANG --> C_LP
|
||||
RUNNER --> C_PROMPTS
|
||||
C_BOOK ..> C_LP : langpack_extend (overlay)
|
||||
|
||||
RUNNER --> MEM_HOT
|
||||
MEM_HOT --> MEM_GLOS
|
||||
MEM_HOT --> MEM_RS
|
||||
IMP --> MEM_RUBY
|
||||
MEM_RUBY --> MEM_GLOS
|
||||
MEM_HOT ..> MEM_SUM : [Ф2]
|
||||
MEM_HOT ..> MEM_SB : [Ф2]
|
||||
MEM_HOT ..> MEM_VEC : [Ф2], не в горячем пути
|
||||
P_LLM --> P_DS
|
||||
P_LLM --> P_GLM
|
||||
P_LLM --> P_XA
|
||||
P_LLM --> P_GM
|
||||
P_LLM --> P_OTH
|
||||
|
||||
HUMAN --> CLI : запуск, флип гейтов (за подписью)
|
||||
HUMAN <-- EXP : отчёт, паспорт качества, флаги
|
||||
HUMAN --> MEM_GLOS : подтверждение терминов auto->approved\n(безлюдный режим = осознанный риск G1/G2)
|
||||
HUMAN <.. EV_PILOT : BWS-оценка (пилот Ф2.5)
|
||||
HUMAN <.. EV_DIAG : слепая читка-арбитраж (2 претензии, интерим)
|
||||
|
||||
LLM_RT --> OBS_LG
|
||||
OBS_LG --> OBS_QB
|
||||
LLM_AD --> OBS_TEL
|
||||
RUNNER --> OBS_TEL
|
||||
|
||||
JOBS --> DB
|
||||
MEM_GLOS --> DB
|
||||
MEM_RS --> DB
|
||||
OBS_TEL --> DB
|
||||
OBS_LG --> DB
|
||||
|
||||
EV_PILOT ..> OBS_TEL : golden-set реплей [Ф2]
|
||||
EV_RB ..> LLM_NSFW : калибровка роутинга
|
||||
HUMAN <-- READMODELS : отчёты / паспорт / замер остатка
|
||||
HUMAN <-- MINING : signature map (exit 3)
|
||||
FUTURE -[hidden]-> P_OTH
|
||||
|
||||
note bottom of HUMAN
|
||||
Петля человека — несущая опора safety
|
||||
(все защиты кончаются флагом):
|
||||
ёмкость G2 меряется пилотом (D13),
|
||||
flag-rate/главу — первый замер.
|
||||
Петля человека — несущая опора safety:
|
||||
все защиты кончаются флагом (D2);
|
||||
майнинг-дельта и включение платного
|
||||
repair-пути — только за подписью.
|
||||
end note
|
||||
@enduml
|
||||
|
|
|
|||
|
|
@ -1,116 +1,97 @@
|
|||
@startuml pipeline
|
||||
title TextMachine — поток перевода книги (2026-07-12, синхронизировано с D1–D38.1)\nПометки: [OK] = построено · [Ф1*] = остаток Фазы 1 · [Ф2] = планово
|
||||
title TextMachine — поток перевода книги (2026-07-25, синхронизировано с D1–D39.25, пост-пак-16: волновой исполнитель)\nПометки: [OK] = построено · [FLAG] = построено за enabled:false · [Ф2] = планово
|
||||
skinparam wrapWidth 260
|
||||
|
||||
start
|
||||
:Импорт книги [OK]: txt / epub по spine,
|
||||
ruby-захват, spine-reconciliation fail-loud,
|
||||
GB18030-детект/конверсия (реальные zh .txt — не UTF-8, D18/D20)
|
||||
(тихая потеря главы невозможна);
|
||||
:Сегментация [OK]: главы -> чанки ~1-2k токенов
|
||||
(sentence-pack, quote-depth, lossless);
|
||||
:Сид глоссария [OK]: ручной YAML + ruby-кандидаты
|
||||
(ja-книга: kana-написания имён — aliases руками, D16.4)
|
||||
· сид v2 ПОДПИСАН владельцем (57 терминов, D34)
|
||||
· status:draft НЕ инъектится в editor-констрейнт — reseed промоут грейдов (D38)
|
||||
· автопопуляция G1 [Ф1*/Ф2]: спот=локаль / рендер=облако;
|
||||
:Analyst: book brief (map-reduce) [Ф2];
|
||||
:Terminologist: глоссарий + style sheet до перевода [Ф2];
|
||||
:Открытие Runner [OK]: строгий конфиг-стек
|
||||
(book.yaml + configs/pairs/<пара> + pipeline-*.yaml + models.yaml,
|
||||
KnownFields-декод), langpack пары + книжный overlay langpack_extend,
|
||||
промпт-конвенция prompts/<пара>/<роль>.md (fail-loud);
|
||||
:Ingest [OK]: txt (главы по \\f) / epub по spine,
|
||||
GB18030-детект/конверсия, ruby-захват, NormalizeSource;
|
||||
:Сид банка ДО снапшота [OK]: glossary_seed + ruby-кандидаты
|
||||
+ mined_delta (Source:mined — только в ENRICHED)
|
||||
− mined_rejects · материализация BASE- и ENRICHED-банка;
|
||||
:Чанкинг [OK]: draft-чанки по ВЫХОДНОМУ токен-бюджету
|
||||
(SegBudget пары: фертильность CJK/other), edit-единицы декаплены ·
|
||||
precompute sticky по BASE-банку одним упорядоченным проходом;
|
||||
note right
|
||||
snapshotID [OK] пинит: brief, чанкер, план стадий,
|
||||
capability, память (content-hash), context-assembly.
|
||||
ЛЮБОЙ resnapshot = переоплата книги (D15) —
|
||||
до content-addressed reuse онгоинг не продаётся.
|
||||
Снапшот per-wave [OK]: draft-волна пинит BASE-банк,
|
||||
edit-волна — ENRICHED (обогащение двигает ТОЛЬКО edit —
|
||||
«переоплата ОДНА», D30.9/D39.12). Фолдятся: BriefHash,
|
||||
langpack Version(), промпт-SHA, capability, версии вердикт-осей.
|
||||
Правка данных между прогонами = громкий --resnapshot.
|
||||
Внутри снапшота: $0-резюм (rerun2 — доказан ×3 арма).
|
||||
end note
|
||||
|
||||
while (Остались главы?) is (да)
|
||||
while (Остались чанки главы?) is (да)
|
||||
:Сборка контекста [OK]: кэш-префикс (system+brief)
|
||||
+ селективная инъекция глоссария
|
||||
(Aho-Corasick, спойлер-hard-reject,
|
||||
disposition CONFIRMED/AMBIGUOUS/REJECT, sticky)
|
||||
+ retrieval_state запись;
|
||||
:NSFW-классификатор 0-3 [Ф2 — требует
|
||||
спеки и метрики приёмки];
|
||||
if (Уровень 3: несовершеннолетние?) then (да)
|
||||
:Чанк НЕ переводится: скип + флаг
|
||||
(книга продолжается);
|
||||
else (нет)
|
||||
if (Уровень 2: explicit?) then (да)
|
||||
:Канал B v2 [D19.1/D22.1]: переводчик-ДЕФОЛТ Mistral (18/18)
|
||||
→ эскалация Grok 4.3 (reasoning-ON)
|
||||
→ локальная abliterated 8b (скрин/фолбэк)
|
||||
· DeepSeek explicit ЗАПРЕЩЁН (ToS), violence OK
|
||||
· судьи 18+ Grok+Gemini (эротика→Grok primary, Gemini fail-closed);
|
||||
else (0-1)
|
||||
:Канал A [OK]: DeepSeek V4 Flash
|
||||
(thinking ON — эхо-мина);
|
||||
endif
|
||||
:Translator [OK]: черновик
|
||||
(C2 [Ф2]: N ГЕТЕРОГЕННЫХ кандидатов, D13.2);
|
||||
if (Ядро C2/C3: селекция? [Ф2]) then (да)
|
||||
:Judge-селектор: 11+ повторов со свапом
|
||||
позиций, Bradley-Terry
|
||||
(кандидаты разных семейств);
|
||||
else (C1)
|
||||
endif
|
||||
:Intrinsic classify [OK]: refusal-blacklist,
|
||||
CJK-echo, empty, loop — ДО length
|
||||
(усечённый отказ не ретраится платно);
|
||||
:Coverage-гейт [OK, opt-in]: sent_cov + len_ratio
|
||||
(только translator-роль);
|
||||
if (Вердикт чанка?) then (транзиентный: length/empty)
|
||||
:same-model retry, ось attempt,
|
||||
бОльший max_tokens (после loop-чека) [OK];
|
||||
elseif (контент-провал: echo/excision/refusal) then (детерминированный)
|
||||
if (escalate_to задан И бюджет есть?) then (да)
|
||||
:Single-hop эскалация [OK]: на ДРУГУЮ модель
|
||||
(ровно 1 хоп, editor pinned) — хоп ограничен
|
||||
per-model флором min_max_tokens 8000 (D24.3);
|
||||
:РЕ-ГЕЙТ фолбэка [OK]: classify + coverage
|
||||
заново — не прошёл, значит флаг остаётся;
|
||||
else (нет)
|
||||
:Флаг чанка (skip+flag+continue, D2) [OK];
|
||||
endif
|
||||
else (ok)
|
||||
endif
|
||||
:Editor [OK]: БИЛИНГВАЛЬНАЯ редактура (флип D1→D30.1) —
|
||||
вход = черновик + ИСХОДНИК + CONFIRMED dst-констрейнты ·
|
||||
дискурс-reflow-промпт (Ван Цуй) + репараграфизация 1:N ·
|
||||
кандидат glm-5, свап→mistral/deepseek-pro (D38.1) ·
|
||||
верность → fidelity re-gate (D34.3, полигон) + omission-гард [Ф2, D38];
|
||||
:Output-санитайзер [OK, opt-in c1] (D30.3/D33) —
|
||||
ведущие преамбулы / хвостовые «Основные правки» (gemini-утечка 6/6) /
|
||||
латиница-врезки / markdown-### / CJK-Han-в-выходе [в стройке D38.1] —
|
||||
flag+skip (D2), вердикт-ось;
|
||||
:Post-check финала [OK]: decl-aware,
|
||||
CONFIRMED-only (union: базовый dst ВСЕГДА в проверяемых формах,
|
||||
D24.4 — закрывает nominative_gap) — флаггер по умолчанию,
|
||||
жёсткий гейт opt-in за подписью владельца;
|
||||
:Чекпоинт [OK]: settle + checkpoint одной tx
|
||||
(в TM коммитится только прошедшее гейты);
|
||||
endif
|
||||
endwhile (нет)
|
||||
:Граница главы: телеметрия + паспорт
|
||||
качества [Ф1*] · батч-подтверждение терминов auto->approved —
|
||||
ЧЕЛОВЕК или судья чужого семейства [Ф2] —
|
||||
безлюдный авто-апрув = риск G1
|
||||
· резюме главы/арки + гейт фактичности [Ф2];
|
||||
note right
|
||||
Outage/системный класс (503-storm, потолок):
|
||||
circuit-breaker -> ПАУЗА + resume (D4/D12),
|
||||
НЕ mass-swap провайдера.
|
||||
end note
|
||||
endwhile (нет)
|
||||
partition "ВОЛНА ДРАФТА [OK] (∥ workers, по draft-чанкам)" {
|
||||
:Сборка контекста [OK]: кэш-префикс (system+brief)
|
||||
+ src→dst-инъекция глоссария из precomputed selection
|
||||
(Aho-Corasick, trust-gate, спойлер-hard-reject, sticky);
|
||||
:runStage [OK]: чекпойнт-хит → $0-реклассификация ·
|
||||
иначе Reserve (потолки книга/день) → вызов →
|
||||
Settle+чекпойнт ОДНОЙ tx → classify ПОСЛЕ денег;
|
||||
:Банкнота ⟦TM-BANK-v1⟧ [FLAG]: срез с RAW-драфта
|
||||
до classify · чистый драфт → derived-чекпойнт;
|
||||
if (Вердикт чанка? [OK]) then (транзиент: length/empty)
|
||||
:same-model retry, удвоение max_tokens
|
||||
(до regenerate_before_escalate);
|
||||
elseif (контент-провал: echo/refusal/loop) then (детерминированный)
|
||||
:Refusal причино-агностичен (D12/D39.25):
|
||||
детектим ФАКТ отказа, не причину ·
|
||||
single-hop эскалация escalate_to под budget_usd
|
||||
+ РЕ-ГЕЙТ · иначе flag+skip+continue (D2);
|
||||
else (ok)
|
||||
endif
|
||||
}
|
||||
|
||||
:Очередь флагнутых чанков -> человек
|
||||
· redrive точечно [Ф1*] (сейчас только
|
||||
--resnapshot ценой всей книги — D15);
|
||||
:Книжный QA-проход [Ф2]: консистентность по всей
|
||||
книге, регрессия ты/вы, морфо-гейт рода;
|
||||
:Экспорт txt/epub/TMX + отчёт [Ф1*]: tmctl export (канон. ассемблер)
|
||||
+ annotations.json · нормализация выхода (strip ведущий ###)
|
||||
· флагнутый чанк НЕ дропать в пусто (export-фикс D35.4a)
|
||||
· стоимость по стадиям, флаги, журнал творческого вклада;
|
||||
if (Майнинг вкл. И дельта непуста? [OK]) then (да)
|
||||
:МАЙНИНГ-СТОП: MineBank по нормализованному источнику
|
||||
против контраста (сид и reject-set исключены) →
|
||||
signature map → прогон ОСТАНОВЛЕН (exit 3);
|
||||
:Владелец: каждый терм → promote в mined_delta (approved+dst)
|
||||
ИЛИ decline в mined_rejects;
|
||||
:Ре-ран: драфт $0-резюм · пустая дельта → авто-континью;
|
||||
else (нет / выкл)
|
||||
endif
|
||||
|
||||
partition "ВОЛНА РЕДАКТУРЫ [OK] (∥ по edit-единицам, ENRICHED-банк)" {
|
||||
:Единица = конкатенация member-выходов драфта
|
||||
(редактор НИКОГДА не пере-рендерит драфт — инвариант) ·
|
||||
флагнутый member ВЫБРАСЫВАЕТСЯ из редактуры (c-lite, D39.18);
|
||||
:СВЕЖИЙ memory.Select по источнику единицы над ENRICHED
|
||||
→ CONFIRMED-констрейнты билингв-редактору
|
||||
(deepseek-v4-pro ИНТЕРИМ, D39.22 · glm-5 резерв);
|
||||
:runStage: тот же контур reserve→вызов→settle+чекпойнт,
|
||||
ретраи/эскалация/ре-гейт — как в драфте;
|
||||
:Гейты финала [OK]: intrinsic classify всегда ·
|
||||
санитайзер D30.3 (косметика → strip + экспорт flagged) ·
|
||||
глоссарный post-check (флаггер всегда, гейт opt-in) ·
|
||||
cheap-гейты v4 → retrieval_state (observability, НЕ вердикт);
|
||||
:Repair-петля [FLAG] (пак-16, D39.24) — суб-шаг финальной
|
||||
стадии: checks.RepairCandidates (позиционная детекция,
|
||||
вердикт-нейтральная) → ≤N таргет-вызовов по span,
|
||||
промпт prompts/<пара>/repair/<класс>.md → 6 гардов
|
||||
+ ПОЗИТИВНЫЙ ре-гейт + анти-удаление ·
|
||||
⟦TM-NOCHANGE⟧ = успех-декляйн · фикс → derived tm-repair-v1 ·
|
||||
ВКЛЮЧЕНИЕ платного пути = решение владельца по замеру остатка;
|
||||
:Чекпойнт финала [OK]: в TM коммитится
|
||||
только прошедшее гейты · ApplyHeading на первую единицу главы;
|
||||
}
|
||||
|
||||
:Read-модели $0 [OK]: tmctl status (wave-aware) ·
|
||||
quality-report (структурный KPI + residual-скан
|
||||
RepairCandidates = замер остатка для решения о repair) ·
|
||||
очередь флагнутых → человек (redrive точечно);
|
||||
:Экспорт $0 [OK]: манифест-ре-чанк + final-строки chunk_status,
|
||||
checks.ExportNormalize байт-в-байт с translate,
|
||||
--pairs (source-колонка), счётчики pending/ghost/ConfigDrift;
|
||||
note right
|
||||
Канал B (18+) [пак-17, в дизайне]: generic
|
||||
content-labels × provider-capabilities (D39.25) —
|
||||
в движке НЕТ понятия «18+». Сейчас интерим:
|
||||
Adult bool + channel:adult ТИП-изоляция + линт.
|
||||
Ф2: голос/состояние D21, native-Gemini судья, C2/C3.
|
||||
end note
|
||||
stop
|
||||
@enduml
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Рычаги минимально-художественного zh→ru: независимый доклад ChatGPT
|
||||
|
||||
> ✅ **ОТРАБОТАН (отметка 25.07, оркестратор №7).** §C3-ядро дискурс-reflow графтовано в промт полигона (D36→exp14, D37); чэнъюй-рычаг дописан по аудиту D38.4; итог — editor v3 (D38.5, `0ac5f7a`). Арка «качество-первым» закрыта; промпт живёт конвенцией `backend/prompts/zh-ru/` (пак-15, D39.23г).
|
||||
|
||||
<!-- ─────────────────────────────────────────────────────────────────────────
|
||||
ОРКЕСТРАТОР — РЕВЬЮ-ШАПКА (лендинг, D36, 12.07 №4). Тело не переписано. Полный разбор —
|
||||
PROGRESS §лендинг D36 + D-лог D36.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# research/18 — Рычаги качества: как дотянуть текущую фазу до минимально-художественного zh→ru
|
||||
|
||||
> ✅ **ОТРАБОТАН → ПОСТРОЕНО (отметка 25.07, оркестратор №7).** §C-армы прогнаны exp14/14b (D37/D38); дискурс+чэнъюй-рычаг — editor v3 (D38.5, `0ac5f7a`); билингв src→dst-редактор (D30.1) построен паком-11 WS2 (D39.13); промпт живёт конвенцией пары `backend/prompts/zh-ru/editor.md` (пак-15, D39.23г). Арка «качество-первым» D26→D38.5 закрыта.
|
||||
|
||||
<!-- ─────────────────────────────────────────────────────────────────────────
|
||||
ОРКЕСТРАТОР — РЕВЬЮ-ШАПКА (лендинг, D36, 12.07 №4). Тело §A НЕ тронуто (заморожено;
|
||||
sha256 44f90364… СВЕРЕН побайтно из закоммиченных байтов между BEGIN/END → MATCH →
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
> верификатор обязан был РЕФЬЮТИТЬ клейм по первоисточнику; вердикты CONFIRMED/OVERSTATED с коррекциями
|
||||
> отмечены по тексту) + critic-раунд добора (CJK-примитивы, diff-контракт, методология, русские нормы).
|
||||
|
||||
> ✅ **→ ПОСТРОЕНО (пост-хок отметка, 25.07, оркестратор №7).** §B1-чанкер (output-бюджет/edit-единицы) и §C-контракт src→dst-редактора — пак-11 WS2 (D39.13; после сплита пака-15 — `backend/internal/chunk/chunker.go`); §B3-бис волновая архитектура — волновой исполнитель (D39.17, `waverun.go`); §D-эмпирика Q0–Q5 исполнена exp15 (D39.7: «граница вредит» отозван, когезия-эффекты под floor 0.126). Тело не редактировалось.
|
||||
|
||||
<!-- SECTION-A-FROZEN-BEGIN -->
|
||||
## §A — Независимое заключение (ЗАМОРОЖЕНО)
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
> **ACCEPT**. §E-владельцу (мини-голд алиасов · бюджет ≤$5 · политика канона · жанр-паки · реплика ja→ru)
|
||||
> вынесены владельцу отдельно; §E-бэкенду — слоты дизайна, НЕ строить до итогов §D (ратифицировано D39.6).
|
||||
|
||||
> **→ ПОСТРОЕНО (отметка 25.07, оркестратор №7):** §D-полигон исполнен exp16 (D39.10: WHICH V-C recall 0.97, WHAT→банкнота+Палладий); детектор-лестница V-A/B/C — Go-майнер паритет-EXACT (пак-11 R2, D39.14; `backend/internal/miner/`), банкнота 12 гейт-точек — R3 (D39.14), майнер-данные → `internal/lang`+`configs/langpacks/` (D39.16), mined-delta collision-гард — пак-13 (`2f91b04`). Гейт «НЕ строить до итогов §D» снят фактом итогов.
|
||||
|
||||
**Сессия-ресёрчер, 2026-07-17.** Исполнение `docs/RESEARCHER_BANK_MINING_SESSION_PROMPT.md` (D39.3).
|
||||
Не закоммичено — лендит оркестратор.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
**Статус: ПРИНЯТ (залендён 23.07); черновик сдан ресёрч-сессией 23.07. §5-аддендум (арх-паттерны) дописан сессией и залендён вторым коммитом — спот-чек цитат обеих сторон (`capability.go:12-18` фолд-в-снапшот, `clients.go:15` BuildClient, `requestoption.go:80-85` замыкание) подтверждён; рефактор-вердикт «транспорт не трогаем» ратифицирован (D-лог, PROGRESS 23.07).** Дата: 2026-07-23. Роль — ресёрч (полигон-профиль). Периметр: `$0`-сессия чтения кода, ни одного вызова моделей, `backend/` read-only. Материал — 11 склонированных харнессов в `/home/ubuntu/projects/tmp/`. Рекомендации применяются ТОЛЬКО после пере-прогона, отдельным решением. Все Q7-кандидаты — именно **кандидаты**: абсорбирует оркестратор ПОСЛЕ вендор-сверки (правило двух направлений, 10.07).
|
||||
|
||||
> **→ ПОСТРОЕНО паком-12 «транспорт-гигиена» (24.07, `7fe0a5b`; отчёт `docs/archive/reports/TRANSPORT_PACK12_REPORT_2026-07-24.md`; отметка 25.07, оркестратор №7):** §1-пункты 1–6/8a/8b/9 реализованы (quota-429→terminal · дробный Retry-After · HTTP/2 keepalive · джиттер · xAI identity-гард · GLM finish-нормализация · пин retryable-мапы · кап billed-decode · models.yaml-валидация); пункты 7 (CostSource) и 10 (луп-гард) — паком-13 (`2f91b04`). DEFER снят; Q7-абсорбция в `00-provider-quirks.md` — по-прежнему только после вендор-сверки.
|
||||
|
||||
## Метод, лицензии, надёжность
|
||||
|
||||
- **Оркестрация.** 11 репо-агентов (survey Q1–Q6) ∥ 6 провайдер-агентов (quirk-mining Q7-код) → 6 синтез-агентов (по вопросу) + Q7-дедуп → адверсариальная верификация (author≠reviewer): 57 агентов, 0 ошибок. Онлайн-жатва трекеров (Q7) — отдельно, из главной сессии (`gh` + WebFetch).
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
> **РЕВЬЮ-ШАПКА ОРКЕСТРАТОРА (лендинг 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 (транспорт
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue