From ed64d797662a6f106fce4be788e89cd24d29b25f Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Sun, 26 Jul 2026 05:10:32 +0300 Subject: [PATCH] Ratify D39.42 terminologist architecture for pack twenty phase two, rewrite pack directive, amend research twenty spec and tracker --- ...ACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md | 23 ++++++++++++++----- docs/PROGRESS.md | 8 +++++-- docs/architecture/05-decisions-log.md | 10 ++++++++ docs/research/20-bank-mining.md | 2 ++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/docs/BACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md b/docs/BACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md index 88230eaf..8ec42357 100644 --- a/docs/BACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md +++ b/docs/BACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md @@ -1,6 +1,8 @@ -# Промт бэкенд-сессии: ПАК-20 «банк: флаговый стоп + покрытие WHAT→WHICH» (ДВУХФАЗНЫЙ: синк → дизайн → ратификация → стройка) +# Промт бэкенд-сессии: ПАК-20 «банк: терминолог + флаговый стоп» (ДВУХФАЗНЫЙ: синк → дизайн → ратификация → стройка) -**Статус: ВЫДАН 26.07.2026, оркестратор №8. Исполняется ПЕРЕД паком-19 (голос/состояние).** Санкция владельца: флаговый стоп — часть конечной архитектуры («отключение верификации и полное доверие бэкенду»). Ратифицированная база: D39.36 (семантика флага, слова владельца) · D39.37 (приёмка мини-прогона, замер покрытия) · research/20 §D (дизайн-оф-рекорд майнинга, D39.6) · exp16→D39.10 (расщепление: WHICH находит код, WHAT доставляет банкнота ИЗ КОНТЕКСТА; перевод со-встречаемостью запрещён). +**ФАЗА 1 ИСПОЛНЕНА И ПРИНЯТА (D39.41, 26.07): отчёт `docs/archive/reports/PACK20_BANK_DESIGN_2026-07-26.md` с ревью-шапкой; верификация 39 CONFIRMED / 7 PARTIAL / 0 REFUTED. РЕШЕНИЯ ВЛАДЕЛЬЦА РАТИФИЦИРОВАНЫ (D39.42) — фаза 2 идёт по НИМ, а не по P1–P5 отчёта (те не строятся, вердикт сессии подтверждён). Директива фазы 2 — ниже, секция «ФАЗА 2».** + +**Статус: ВЫДАН 26.07.2026, оркестратор №8. Исполняется ПЕРЕД паком-19 (голос/состояние).** Санкция владельца: флаговый стоп — часть конечной архитектуры («отключение верификации и полное доверие бэкенду»). Ратифицированная база: D39.36 (семантика флага, слова владельца) · D39.37 (приёмка мини-прогона, замер покрытия) · research/20 §D (дизайн-оф-рекорд майнинга, D39.6) · exp16→D39.10 (расщепление: WHICH находит код, WHAT доставляет банкнота ИЗ КОНТЕКСТА; перевод со-встречаемостью запрещён) · **D39.41/D39.42 (приёмка фазы 1 + решения владельца)**. **Первый деливерабл — эхо-блок (≤10 строк): скоуп / инварианты / чего не делать. ДО работы.** @@ -27,12 +29,21 @@ **Приёмка фазы 1:** отчёт `docs/archive/reports/PACK20_BANK_DESIGN_<дата>.md` — эхо-блок · синк-таблица шага 0 · по каждому B варианты/рекомендация/деньги/риски · адверсариальный селф-ревью. **СТОП — ратификация** (контрольная точка владельца). -## ФАЗА 2 — после ратификации +## ФАЗА 2 — ДИРЕКТИВА (ратифицирована D39.42; читай D39.41/42 в D-логе ПЕРВЫМИ, потом свой отчёт фазы 1 с ревью-шапкой) -Инварианты: golden-дисциплина (двигаешь промпт — объявляй оси, маскированный структурный дифф пуст вне заявленных) · парити EXACT · `-race` · **«пере-мерь свой вывод ДРУГИМ способом, чем получил»** (норма D39.37) · заявление = команда (приёмка ре-ранит) · мутация на каждую новую ветку · дифф `^func Test` исполнением · сессия НЕ коммитит, `git mv` декларировать. +Архитектура — слова владельца: черновая волна всей книги → майнер (из исходника) + банкнота (варианты из черновиков) → **ТЕРМИНОЛОГ переводит весь смердженный банк сразу по полным контекстам** → стоп (флаг) или авто → редакторская волна по готовому банку. Строй по порядку: -## НЕ делать +1. **B5 тест-пин ПЕРВЫМ** (до любого изменения поведения — сегодня смену семантики стопа не делает красным ничего, S8): сквозная фикстура, впервые зажигающая `mining.go:40-102` (contrast_path в тестовом конфиге); джойн с НЕПУСТЫМ пересечением; мутационный чек-лист фазы 1 (§6) целиком; плюс пин `waverun.go:316` (резюм-восстановление) · `mining.go:68` (reject-сет) · `chunkrun.go:130-136`. +2. **Терминолог (ядро).** Роль `terminologist` в пар-паке (`prompts/zh-ru/`); вход: смердженный банк (двусторонний $0-джойн майнер∪банкнота: alias/containment-резолвер + обратная секция) + KWIC-контексты вхождений из ИСХОДНИКА + варианты черновиков + Палладий-данные + **жанровый словарь пары** (новый файл данных langpack; общепринятое индустрией, куратор — владелец; НЕ книжный канон); выход: консолидированное dst на каждый терм (формула research/20 §C2 п.3, НЕ мажоритарность) + провенанс + разброс. Эмиссия двухрежимная §C2-7: есть dst → `status:draft`, нет → `auto`. Батчи, дешёвая модель; смета ДО живого вызова; **веб-фетча НЕТ (D39.42 п.2)** — интерфейс расширяем, включение отдельным решением после полигон-ресёрча. +3. **Флаг** `--verify-bank` (CLI-only bool, translate+redrive; дефолт = авто-продолжение): стоп показывает БОГАТУЮ таблицу выхода терминолога (src · dst · частота · разброс · контексты; кап stdout + сайдкар — S4); починить S16 (draft-only теряет BookResult) и S17 (вывод стопа в translate, баннер в redrive); экзит-код-контракт; fail-loud при невозможном майнинге. +4. **Авто-провод**: неподписанные строки с dst едут РЕДАКТОРУ (и черновикам следующих прогонов) с маркером ⟨проверить⟩ (механизм D32/S1 готов); редакторский блок расширяется на не-Confirmed ОТДЕЛЬНОЙ помеченной секцией — закон и рабочие версии не смешивать; **ВСЕ строки банка (включая auto/draft) фолдятся в версию памяти** ⇒ тихих путей к байтам провода не существует, README-инвариант №2 НЕ трогается; reject-сет применяется И на загрузке (риск 3 фазы 1); авто-строки фильтруются из seedSurfaces (риск 2, самоисключение майнинга); guard коллизии ключей auto↔signed (риск 4); auto/draft-строки видны в `tmctl status`/`report` (наблюдаемость — блокер 10 не повторять). +5. **Точечная ре-редактура по ключу** (смена банка после оплаты — поздняя подпись и любая правка): `--resnapshot`-семантика — пере-пин $0 юнитов с неизменными байтами, пере-оплата только юнитов, где терм встречается; для честной сметы «N юнитов, ~$X» ДО согласия — починить P3 (проекция rebill по contentHash-рендеру, ≈60–120 мс, + корректное моделирование `sanitizer_stripped` — блокер 6). +6. **Банкнота**: отдельный `prompts/zh-ru/translator-banknote.md` + `prompt_override` в конфигах канала (буквальный перенос в `translator.md` ЗАПРЕЩЁН — S5); срез безусловный (byte-identical путь доказан фазой 1 P2); `bankTokenBudget` пере-считать честной формулой движка (144 впритык/отрицателен — D39.41) — двигается вместе с остальными осями; лимит 12 строк пересмотреть по замеру (22% блоков упёрлись); S12 (parse_fail без сепаратора) починить; **микро-проба финальных байт промпта ≈$0.02 САНКЦИОНИРОВАНА** (развилка 11 — да). -Механизмы D21 (пак-19, после) · судья · веб-фетч-перевод · L3 · авто-подпись «умным» порогом (флаг бинарный — слова владельца) · платные прогоны (смета в фазе 1, живой прогон — отдельное решение) · книжный канон в код или в D-лог (гардрейл: книго-каноны → данные книги). +Инварианты: golden-дисциплина (двигаешь промпт/оси — объявляй, маскированный структурный дифф пуст вне заявленных) · парити EXACT · `-race` · **«пере-мерь свой вывод ДРУГИМ способом, чем получил»** (норма D39.37) · заявление = команда (приёмка ре-ранит) · мутация на каждую новую ветку · дифф `^func Test` исполнением · нормализовать цитатный слой отчёта (номера строк дрейфовали — твоя же находка §7) · сессия НЕ коммитит, `git mv` декларировать. + +## НЕ делать (фаза 2, по D39.42) + +Ось `lane`/durable-реестр P1 · ретирование `Gates.Banknote.Enabled` (булев остаётся) · направленная банкнота (отложена — вернуться по замеру покрытия терминолога) · неподвижная точка P5 · M2-кэш · веб-фетч · судья · механизмы D21 (пак-19, после) · L3 · авто-подпись «умным» порогом (флаг бинарный — слова владельца) · платные прогоны сверх микро-пробы и смет терминолога без отдельной санкции · книжный канон в код или в D-лог (жанровый словарь — ПАРА/ЖАНР, не книга; сомнение = пинг). **Канал вопросов:** непонятно / конфликт промта с кодом или доками → пинг оркестратору через владельца, НЕ тихая интерпретация. Аддендумы доезжают только релеем — подтверди получение строкой в отчёте. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 33d231f0..adf00667 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,12 +1,16 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-07-25, пак-17 закрыт, право по ToS подписано, пак-18 принят — долгов контракта нет, D39.26–D39.31). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1–D39.41); этот файл — ЖУРНАЛ.** +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-07-25, пак-17 закрыт, право по ToS подписано, пак-18 принят — долгов контракта нет, D39.26–D39.31). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1–D39.42); этот файл — ЖУРНАЛ.** > - **Фазы/курс:** Ф0 ✅ · Ф1-инфра ✅ (D20–D28; golden = инвариант №8) · арка «качество-первым» D26→D38.5 закрыта · **арх-ресет D39 исполнен ЦЕЛИКОМ** (7 слоёв → программа D39.1–D39.10 → паки 11–16, D39.13–D39.24; статус слоёв — шапка-таблица `architecture/09-target-architecture.md`) · пере-прогон rerun2 прочитан (D39.20: операционка живьём, $0-резюм ×3 арма, $6.63<$15; планка ≤2 НЕ пройдена; анти-корреляция гладкость↔верность ×3 → mistral-редактор вон) · эксп ЗАКРЫТ (D39.22), итерация №2 отложена · **курс = разработка бэкенда: пак-17 «канал B вживую» ЗАКРЫТ ЦЕЛИКОМ (дизайн D39.26 · стройка D39.27 · дельта `allow` D39.28, 25.07); вокабуляр = ПАРА `violence`/`sexually-explicit`, остаток — ФАКТЫ ToS в зоне полигона (fail-closed до них)** (D39.25: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities; лейблы вне хешей · резолв до валидации · один хоп `chain[0]` · гранулярность = книга) → **КУРС АМЕНДИРОВАН ВЛАДЕЛЬЦЕМ 25.07 (D39.33): МАСШТАБ — ПОСЛЕДНИМ, после достройки алгоритмического идеала; доказательство эффективности крупных изменений — МИНИ-ПРОГОНЫ ~10 глав (детерминированные чекеры и скан остатка первыми, судья — только когда от него зависит решение).** **ОЧЕРЕДЬ ИСПРАВЛЕНА ЗАМЕРОМ (D39.35): $0-резюм драфта на стенде УЖЕ МЁРТВ** (снапшот разошёлся по трём осям — cheapgate v3→v4, renderfmt v2→v3, langpack 09974d6→a7d4be2), поэтому срочности «гнать, пока жив» НЕТ, а ниты перестали быть условными: **(1) микро-пак «предпрогонная гигиена» ($0-код): два нита общности + ОБЯЗАТЕЛЬНЫЙ флип `Gates.RegressionGuard.Enabled` (невыполненное обязательство D38.4 п.5) + опц. проекция пере-оплаты в `tmctl status`** · **(2) мини-прогон-замер ~10 глав** (драфт ≈$0.02, редактура ≈$0.08–0.15/арм, судья НЕ зовётся ⇒ один арм ≈$0.10–0.17, два ≈$0.20–0.32; перед прогоном бэкап `rerun2/*.db`, БД на схеме v9 против v10 бинаря) · **(3) параллельно $0 — сид/банк-дельта** (元 · 赤城 · 学堂家老 · 春秋蝉; два терма ждут подписи владельца) · **(4) пак-19 в урезанном скоупе** · (4) далее слой-2 извлечение из тел промтов · ru-target · native-Gemini судья. Затем — сид-дельта (元 · 赤城 · 学堂家老 · 春秋蝉), МАСШТАБ целой книги (7,78 млн символов, ~2284 раздела) и пилот Ф2.5. Хроника треков A/B, exp15/16 и стройки паков — архивы ниже + D-лог. > - **Стек:** 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). -> - **ОТКРЫТЫЕ ПЕТЛИ (норма 25.07, перепись 180 инцидентов: класс NEVER_CLOSED больше не копим — каждая петля обязана получить диспозицию решено/отложено-с-записью/отклонено; ведёт оркестратор).** *Владелец:* ~~вокабуляр content-лейблов~~ **РЕШЕНО 25.07: ПАРА `violence`/`sexually-explicit`** (D39.27 п.5 — сохраняет D14 п.1 и dspro-редактора на violence) ⇒ следствие в работе: assert-only `action` (дельта пака-17) · ~~Q2 редактор под лейблом~~ **ОТЛОЖЕН С ЗАПИСЬЮ** (D39.27 п.7: при паре связывает только `sexually-explicit`-книги, которых нет; возвращается вместе с предусловием D22.7 перед первой explicit-книгой; кандидаты — grok-4.3 интерим, glm-5 только после сверки ToS Z.AI по первоисточнику, mistral отвергнут D39.20) · ~~ToS-факты + три решения по ним~~ **ЗАКРЫТЫ 25.07 (D39.29 факты + D39.30 подписи владельца):** лейбл `violence` НЕ заводится, интерпретация «нейтральное изображение ≠ пропаганда» зафиксирована письменно · риск Z.AI (плоский запрет «violent content»; экспозиция состоялась в rerun2 через glm-арм) ПРИНЯТ сознательно с условиями пересмотра · две строки `accepts_labels: [sexually-explicit]` (`xai`, `mistral`) ПОДПИСАНЫ и ПРИМЕНЕНЫ в `models.yaml`. **Остаток ToS-вопросов ЗАКРЫТ владельцем 25.07 (D39.32):** local = «политик нет, переводим всё» ⇒ строка применена · Gemini-оговорка читается СУЖЕНИЕМ ⇒ вердикт `FORBIDDEN`→`UNCLEAR`, но по доктрине это НЕ разрешение: строку Gemini не получает, **ждёт одного слова, если владелец хочет подписать интерпретацию как разрешение** · причину пустоты в конфиг НЕ выносим (живёт в quirks-доке) · **ре-чек политик стал ПРАВИЛОМ** (триггеры: Google ToS 30.07.2026 · квартал 25.10.2026 · любая правка `accepts_labels`) · дата аккаунта OpenAI — открыта, приоритет низкий (OpenAI вне цепочки). **Продуктовое (Ф3):** Gemini API Additional ToS запрещает клиентов, «likely to be accessed by individuals under 18» — обязательство на конечный продукт, независимо от лейблов · **промпт-слой под лейблом (НОВОЕ, вскрыто вопросом владельца): лейбл сегодня НЕ доезжает до промпта** (чистые данные маршрутизации + load-time гарантия); нужно ли, чтобы переводчик/редактор ЗНАЛИ о свойстве контента — отдельное решение промпт-слоя · ~~мини-каноны сид-дельты~~ ЗАКРЫТО 26.07: все четыре пункта решены, правок сида ноль; книжные канон-решения живут С КНИГОЙ (`books/gu-zhenren/CANON-NOTES.md`), НЕ в D-логе — урок владельца: движок не строится вокруг одной книги · ~~включение платной петли ремонта~~ **РЕШЕНО 26.07 (D39.38): НЕ включается** — замер 0 в её классах; вернуться при расширении классов и ненулевом остатке; **уточнение D39.39: «0» = ноль в охвате детекторов с измеренным теперь recall (латиница 0.50 боевой, битые формы 0.10) — решение в силе (петля видит теми же детекторами), но читать как «финал чист» нельзя** · **вопросы разметки Р1–Р4 (НОВОЕ, D39.39, пакет-6 §5, 21 спорная строка):** гипербола 千万 (довод: тот же автор в гл.2 даёт 数十万 о том же деянии) · что есть дефект в классе 成 — форма или значение (от ответа precision K5c 1.000 или 0.167) · сокращённая форма термина («гу» при dst «гу-тварь») · принципиально неразрешимая офлайн речь/мысль (если да — потолок recall K4b < 1.0 by construction, вписать в контракт правила) · ~~место фикс-пака «чекеры» в очереди~~ **РЕШЕНО 26.07 (D39.40): это ПАК-21, а перед ним мини-прогон ~10 глав на полном бэкенде (после лендинга 20 и 19)**; ответы Р1–Р4 нужны к дизайну пака-21 · ja→ru-реплика §B5 (тайминг) · старые Ф2.5-блокеры (билингв-якорь — D25 п.9 Q1 · контаминация корпуса — D27 п.4 · судья-дублёр D22.6 · планка запуска · publishable/waiver — D25 п.1 · FN-bound L3 — D25 п.4 · юр-пакет · провенанс 12-*-доков · xAI-ключ off перед продом D27 · residual-тачпойнты exp16, не влитые в сид-дельту: мини-голд алиасов · precision@30, `books/gu-zhenren/exp16/`). *Оркестратор:* ~~ратификация дизайна пака-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~~ **РЕШЕНО D39.26 (25.07: принято в редакции §14, три добора приёмки, фаза 2 размечена)** · **`escalation_model` = ОТВЕТИВШАЯ модель (НОВОЕ, вынесено из пака-17): вердикт-изменение** — golden пинит `esc_model` на ОТКАЗАВШЕМ хопе, маскировка не скрывает ⇒ отдельная ратификация с санкционированным пере-капчером · **`--accept-rebill[=usd]` с порогом `min($0.50, 5%×ProjectedBookUSD)` РАТИФИЦИРОВАН D20.2-Q2, но в коде/CLI ОТСУТСТВУЕТ (НОВОЕ)** — живёт только в спеке `backend/docs/D15.2-*.md`; `--resnapshot` пере-пиннит без суммы · **D22.7 (пер-чанковый L3-скрин) — предусловие первой erotica-книги в проде НЕ снято паком-17 (НОВОЕ, держать отдельным гейтом)** · фантом-гард D-ссылок в чек-листе лендинга (действует). *Бэкенд:* **ХВОСТЫ МИНИ-ПРОГОНА (D39.37, 26.07, по убыванию веса):** ~~(1) размеченный набор для чекеров~~ **ЗАКРЫТ 26.07 (полигон-пакет-6, D39.39)** ⇒ породил вход нового фикс-пака «чекеры»: 12 дефектов с file:line (супрессор K5c гасит юнит целиком · атрибуция K4b (23 безатрибутивных + 12 с `!?…`) · `inner_marker` на тире-строки · предохранитель K5a отсекает все реальные магнитуды · заглавные/гомоглифы K2 · 两 в `cheng_re` · U+0301 рвёт `TokenizeCyrillic` · мн.число в `decl.forms`-тулинге · однознаковые ключи пост-чека) — приёмка против набора за $0; **место РЕШЕНО (D39.40): ПАК-21, после мини-прогона на полном бэкенде; + переезд `translitInterjections` в данные (улов владельца)** · (2) **тест-пин джойна WHAT↔WHICH** (мутация оркестратора выжила — фикс-лист №1 следующего касания) · (3) покрытие WHAT↔WHICH (0/2 и 1/2) + флаговый майнинг-стоп (семантика владельца озвучена, D39.36 п.2; стоп очищается РАУНДАМИ) · (4) `dialogue_dash` мерить только на невиданном тексте (подогнан под 蛊真人) · (5) генеральность нарезки: кана/ханьцзи один класс ⇒ ja `est_out` ~1.7× завышен МОЛЧА; `EstimateTokens` недосчитывает кириллицу (резервации занижены) · (6) golden второй фикстурой С langpack · (7) `prompt_override` — честная формулировка гарантии слоя-2 · (8) майнер/банк не-CJK (едет с ja→ru) · (9) `request_log` скоуп/ретеншен + `first_flag_reason` третье представление истории · (10) флор-16000 без модели · (11) `max_tokens`-упоры вернутся на en · ~~пак-17 (фазы 1–2 + дельта)~~ **ЗАКРЫТ ЦЕЛИКОМ 25.07 (D39.26/27/28)** · ~~ПАК-18 «долги контракта»~~ **ПРИНЯТ И ЗАЛЕНДЕН 25.07 (D39.31) — долгов контракта не осталось**; выдавался (`BACKEND_PACK18_DEBTS_SESSION_PROMPT.md`: `--accept-rebill` на снапшотной гранулярности — `guard_hash` в коде нет и не строим · `escalation_model` = авторитетная модель с САНКЦИОНИРОВАННЫМ пере-капчером golden под этот дифф · два нита общности условно-байт-нейтрально) · **ru-target долг (слой 7, `isRuTarget`×11 прод-сайтов · `TokenizeCyrillic`×6 · ключ «ru» в санитайзере) — ЖДЁТ СВОЕГО ДИЗАЙН-ПАКА** (связывает только не-русский таргет, по текущей карте zh/ja/en→ru не срочен) · **ПАК-19 «голос и состояние» ВЫДАН 25.07** (`BACKEND_PACK19_VOICE_STATE_SESSION_PROMPT.md`, двухфазный; ниты общности едут ЕГО лендингом — D39.31 п.5) · **проекция пере-оплаты в `tmctl status` (НОВОЕ, из отчёта пака-18): спека §9 предлагает заменить булев `ConfigDrift` числом «N чанков, ~$X» — дёшево, `omitempty`, не сделано сознательно** · **не-долги, следующие несущие:** масштаб целой книги (волны/каденс/потолки/ETA на сотнях глав — гоняли максимум 5) · Ф2-механизмы (голос/состояние D21 · native-Gemini судья) · извлечение дискурс-норм/few-shot из ТЕЛ промтов (слой 2, форсинг = ja→ru) · ~~пак-16 ф.2~~ ЗАЛЕНДЕНА 25.07 · per-class исходы ремонта — схемное решение (класс не durable), принимается ВМЕСТЕ с включением петли · ниты общности (владелец 25.07) — **ОТЛОЖЕНЫ ПО ЗАМЕРУ (D39.31 п.5): едут на ближайший ПОЛНЫЙ `--resnapshot`**; для Detail-строк байт-нейтральной формы не существует определительно (дефолт шаблона обязан рендерить текущую строку). Прежняя формулировка: только в байт-нейтральной форме с доказательством исполнением (иначе `CheapGateVersion`/`pack.Version()` двигают снапшот стендовых книг и убивают $0-резюм драфта под замер остатка пака-16): Detail-строки чекеров → шаблоны/цитаты из данных (статический 时辰-текст в generic-файле соврёт второй паре) · множитель ×2 `lintTimeUnits` (`checkers.go:174`) → ключ данных. *Полигон:* ~~пакет-6 (размеченный набор чекеров)~~ **ОТРАБОТАН И ПРИНЯТ 26.07 (D39.39): 3015 позиций, 6 прогонов, $0; metrics.json воспроизведён побайтно; набор на стенде `books/gu-zhenren/labels/` = постоянный измерительный стенд чекеров; полигон-очереди НЕТ** (кандидаты следующего пакета: ёфикатор/санитайзер-классы не размечены — §6.5 отчёта; `dialogue_dash` на невиданном тексте) · ~~пакет 5 (факты ToS + 8 пингов)~~ **ОТРАБОТАН ЦЕЛИКОМ И ПРИНЯТ 25.07 (D39.29); все восемь пингов закрыты.** Исторический список закрытых пингов: (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); (7) `eval/README.md` — не тронут с 19.07 (пре-rerun2): освежить статус под пост-D39.22 (эксп закрыт · судейский риг-стандарт D39.7 · экстракция только `tmctl export`). +> - **ОТКРЫТЫЕ ПЕТЛИ (норма 25.07, перепись 180 инцидентов: класс NEVER_CLOSED больше не копим — каждая петля обязана получить диспозицию решено/отложено-с-записью/отклонено; ведёт оркестратор).** *Владелец:* ~~вокабуляр content-лейблов~~ **РЕШЕНО 25.07: ПАРА `violence`/`sexually-explicit`** (D39.27 п.5 — сохраняет D14 п.1 и dspro-редактора на violence) ⇒ следствие в работе: assert-only `action` (дельта пака-17) · ~~Q2 редактор под лейблом~~ **ОТЛОЖЕН С ЗАПИСЬЮ** (D39.27 п.7: при паре связывает только `sexually-explicit`-книги, которых нет; возвращается вместе с предусловием D22.7 перед первой explicit-книгой; кандидаты — grok-4.3 интерим, glm-5 только после сверки ToS Z.AI по первоисточнику, mistral отвергнут D39.20) · ~~ToS-факты + три решения по ним~~ **ЗАКРЫТЫ 25.07 (D39.29 факты + D39.30 подписи владельца):** лейбл `violence` НЕ заводится, интерпретация «нейтральное изображение ≠ пропаганда» зафиксирована письменно · риск Z.AI (плоский запрет «violent content»; экспозиция состоялась в rerun2 через glm-арм) ПРИНЯТ сознательно с условиями пересмотра · две строки `accepts_labels: [sexually-explicit]` (`xai`, `mistral`) ПОДПИСАНЫ и ПРИМЕНЕНЫ в `models.yaml`. **Остаток ToS-вопросов ЗАКРЫТ владельцем 25.07 (D39.32):** local = «политик нет, переводим всё» ⇒ строка применена · Gemini-оговорка читается СУЖЕНИЕМ ⇒ вердикт `FORBIDDEN`→`UNCLEAR`, но по доктрине это НЕ разрешение: строку Gemini не получает, **ждёт одного слова, если владелец хочет подписать интерпретацию как разрешение** · причину пустоты в конфиг НЕ выносим (живёт в quirks-доке) · **ре-чек политик стал ПРАВИЛОМ** (триггеры: Google ToS 30.07.2026 · квартал 25.10.2026 · любая правка `accepts_labels`) · дата аккаунта OpenAI — открыта, приоритет низкий (OpenAI вне цепочки). **Продуктовое (Ф3):** Gemini API Additional ToS запрещает клиентов, «likely to be accessed by individuals under 18» — обязательство на конечный продукт, независимо от лейблов · **промпт-слой под лейблом (НОВОЕ, вскрыто вопросом владельца): лейбл сегодня НЕ доезжает до промпта** (чистые данные маршрутизации + load-time гарантия); нужно ли, чтобы переводчик/редактор ЗНАЛИ о свойстве контента — отдельное решение промпт-слоя · ~~мини-каноны сид-дельты~~ ЗАКРЫТО 26.07: все четыре пункта решены, правок сида ноль; книжные канон-решения живут С КНИГОЙ (`books/gu-zhenren/CANON-NOTES.md`), НЕ в D-логе — урок владельца: движок не строится вокруг одной книги · ~~включение платной петли ремонта~~ **РЕШЕНО 26.07 (D39.38): НЕ включается** — замер 0 в её классах; вернуться при расширении классов и ненулевом остатке; **уточнение D39.39: «0» = ноль в охвате детекторов с измеренным теперь recall (латиница 0.50 боевой, битые формы 0.10) — решение в силе (петля видит теми же детекторами), но читать как «финал чист» нельзя** · **вопросы разметки Р1–Р4 (НОВОЕ, D39.39, пакет-6 §5, 21 спорная строка):** гипербола 千万 (довод: тот же автор в гл.2 даёт 数十万 о том же деянии) · что есть дефект в классе 成 — форма или значение (от ответа precision K5c 1.000 или 0.167) · сокращённая форма термина («гу» при dst «гу-тварь») · принципиально неразрешимая офлайн речь/мысль (если да — потолок recall K4b < 1.0 by construction, вписать в контракт правила) · ~~место фикс-пака «чекеры» в очереди~~ **РЕШЕНО 26.07 (D39.40): это ПАК-21, а перед ним мини-прогон ~10 глав на полном бэкенде (после лендинга 20 и 19)**; ответы Р1–Р4 нужны к дизайну пака-21 · ja→ru-реплика §B5 (тайминг) · старые Ф2.5-блокеры (билингв-якорь — D25 п.9 Q1 · контаминация корпуса — D27 п.4 · судья-дублёр D22.6 · планка запуска · publishable/waiver — D25 п.1 · FN-bound L3 — D25 п.4 · юр-пакет · провенанс 12-*-доков · xAI-ключ off перед продом D27 · residual-тачпойнты exp16, не влитые в сид-дельту: мини-голд алиасов · precision@30, `books/gu-zhenren/exp16/`). *Оркестратор:* ~~ратификация дизайна пака-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~~ **РЕШЕНО D39.26 (25.07: принято в редакции §14, три добора приёмки, фаза 2 размечена)** · **`escalation_model` = ОТВЕТИВШАЯ модель (НОВОЕ, вынесено из пака-17): вердикт-изменение** — golden пинит `esc_model` на ОТКАЗАВШЕМ хопе, маскировка не скрывает ⇒ отдельная ратификация с санкционированным пере-капчером · **`--accept-rebill[=usd]` с порогом `min($0.50, 5%×ProjectedBookUSD)` РАТИФИЦИРОВАН D20.2-Q2, но в коде/CLI ОТСУТСТВУЕТ (НОВОЕ)** — живёт только в спеке `backend/docs/D15.2-*.md`; `--resnapshot` пере-пиннит без суммы · **D22.7 (пер-чанковый L3-скрин) — предусловие первой erotica-книги в проде НЕ снято паком-17 (НОВОЕ, держать отдельным гейтом)** · фантом-гард D-ссылок в чек-листе лендинга (действует). *Бэкенд:* **ХВОСТЫ МИНИ-ПРОГОНА (D39.37, 26.07, по убыванию веса):** ~~(1) размеченный набор для чекеров~~ **ЗАКРЫТ 26.07 (полигон-пакет-6, D39.39)** ⇒ породил вход нового фикс-пака «чекеры»: 12 дефектов с file:line (супрессор K5c гасит юнит целиком · атрибуция K4b (23 безатрибутивных + 12 с `!?…`) · `inner_marker` на тире-строки · предохранитель K5a отсекает все реальные магнитуды · заглавные/гомоглифы K2 · 两 в `cheng_re` · U+0301 рвёт `TokenizeCyrillic` · мн.число в `decl.forms`-тулинге · однознаковые ключи пост-чека) — приёмка против набора за $0; **место РЕШЕНО (D39.40): ПАК-21, после мини-прогона на полном бэкенде; + переезд `translitInterjections` в данные (улов владельца)** · (2) **тест-пин джойна WHAT↔WHICH** (мутация оркестратора выжила — фикс-лист №1 следующего касания) · ~~(3) покрытие WHAT↔WHICH + флаговый майнинг-стоп~~ **ПАК-20: фаза 1 ПРИНЯТА 26.07 (D39.41, верификация 39/7/0), решения владельца РАТИФИЦИРОВАНЫ (D39.42: ядро = роль ТЕРМИНОЛОГ, флаг поверх, редактор ест неподписанное с пометкой, банкнота отдельным файлом, точечная ре-редактура по ключу, веб-фетч НЕ в v1); директива фазы 2 вписана в промт пака — ждёт релея сессии** · (4) `dialogue_dash` мерить только на невиданном тексте (подогнан под 蛊真人) · (5) генеральность нарезки: кана/ханьцзи один класс ⇒ ja `est_out` ~1.7× завышен МОЛЧА; `EstimateTokens` недосчитывает кириллицу (резервации занижены) · (6) golden второй фикстурой С langpack · (7) `prompt_override` — честная формулировка гарантии слоя-2 · (8) майнер/банк не-CJK (едет с ja→ru) · (9) `request_log` скоуп/ретеншен + `first_flag_reason` третье представление истории · (10) флор-16000 без модели · (11) `max_tokens`-упоры вернутся на en · ~~пак-17 (фазы 1–2 + дельта)~~ **ЗАКРЫТ ЦЕЛИКОМ 25.07 (D39.26/27/28)** · ~~ПАК-18 «долги контракта»~~ **ПРИНЯТ И ЗАЛЕНДЕН 25.07 (D39.31) — долгов контракта не осталось**; выдавался (`BACKEND_PACK18_DEBTS_SESSION_PROMPT.md`: `--accept-rebill` на снапшотной гранулярности — `guard_hash` в коде нет и не строим · `escalation_model` = авторитетная модель с САНКЦИОНИРОВАННЫМ пере-капчером golden под этот дифф · два нита общности условно-байт-нейтрально) · **ru-target долг (слой 7, `isRuTarget`×11 прод-сайтов · `TokenizeCyrillic`×6 · ключ «ru» в санитайзере) — ЖДЁТ СВОЕГО ДИЗАЙН-ПАКА** (связывает только не-русский таргет, по текущей карте zh/ja/en→ru не срочен) · **ПАК-19 «голос и состояние» ВЫДАН 25.07** (`BACKEND_PACK19_VOICE_STATE_SESSION_PROMPT.md`, двухфазный; ниты общности едут ЕГО лендингом — D39.31 п.5) · **проекция пере-оплаты в `tmctl status` (НОВОЕ, из отчёта пака-18): спека §9 предлагает заменить булев `ConfigDrift` числом «N чанков, ~$X» — дёшево, `omitempty`, не сделано сознательно** · **не-долги, следующие несущие:** масштаб целой книги (волны/каденс/потолки/ETA на сотнях глав — гоняли максимум 5) · Ф2-механизмы (голос/состояние D21 · native-Gemini судья) · извлечение дискурс-норм/few-shot из ТЕЛ промтов (слой 2, форсинг = ja→ru) · ~~пак-16 ф.2~~ ЗАЛЕНДЕНА 25.07 · per-class исходы ремонта — схемное решение (класс не durable), принимается ВМЕСТЕ с включением петли · ниты общности (владелец 25.07) — **ОТЛОЖЕНЫ ПО ЗАМЕРУ (D39.31 п.5): едут на ближайший ПОЛНЫЙ `--resnapshot`**; для Detail-строк байт-нейтральной формы не существует определительно (дефолт шаблона обязан рендерить текущую строку). Прежняя формулировка: только в байт-нейтральной форме с доказательством исполнением (иначе `CheapGateVersion`/`pack.Version()` двигают снапшот стендовых книг и убивают $0-резюм драфта под замер остатка пака-16): Detail-строки чекеров → шаблоны/цитаты из данных (статический 时辰-текст в generic-файле соврёт второй паре) · множитель ×2 `lintTimeUnits` (`checkers.go:174`) → ключ данных. *Полигон:* ~~пакет-6 (размеченный набор чекеров)~~ **ОТРАБОТАН И ПРИНЯТ 26.07 (D39.39): 3015 позиций, 6 прогонов, $0; metrics.json воспроизведён побайтно; набор на стенде `books/gu-zhenren/labels/` = постоянный измерительный стенд чекеров; полигон-очереди НЕТ** (кандидаты следующего пакета: ёфикатор/санитайзер-классы не размечены — §6.5 отчёта; `dialogue_dash` на невиданном тексте; **веб-фетч терминолога — ресёрч-вопрос по D39.42 п.2: улучшает ли качество dst, какие источники легитимны, провенанс**) · ~~пакет 5 (факты ToS + 8 пингов)~~ **ОТРАБОТАН ЦЕЛИКОМ И ПРИНЯТ 25.07 (D39.29); все восемь пингов закрыты.** Исторический список закрытых пингов: (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); (7) `eval/README.md` — не тронут с 19.07 (пре-rerun2): освежить статус под пост-D39.22 (эксп закрыт · судейский риг-стандарт D39.7 · экстракция только `tmctl export`). > - **НАЙДЕНО СПЛОШНЫМ АУДИТОМ 25.07 (D39.34) — 23 позиции, что были ратифицированы, но не попали в трекер; каждая с диспозицией.** *(1) Обязательство, НЕ исполненное:* **флип `Gates.RegressionGuard.Enabled` (D38.4 п.5 «ОБЯЗАН включить» при сборке resnapshot) — ключа нет ни в одном шиппинг-конфиге ⇒ гейт false; rerun2 прошёл без построенной наблюдаемости** → едет обязательной строкой в пак, вызывающий ближайший resnapshot. *(2) Флипы гейтов за подписью владельца (остаются открытыми-с-записью):* coverage `enabled:false` (D12-Q4) · `postcheck_gate` в hard-gate требует пере-замера recall (D24.4+D28.1). *(3) Поглощено курсом:* заморозка «этапа B ~300 глав» (D26 п.1) — **снята D39.33** (масштаб последним), отдельной петлёй не считается. *(4) Открыто, вне «идеала»:* этапы Б+В спеки D15.2 (D33 п.5 «промт выдам после пере-прогона» — прогон был 23.07) — они про content-addressed resume/`guard_hash`, который D39.31 сознательно не строил · F3-остаток идемпотентности · `human_override` LOCK (D29 п.1г, в коде 0 вхождений) · морфо-гейты канцелярита и L1-лемматизация (Ф2, python-сайдкар) · полный OpenCC (0 вхождений) · опциональный пре-перевод гейт. *(5) Мелкие хвосты качества (собрать одним паком когда-нибудь):* ledger-очередь LOW/NOTE из D39.4 · остаток фикс-листа D23 п.4 и D28 п.3(б) · `editor-mono.md` DORMANT (ни в одном конфиге). *(6) Деньги/провайдеры (полигон):* вендор-чек префикс-кэша ZAI/GLM (на нём стоит вся кэш-экономика W1/Q2c) · продление `prices_checked` без правки чисел · scheduler-aware волны под peak-valley DeepSeek (прямой COGS-рычаг) · гейтнутые платные армы (edit-единица >3200 и др.) · wire-probe temperature в thinking-канале DeepSeek. *(7) Продукт/Ф3:* action-security gate перед выдачей tools/webfetch (D25 п.5) · планы research/22 (epub-tag-rewrite, Q7-леджер) · Gemini под-18 обязательство на конечный продукт. *(8) Вход в пак-19:* требование НАРРАТИВНОЙ гендер-аннотации (since_ch-смены + перспектива), а не булева поля — вписано в промт. > - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `archive/PROGRESS-2026-07-10-13.md` (D39.6-гигиена) · `archive/PROGRESS-2026-07-13-25.md` (слайс 25.07: стройка паков 11–16, rerun2). Записи ниже — живой хвост. +## Оркестратор №8 — ПАК-20: фаза 1 принята (D39.41), архитектура фазы 2 решена владельцем (D39.42 — терминолог), 26.07 + +Фаза-1 сессии закончилась спроектированным СТОПом: синк вскрыл 18 расхождений «доктрина↔код» (4 структурных тупика), корпус доков дал непостроенные ратифицированные ответы (двухрежимная эмиссия §C2-7 · M2 · журнал ревизий), а свои же пять P-решений сессия завалила адверсариальным ревью (9 блокеров). Приёмка воркфлоу (7 верификаторов, 46 клеймов): 39 CONFIRMED / 7 PARTIAL / 0 REFUTED; новая находка приёмки — `bankTokenBudget=144` впритык/отрицателен. Дальше владелец СИНКОМ выправил курс: моя ошибка — его давнее «кто переводит термины, возможно вебфетч, возможно новая роль» я отгородил констрейнтом вместо развилки; его архитектура (терминолог переводит весь смердженный банк по полным контекстам) ратифицирована D39.42 и легла в директиву фазы 2 (промт пака переписан). Направленная банкнота и ось `lane` НЕ строятся; инвариант №2 НЕ трогается (все строки банка фолдятся в версию); поздняя подпись = точечная ре-редактура по ключу со сметой. Полигону добавлен ресёрч-кандидат «веб-фетч терминолога». Урок в копилку: реплика владельца с идеей архитектуры — это вход в развилку, а не шум; «не ратифицировано» — повод принести ратификацию, а не отгородиться. + ## Оркестратор №8 — САНКЦИИ ВЛАДЕЛЬЦА (D39.38): выданы пак-20 «банк» и полигон-пакет-6 «размеченный набор»; очередь ратифицирована, 26.07 Владелец разобрал повестку: (1) петля ремонта — НЕ включается (замер 0 в её классах; вернуться при ненулевом остатке); (2) флаговый стоп — СТРОИМ, «ляжет в конечную архитектуру: отключение верификации и полное доверие бэкенду»; его вопросы об алгоритме банка (кто переводит кандидатов, сохраняется ли контекст, хватает ли рассуждающей модели) получили grounded-ответ: дизайн ратифицирован research/20→D39.6, расщеплён exp16→D39.10 — dst доставляет САМ переводчик черновика в контексте главы (рассуждающая модель, контекст бесплатен), верификация = подпись+trust-gate+пост-чек; недоделано ровно покрытие каналов (0/2, 1/2) — оно и есть ядро пака-20; (3) мандат «сессии синкуют имплементацию об документацию и код вокруг» — вшит шагом 0 пака-20 (таблица «источник ↔ код ↔ вердикт», расхождение = пинг) и переносится во все кодинг-промты; (4) полигону — пакет-6. Очередь: пак-20 → пак-19 → свип гипотез стартового промта/ресёрчей (владельцу был дан честный ответ «не уверен, что прошлись по всем») → добор идеала → масштаб → пилот. Выданы: `BACKEND_PACK20_BANK_TRUST_SESSION_PROMPT.md` · `POLYGON_PACKAGE6_CHECKER_LABELS_SESSION_PROMPT.md`; пак-19 получает пометку «после пака-20». diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 1259d4ad..15b09db9 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1080,3 +1080,13 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу **Приёмка исполнением (7 верификаторов, 46 клеймов, $0):** все несущие S-строки синка подтверждены кодом и исполнением (S1 — тест `TestRenderGlossaryBlock` PASS на `status:auto` + ⟨проверить⟩; S2 — вырез `Source:mined` из baseMemory + confirmed-only редактор = инертность на обоих проводах; S5 — срез банкноты не выполняется при выключенном гейте, ключа нет ни в одном конфиге; S8 — `contrast_path` не задан ни в одном тесте, тело майнинг-стопа `mining.go:40-102` не исполняется ни разу за сьюту, доказано подсчётом логов с позитивным контролем). Доктринальные цитаты Д1–Д8 сверены с первоисточниками; деньги пересчитаны из БД стенда тремя способами (verify $0.0161 / verify2 $0.0328, +104%); теорема FOI и Следствие B выдержали атаку (девятый путь не найден). PARTIAL-поправки — в ревью-шапке отчёта `docs/archive/reports/PACK20_BANK_DESIGN_2026-07-26.md`; весомые: цитата-парафраз в Д5 (овер-атрибуция), блокер 7 не грунтован текстом, посылка блокера 3 не предъявлена в отчёте. **Новая находка приёмки: бюджет банкноты `bankTokenBudget=144` по честной формуле движка впритык/отрицателен (худший блок пробы 142.6/147.2 est-токенов) — фазе 2 пере-считать.** **Статус: фаза 2 НЕ стартует** до решений владельца по блокирующим развилкам (следующий D-блок). Ключевое уточнение семантики от владельца (26.07, дословно по смыслу): флаг = ОПЦИОНАЛЬНАЯ ПОДПИСЬ — «можно запустить перевод так, чтоб сессия не останавливалась и не запрашивала верификацию банка, а просто как намайнит и закончит — шла в редактуру». Семантика D39.36 не пересматривается; сложность пака — не в стопе, а в том, ЧТО едет в провод, когда подпись пропущена (у большинства намайненных терминов нет dst — разъезд каналов 3% по построению; путь записи не существует; строки в проводе двигают хеши оплаченного). + +## D39.42 — Решения владельца по фазе 2 пака-20 (26.07): ядро — новая роль ТЕРМИНОЛОГ (переводит весь смердженный банк по полным контекстам после черновой волны); флаг = опциональный аппрув поверх его выхода; редактор ест неподписанное С ПОМЕТКОЙ в авто-режиме; банкнота отдельным файлом; смена банка = ТОЧЕЧНАЯ ре-редактура по ключу со сметой и согласием; веб-фетч в v1 НЕ входит. ✅ + +**Архитектура — словами владельца:** «мы намайнить в банк можем весь контекст, потому что есть черновые переводы всей книги сразу … дальше отрабатывает модель, которая видит весь контекст и ПЕРЕВОДИТ весь банк памяти сразу, далее начинают работу редакторы и у них уже есть готовый весь переведённый банк. Если аппрув опционален — просто иди в перевод, который в банке; если обязателен — пайплайн останавливается и ждёт правок». Это ложится на волновую архитектуру без перестройки: draft-волна → майнер (из ИСХОДНИКА) + банкнота (варианты из черновиков) → **терминолог** (не построен — та самая дырка покрытия 3%) → стоп/авто → edit-волна. Направленная банкнота из ядра пака УХОДИТ (терминолог закрывает покрытие адреснее); банкнота остаётся evidence-каналом. + +**Ратифицировано пунктами:** (1) **Терминолог** — роль в пар-паке; вход = смердженный банк (двусторонний $0-джойн майнер∪банкнота) + KWIC-контексты вхождений из исходника + варианты черновиков + Палладий + **жанровый словарь пары** (новые данные langpack: общепринятое индустрией — «культивация», не «совершенствование»; слова владельца: «не надо тащить чужой фан-канон, но надо тащить общепринятое»); выход = консолидированное dst на каждый терм (формула §C2 п.3, не мажоритарность) + провенанс + разброс; двухрежимная эмиссия §C2-7 (есть dst → `draft`, нет → `auto`); батчи, дешёвая модель, центы/книга. (2) **Веб-фетч в v1 НЕ входит** — полигону ресёрч-вопрос (улучшает ли, источники, провенанс); интерфейс роли закладывается расширяемым. (3) **Авто-режим**: неподписанные строки с dst едут редактору (и черновикам следующих прогонов) с маркером ⟨проверить⟩ (механизм D32/S1 готов); редакторский блок расширяется на не-Confirmed отдельной помеченной секцией; **ВСЕ строки банка фолдятся в версию памяти** ⇒ тихой пере-оплаты не существует как класса, **README-инвариант №2 НЕ трогается**, ось `lane`/P1 НЕ строится. (4) **Банкнота**: отдельный `translator-banknote.md` + `prompt_override` (книги без канала — $0, класс «таблица в экспорте» невозможен) + безусловный срез; бюджет 144 пере-считать (D39.41: впритык/отрицателен). (5) **Смена банка после оплаты** (поздняя подпись и любая правка) = пере-редактура ТОЛЬКО затронутых юнитов через `--resnapshot`-семантику (пере-пин $0 неизменных байт), со сметой «N юнитов, ~$X» ДО согласия — для честной сметы чинится P3 (проекция по contentHash + `sanitizer_stripped`); слова владельца: «если меняется банк — перезапускается редактура; вопрос насколько широко, на какие главы». + +**Уточнения к записанному:** D39.36 п.3 «в инъекцию идёт только CONFIRMED» — верно ТОЛЬКО для редакторского блока; блок переводчика рендерит не-Confirmed с маркером (S1, тест). Моё объяснение владельцу «пометка нужна главам 4–50 того же прогона» было неверным для волновой архитектуры — взято назад (в волне черновики готовы до майнинга; пометка живёт на edit-волне авто-режима и в черновиках следующих частей). research/20 §C2 «не-мажоритарность» и §B3 «evidence-файл» — код расходится осознанно (S10/S11): §C2-формула уезжает в терминолога, артефакт кандидатов остаётся в сторе (спека амендирована этим блоком). Р7 «auto→approved автоматом» — superseded семантикой владельца D39.36/39.42. + +**НЕ строить в фазе 2:** ось lane / durable-реестр P1 · ретирование `Gates.Banknote.Enabled` · направленная банкнота (вернуться по замеру покрытия терминолога) · неподвижная точка P5 · веб-фетч · M2-кэш (доктрина Д2 остаётся кандидатом на отдельную ратификацию). diff --git a/docs/research/20-bank-mining.md b/docs/research/20-bank-mining.md index a15b4d3a..024b38aa 100644 --- a/docs/research/20-bank-mining.md +++ b/docs/research/20-bank-mining.md @@ -1,5 +1,7 @@ # research/20 — Авто-формирование банка памяти книги из черновиков (W1.5 / банк-майнинг) +> **⚠ АМЕНДМЕНТ 26.07 (D39.41/D39.42, синк пака-20).** Два расхождения кода со спекой признаны и ратифицированы: **§B3 «отдельный evidence-файл кандидатов»** — кандидаты живут В СТОРЕ (`retrieval_state.banknote_detail`), файл не строится; **§C2 «консолидация не-мажоритарностью»** — в джойне карты подписи сегодня мажоритарность со смягчением (альтернативы в `note`), полная формула §C2 п.3 уезжает в роль ТЕРМИНОЛОГ (D39.42 п.1: переводит весь смердженный банк по контекстам после черновой волны). §C2 п.7 (двухрежимная эмиссия auto/draft) — ратифицированный контракт эмиссии терминолога. + > **РЕВЬЮ-ШАПКА ОРКЕСТРАТОРА (17.07, лендинг D39.6).** Верификация: **§A-хеш воспроизведён байт-в-байт** > (awk-команда отчёта → `7687d56a…` MATCH); несущие репо-клеймы спот-проверены по file:line > (injectivityCollisions `memory.go:809+`, rubyToCandidates `memseed.go:314+`, isFinal-only санитайзер,