151 lines
34 KiB
Markdown
151 lines
34 KiB
Markdown
# Целевая архитектура и дорожная карта (арх-ресет 2026-07-13)
|
||
|
||
> **Статус:** проектный документ оркестратора, ратифицирован **D39** (`05-decisions-log.md`). Рождён из арх-ресета
|
||
> (`../archive/prompts/ORCHESTRATOR_ARCH_RESET_PROMPT_2026-07-13.md`, 5 концернов владельца) и синк-аудита «сломанного телефона»
|
||
> (`../archive/architecture/08-sync-audit-ledger.md`, 65 находок, адверсариально верифицированы; архивирован 25.07 как отработанный). Решения владельца по подходу:
|
||
> **фазовый** (build-now ∥ ресёрч, пере-прогон после) + **слой пар языков = сеам сейчас, контент только zh→ru**.
|
||
>
|
||
> Это карта «куда и почему», а не пошаговая спека. Спеки — в хендофф-промтах сессий; контракт — в D-логе.
|
||
|
||
> ⚠ **КАК ЧИТАТЬ ШАПКУ (освежена 05.09 — оба пака 05.09 отражены в строках слоёв: `81a89e9` движковый «денежный стоп», акт D39.206; `7e2226a`+`3e84716` платформенный «пустить внутрь можно», акт D39.201).** Таблица «слой → статус → пак/D» ниже — единственный статус-борд этого файла: она БЬЁТ тело документа, а D-лог бьёт её. **Хроники лендингов паков здесь больше нет** — кто что построил и когда живёт в журнале решений: `05-decisions-log.md` + реестр `05-decisions-index.md` + слайсы `../archive/architecture/` (эры D39.100–D39.190 покрывают всю стройку платформы, шва, писателя книги и числа согласия).
|
||
> ⚠ **ЗАКОН РАСКРЫТИЯ (D39.181) — норма зоны `backend/`, а не пункт одного пака:** число, которое движок публикует, обязано ехать со СВОИМ БАЗИСОМ, а присутствие поля не может быть булевым признаком, если оно перестало им быть. Из него же — `config_drift_basis` в `status --json` и леджер доставки в кадре `finished` (`StreamVersion` 1.2, D39.182 §4). **D39.182** («деньги и честность выдачи») добавил класс BANK в разложение денег и `noteSourceVintage`.
|
||
> ⚠ **ПОСТРОЕНО, но в семь слоёв НЕ укладывается** (движковые оси рядом со слоями — читать шапку как полную нельзя без них): объёмный потолок оплаченной работы `--max-units`/`VolumeStop` (`backend/internal/pipeline/volume.go`, D39.170; ратифицированная единица продажи — D39.165 §1) · гейт схемы движка (`backend/internal/store/sqlgate_test.go`, D39.173: каждый SQL-оператор компилируется против схемы, поднятой продовой цепью миграций) · дверь правок банка `POST /books/{bookId}/bank/corrections` смонтирована синхронно (D39.162) · ключи деплоя доезжают до движка аргументом `--keys-file` (строка 211 ЗАКРЫТА, блокером живого прогона больше не является) · полоса прогресса СКВОЗНАЯ, подпись стадии — второе исключение границы (D39.162/163) · пере-проход можно КУПИТЬ (D39.166) · инъекция банка не теряется на провайдере с одним системным слотом (D39.164) · **ЧИСЛО СОГЛАСИЯ НА ПУТИ ВТОРОЙ ПОКУПКИ (03.09, D39.187):** пере-покупка прайсится по модели, которую стадия резолвит СЕЙЧАС, с округлением ВВЕРХ и оговоркой в тексте согласия (D39.150 п.1) — а **обещание точности снято с провода** во всех пяти местах, где стояло: контракт механизма теперь «не точность, а НАПРАВЛЕНИЕ ошибки — никогда не занизить молча»; фигура едет с базисом двумя новыми полями `status --json` (`rebill_historical_rows` · `rebill_model_moved_rows`) · **слот объёмного гранта (вторая половина строки 232):** юнит, начатый прежним прогоном и не отгруженный по оси `finalStageWave`, дописывается ВНЕ гранта и слота повторно не тратит ⚠ **следствие денежное и НЕ ратифицированное:** грант `--max-units N` оплачивает ДО 2N выходных юнитов (замер приёмки: грант 2 → четыре юнита, шесть вызовов провайдера), слово владельца 03.09 — «подумаем на этот счёт», до его решения `--max-units` держит СЛОТЫ, а деньги держит только `--ceiling-usd` (эррата 03.09-а к D39.170).
|
||
> ⚠ **Канон контракта — 0.12.0** (`D39.211`, лендинг 06.09: заказ по размеру перестал притворяться заказом в главах), не 0.11.0, не 0.10.0, не 0.9.0 и не 0.4.0. Носители — `docs/architecture/14-api-contract/openapi.yaml` и `platform/internal/httpapi/capabilities.go`, они сходятся гейтом.
|
||
>
|
||
> ⚠ **ПЛАТФОРМЕННЫЙ ШОВ — что построено 03.09 (D39.188, пак P13).** Оплаченный прогон продолжается на ТЕ деньги, за которые продан: `reopen` читает бюджет ИЗ ХОЛДА первой попытки, а прогон без холда отвечается ОШИБКОЙ, не цифрой (прежде бюджет пере-выводился по текущей ставке — `PD-168`) · **владение потоком переживает проход свипа:** чтение ОСТАНАВЛИВАЕТСЯ на чужом handshake'е (`ErrForeignStreamAhead`), потому что до этого чужие события ложились на оплаченную попытку — чужой `ceiling` ставил `paused` живому прогону, `unit_done` писал непокупленные главы (`PD-438`, major) · операторские ручки: `run unquarantine` и колонка QUARANTINE · условия хоста батареи ВЫВОДЯТСЯ из тестовых исходников (`make conditions`), а не держатся списком в прозе · два гейта в `platform/internal/gates/`: перечень условий против исходников и класс «тревожный ряд ушёл из счёта незамеченным». ⚠ **Бамп формы манифеста безопасного порядка деплоя НЕ ИМЕЕТ ни в одну сторону** (`PD-436`): гейт интейка — строгое равенство одной константе, окна двух форм нет ⇒ стоп-мир. Пока окно двух паков открыто, форма ЗАМОРОЖЕНА (D39.190 п.5).
|
||
>
|
||
> **ВХОДНАЯ ДВЕРЬ ШВА ПОСТРОЕНА** (D39.158): закон двери — `17-seam-inbound-law.md`, онтология банка, который она обслуживает, — `18-bank-ontology.md`. **Шапка — не переписывание: тело ниже = замысел арх-ресета 13.07**, и при расхождении тела с шапкой первична шапка.
|
||
> | Слой | Статус | Пак / 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; **включение платного пути = решение владельца по замеру остатка**; эмпирика контракта: диффы ОТЛОЖЕНЫ (D39.108, экспы 19/20; D21.4/D21.10 закрыты), full-regen ПОДТВЕРЖДЁН, точечная починка как ЗАМЕНА редактора отклонена и принята формой «механический пре-гейт ПЕРЕД редактором» (D39.117; строка 142, строка 106 понижена) | пак-16 (D39.24), **D39.108**, **D39.117** |
|
||
> | 4 Память | ✅ ПОСТРОЕН + ДОСТРОЕН паком-20 + ✅ **ВХОДНАЯ ДВЕРЬ ПОСТРОЕНА (D39.158)**: $0-глагол `tmctl bank-apply` (проекция `--dry-run`, всё-или-ничего, байтовый no-op идемпотентен), писатель решений `internal/membank/decisions.go`, стоп банка — ФЛАЖОК, который движок чтит сам (память предъявления `bank_stop_presented`, схема store v16), класс отказа 15 `write_incomplete`. Роли носителей и поток «источники → вид → проекции» — `18-bank-ontology.md`; состав пака-20 (ТЕРМИНОЛОГ · флаговый стоп `--verify-bank` · двухсекционная редакторская инъекция · точечная ре-редактура · банкнота отдельным шиппинг-файлом · языковой экран `target_script`) — D39.41–45/50–53; ⚠ D39.104 п.2 ВНЕСЁН (испр. 05.09): инъекция схлопнута в ЕДИНЫЙ закон-блок, маркер ⟨проверить⟩ с провода СНЯТ — отработано вайр-батчем, пак принят D39.199 (`74ffe4f`), строка 134 закрыта; жанровый словарь ОТМЕНЁН (D39.47) | пак-1 · пак-11 · **пак-20 (D39.41–45/47/50–53)** |
|
||
> | 5 Качество | ✅ детерм. часть: `QualityReport` · число/omission-гард · DC/пак-13-чекеры · repair-остаток; семантический span-судья/полярность — НЕ строился (защита = editor-swap, D38.4) | D39.2 · D38.3 · пак-13 (`2f91b04`) · пак-16 |
|
||
> | 6 Export | ✅ **ПЛАТФОРМЕННАЯ половина ПОСТРОЕНА 06.09** — что именно и с какой ценой, ОДНИМ носителем: `15-money-path.md` §3 (акт `D39.208`). Здесь только статус, механика не дублируется. ✅ ДВИЖКОВАЯ половина ПОСТРОЕНА: `checks.ExportNormalize` на каждом финале; санитайзер-классы strip+export · **писатель книги: `internal/bookfile` + `tmctl build` (EPUB 3 + txt, D39.175)**; холодный прогон 31.08 предъявил собранный EPUB настоящего перевода, `epubcheck` 0/0/0/0. ✅ **ПЛАТФОРМЕННАЯ половина ПОСТРОЕНА 04.09, ЦИКЛ ЗАМКНУТ ЖИВЬЁМ** (`adf5e53`, D39.194): пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API, `epubcheck` 5.3.0 на СКАЧАННОМ файле 0/0/0/0. Дверь — три адреса (`createExport`/`getExport`/`downloadExport`), `202`+`Location`, поллинг с `Retry-After`, Range 206, TTL с уборкой, идемпотентность. Проверка вместо счёта: `grep -rn 'createExport\|getExport' platform/internal/ --include=*.go` → НЕ пусто; операций в каноне 21, смонтировано **19** (испр. 05.09: `updateBook` смонтирован платформенным паком `7e2226a`). ⚠ **СТЕНА ДЕСЯТИ ГЛАВ СНЯТА 05.09, НО ПОЛ ОСТАЛСЯ — ДОЧИТАТЬ ДО КОНЦА ПО-ПРЕЖНЕМУ НЕЛЬЗЯ.** — движковый пак `81a89e9` (акт D39.206) снял стену: отказ резервации ЗАЩЁЛКИВАЕТ волну, а обязательный вызов ЖДЁТ settle; порог «короче десяти глав не переводится» СНЯТ, остаточный пол — одна резервация (~3 главы) и он ВЫВЕДЕН, не замерен. Разбор — `15-money-path.md`, греп `ЭРРАТА 05.09`. ⛔ **Инвариантный пол: даже при ОДНОМ воркере прирост потолка `2 × $0.03 = $0.06` меньше одной редакторской резервации (~$0.07), то есть ПОСЛЕДНИЕ ~2 ГЛАВЫ любой книги не покупаются** (`15-money-path.md`, греп `даже при ОДНОМ воркере`). Защёлка тут не помогает — она делает стоп штатным, а не финансирует последний вызов. Снимается ПЛАТФОРМЕННОЙ половиной (потолок ДЕНЬГАМИ, `D39.196`, строка 280), которая НЕ построена: `git grep -lE "StepMax|step_max" -- platform/` → пусто. ⚠ **Пол ВЫВЕДЕН, не замерен** (платного прогона не было — D39.206 п.6). ⇒ `PD-440` жив в ЭТОЙ половине: его волновая часть починена движком, денежная — нет | D39.2 · D38.3 · D39.175 · D39.178 |
|
||
> | 7 Гигиена | ✅ ПОСТРОЕН: реестр role→инъекция · вынос `foldModelWire` · снос сирот/`gatesEnabled` · **target-aware гейты ПО ДАННЫМ — П1 «цель-шов» (фаза 2, D39.64: `isRuTarget` удалён, `TargetActive`/`TargetScriptNonLatin`, токенизатор цели из `word_script`); остаток — ё-фолд/segmentation за подписью (бэклог-строка 14)** | D39.2 · паки 11–16 · **фаза 2 (D39.64)** |
|
||
>
|
||
> **Общность (фаза 2) ИСПОЛНЕНА И ПРИНЯТА — D39.64**, отчёт `../archive/reports/GENERALITY_PHASE2_2026-08-01.md`: П0 хеш эмбед-данных (`embedded_version` в снапшоте) · П1 цель-шов (слой 7) · П2 скрипт-шов источника (`lang-script.txt`) · П3 нарезка/оценка (один дом `DenseScript`) · П4 манифест-по-каналам (`packAlgoVersion` не бампался); голден вердикт-нейтрален (0/172); П5 майнер гейтится второй книгой; 9 флагов §5 — очередь владельца (бэклог-строка 14). **Карта языковой привязки ВСЕГО движка — `../archive/reports/GENERALITY_RESEARCH_2026-07-31.md` (D39.60)**; пак-19 «голос/состояние» — D39.54–56.
|
||
> **Снято из тела как прожитое, адреса — здесь.** §1 «как есть 13.07» (const-чанкер · glm-редактор · мёртвые `STMDepth`/`OverlapTokens` — ничего этого в коде больше нет): пофакторный разбор каждой находки — `../archive/architecture/08-sync-audit-ledger.md`. §4 «дорожная карта» отработана целиком: трек A = слои таблицы выше, трек B исполнен (exp15/exp16 — программа ЗАВЕРШЕНА, D39.7/D39.10), гейт пере-прогона пройден фактом rerun2 (D39.20; планка ≤2 НЕ пройдена, эксп ЗАКРЫТ D39.22, редактор = deepseek-v4-pro интерим). Канал B — пак-17 **ЗАКРЫТ ЦЕЛИКОМ** (дизайн D39.26 · стройка D39.27 · дельта D39.28: действия `route|allow|terminal`, `permissive`/`Stage.Channel`/D4.1-блок отставлены, `failover.go` удалён; вокабуляр = ПАРА `violence`/`sexually-explicit`; `accepts_labels` fail-closed); ⚠ **испр. 28.08 (D39.168): факты ToS предъявлены, поля ЗАПОЛНЕНЫ у трёх эндпоинтов (`backend/configs/models.yaml`, греп `accepts_labels`) — механизм fail-closed жив, но «пусты у всех» больше не факт.** Инженерная форма — **D39.25**: в движке НЕТ понятия «18+», есть generic content-labels × provider-capabilities, refusal причино-агностичен; «18+ линия» в §6 читать как продукт-линию, не механизм движка.
|
||
|
||
---
|
||
|
||
## 0. Стратегический вывод аудита (почему ресет)
|
||
|
||
Потолок художественности сейчас — **в НАШЕЙ организации пайплайна, а не в моделях.** Эмпирика (exp12–14b) и
|
||
код-аудит сошлись: дефекты, которые владелец назвал «крайне слабо художественно» (рубленые абзацы + «непонимание
|
||
связей»), рождаются из **нарезки, структуры редакторских проходов, контракта переводчик/редактор и отсутствия
|
||
меж-чанковой когезии** — всё это архитектура, не выбор модели. Это подтверждает трек «дешёвые модели сейчас»
|
||
(D30.7) и переопределяет источник следующего прироста качества: **он архитектурный.**
|
||
|
||
Ключевое свойство проблемы: **рычаги сцеплены.** Редактор репараграфизует ВНУТРИ ~1500-токенного чанка → он
|
||
физически не может чинить когезию через границу чанка → нарезка (концерн 2) жёстко ограничивает потолок
|
||
дискурс-переверстки, которую мы требуем от редактора (концерн 1). Поэтому чинить их порознь = снова получить
|
||
локальный оптимум на неверно нарезанном тексте (ровно «слабый тест» exp14). **Концерны 1, 2, 4 проектируются
|
||
вместе.**
|
||
|
||
## 0.1 Инвариант общности (поправка владельца, 2026-07-13) — НЕСУЩИЙ
|
||
|
||
**Цель — перевод ЛЮБОЙ книги, ЛЮБОЙ пары языков, написанной ПО-РАЗНОМУ.** Ни один компонент не смеет предполагать
|
||
структуру конкретной книги (蛊真人) или конкретную пару (zh→ru). Из этого:
|
||
- **Чанкер = ОБЩИЙ адаптивный модуль:** характеризует структуру КАЖДОГО входа в рантайме (плоский CJK line-per-
|
||
sentence · сцен-маркированный · длинно-абзацный европейский роман · ja-ранобэ · смешанный) → выбирает стратегию
|
||
границы → фоллбек-лестница. Он обязан работать корректно на всём спектре, а не на одной форме.
|
||
- **Разница «продукт» vs «эксперимент»** (моя ошибка, которую поправил владелец): чтобы ИЗМЕРИТЬ рычаг эмпирикой,
|
||
нужен тест-текст, который его задействует — это ограничение ДИЗАЙНА ЭКСПЕРИМЕНТА (валидируй на разнообразном
|
||
корпусе), и оно **никогда** не переносится в scope продукта («книга плоская → урежем нарезку» — ЗАПРЕЩЕНО).
|
||
- **Пер-язык (слой 2)** — та же логика: строим ОБЩИЙ сеам, контент наполняем инкрементально (zh→ru сейчас); новая
|
||
книга/пара = данные (пакет конвенций), не переделка кода. «Бэкенд только под русский/под одну книгу» = антицель.
|
||
- **Эмпирика валидирует ОБЩНОСТЬ** (корректность+near-оптимум на структуро- и языко-разнообразном корпусе), не
|
||
оптимизирует под книгу на стенде.
|
||
|
||
---
|
||
|
||
## 1. Снимок «как есть» на 13.07 — СНЯТ
|
||
|
||
Раздел описывал состояние ДО стройки (const-бюджет чанкера 1500 в символах источника · билингв-редактор glm-5 с 4 мандатами одной перегенерацией · мёртвые config-кнобы `STMDepth`/`OverlapTokens` · zh→ru-промпты фикс-путём) — ничего этого в коде больше нет, статусы построенного см. в таблице шапки. Пофакторный разбор того состояния, находка за находкой (`L1-*`/`L2-*`/`L3-*`/`L4-*`), — `../archive/architecture/08-sync-audit-ledger.md`, карта находок → слои — §3 ниже. Столпы, которые аудит велел НЕ ломать (деньги/durability, snapshot-дисциплина, эталонные сеамы `config→stage-list` и `baseRequestLog`, дословный перенос техник Ван Цуй, структурные few-shot, разделение переводчик/редактор), — §6.
|
||
|
||
---
|
||
|
||
## 2. Целевая архитектура — 7 слоёв с чистыми сеамами
|
||
|
||
> ⚠ **ЧИТАТЬ КАК ЗАМЫСЕЛ 13.07, А НЕ КАК ДЕЙСТВУЮЩЕЕ ПРЕДПИСАНИЕ** (баннер дописан 22.08 аудитом
|
||
> доков: у §1 и §4 такие оговорки были, у §2 не было — и его читали как норму). Что этот раздел
|
||
> предписывает, а стройка с тех пор отменила, видно из ШАПКИ-ТАБЛИЦЫ ЭТОГО ЖЕ ФАЙЛА: например
|
||
> меж-единичная когезия («оживить `STMDepth`/`OverlapTokens`») — эти кнобы УДАЛЕНЫ, эффекты замерены
|
||
> под флором и когезия НЕ строится (D39.7/D39.8, слой 1). **При расхождении раздела с шапкой первична
|
||
> шапка, при расхождении шапки с D-логом — D-лог.**
|
||
|
||
Вместо 65 заплаток — слои, каждый первоклассный, независимо конфигурируемый и снапшот-folded. Ровно они закрывают
|
||
5 концернов.
|
||
|
||
### Слой 1 — Сегментация (чанкер-модуль) · концерны 1+2
|
||
- Размер бюджета — **снапшот-folded config-кноб в ВЫХОДНЫХ токенах** (не const, не в símволах исходника), чтобы
|
||
пре-регистрированная кривая полигона могла приземлиться как настройка. Механизм fold уже есть (`coverageSnap`).
|
||
- **Стратегия границы** — first-class ось: `greedy` (как сейчас) | `logical` (сцена/диалог/тема) — с фоллбек-лестницей
|
||
и инвариантом «никогда не резать предложение». Наполнение стратегии `logical` — по интернет-best-practices + ресёрч.
|
||
- **Декаплинг edit-единицы от draft-единицы** (бывший фантомный «D35.7»): черновик — мелкий чанк (COGS/coverage/
|
||
выравнивание); reflow/edit — крупная дискурс-единица (глава/сцена), где антецеденты со-встречаются.
|
||
- **Меж-единичная когезия**: оживить `STMDepth`/`OverlapTokens` — running bilingual summary + carryover соседних
|
||
единиц как read-only контекст. (⚠ exp14 «крупнее лучше» и research/18 §A «мелкий чанк + carryover» **конфликтуют** —
|
||
решает ресёрч-матрица, см. §4.)
|
||
|
||
### Слой 2 — Конвенции пары языков (pair-keyed pack) · концерн 4
|
||
|
||
> Консолидированная заметка по всей промпт-теме (инвентарь, статусы, открытое) — `10-prompt-architecture.md`.
|
||
- Версионируемый пакет, ключ `src→tgt[×genre]`, снапшот-folded (правка = громкий `--resnapshot`, как `chunkerVersion`).
|
||
- Держит: дискурс-правила, few-shot (в языке пары), транскрипцию/хонорифики, **и язык самого промпта** (свойство
|
||
пакета — не хардкод русского).
|
||
- Стадия резолвит промпт/правила из слоя по паре книги, а не из фикс-пути. `Book.LangPair()` оживает как ось выбора.
|
||
- **Высота сейчас (решение владельца):** построить СЕАМ, наполнить только zh→ru; другие пары — когда придёт книга.
|
||
Убирает латентный баг (ja-книга едет через «китайский паратаксис»-промпт) и разблокирует расширяемость дёшево.
|
||
- **⟶ Что из этого ПОСТРОЕНО** (статусы и номера паков — таблица шапки): данные-часть вынесена в `internal/lang`+`configs/langpacks/`
|
||
с компиль-enforced границей и резолвом по `Book.LangPair()` (D39.16), пар-калибровки `configs/pairs/` и промпт-конвенция
|
||
`prompts/<пара>/<роль>.md` — паки 14/15 (D39.23г). Открытым остаётся извлечение правил из ТЕЛА промтов (дискурс-нормы, few-shot);
|
||
форсинг-функция — ja→ru-реплика. `x/text/language.Tag` для гейт-предикатов ОТВЕРГНУТ (CLDR-инстабильность в снапшот-вердиктах) —
|
||
исполнено иначе D39.64: `TargetActive`/`TargetScriptNonLatin` из данных пары.
|
||
|
||
### Слой 3 — Контракт переводчик/редактор (роли = узкие проходы) · концерн 1
|
||
- research/07 предписывает **узкие мандаты + диффы, а не полную перегенерацию** — сейчас ровно наоборот (4 мандата,
|
||
full-regen), что и породило хвост инверсий.
|
||
- Целевой контракт: переводчик отдаёт **структурный ~верный черновик**; редактор — узкая правка смысла+стиля,
|
||
в идеале **diff-based** (search/replace-спаны + детерм. Go-apply → ограниченный blast-radius, дешевле, аудируемо,
|
||
структурно omission-safe). Между проходами — гейт.
|
||
- ⚠ **Арм «переводчик отдаёт структуру» ДО СИХ ПОР не тестировался** — это Q4c (reflow отдельным проходом), единственное неизмеренное плечо; измерены только соседи: Q4a (верность на translate-стадии не покупается, D39.9) и Q4b (диффы ОТЛОЖЕНЫ, D39.108), топологию решил эксп-21 (D39.117). ⚠ испр. 02.09: «решает ресёрч-матрица §4» СНЯТО — §4 отработан, маршрут вопроса теперь `10-prompt-architecture.md` §4 п.4 + `experiments/19-editor-contract-q4b.md` §«Границы».
|
||
|
||
### Слои 4–7 — тело замысла СНЯТО, адреса здесь
|
||
|
||
Слой 4 «Память» · 5 «Измерение качества в контуре» · 6 «Export-contract» · 7 «Гигиена расширяемости» стояли здесь предписанием 13.07; всё предписанное построено либо отменено, действующие статусы с номерами паков — **строки 4–7 шапки-таблицы**, пофакторный разбор находок с диспозициями — `../archive/architecture/08-sync-audit-ledger.md`, эталонные сеамы `config→stage-list`/`baseRequestLog` — §1 и §6. Единственный код-факт, которого шапка не несёт: редакторский блок памяти рендерится src→dst-мэппингом, CONFIRMED-only, форма зафолжена в снапшот — D1-моно-рационализация убрана, «давать ли билингв-редактору src→dst» больше не открытый вопрос (`internal/membank/memory.go`, греп `RenderEditorConstraintBlock` и `RenderFormatVersion`; D39.13, пак-11 WS2).
|
||
|
||
---
|
||
|
||
## 3. Карта находок → слои (полный ледджер — `../archive/architecture/08-sync-audit-ledger.md`)
|
||
|
||
Пофамильный перечень `L1-*`…`L8-*`/`H1`–`H5`/`H12`/`H14` по слоям 1–7 СНЯТ: все они закрыты стройкой (статусы — шапка-таблица), а тела находок с диспозициями живут в ледджере. Живой остаток — только процессная строка:
|
||
|
||
| Слой | Несущие находки (HIGH, CONFIRMED) |
|
||
|---|---|
|
||
| Процесс (к.5) | `H18-no-standing-findings-ledger-process` + незакрытые владельческие: `H6` running-summary, `H7` input-size-limit, `H8` abuse-prescreen, `H9` parallelism/speed (V4-п1), `H15` glossary-auto-build (V4-п4), `H10` user-stop, `H16` self-improvement |
|
||
|
||
---
|
||
|
||
## 4. Дорожная карта 13.07 — ОТРАБОТАНА (тело снято)
|
||
|
||
Статус обоих треков и гейта пере-прогона — в шапке; фантом «D35.7» формализован (D39 п.4, разбор `../archive/architecture/08-sync-audit-ledger.md`). Что из трека B переживает статус: граница `logical` — **не рычаг НА ЭТОМ МАТЕРИАЛЕ**, когезия под флором (**D39.7/D39.10**), и **скоуп замера — книги класса zh-вебновелла, а не весь спектр §0.1**; конфликт exp14 ↔ research/18 §A решён этими же нотами; методика-guard замеров — **D32.4** (fidelity-first · leave-one-out · катастроф-скрин: полигон трижды собирал ложную сходимость).
|
||
|
||
⚠ Ограничение дизайна эксперимента, которое НИКОГДА не переносится в продукт (§0.1): плоский тест-срез не задействует рычаги границы/когезии, поэтому «не сработало на нём» ≠ «не нужно в движке».
|
||
---
|
||
|
||
## 5. Процесс против «сломанного телефона» (концерн 5)
|
||
|
||
Постоянный **findings-ledger** — замысел ИСПОЛНЕН и повторяется: первый экземпляр `../archive/architecture/08-sync-audit-ledger.md` (там же словарь диспозиций и правило «трекать до закрытия»), сегодня — `../DOC_CLEANUP_PLAN.md` (⚠ испр. 05.09: `DOC_REVISION_FINDINGS.md` живым больше не существует, он в `../archive/reports/DOC_REVISION_FINDINGS_2026-09-02.md`; живой findings-ledger сегодня — строки бэклога), `backend/docs/SEAM_PACK_FINDINGS.md`, реестр нот D39.126.
|
||
|
||
⚠ **Живой остаток:** вопросы «к бэкенду» из ресёрча маршрута обратно так и не получили (`research/18` §D, п.7 помечен «вопрос бэкенду»).
|
||
|
||
---
|
||
|
||
## 6. Что НЕ демонтируется
|
||
|
||
Столпы (деньги/durability, snapshot-дисциплина, детерминированный банк памяти как ставка, echo-гейт, 18+ линия,
|
||
дешёвый трек, конфиг-первое ядро) — целы. Целевая архитектура — это **декомпозиция и до-стройка** существующей
|
||
машинерии по чистым сеамам, а не переписывание. Фронтир-тир остаётся «потом» (новый yaml, не переделка кода).
|