399 lines
222 KiB
Markdown
399 lines
222 KiB
Markdown
# Журнал решений оркестратора — контракт D1–D39.139 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||
|
||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
|
||
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+).
|
||
> ⚠ **Эррата 15.08 (D39.132):** D39.131 п.2(а) перечисляет полосу отказов «10 конфиг · 11 источник · 12 лок · 19 безымянный» — читать через D39.132 п.2(г): полоса ДОПОЛНЕНА **exit 13 = `schema_mismatch`** (~~обе зоны сошлись на числе независимо~~; ратифицирован направлением, ФИНАЛИЗИРОВАН приёмкой D39.134).
|
||
> ⚠ **Эррата 15.08-б (D39.134 п.2а, вписана по аудиту корпуса):** клейм «зоны сошлись на 13 НЕЗАВИСИМО» (строкой выше и в D39.132 п.2г) СНЯТ — платформа прочитала число из незакоммиченного дерева движка и сама это записала (`platform/internal/ingest/exit.go:63-64`); на силу ратификации не влияет.
|
||
> ⚠ **Эррата 15.08-в (D39.136 п.5):** форма контракт-ревью «фазный воркфлоу оркестратора» ОТМЕНЕНА словом владельца тем же днём — исполняет ОТДЕЛЬНАЯ СЕССИЯ со своим онбордингом (норма D39.120 п.2; оркестратор — автор части ратификаций 0.2.3, author≠reviewer); запущенная воркфлоу-фаза 1 остановлена, её результаты выброшены; промт — `docs/CONTRACT_REVIEW_SESSION_PROMPT.md`.
|
||
> ⚠ **Навигация (актуализация 07.08, эра D39.1xx):** append-only-дисциплина (D23.3) означает, что
|
||
> НЕВЕРНЫЙ ФАКТ внутри старой ноты не переписывается, а получает эрратау — и тогда он опасен ровно
|
||
> тем, что грепающий его найдёт ПЕРВЫМ, а эрратау ниже может не дочитать. Поэтому поправки к фактам
|
||
> живут ЗДЕСЬ, в карте, а не только в хвосте: **D39.109 п.3 читать через D39.112 п.2(а)** («30 суток
|
||
> — не буква NIST: SHALL требует установить overall-таймаут, 30 суток это SHOULD; сбрасывает ли его
|
||
> успешная ре-аутентификация, NIST не говорит — наш жёсткий предел это НАШ выбор, строже нормы») ·
|
||
> **D39.109 п.4 читать через D39.106 п.3** (PD-59 superseded, пайп-путь `supervisor.go` = дев-режим)
|
||
> · **D39.109 п.1 и «живой уязвимости не нашла» читать через D39.112 п.2(в)** (отказ в обслуживании
|
||
> входа ЕСТЬ — PD-80) · **D39.110 п.1 «дословно по смыслу» читать как ПЕРЕСКАЗ** решения, не цитату ·
|
||
> **D39.108 (продуктовый вывод «второй проход на dspro отрицателен», эксп-20 §5.2 «со слов») читать
|
||
> через D39.117 п.4** — опровергнут эксп-21 честным ригом: `A/F3` +2.50 Holm 0.0004, топология
|
||
> подтверждена, жильцы неразличимы · **D39.113 (таблица потерь: «правки промта — параллельный
|
||
> оркестратор») читать через D39.117 п.7** — ошибочная атрибуция: правки параллельного не терялись
|
||
> (его HEAD — финальная версия); чьи модификации были в дереве — достоверно неизвестно.
|
||
|
||
> ⚠ **Навигация (актуализация 04.08):** два supersede-указателя эры D39.9x: **D39.88/D39.84 п.8 (право самокоммита фронта/платформы) → отозвано, коммитит ТОЛЬКО оркестратор** (D39.98 п.3; тела переписаны на месте с санкцией владельца, pre-rewrite — git `2b166b7`) · **норма 30.07 «короткая приёмка» → амендирована владельцем 03.08: приёмка всегда адверсариальная** (носитель — промт оркестратора §Анти-паттерны + D39.101 п.1) — упоминания «короткой приёмки» в телах читать через эту пометку · **двухсекционная редакторская инъекция и смягчающая роль маркера ⟨проверить⟩ → доктрина инжекта D39.104**: банк на проводе = ЗАКОН для всех ролей независимо от статуса строки, право «перевести иначе» упразднено, блок редактора — ЕДИНЫЙ, маркер с провода снимается (статусы строк и подписная таблица не меняются; внесение в движок — строка 134 после пробы 18) — упоминания двухсекционки/смягчения в телах читать через это.
|
||
> ⚠ **РЕЕСТР ВСЕХ НОТ (карта актуальности v2) — [`05-decisions-index.md`](05-decisions-index.md):** одна строка на ноту (№ · дата · суть · статус жив/частично/superseded→кем · где тело), покрытие ВСЕХ нот целиком (голова — по титулу реестра); полноту сторожит `docs/scripts/counts.py --check`. Прозаические списки прежних ревизий («полностью superseded» · «частично амендировано» · «живое ядро» — покрывали только D1–D39.28) пересобраны туда ПОСТРОЧНО докс-паком 167 (09.08, оркестратор №16); тела нот не тронуты — они дословно здесь и в слайсах. Новые ноты аппендятся В ХВОСТ живого файла (**свежая голова — С ХВОСТА**); сводка головы и очередь — CURRENT-STATE в `../PROGRESS.md`.
|
||
> ⚠ **Форма эрраты впредь — ОДНА: навигационная пометка в этой шапке** (D39.125 п.3; правка тел задним числом — против D23.3). Прижизненные правки-на-месте остаются с маркерами по месту и новыми не множатся: D39.110 п.2(в) («⚠ ИСПРАВЛЕНО 08.08» → D39.115) · D39.112 п.2(а) (поправка к поправке тем же днём) · D39.98 п.3 (тела D39.84 п.8/D39.88 переписаны с санкцией владельца, pre-rewrite `2b166b7`).
|
||
|
||
|
||
---
|
||
|
||
|
||
> **⟶ ТЕЛА ЗАКРЫТЫХ НОТ — В СЛАЙСАХ `docs/archive/architecture/05-decisions-*.md` (D39.125):** `D1-D38` · `D39-arch-reset` (D39–D39.19) · `D39-20-58` · `D39-59-90` · `D39-91-105`. Грепай номер СНАЧАЛА здесь (живые тела + карта + эрраты), затем в слайсах. В живом файле телом остались: D22 · D25 · D29 · D30 · D39.25 · 30 · 33 · 42 · 47 · 58 · 62 · 63 · 64 · 69 · 70 · 81 · 84 · 85 · 93 · 99 · 100 · 102 · 104 и вся голова D39.106+. **Статус/суть КАЖДОГО номера — реестр [`05-decisions-index.md`](05-decisions-index.md).**
|
||
|
||
## D22. Приёмка пакетов «бэкенд №3» и «полигон-erotica» + развязки 18+/эха/L3 (10.07, оркестратор). ✅
|
||
|
||
Внешнее ревью обоих пакетов (8 ревьюеров, всё исполнением: go build/vet/test -race + 11 мутационных ревертов в scratchpad-копии; пересчёт exp11 из сырья поштучно независимой репликой классификатора; Fisher-статистика на клеймах; вендор-цены по официальным страницам с датами). Вердикты: **оба ACCEPT_WITH_FIXES, залендены (e1fcee4, 3551997)**; микро-дефекты журнала исправлены оркестратором (заголовок пакета-2 восстановлен; счёт диффа бэкенда 20 файлов +860/−143).
|
||
|
||
1. **D14.4 ЗАКРЫТ — последний critical проекта.** 18+ эмпирика полна: violence (exp10) + erotica по трём парам/регистрам (exp11). Mistral-дефолт канала B подтверждён 18/18 на классике/вебновелле/романе; 0 content-отказов у всех переводчиков (0/18×5 армов).
|
||
2. **Спека D15.2: v3 принята с двумя ОБЯЗАТЕЛЬНЫМИ амендментами (v3.1) до реализации.** (а) `Book.SourceLang/TargetLang` → verdictSnapshotID: ревью сконструировало и ИСПОЛНИЛО stale-hit, который v3 пропускает (языки — вердикт-входы вне рендера: cjk-гейт/coverage-коридоры; `editor.md` не рендерит `{{target_lang}}` → content_hash их не ловит; на этой оси v3 была СЛАБЕЕ текущего snapshotID, клейм «нет ре-открытия stale-serve» опровергнут); правило §4 переформулировать: судьбу обязано получить ЛЮБОЕ brief-поле, потребляемое вне рендера. (б) cache_ttl-противоречие: `Context.CacheTTL` демотировать до advisory (wire-инертен — не доходит ни до одного клиента) либо честно признать полную переоплату; `prov.CacheTTL` — в маппинг §4. Плюс до реализации: axis-sensitivity-тест RequestHash (флип role/stage меняет хеш — сейчас мутация «удалить role» выживает весь сьют); абзац «паритетные не-цели» в §8 (classify-Source для editor-строк; Retries/Escal.BudgetUSD вне хешей; транспорт); line-refs обновить. Отклонение YoPolicy/StyleAllowlist → verdictSnapshotID (консервативнее подсказки D20.1c, цена $0) — **ратифицировано**. Узкий клейм §3.3 (guard ⊇ stageSnap ∪ wire-поля) подтверждён поле-за-полем.
|
||
3. **Деньги Gemini: `reasoning: additive_total` РАТИФИЦИРОВАН** — закрыт недоучёт 146×/вызов (thinking только в `total_tokens`; settle деривит total−prompt−completion; mutation-hardened; кэш не задваивается). Условия до заводки Gemini-стадии в прод: $0.01-проба «thinking ⊆ max_tokens» на 3.1-pro-preview (резерв для additive_total сознательно 0 — допущение проверено только на 2.5-flash; пробой потолка ограничен одним вызовом), негативный кейс деривации (total<prompt+completion — мутация гарда сейчас выживает), квирк-строка в exp00. Экспозиция Ф1 нулевая (gemini не на wire-пути дефолт-конфига).
|
||
4. **D3-текст исправлен:** апекс = `gemini-3.1-pro-preview` (голый → 404; квирк был ратифицирован 04.07 — синк живых доков по grep-списку ревью выполнен). **Цена Mistral $0.5/$1.5 (Large 3) закрыта** тройной сходимостью: полигон (зеркала) + бэкенд (/pricing/api) + ревью (вендор-страница); $2/$6 = legacy Large 2 (ретайр 31.05.2026). Вопрос №3 бэкенда закрыт.
|
||
5. **D19.1 — register-оговорка (амендмент):** «reasoning-ON снимает эхо grok» подтверждено для СОВРЕМЕННОЙ прозы (совр. zh-вебновелла 0/10 exp10; совр. ja 1/6; en 0/6), но на архаичной плотно-ханьской (金瓶梅, минский байхуа, упрощ. графика) НЕ спасает: **4/6 verbatim при reasoning_tokens 349–847** (vs совр. zh p=0.008; vs ja p=0.12 — не значимо; ON vs OFF на архаике неразличимы p=0.28; для OFF регистр-эффекта нет p=0.79). «Регистр входа» как общий закон — рабочая гипотеза до контрольных ячеек (дешёвый PD-контроль: совр.-zh-эротика + violence-пассажи 水滸傳 — полигону, не срочно). Следствия: echo-гейт обязателен на ВСЕХ конфигурациях включая reasoning-ON (D19.2 подтверждён); эскалация на grok-ON — НЕ лекарство от эха на архаичных zh (echo-rate хопа ~2/3 — жжёт бюджет на почти гарантированный ре-флаг); для приёмочной 蛊真人 (совр. вебновелла) D19.1 в силе. Квирк-строка дописана.
|
||
6. **Судьи 18+ (сужение exp10/D19.1):** формула «судьи 18+ = Grok+Gemini, замена не нужна» **ОТМЕНЕНА для эротики**: Gemini fail-closed на графичной эротике (8× `PROHIBITED_CONTENT` wire-verified; фильтр неконфигурируем — native API не спасёт; на violence/SFW Gemini остаётся). **Grok — первичный судья эротики для НЕ-grok переводов.** Дублёр НЕ ратифицирован: gpt-5-mini на эротике не мерен (и ушёл с прайс-страницы), а D13.3-коллизия оставляет grok-эскалированные 18+ чанки вовсе без померенного судьи → **проба-гейт (полигону, центы, материал уже в eval/data):** gpt-5-mini + минимум один не-Google/не-xAI кандидат (mistral-судья для grok-выходов; kimi/glm после ToS-чека) на 18 Mistral- и 13 чистых grok-ON-переводах; пре-регистрировать refusal-rate и agreement.
|
||
7. **L3-скрин РАТИФИЦИРОВАН как задача (рамка, не дизайн).** Ключевой факт exp11: отказ провайдера — НЕ сигнал уровня (0/18 на L2-explicit; DeepSeek переводит против собственного ToS) → пре-скрин — не «глубина обороны», а единственная автоматическая линия L3 (сегодня линию держит только ручная дисциплина корпуса/сида). Рамка: (а) per-chunk скрин на ingest для `adult:true` книг ДО любого wire-вызова (детерминированный лексикон-префильтр + локальный классификатор); (б) чек перед эскалационным хопом; (в) fail-closed: неэскалируемый терминальный флаг + человек, redrive только с явным ack; (г) НЕ реализовывать без спеки+метрики приёмки классификатора (FN-rate на размеченной пробе; методику сидируют minor-marker-скрины corpus_build; закрывает дыру стратревью §4.6/§9.12). Спека — бэкенд-пакет после рефакторинга; ОБЯЗАТЕЛЕН до первой erotica-книги в проде (приёмку 蛊真人 не блокирует). Настройка «переводить L3» — отклонена владельцем 10.07.
|
||
8. **Fix-лист полигону (пакет №4):** (а) major: матчер content-filter подстрокой + самотест на составной `'content_filter: PROHIBITED_CONTENT'` (сейчас 8/8 отказов лежат `behaviour='empty'` — латентная мина классификации); (б) major: параметризовать язык/жанр судейского промпта `explicit_judges.py` (ja/en-fidelity сняты под zh-рамкой — переснять при переиспользовании); (в) мигрировать судью `memory_eval.py` (инлайн 2.5-flash EOL 16.10 + двойной `extra_body` + нет 404-ретрая — ружьё на стене пилота); (г) U+FF70 из kana-корзины + parity-кейс с ー; (д) append-only провенанс: ретраи — отдельным файлом/superseded-полем, error-записи не удалять; (е) judge-raw без `[:600]` или оговорка; (ж) проба судьи-дублёра (п.6) + fidelity-хвост P4 (висит) + wire-аудит пре-шаг temp-свипа (D21.9) + контрольные ячейки регистра (п.5, не срочно).
|
||
9. **Fix-лист бэкенду (в реализационный пакет D15.2, попутно):** v3.1-амендменты (п.2); CLI-тест проводки `redrive --resnapshot` (хедлайн-фикс без покрытия — мутация `_ = resnapshot` выживает); axis-тест RequestHash; негативный кейс additive_total; комментарии `models.yaml` «native Gemini для судьи 18+ — Ф2» устарели против exp11 (поправить при следующем касании); опц. smoke-тест LoadModels на боевом yaml.
|
||
10. **Кодифицировано:** transient-прогоны в ЧУЖОЙ зоне — только в копии вне рабочего дерева (полигон гонял go test в живом backend/ при чужих незакоммиченных правках — обошлось, но впредь запрещено).
|
||
11. **Приёмка Ф1 разблокирована полностью:** сид финализирован (白凝冰 gender=hidden, 49 записей чисто — воспроизведено ревью боевым loader'ом), цепочка D3/escalate_to заведены, деньги Gemini честны, D14.4 закрыт. Приёмочная сессия ОБЯЗАНА выставить `escalation.budget_usd>0` (иначе echo-эскалация черновика D18 не стреляет). Очередь предложена: приёмка → бэкенд-№4 (рефакторинг, промт выдан) → GPT-восхождение (промт выдан); порядок приёмка↔рефакторинг — за владельцем.
|
||
|
||
## D25. Приёмка research/17 (внешняя критика GPT-5.6 «восхождение»): вердикт и абсорбция (11.07, оркестратор). ✅
|
||
|
||
Ревью по мандату владельца «воспринять критично» (воркфлоу 12 агентов: 19 первоисточников по живым URL — 0 несуществующих/чужих; протокол-аудит анти-якорения; аудит ~30 line-refs; red-team 11 строк §C против контракта; аудит §D/«Итога»): **ACCEPT_WITH_FIXES, залендено (a148f41) с ревью-шапкой** — правила чтения там: §B2/«Итог» переграждены в PLAUSIBLE (ценностные «чей сильнее» ≠ CONFIRMED по его же §1); конвергенция §A↔проект на осях, засеянных нашим мандатом, НЕ считается независимым подтверждением; анти-якорение критиком соблюдено (лексический аудит + errata-без-правки-§A); критик не видел ни кода, ни результатов этапа A. Решения по абсорбции:
|
||
|
||
1. **Release-state контракт (§C-R1) — ПРИНЯТ КАК ЗАДАЧА С ГЕЙТОМ** (единственный blocker-класс вопрос совсем без D-решения): лестница `run_complete / structurally_complete / quality_reviewed / publishable`; детерминированный fail-closed экспорт для структурных/policy-дыр; semantic-флаги — только через audited waiver. Ложится на disposition/паспорта D12 + Ф1-задачу экспорта. Ратифицировать при постройке читательского экспорта, ДО первого reader-facing артефакта (этап B не гейтит — его экспорт owner-facing). Семантика «publishable» и право подписи waiver — владельцу. Живой якорь уже есть: экспорт этапа A несёт флагнутые чанки маркированными zh-плейсхолдерами — «run complete» ≠ «publishable» продемонстрировано.
|
||
2. **Fidelity evidence cascade (R2) — ПРИНЯТ КАК Ф2-ЭКСПЕРИМЕНТ, SHADOW**: минимальные пары 100–150 (естественные + контрфактуальные: отрицание, агент/пациенс, число, род, модальность), обязательная случайная выборка unflagged, метрики corrected recall/precision + review-minutes/error; в гейт — только после доказанного utility. **Гейт очерёдности: НЕ вперёд пилота Ф2.5** (D1.2 привязывает замер C1 к живому билингвальному судье пилота; каскад конкурирует за самый дефицитный ресурс — билингв-якорь). Подготовку пар совместить с корпус-подготовкой пилота (полигон).
|
||
3. **Sequential-repeat судьи (R7) — амендмент D13.3 ТОЛЬКО как вложенный анализ**: решающие вердикты пилота остаются полными 11+ со свапом (пре-регистрация не трогается); prefix-анализ 1/3/5 vs full-11 считается из ТЕХ ЖЕ данных (cluster bootstrap по айтемам, $0 сверху); sequential-stopping как протокол — только пост-пилот/production после этой валидации. Как замена решающего протокола — ОТКЛОНЁН.
|
||
4. **L3 (R5) — расширения в спеку D22.7; методика валидации — вопрос владельцу.** В спеку: versioned policy, book/entity-контекст (cross-chunk возраст/алиасы/отрицание/цитаты-бэкстори), тройной выход `adult/prohibited/uncertain`, terminal uncertainty, human-confirm всех релевантных сцен первых adult-книг. Требование «~300 positive cases для ≥99% sensitivity» СТАЛКИВАЕТСЯ с гардрейлом «L3 не обрабатывать/не анализировать»: допустимый путь валидации (синтетические маркер-прокси / внешние размеченные бенчи / human-only контроль первых книг) и численный FN-bound — решения владельца при приёмке спеки.
|
||
5. **Trust boundary (R10) — В КОНТРАКТ немедленно** (стоимость $0): текст книги и любая веб-выдача = untrusted DATA, никогда — инструкции; translator/editor-роли не имеют tools/секретов/исходящих действий (сегодня выполняется конструкцией — фиксируется как ИНВАРИАНТ, не случайность); **action-security gate — именованный блокер перед дачей tools/webfetch (Ф3)**. Адверсариальная инъекция-проба (plain/Unicode-obfuscated/quoted-fiction/false-positive) — в eval-очередь перед Ф3, не срочно.
|
||
6. **Review bundle (R4) — ПРИНЯТ в minimal-форме**: экспортируемый бандл поверх существующих flags/disposition (reason, evidence, typed resolution, seconds, reviewer, reuse-маркер) БЕЗ нового persistent-домена; инструментировка minutes/flag + typed resolutions — в пре-регистрацию пилота (полигон); persistent ReviewTask-домен — только если данные этапа B/пилота его оправдают (flag-rate 5.3% с концентрацией 2/25 глав поддерживает минимализм).
|
||
7. **Echo-gate калибровка (R6) — задача полигону** (после флора D24.3): накопленные echo-провалы + 30–50 чистых выходов на язык + синтетические partial/tail-эхо; порог при фиксированном FP-бюджете; каузальная модель «регистра» для гейта НЕ нужна (контрольные ячейки D22.5 остаются некритичными). Формулировка критика «prompt mitigation только экономит fallback» принята с поправкой этапа A: сам fallback-хоп до D24.3 был сломан бюджетом.
|
||
8. **Остальное:** R9 (summary baseline: source-retrieval vs prose+citations vs typed claims на 20–30 дальних зависимостях ДО постройки typed claim store) — Ф2 design-gate, принят; R3/R8 — конвергенция без действий (= D15.2/D22.2 и D21.2–4), из R8 абсорбируется только **метрика over-stylization/fidelity в voice-арм пилота**; R11 — rights/data manifest приложен к висящему юр-пакету владельца, строка «API-only vs all-in COGS раздельно» — в exp08 v3 (D21.8) + логирование human-minutes в пилоте. Нюанс источников (шапка research/17): морф-оговорку Exel et al. НЕ абсорбировать в форме критика (инверсия: морфологию ломают constrained-decoding методы, не «терминологические констрейнты вообще» — наш decl-aware путь ей не противоречит, а отвечает).
|
||
9. **§D: ранжирование реально открытых вопросов** (для владельца и очереди): **Q1 билингв-якорь zh/ja→ru** (блокер валидности пилота; владельцу: рекрут билингв-аннотаторов ИЛИ явное принятие ограничений en-моста в пре-регистрации) > Q3 publishable (п.1) > Q2 human budget (инструментировка в пилот; числа — владельцу пост-пилот) > Q5 L3 FN-bound (п.4) > Q4 юр-пакет (уже висит) > Q7 календарь G1/B6/морфо-гейта (оркестратор, после пилот-подготовки) > Q6 fact-gate резюме (Ф2-дизайн). Q8 (doc-drift) снят: владелец = оркестратор; его наблюдение подтверждено и закрыто — `02-mvp-plan:24,31` (ja→ru приёмка вопреки D18) исправлены этим лендингом.
|
||
10. **Методологический урок для будущих внешних критик**: (а) §A хешировать/коммитить ДО открытия фазы 2 (фриз research/17 — attested, not proven); (б) оси мандата формулировать нейтрально, не встраивая наши выводы; (в) список признанных дыр (фаза-3(г)) выдавать только ПОСЛЕ фиксации §A.
|
||
|
||
## D29. Приёмка research/16 «Ридер-IDE» + абсорбция фронт-требований в бэкенд-контракт (12.07, оркестратор). ✅
|
||
|
||
Внешнее ревью (4 оси: калибровочный и якорный источник-батчи по первоисточникам — все несущие клеймы существуют и держат силу, ниты в шапке дока; независимая реплика $0-пробы — арифметика воспроизведена точно, но база stale и метрика диапазонная; red-team контракта против status.go/D15.2-спеки — 4 major-поправки). **ACCEPT_WITH_FIXES, залендён с ревью-шапкой (458b0ea).** Ядро принято: чанк = несущий якорь (иерархия глава→чанк→абзац-best-effort→предложение; синк ко-локацией, не скролл-синком); калибровка YELLOW важнее покрытия (precision-гейт перед показом цветов, FP-бюджет <10%/флаг, severity-таблица, worst-child+счёт); детект-флаггер вместо форс-структуры промптом; числовой confidence — НИКОГДА без QE-модели. Решения по абсорбции:
|
||
|
||
1. **В реализационный пакет D15.2 (бэкенд; промт после развязки exp12 — D28.4):**
|
||
(а) **`tmctl export`** — настоящая команда (канонический ассемблер перевода + `annotations.json` annot-v1) — НЕ «проекция как status --json»: src_range требует офсетов в чанкере, dst_range — nullable/эфемерный, source_file_hash — новое поле, спаны style-флагов — пересчёт линтерами на экспорте; схему ратифицировать с колонкой exists/derivable/net-new; **нормализация выхода** (markdown-`###` в 8/54 финалов, унификация разделителей абзацев); paragraph_anchors v1 = детерминированная позиционная пара ТОЛЬКО при равном числе абзацев, aligner-based — Ф3;
|
||
(б) **политика красных**: editor-facing — маркированный плейсхолдер (текущее); reader-facing — fail-closed (0 красных для `structurally_complete`) — реализуется вместе с release-state лестницей D25.1 в этой же экспорт-задаче;
|
||
(в) **цвет-мап + GREY** (RED = дополнение: flagged && reason≠glossary_miss; YELLOW = done∧(escalated ∨ glossary_miss ∨ postcheck_misses>0 ∨ style_flags>0); GREY = pending) + **passport-rollup 3-тир — как ЯВНЫЙ амендмент вердикт-правила D12/exp07** (при gate-on glossary_miss уже катится в fail-счётчик — сохранить консистентность с exit-кодом translate);
|
||
(г) **human_override слой 1 (LOCK)**: per-chunk provenance-состояние, ключ = **хеш сырого src-текста чанка** (НЕ content_hash=rendered-msgs — ловушка ложных re-review), консультируется redrive/status/export (redrive НЕ мутирует override — тест); слой 2 (context-keyed carry-over с состоянием «override needs re-review», метрика «тихо-потерян=0») — дизайн вместе с v3.1 wire/verdict-split; override НЕ кормит глоссарий/память книги (чекпоинт-кэш не может по построению);
|
||
(д) **диалог-аварный флаггер парности** — verdict-side класс (bump cheapGateVersion → снапшот: только с D15.2, не «$0 сейчас»), калибровка на конфиге-победителе exp12 (stage-A вёрстка будет снесена reflow-фиксом).
|
||
2. **Полигону:** (а) диалог-пере-нарезка stage-A пробы — falsification-only (данные устареют с reflow); (б) precision-замер флагов — post-hoc против существующих заметок владельца (пре-регистрацию exp12 НЕ трогать; <10%-гейт = отдельный проход по 25 главам пост-reflow, гейтит только показ цветов Ф3); (в) Bertalign zh→ru spot-check перед GOLD-парами пилота (лицензия GPL-3.0 — учесть в тулинге); (г) arity-полоса паспорта — с пином определения абзаца (диапазон 44–58% по метрике — ревью).
|
||
3. **Ф3 (в F3-brief, не сейчас):** chat-edit (span-map re-insert, только YELLOW/RED, re-flag выхода, метрить $/edit); ко-локация спаренных якорей; «Not useful»-петля; aligner-based paragraph_anchors; cost-of-fix ранжирование.
|
||
4. **Зафиксировано:** reader-embedded книго-полоса из детерминированных вердиктов — новый синтез при скрининге (сужение как D21.7, не «аналогов нет»); Bertalign-мост «прошлый том» — кандидат пилот-подготовки (гейт: spot-check).
|
||
|
||
## D30. Приёмка exp12 + флип D1 (моно→билингв) + пакет качественных фиксов + трек дешёвых моделей (12.07, оркестратор; владелец: дешёвый трек). ✅
|
||
|
||
Внешнее ревью exp12 (4 оси, всё исполнением по diag/-артефактам и store-копии: реплика активности под 3 метриками, аудит судейского слоя с пере-агрегацией, root-cause против промптов/store, scope+COGS+мемо): **все оси ACCEPT_WITH_FIXES, залендено с ревью-шапкой.** Ядро диагноза «нечитаемо = связка 4 дефектов» (пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + отсутствие санитайзера) подтверждено независимой репликой; украшения сняты (шапка exp12: «единогласный #1» ложен; fidelity-гейт не доказан — A2 сам внёс инверсию смысла). Решения:
|
||
|
||
1. **Флип D1: редактор — БИЛИНГВАЛЬНЫЙ (черновик + исходник), новый дефолт. Ратифицирован с явным supersede D17.в** (решение было закреплено за пилот-армом D13.1; переопределяю по досрочной эмпирике exp12 — тройная ОТНОСИТЕЛЬНАЯ триангуляция: механика активности + судьи (билингв>моно устойчиво у всех) + 2 флагмана слепо; пилот-арм D13.1 остаётся ПОДТВЕРЖДАЮЩИМ на решающем корпусе). Вакуум верности (D1.1) закрывается обязательным re-gate на пере-прогоне: span-цитирующий fidelity-судья reasoning-ON + охота на класс инверсий/порч правки («пожертвуй мной»/«молва считал» — новые классы, вносимые АКТИВНЫМ редактором). **Editor-модель пере-прогона: glm-5 билингв** (цена ×13 vs gemini, 0 утечек; НЕ «единогласие судей»); gemini-3.1-pro — премиум-эскалация редактора ТОЛЬКО за санитайзером (утечка преамбул 6/6); **grok-4.3 reasoning-off из редакторских ролей СНЯТ** (no-op; exp04-ранг был на дефолт-reasoning билингв).
|
||
2. **Reflow-вёрстка:** снять «Сохраняй разбивку на абзацы» из zh→ru промптов (`translator.md:9`, `editor.md:8` — дословно подтверждено) + разрешить нормативную репараграфизацию (1:N на диалоге — норма, D29/research-16 §2.3) → bump prompt_version → resnapshot. Механизм реверстки (в промпте редактора vs отдельный пасс) — открытый вопрос пере-прогона (CAND-данные n=6 недостаточны); пере-прогон обязан мерить консистентность вёрстки явно.
|
||
3. **Output-санитайзер — новый детерминированный гейт-класс** (бэкенд, в пакет D15.2): ведущие преамбулы И хвостовые «заметки» (gemini 6/6), битые словоформы («Первок предок», «валуне»), латиница-врезки, markdown-`###` (8/54 финалов этапа A — D29-находка), утёкшие заметки переводчика. Ни один существующий гейт классы не ловит (проверено кодом). Дисциплина D2 (flag+skip), вердикт-ось.
|
||
4. **COGS-рамка (поправка мемо):** флип D1 = **+15–25% (~$0.83–0.86/ранобэ)** — принято как цена качества (замер: вход редактора +60% токенов, книга +19%); «$1.5–2/ранобэ» = ОПЦИЯ Б (селективный апекс по exp08 + слой памяти) — отдельное решение владельца, НЕ подписано; проценты мемо (+117–190%) арифметически верны, но относятся к опции Б.
|
||
5. **Глоссарий v2 — условная ратификация:** бесспорные 11 правок + 8 добавлений — принять; **спорные (修炼/культивация, 人祖/Первопредок, род «гу», 花酒行者 — добавлен ревью: тихо перезаписывал пожелание владельца) → `status:draft` ДО подписи владельца** (иначе уйдут в CONFIRMED-hard-constraints — memory.go:419/473); тихие промоушены draft→approved откатить в draft. Сид-обогащение мн.ч. (D24.4/полигон-№4-п.1) слить в ту же v2-итерацию — **один resnapshot** вместе с п.2/промптами.
|
||
6. **exp13 «бейк-офф переводчиков» — ратифицирован, приоритет №1 полигона** (премисса верифицирована: draft выбран за цену/токенизатор/кэш, качеством как переводчик не мерен НИКОГДА; exp04 мерил редакторов). Армы: mistral-large-2512 / glm-5 / deepseek-v4-pro / **grok-4.3 reasoning-ON** (добавка ревью: единственный CJK-чистый замер 10/10 exp10; ключ разблокирован D27); qwen — опционально, гейт на DashScope-ключ владельца; deepseek — thinking ON (эхо-мина). Судьи span-цитирующие reasoning-ON (урок п.1) + флагман-сверка владельца тем же monitor-паттерном.
|
||
7. **Трек владельца: дешёвые модели сейчас, фронтир — потом.** Зафиксировано: архитектура УЖЕ конфиг-первая (Р2/Р4: один раннер, пайплайн = yaml, C0–C3) — «несколько бэкендов со своими пайплайнами качества» = несколько pipeline-конфигов поверх одной машинерии; фронтир-тир позже = модели в models.yaml + новый pipeline-yaml + resnapshot, БЕЗ переделки кода. Интерим-планка пере-прогона: «лучше фан-перевода» на дешёвом миксе; полная планка запуска (лучше-фана/гибрид/издательский + честный COGS опции Б) — остаётся открытым решением владельца (мемо-эскалация).
|
||
8. **«Модели не следят за сюжетом»** = слой авто-памяти/состояния (Annotator, межглавные резюме, voice/reveal — D21) — Ф2, связка с пилотом Ф2.5 зафиксирована; mid-run-append ограничение (D8/D15.1/D21.1а) не демонтируется. Owner-proposal «модель гуглит термины» = Ф3+ (D25.5 trust boundary); near-term = засев глоссария фан-конвенциями (v2 это и делает).
|
||
9. **Дорожка:** бэкенд-пакет D15.2 (промт ВЫДАН — `BACKEND_D152_SESSION_PROMPT.md`: v3.1 + фикс-листы D22.9/D23.4-остаток/D28.3 + D29.1-экспорт/override + D30.2/30.3 промпты/санитайзер + golden-refresh с расширением фикстуры D28.2) ∥ полигон exp13 (`POLYGON_EXP13_SESSION_PROMPT.md`) + финализация сида v2 → единый resnapshot → **пере-прогон 25 глав кандидат-конфигом** (переводчик по exp13; glm-5-билингв; reflow; сид v2; санитайзер) с re-gate верности → чтение владельца → этап B.
|
||
10. Гигиена полигону (из ревью, в exp13): каждый платный скрипт персистит usage/cost; пре-регистрацию коммитить до первого платного вызова; parse-чек полноты ранжирования судьи; флагман-сырьё — в diag/.
|
||
|
||
## D39.25 — Архитектурная директива владельца: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities; refusal-обработка причино-агностична (25.07, оркестратор №7). ✅
|
||
|
||
**Директива (владелец, 25.07, при ревью промта пака-17):** не городить 18+-костыль. Движок несёт ОДИН generic-механизм: **content-label** книги/глав (данные книги — «пометочка на фронте») × **capability провайдера** (данные models.yaml) × выбор цепочки/политика (конфиг). «adult» — ЗНАЧЕНИЕ данных; Go-идентификаторов/веток «18+/adult/канал B» в движке нет. Мысленный тест второго лейбла: archaic-register (D19.1-эхо grok на архаике — та же фигура «свойство контента × способность модели») обязан добавляться данными. **Проактивный роутинг по лейблу = ToS-гигиена, не оптимизация**: провайдер без способности не должен ПОЛУЧИТЬ контент (DeepSeek/Anthropic без adult-capability — строки данных), независимо от того, откажет ли. **Refusal-обработка generic**: D12-таксономия детектит ФАКТ отказа (hard/soft), причина (эротика/политика/прочее) — только операторская диагностика; путь один — регенерация → эскалация по цепочке лейбла → flag+skip (D2); параметризуется политика цепочки в конфиге, не код. **Честно 18+-специфичное (вне движка):** L3 = политика ВХОДА (человеческий уровень, спека D22.7 у владельца) · ToS-флаги = данные · пометка в экспорте/ридере = фронт. Продуктовое имя «канал B» остаётся в доках; инженерная форма — лейблы. Норматив: `12-go-style-notes.md` §0 п.6; промт пака-17 переписан под эту форму ДО запуска сессии.
|
||
|
||
## D39.30 — Решения владельца по итогам пакета-5: лейбл `violence` НЕ заводится (интерпретация зафиксирована письменно), риск Z.AI принят сознательно, две строки `accepts_labels` ПОДПИСАНЫ и применены (25.07, оркестратор №8). ✅
|
||
|
||
Три решения приняты владельцем 25.07 по фактам D39.29. Записаны здесь, потому что это ровно тот класс, который обязан иметь аудит-след: юридическая ось, 18+, принятый риск.
|
||
|
||
1. **`violence` — лейбл механически НЕ заводится; интерпретация фиксируется письменно (вариант 2 + аудит-след).** Подписанное чтение владельца: **нейтральное художественное изображение насилия в вымысле не является «promoting / inciting / glorifying / facilitating violence»** — то есть под глаголы-пропаганды, которыми оперируют все проверенные AUP, наши тексты не подпадают. Практика: лейбл `violence` в вокабуляре остаётся (механизм его держит), но книгам не назначается и `accepts_labels` им не заполняется — это ровно статус-кво, под которым уже прошли exp10 и rerun2, поэтому нового риска решение не создаёт, а приёмочная 蛊真人 едет как ехала. **Обратимость:** вариант «выдать `violence` вендорам с глаголами-пропагандами» остаётся доступен одной правкой данных в любой момент; `zai` под ним не подпадает в любом случае (плоский запрет), `xai` — тоже (чистое молчание). **Граница честности:** это интерпретация, а не право, выданное текстом; она защищает решение как обдуманное, но не заменяет разъяснения вендора.
|
||
2. **Риск Z.AI ПРИНЯТ сознательно, с записью.** Факт: Z.ai Terms of Use (Last Update 2026-04-14) п. f) запрещает «obscene, pornographic, **violent**, murderous, terroristic, or criminal incitement content» — «violent content» плоско, без глагола-пропаганды, то есть в отличие от п.1 здесь интерпретация не спасает. Экспозиция УЖЕ состоялась: glm-арм (`configs/pipeline-arm-glm.yaml`, `role: editor / model: glm-5`) гонялся живьём на 蛊真人 в rerun2 (D39.20). **Решение владельца: риск принять** — прогон исследовательский, на собственной книге, без публикации; glm-5 остаётся резервным армом редактора. **Условия, при которых решение пересматривается (записываю как часть принятия):** переход к публикации/клиентским книгам · использование glm на не-своём контенте · смена политики Z.AI (пере-проверка 2026-10-25). `glm-5.1` в `chains.default` (`configs/pipeline-c1.yaml:109`) остаётся недостижимым по построению (single-hop через `escalate_to`, `budget_usd: 0`), так что дополнительного вектора цепочка не даёт.
|
||
3. **Две строки `accepts_labels` ПОДПИСАНЫ и ПРИМЕНЕНЫ мной в `backend/configs/models.yaml`:** `xai: accepts_labels: [sexually-explicit]` (xAI AUP Effective 2026-06-26 + Enterprise ToS Last Updated 2026-05-12) и `mistral: accepts_labels: [sexually-explicit]` (Mistral Usage Policy Effective 2026-06-11, хост `legal.mistral.ai`). Обоснование — в комментариях у строк, цитаты — в `experiments/00-provider-quirks.md`. **Ни одна книга лейблов не несёт, поэтому применение строк НИЧЕГО не запускает и ничего не двигает** (проверено: `go test ./internal/config/` зелёный; строки — данные провайдера, вне хешей и вне снапшотов). Механизм перестал быть пустым и готов к первой explicit-книге; для неё по-прежнему обязательны предусловие D22.7 (L3-скрин) и Q2 (выбор редактора под лейблом).
|
||
|
||
**Остались открытыми (не блокируют, у владельца):** чтение Gemini-оговорки «for example … pornography or sexual gratification» (сужение vs иллюстрация) · связывает ли нас OpenAI Sharing & publication policy 2022 (единственное, что держит обе клетки OpenAI в UNCLEAR) · применимость Ollama ToS §4 к локальному инференсу · различать ли в конфиге причину пустоты (`FORBIDDEN` vs `UNCLEAR`) · дата заведения аккаунта OpenAI (§17 привязывает редакцию политик к дате договора) · ре-чек политик по хешу перед платными прогонами (триггеры: головной Google ToS 30.07.2026, квартал 25.10.2026). **Продуктовое (Ф3, вне движка):** Gemini API Additional ToS запрещает клиентов, «likely to be accessed by individuals under 18» — обязательство на конечный продукт (ридер/публикация).
|
||
|
||
## D39.33 — Директива владельца: МАСШТАБ — ПОСЛЕДНИМ, после достройки алгоритмического идеала; мини-прогоны ~10 глав = штатный инструмент доказательства эффективности (25.07, оркестратор №8). ✅
|
||
|
||
**Директива (владелец, 25.07):** «масштаб гонял бы уже при полностью построенном бэкенде — достроили весь идеал алгоритмический, который запланировали, и только тогда масштаб. Мини-прогоны на глав 10 можно делать, чтобы доказать эффективность крупных изменений».
|
||
|
||
**Что это меняет в контракте.** Ратифицированный курс D39.22 ставил «масштаб целой книги» ПЕРВЫМ после паков 12/13 («масштаб целой книги · канал B вживую · Ф2-механизмы · ja→ru §B5»). **Порядок амендируется: масштаб уходит в КОНЕЦ**, за достройку алгоритмического ядра. Обоснование владельца принимаю и усиливаю фактурой: приёмочная книга — 7,78 млн символов и ~2284 раздела (`第N节`), то есть масштаб-прогон стоит дорого не деньгами, а ВРЕМЕНЕМ и необратимостью решений, снятых на форме, которую мы всё равно собирались менять; а измерять эффект крупных правок на 5–10 главах мы уже умеем (rerun2: генерация всей книги-среза стоила центы, дорогая часть — судья, и он не обязателен).
|
||
|
||
**Мини-прогон становится штатным инструментом (норма, не разовое решение):** ~10 глав · детерминированные чекеры и read-only скан остатка первыми (ратифицированный приоритет «детерминированный скорер > судьи, где возможен») · судья зовётся ТОЛЬКО когда от его вердикта зависит решение · каждый мини-прогон отвечает на НАЗВАННЫЙ вопрос, иначе не запускается.
|
||
|
||
**Определение «алгоритмического идеала» (чтобы «достроено» было проверяемым, а не на глаз).** Свожу из ратифицированного корпуса; список — рабочий контур, уточняется ответами владельца ниже:
|
||
1. **Ф2-механизмы D21** — voice-профиль · реестр обращений (ты/вы) · reveal-окна. Ратифицированы 09.07, в коде отсутствуют. Промт пака-19 готов.
|
||
2. **Решение о петле ремонта (слой 3, D39.24)** — включение платного пути по замеру остатка; замер теперь едет мини-прогоном.
|
||
3. **Слой 2: извлечение дискурс-норм и few-shot из ТЕЛ промтов** (открытая строка шапки-таблицы `09-target-architecture.md`; форсинг — вторая пара).
|
||
4. **ru-target долг (слой 7)** — `isRuTarget`×11 прод-сайтов · `TokenizeCyrillic`×6 · ключ «ru» в санитайзере; сегодня ограничение, а не дефект (кусает только не-русский таргет).
|
||
5. **Два нита общности** — едут первым же resnapshot (D39.31 п.5).
|
||
6. **native-Gemini судья** — механизм Ф2; нужен ли он В ДВИЖКЕ до пилота — вопрос ниже.
|
||
|
||
**ВОПРОСЫ ВЛАДЕЛЬЦУ (определяют границу «идеала», не блокируют старт п.1):**
|
||
- **Annotator-пре-пасс (D21 п.5)** — входит в идеал или остаётся опцией? Это LLM-проход (~+10% к вебновелле по D21 п.8), то есть деньги в COGS, а не только код.
|
||
- **Семантический span-судья / полярность** — D38.4 ратифицировал ОТКАЗ от него («защита = editor-swap»). Подтверждаем отказ как часть идеала или возвращаем в скоуп?
|
||
- **ja→ru §B5 (вторая пара)** — часть «идеала» (общность движка) или отдельная работа после?
|
||
- **ru-target долг** — до масштаба (то есть часть идеала) или можно после, раз таргет у нас один?
|
||
|
||
**Следствия, вступающие в силу сразу:** (а) пак-19 «голос и состояние» РАСПАРКОВЫВАЕТСЯ — под новым курсом он законно первый, и это уже не ре-ордеринг оркестратора, а исполнение директивы; (б) «следующий платный прогон» переопределяется из полного в МИНИ (~10 глав) и перестаёт быть гейтом чего-либо, кроме собственного вопроса; (в) «масштаб целой книги» уходит из ближайшей очереди в финальную позицию — перед пилотом Ф2.5.
|
||
|
||
**Честная запись о том, как это вскрылось (норма «признавай ошибки явно»):** позицию пака-19 я вчера предложил САМ, подав ре-ордеринг как исполнение плана; владелец усомнился, проверка дословными цитатами (D39.22 + CURRENT-STATE) подтвердила его сомнение, промт был запаркован (`16420c6`). Директива D39.33 делает ту позицию правильной ПО СУЩЕСТВУ — но она не задним числом оправдывает метод: вывод, совпавший с репликой собеседника, обязан быть проверен ПРОТИВ документов до выдачи, а не после.
|
||
|
||
## 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 остаётся кандидатом на отдельную ратификацию).
|
||
|
||
## D39.47 — Владелец (26.07): ЖАНРОВЫЙ СЛОВАРЬ ОТМЕНЁН КАК КЛАСС — решение о переводе принадлежит ПОДПИСИ владельца на банк КНИГИ; пар-словарь форсит один регистр как единственно верный. Амендмент D39.42 п.1 / D39.44 (Q2, Z2) / D39.46 (Z-B1/B2/B6, Z-B4 сужен). Главный открытый вопрос покрытия — расширение эмиссии на класс term. ✅
|
||
|
||
**Принцип (слова владельца):** одна книга законно хочет «культивацию», другая — «совершенствование»; жанровый файл предписывал видение мимо подписи. Улики полигона это подтверждают: центральная строка 修炼 не подписывается В ПРИНЦИПЕ (выбор регистра, не факт — итог Z4-добора); «общепринятого нет — есть школы» (ложная сходимость: один английский глоссарий + один блогер); покрытие механизма 0/80, четыре строки из шести — ноль вхождений в книге стенда; консистентность уже даёт фактор «согласие с ПОДПИСАННЫМ соседом» («факт о книге», не предписание). **Честная запись о провенансе посылки:** «жанровый словарь» вошёл в контракт через оркестратора (D39.42 п.1 — из реплики владельца о «общепринятом», без улик), полигон затем измерил основание для отмены и НЕ сделал вывода (признание сессии; неиспользованный канал вопросов; цена задержки $0.01362 ≈ 3% пакета — при этом именно эти траты произвели отрицательный результат, которым отмена обоснована).
|
||
|
||
**Снимается:** Z-B2 (17 строк на подпись → справочная фактура ресёрча) · Z-B6 (беспредметен) · Z-B4 сужен (веб-фетч в роль по-прежнему НЕ вводится; «офлайн-словарь как пар-данные» полигон снял сам: польза 1/80) · Z-B1 беспредметен. **Уцелело целиком, перепрогоны не нужны:** контексты — главный рычаг (D39.46) · узкое правило транскрипции (Z-B3; боевой интерим-промпт УЖЕ в узкой форме — сверено по HEAD) · судья = катастроф-экран · вся фактура майнера/эмиссии/квадратичности.
|
||
|
||
**Размотка кода — дельта бэкендерам (адреса сверены оркестратором по HEAD):** `terminology.go` ScoreOpts.GenreDst + фактор genreAgrees/genreBonus (:357-359, :375, :433-434) · `terminologist.go` genreGlossaryMap/передача/инъекция блока (:130, :163-166, :322) · `langpack.go` поле GenreGlossary + parseGenreGlossary + GenreGlossaryFor · два теста-пина · файл `configs/langpacks/zh-ru/genre-glossary.txt` — удалить. ⟦TM-CANON⟧-якоря и CanonConflicts НЕ трогаются. Цена: пере-покупка только батчей терминолога (файл вне pack.Version — правка самого пака это обеспечила); волны не двигаются. **Вместо словаря главным вопросом становится эмиссия:** recall term=0.040 (修行 ×326 невидим терминологу); расширение СОГЛАСУЕТСЯ с принципом — даёт владельцу больше строк на решение, ничего не решая за него; цена известна из абляции (cap→0.429 при 624 строках; +тип→0.875 при 13 246, precision ≈0.15) + feed_cap (D39.45); kwic-дефолты 3×40 не покрыты замером (мерено на ~8×120). Санкция владельца на дизайн расширения — ожидается.
|
||
|
||
**Процессное правило №4 — в нормы промтов** (к трём из D39.46): деливерабл промта не отменяет права сессии сказать «этого делать не надо»; замер, подрывающий ПОСЫЛКУ задачи (не исполнение), обязывает остановиться и поднять через канал вопросов, а не выдать формально требуемый артефакт.
|
||
|
||
## D39.58 — ХОЛОДНЫЙ МИНИ-ПРОГОН ПРИНЯТ И ЗАЛЕНДЕН ($0.126068 из $0.50; закрыт владельцем после банк-стопа, Р7 «замер достаточен»): ГЛАВНОЕ — совместный recall холодного банка майнер∪банкнота = **0.918/0.980** против 0.069–0.103 у майнера соло, банк приходит владельцу ПЕРЕВЕДЁННЫМ (149/150 строк с dst) · банкнота-парсер v2 ПАР-СЛЕПОЙ («src непуст и засвидетельствован книгой», строка 19 закрыта) + восстановление порядка колонок тем же инвариантом · РАЗДЕЛЕНИЕ ВЕРСИЙ КАНАЛА ратифицировано (Р2, амендмент инварианта №2: `bankSliceVersion` фолдится — его выход оплачен чекпойнтом; `bankParseVersion` едет с прогоном — его выход пересчитываемые улики) · секция редактора по ПРОВЕНАНСУ (S7), путь (ii) — экспозиция 0 доказана диффом (1119 пар «запись×ключ», 32 банка, позитивный контроль; версии не бампались) · ЭХО-МИНА ЖИВА при thinking-ON (П3 пре-регистрации: 2/20 черновиков чистым исходником, han_share 0.999; гейт `cjk_artifact` поймал, эскалация вылечила; «echo 0» D39.20 — свойство выборки, не гарантия) (31.07, оркестратор №9). ✅
|
||
|
||
## D39.62 — ОТВЕТЫ ВЛАДЕЛЬЦА ПО §12 ОБЩНОСТИ + НОРМА САМОПРОВЕРКИ + ДИРЕКТИВА ГОРИЗОНТА (01.08): **(Q1) П1 цель-шов САНКЦИОНИРОВАН** в состав rewrite-пакетов — формула владельца: «поедет в следующих паках — не принципиально когда и где именно, главное бэкенд писать по умному; цель исследования = найти и предложить, как снять инертность китайского/мастер-гу подхода в коде» ⇒ заморозка D39.24 §15.3 («ru-target-долг НЕ чинить») АМЕНДИРОВАНА: назначенный носитель = П1, приёмка = «пара, которой нет в репо, проходит слой 7 без правки Go»; **(Q5) пак-21 как единица РАСТВОРЁН** («мне в принципе без разницы» + карта D39.60): дешёвая шестёрка (#11 · #2 · #4 · гомоглиф · строгий OffLanguage с оговоркой 36а · строка 26) → батч фазы 2 · корзина (II) → П1/П2/П3 · #9 → арка банка (строка 73) · #12/K4a — сняты как не-дефекты; **(Q2)** resnapshot-фигура объяснена владельцу по-человечески — его внимания сверх одной будущей подписи не требует: запуск ОДНОГО общего resnapshot после развилки 74, цена сегодня ~$0.3–0.5 корпуса, после МАСШТАБА — порядки; **(Q3)** расщепление хеша пар-данных — НЕ делаем (объяснено; дисциплина взамен: правки данных копятся в тот же resnapshot-батч); **(Q4)** Р2/Р4 раскрыты владельцу отдельным сообщением, ответы ожидаются (строка 1); **НОРМА (дословно по смыслу): «сессиям ВСЕГДА писать мандат самопроверки исполнением на ВАЖНЫХ задачах — как текущий бэкенд и ресёрчи; на мелких — самопроверки меньше»** — вписана в промт-нормы оркестратора (вместе с уроком D39.61 «вывод на агрегате до вскрытия единиц запрещён»); **директива «планировать подальше и получше»** — горизонт достроен в CURRENT-STATE до Ф3 (фаза 2 общности → арка автономности банка → пере-замеры на новом стеке одним мини-прогоном → свип гипотез качества → добор идеала → ВТОРАЯ ПАРА живьём → МАСШТАБ → пилот Ф2.5 → Ф3 ридер-IDE); выданы промты: `BACKEND_GENERALITY_PHASE2_SESSION_PROMPT.md` (П0–П4+шестёрка+77/78, $0-код, resnapshot только по отдельному слову) · `POLYGON_BANK_RAWMATERIAL_SESSION_PROMPT.md` (строки 21/22 + аудит типов 36а на сырье холодного прогона, $0; проб-пакет §12.7 — только по слову владельца) (01.08, оркестратор №9). ✅
|
||
|
||
## D39.63 — Р2/Р4 ОТВЕЧЕНЫ + ФИГУРА RESNAPSHOT РАСТВОРЕНА ПОСЫЛКОЙ ВЛАДЕЛЬЦА (01.08): **(1) Р2 = ЗНАЧЕНИЕ**: контракт семейства детекторов единиц/шкал (DC1-часы · магнитуды 万/億 · 成-доли · любой пересчёт) — жёсткий флаг ТОЛЬКО за неверное ЗНАЧЕНИЕ; неконвертированная в единицы читателя форма = мягкий счётчик/линт, НЕ дефект (согласуется с precision 1.000 против 0.167 разметки пакета-6); контракт передан фазе-2 промтом; **(2) Р4 — норма подтверждена** («Ладно»): у правила бывает потолок полноты by construction, записывается в контракт правила, «неразрешимая речь/мысль» не дефект и поклассово не переспрашивается ⇒ **строка 1 (Р1–Р4) ЗАКРЫТА ЦЕЛИКОМ** (Р1 расщеплён D39.60, Р3 закрыт D39.44 Q4); **(3) владелец оспорил посылку «один общий resnapshot» — и ПРАВ для текущей фазы**: боевых книг в полёте нет, стендовый корпус ОДНОРАЗОВЫЙ (старые БД остаются читаемым $0-сырьём, перекупать их не для чего), каждый следующий замер — СВЕЖИЙ мини-прогон на новом стеке ⇒ фигура D39.60 п.(2) вырождается в дисциплину секвенирования: платных замеров не покупать, пока фаза-2 не залендена (иначе меряем вчерашний стек); механика `--resnapshot`/условных фолдов/П0-хеширования остаётся и строится — она про эру боевых книг после МАСШТАБА; побочное упрощение: данные-правки (шестёрка · #8 两 · класс speech-cue) на этой фазе перестают быть «дорогими»; **(4) развилка 74 — оперативное состояние «(в) ждать» по умолчанию**: платных прогонов до конца фазы-2 нет; перед следующим платным прогоном — ре-проба flash за копейки, довесок того же прогона — итерация №2 редакторов (D39.22); **(5) само-ревью выданных промтов по вопросу владельца — три дыры найдены и закрыты правками**: контракт Р2 вписан бэкенду · заметка о параллельной сессии и заморозке бинаря — обоим · карта чтения — полигону; параллельный запуск двух сессий подтверждён безопасным (зоны и артефакты не пересекаются) (01.08, оркестратор №9). ✅
|
||
|
||
## D39.64 — ОБЩНОСТЬ ФАЗА 2 ПРИНЯТА И ЗАЛЕНДЕНА ($0 — ноль платных вызовов, `--resnapshot` НЕ запускался; приёмка исполнением + адверсариальное 6-агентное ревью оркестратора: ни одно несущее утверждение отчёта не опровергнуто): построено **П0** — `lang.EmbeddedVersion()` (sha256 эмбед-данных, framing как у `Load`) БЕЗУСЛОВНЫМ фолдом в снапшот, дыра эмбед-плоскости ЗАКРЫТА (строка 76; мутационный тест: байт `target-ru.txt`/`injection.txt` = громкий resnapshot); **П1 цель-шов слоя 7 по данным** — `isRuTarget`×6 УДАЛЁН → `TargetActive()`/`TargetScriptNonLatin()`, токенизатор цели `TokenizeScript` с алфавитом из `word_script` данных + Mn-фолд U+0301 (#11 закрыт) = ЕДИНЫЙ шов линт↔репэйр (долг `repair.go` РЕПЭЙНУТ), `ExportNormalize`-гейт (7 сайтов), `ruSanitizer`→per-run поля `Checkers`, реестр целей из эмбед-файлов; книга `target_lang: en` инертна ПО ОТСУТСТВИЮ данных (мут.тест) — строка 32 ЗАКРЫТА; **П2 скрипт-шов источника** — `cjkShare`→`sourceScriptShare` по ОБЪЯВЛЕННОМУ письму (новый `lang-script.txt` + единый реестр `scriptRanges`), Hangul в CJK-leak: живой баг ko ЗАКРЫТ (строка 75), en/ko-эхо больше не слепые (вердикт-вокабуляр `cjk_artifact` сохранён); **П3** — 話-глава данными · sourceAbbrevs по языку книги · generic-детект глав без units («Chapter 12») · sizing-таксономия в ОДНОМ доме (`text.DenseScript`); **П4** — табличные опц-файлы + манифест-по-каналам: источник без пиньинь-морфологии грузится без Palladius-файлов, манифест-less пак БАЙТ-ИДЕНТИЧЕН (`langpack-v2-a28ed743c99c` — независимая проба оркестратора HEAD-vs-дерево), `packAlgoVersion` НЕ бампался — самый жёсткий блокер слоя данных СНЯТ; **шестёрка 2/6** — #11 + `translitInterjections`→данные (строка 26 закрыта); **#77** — ручка `RegenerateEchoBeforeEscalate` (дефолт 0 = байт-в-байт текущее поведение; гейт D19.2 не тронут; включение — решением при ре-пробе 74; при включении помнить: общий счётчик attempt с length-ре-геном + рост `maxTokensForAttempt` на каждом ре-гене). Верификация оркестратора: `-race` 14/14 · **Ш-1 НЕЗАВИСИМОЙ классификацией диффа голдена: 172 строки = ровно 5 осей** (`embedded_version` НОВАЯ · cheapgate-v6 · sanitizer-v7-hangul-leak · classify-v2 · chunker-v6; content_hash/disp/wire-тела/stage_text — 0) · майнер-парити EXACT (`n=13618`, катастрофы точны, recall 0.9655) · перекупок НЕТ (D39.63). Приёмочный критерий «пара, которой нет в репо, проходит слой без правки Go» ДЕРЖИТСЯ для П0/П1/П2/П4 + generic-П3 (свип: новых языковых ветвлений диф не внёс; остатки = документированные ru-дефолт-обёртки + флаги). **9 флагов §5 (не «10» — off-by-one) — очередь владельца (строка 14):** ё-фолд→данные (вердикт-несущий банк, сдвиг `memory_version`) · segmentation-фолбэк громким (ломает контракт corridor-фолбэка — `pipeline.go:839-848` + голден-фикстура на нём) · Fertility-map (калибровка ждёт боевого токенизатора) · encoding-реестр · 4 дефекта пака-21 → пакет-чекеров при свежем мини-прогоне (корпус `labels/` на стенде ЕСТЬ — барьер = утраченный в scratch харнесс) · #78 money-путь (дизайн §5.6 готов, не $0-хастл — строка 78 остаётся). Новая строка 79: остаточные Cyrillic-хардкоды пар-гейтед DC-чекеров (`checks/repair.go:131` · `checkers.go:457,474`) — инертны без dc-данных пары, кандидат на `c.wordScript`. Строки 72 · 75 · 76 · 77 · 26 · 32 ЗАКРЫТЫ (01.08, оркестратор №9). ✅
|
||
|
||
## D39.69 — КАЧЕСТВО БАНКА: ОБА ЭТАПА ПРИНЯТЫ И ЗАЛЕНДЕНЫ (этап 1 дизайн ратифицирован ВЛАДЕЛЬЦЕМ напрямую; этап 2 стройка той же сессией, $0, чекер-пак ещё не стартовал — коллизий нет; приёмка оркестратора: тесты/парити/голден исполнением + независимое воспроизведение флагманских чисел + 4-агентное адверсариальное ревью): **ПОСТРОЕНО ТРИ ПРИМИТИВА** — **§1 серия-батчинг (36в ЗАКРЫТА)**: `DetectSeries` HEAD-AWARE (равная длина · общая голова · различие только в модификаторе · L=1 вне · без транзитивного замыкания) + серия ЦЕЛИКОМ в батч + value-порядок отреза бюджета (частота-desc — **feed_cap ЗАКРЫТ этим**, из строки 86 изъят); канал по классу письма из данных (`lang-script.txt`), алфавитный источник инертен; «ровно 4 серии на живом BANK-FULL, ноль блоба, 方源/元石/元海 вне» — воспроизведено оркестратором НЕЗАВИСИМО; **§2 тип-классификатор ПЕРВИЧНЫМ (36а ЗАКРЫТА)**: отдельная фокус-фаза ДО RenderBatch (единственная форма с живой пробой 6/6), корректный тип роутит conform + праймит рендер + банкуется `attachClassifiedType` БЕЗ смены эмиссии (D39.50 не реоткрыт); своя роль/бюджет/промт `classifier.md`, request-hash-ось, fail-loud пары без промпта; честный $0-экран (тест ПИНИТ, что он пропускает юаньши/Юаньхай — флаг, не гейт); денежный цикл терминолога зарефакторен в общий `runBankRoleBatches` (resume $0 запинен тестом); **§3 Decl-шов (строки 27/84 ЗАКРЫТЫ)**: `lang.TargetStemmer` из ru-ДАННЫХ `decl_suffix` (пара без данных инертна) → `dstFormPresent` принимает косвенные падежи; короткая форма 27 — уже работала через `decl.forms[]` (пин пре-существующим тестом); neuter end-to-end (enum · `gender_neuter` в injection-данных · SeedLint громко отбраковывает неизвестный род); ось = **scoped `neuter-directive-v1`-фолд в `memory_version`** (отступление от дизайна ПРИНЯТО как улучшение — точнее правила условного фолда §6.2, книга без neuter байт-идентична, голден доказал). **ЗАКРЫТО ПО НУЖНОСТИ дизайном (ратификация закрытий):** 36б второе мнение — бэкенд-стройки НЕТ, маршрут = полигон-замер (Q2, строка 5 перевязана) · резюме-слой (строка 80) — проза-суммарайзер закрыт, строка = ГЕЙТ ПИЛОТА Ф2.5 («допускает ли нарратив-строка детерминированный верификатор — или это D1 со схемой») · эмиссия головы 蛊 — сид-половина (чек-лист) + измер-гейт Q7 ПОСЛЕ #10 (строка 18 перевязана) · эмбеддинг A7/D2 — закрыт по нужности, реопен = измеренный recall-разрыв на МАСШТАБЕ, только batch-time лейн · STITCH — закрыт до давления МАСШТАБА (реопен = бюджет ИЛИ измеренный эффект размера инъекции) · ranked-set — качество закрыто §1, hard-режим = Q4. **First-occurrence-тест ($0, исполнен): гипотеза первенства ОПРОВЕРГНУТА** — роль не первовхожденческий и не частотный выбиратель, ре-решает контекстом (позитивное подтверждение D39.65). **Голден: 172/172 hex-only** (сдвиг = `embedded_version` от данных injection/target-ru), вердикты байт-идентичны. **Фикс-лист → строка 87** (несущее: «ь» в `decl_suffix` — приёмочный кейс «Фан Юаню» сейчас ПРОВАЛИВАЕТСЯ; неверный комментарий Batch про независимость request-hash; оверсайз-серия одним батчом — помнить cap-8000; classify-валидация/тесты; мутационный тест neuter; voice-stemmer вопрос). **⚠ Вопрос владельцу Q8: `classifier.md` несёт книжные каноны (方源 и др.) в общий пар-слой** — санкция или жанрово-генерические примеры. Вопросы §9 Q1–Q7 + Q8 — строка 88. Платный порог «6/6 harm» — добрать при ре-пробе 74 (02.08, оркестратор №9). ✅
|
||
|
||
## D39.70 — ОТВЕТЫ ВЛАДЕЛЬЦА ПО §9 БАНК-ПАКА + КАНОН ЦЕЛЕЙ (02.08): **(Q8) книжные примеры в `classifier.md` САНКЦИОНИРОВАНЫ** с восстановленной нормой: языко-/книго-специфичное ДЕЛАТЬ МОЖНО — но выносить в данные/отдельные модули, встраиваемые архитектурно чисто (пар-промпт = легитимный модуль); **(Q1–Q7) делегированы инженерному «как лучше по исследованию, соблюдая цели»** — диспозиции: Q1 канон-пин серий НЕ сейчас (вернуться на МАСШТАБЕ) · Q2 полигон-замер нужности 36б — ДА, до любой стройки (слот при ре-пробе 74) · Q3 резюме = гейт пилота Ф2.5 ПОДТВЕРЖДЁН (строка 80) · Q4 hard-инъективность — НЕТ (warning-only по дизайну, порядок закрыт серией) · Q5 авто-транслит реалий — промпт-инструкцией роли «предпочитай смысловой перевод реалий; транслит — именам собственным» (данные пар-промпта, в фикс-лист 87; судится следующим прогоном) · Q6 «сокращённая форма» = МОРФОКЛИП (`decl.forms[]` достаточно, $0; прозвища живут алиасами банка — отдельного поля НЕ строить); отбраковка неизвестного рода компат-безопасна (neuter-сидов в природе нет) — строка 27 остаётся закрытой · Q7 замер эмиссии головы — ДА, дешёвым полигон-слотом ПОСЛЕ #10 (очередью с ре-пробой; строка 18 уже так стоит); **(2) оценка `series.go` по канонам (вопрос владельца)**: ядро — ПО КАНОНАМ (пакет пар-агностичен, параметры приходят значением, алгоритм generic и детерминирован, языковые примеры только в комментариях с измеренным «почему»); один этаж ниже канона — `SeriesMorphology`: `head_final` захардкожен Go-константой CJK-класса вместо данных (код сам помечает «the one place to revisit») → в фикс-лист 87 добавлено «`series`/`head_final` → строкой в `lang-script.txt`» + консолидация дубля `lang.TokenizeWords`↔`text.TokenizeScript`; **(3) КАНОН ЦЕЛЕЙ ПРОЕКТА сформулирован и вписан в CLAUDE.md** («Цели и мерило», 6 пунктов: продукт-качество · мультиязычность модулями/данными · чистая поддерживаемая архитектура · современные подходы/харнесс-превосходство · экономика с видимыми деньгами · детерминизм) — собран оркестратором из формулировок владельца (START_PROMT, 24.07 общность, 01.08 критерий, 02.08 харнесс-буллеты), НА ПОПРАВКУ владельцу; сессионные промты далее ссылаются на канон вместо пере-цитирования. Строка 88 ЗАКРЫТА (02.08, оркестратор №9). ✅
|
||
|
||
## D39.72 — ОСТАТКИ КАРТЫ ОБЩНОСТИ ПОЛУЧАЮТ НОСИТЕЛЯ (вопрос владельца 02.08 «мы что-то взяли оттуда в бэклог?» — аудит показал ПРОПУСК оркестратора): из карты D39.60 взято и закрыто/затрекано ПОЧТИ всё — П0–П4 построены (D39.64) · П5 generic-майнер = строка 35 (гейт ja→ru) · П6 отклонён (D39.62 Q3) · 4 data-флага = строка 14 · остаток ведра C = строки 79/34 · книго-ось чиста по построению; **НЕ имело носителя ведро D («удалить», 12 сайтов)** — свип D39.66 заметил «не удалено, вне скоупа фазы-2», но строку я не завёл (нарушение собственной нормы D39.66 «каждое отложено получает строку тем же лендингом»); живые остатки подтверждены грепом: указатели на несуществующий `checkers_zh_ru.go` в комментариях (cheapgates.go:56,125,130 · langpack.go:73+) · ложная шапка checkers.go:22-25 · дубль isHeaderContentRune↔isHeaderSeparator · minerPackVersion «zh-universal-v1» · глифы ⟨проверить⟩ в tmctl/render · вес palladius в miner.go (часть исходной дюжины могла уйти фазой-2 — сверить по карте §3). **Заведена строка 89** (аудит-и-чистка ведра D + сверка ведра B «6 пар-модуль-без-гейта» против фазы-2); носитель = ПАКЕТ-ЧЕКЕРОВ (бо́льшая часть сайтов в checks/ — промт дополнен пунктом) либо мелкая пачка (02.08, оркестратор №9). ✅
|
||
|
||
## D39.73 — РЕКОНСИЛЯЦИЯ ТРИАЖА: ПОЛНАЯ МАШИННАЯ СВЕРКА НАХОДОК ПРОТИВ НОСИТЕЛЕЙ (владелец 02.08 «что ещё проебал? технические решения сессий проебал?»): все 77 находок свипа D39.66 + рекомендации пост-чека + фикс-листы приёмок D39.64–71 прогнаны механически против живых строк/дописок/закрытий. **Вердикт по решениям СЕССИЙ: целы** — их держал 951-позиционный свип (92% доказанных диспозиций) и адверсариальный пост-чек кодом; **провал локализован в ТРИАЖЕ оркестратора**: из ~95 рекомендаций уронено 5 (ведро D — уже исправлено D39.72; идиоматика-словари сехоуюй/васэй-эйго/вэньянь → дописка 52; Ф2-хвосты 02-mvp CometKiwi/T-index · Batch API судьи · llama-server · стриминг → строка 90 к пилот-препу; arity-полоса паспорта D29.2г → дописка 55; платный порог приёмки §2 «6/6 harm» жил только в гниющей шапке → дописка в строку 74 с полигон-слотами Q2/Q7). 7 из 8 греп-кандидатов оказались ложными (носители живы: порог-3 в 25 · lintNumberMagnitude в 79 · источник 74 · триггер 12 · линк 02-mvp починен · F3-brief в 71 · echo-R6 в PACKAGE4). Норма-урок: триаж многоисточниковых находок завершать МАШИННОЙ сверкой «каждая рекомендация → носитель», не глазами (вписано в промт-нормы оркестратора) (02.08, оркестратор №9). ✅
|
||
|
||
## D39.81 — Фронт открыт: SaaS ратифицирован, процессная модель движка, инвариант непротекания конвейера, бэкенд-работы Ф3 получили строки (02.08)
|
||
|
||
По релею записки фронт-направления; все несущие техутверждения сверены кодом до записи (HTTP-слоя в backend нет — 0 вхождений ListenAndServe; рамка research/16:13 «выхлоп = экспорт-артефакты, НЕ веб-сервер; API/SSE — Ф3» дословна; `pipeline/ratelimit.go:11` — гарды per-процесс, mistral ~48% отказов под параллелизмом; `store.go:43` EXCLUSIVE flock + `OpenReadOnly`-пути без flock; банк-пауза `--verify-bank` построена). Ратифицировано: **(1) Продукт = SaaS**, не локальное приложение (решение владельца 02.08); зоны `frontend/` (фронт-сессия на моках, промт `frontend/docs/FRONTEND_SESSION_PROMPT.md`) и `platform/` (control plane) — живые, роль «Платформа» в CLAUDE.md; натив-прицел V0-п.26 снят этим решением (реестр ПТ-23). **(2) Инвариант непротекания конвейера:** интерфейс не раскрывает модели/стадии/внутреннюю терминологию — пользователь видит «загрузка → разбор → перевод → подпись банка → финал → готово»; API отдаёт продуктовые понятия, слой перевода внутренних вердиктов обязателен (сегодняшний read-model с flag_reason/стадиями наружу не выдаётся); ревью-вопрос — зеркало общности: «сменится стадия конвейера — придётся ли править фронт?» (реестр ПТ-33). **(3) Процессная модель:** движок = процесс-на-прогон (EXCLUSIVE flock — инвариант, не ограничение); СЕРВЕР В backend НЕ ПИШЕТСЯ — HTTP/SSE и пользователи/квоты/очередь живут в `platform/`; read-API строится поверх готовых `OpenReadOnly`-путей. **(4) Строки:** НОВЫЕ 95 «контракт API v0 + продуктовый словарь статусов» ($0; ЕДИНСТВЕННАЯ ранняя вставка — фронт на моках, без пришпиленного контракта моки и API разойдутся классом «док↔код»; двухфазный поток вывести из готового `--verify-bank`, не проектировать) · 96 «HTTP/SSE + сервисная обвязка в platform» (Ф3, после 95) · 97 «глобальный брокер рейт-лимитов» (гейт «до второго параллельного пользователя»); ПЕРЕВЕСЫ: 49 annot-половина D15.2 → «скоро» (annot-v1 = источник замечаний фронта, критический путь подключения) · 94 → «к подключению фронта». **(5) Курс НЕ пере-упорядочен:** движковая очередь (смолпак → ре-проба 74 → добор идеала → ja→ru → МАСШТАБ) стоит — фронт бэкенда не ждёт. Поправки записке при приёмке: реестр требований, который она предлагает завести, УЖЕ построен (D39.80, `product-requirements.md`); H7/H8/H10 уже несла строка 94; ETA — строка 54; H-требования сверены — статусы записки совпали с реестром (02.08.2026, оркестратор №9, по релею владельца «надо записать в планы»). ✅
|
||
|
||
## D39.84 — Стек фронта/платформы запинен, восемь решений владельца ратифицированы, работы движка под фронт получили строки, перевод не индексируется (02.08)
|
||
|
||
По релею отчёта фронт-сессии (исследование стека закрыто: 15 агентов — 7 направлений × независимые скептики-опровергатели + синтез, версии сверены с вебом 02.08, blocker/major-поправки скептиков записаны исправленными вариантами; артефакты `frontend/docs/STACK_DECISIONS.md` и переписанный `frontend/docs/FRONTEND_SESSION_PROMPT.md` — фронт режется на этапы S0–S7, первая кодовая сессия кончается витриной токенов). Приёмка оркестратора: 10-агентный refute-воркфлоу — ВСЕ несущие бэкенд-утверждения записки CONFIRMED по коду, 8/8 веб-пинов подтверждены первоисточниками (TS7 GA 08.07.2026 БЕЗ программного API до 7.1 → TS 6.0.3 · Vite 8 = Rolldown · Fleet закрыт 22.12.2025 · react-resizable-panels v4 Group/Separator · react-router 8.3 Node≥22.22 — стенд 22.22.3 проходит). **(1) Восемь решений владельца:** рынок глобальный, SEO только Google (Яндекс снят) · выравнивание колонок грубое по единицам экспорта — механизм ГОТОВ (`tmctl export --pairs`, побайтное выравнивание по edit-unit, `internal/pipeline/export.go:89-93`; уточнение приёмки: draft-only-пайплайн шипит по чанкам, для штатного edit-пайплайна утверждение точно) · подсветка сомнительных мест только блок/глава, внутритекстовые спаны НЕ строятся (у $0-гейтов нет байтовых смещений) · остановка на подписи банка = параметр запуска per-run — ГОТОВО (`--verify-bank`, exit 3, `invocation.go:108`/`main.go:39-46`; галочка формы = передача флага, движок не трогается; в draft-only не останавливает — `mining.go:193-197`) · оплат в MVP нет, денежных полей в UI нет вовсе (расход остаётся телеметрией владельца; потолки/rebill-согласие движка канон §5 не трогает) · десктоп = устанавливаемое PWA первым шагом, Tauri по явным триггерам · макет-инструменты не используются, источник вида = пиксель-замеры референса (Fleet невоспроизводим — растровое совпадение не критерий готовности) · аутентификация: ОДНА серверная сессия, предъявление кукой (браузер) или Bearer (десктоп/CLI), principal только в middleware — вход дизайна П-1 платформенного бэклога. **(2) ПТ-34, продуктовый запрет:** ни один символ пользовательского перевода никогда не попадает на публично индексируемый URL — ни витрин, ни «поделиться», ни публичных ссылок чтения (авторское право + политика Google по масштабируемому машин-контенту бьют по всему домену); носитель — двухконтурный деплой (SPA `app.<домен>` целиком под noindex + статический публичный контур, STACK_DECISIONS §4). **(3) ПТ-21 переформулировано:** якорь чтения = edit-unit экспорта, НЕ «чанк пайплайна» — финальный текст существует только на уровне юнита (~1.9 юнита/главу по замеру фронта; «4276 юнитов» из артефактов репо не выводится — полнокнижной БД не существует, что само подтверждает тезис о ре-ингесте; принято как замер сессии, порядок величин сходится с coldrun-a); читалка обязана жить с «глава = один блок». **(4) Работы движка → строки 99–102** (каждая проверена кодом): 99 пофазный прогресс draft N/M ∥ edit N/M (done = все draft-строки членов + edit-строка, `status.go:328-331/365` — индикатор 0% ВСЮ черновую волну; `chunk_status` уже несёт гранулярность — выводимо без миграции схемы) · 100 персист манифеста глав/чанков + хеш источника (каждый read-вызов заново ингестит и режет исходник — `status.go:177-195`, redrive дважды за вызов; замер фронта 1.42–1.51 с CPU/23 МБ; `chunker_version` уже в снапшоте — `pipeline/render.go:53`) · 101 машиночитаемая таблица подписи банка (кап 20 = только stdout `render.go:98`; полная таблица — текстовый сайдкар `.bank-stop.txt`; JSON нет нигде) · 102 внешний trace-контекст в tmctl (TraceID минтится заново каждым вызовом — `main.go:67-70`; внутри вызова трасса цельная, `request_log.trace_id` персистится). **(5) Противоречие разрешено ВЕРНО:** рекомендация интеграционного агента «долгоживущий демон в backend» отвергнута самой сессией по D39.81 — ратификация удержана, HTTP/SSE/очередь в `platform/`. **(6) Две ловушки эксплуатации подтверждены и заведены входами дизайна (строка 95 · П-1):** подпись термина ≠ UPDATE строки — банк пересобирается каждым прогоном (seedGlossary REPLACES + ReplaceBank DELETE/re-INSERT, `seeding.go:18/110`, `glossary.go:158-162`; контракт подписи пишет в файлы-источники: mined-delta/сид; след затирания — только журнальная строка glossary_revisions, без предупреждения) · порядок деплоя платформы: read-путь схему НЕ мигрирует никогда (`store.go:135-143`, «schema vN … expects vM» в обе стороны; чинит write-команда, годится и `redrive --dry-run`; `tmctl backup` НЕ мигрирует). **(7) Норма зонных бэклогов (решение владельца при лендинге):** фронт и платформа держат СВОИ бэклоги в своих зонах — `frontend/docs/BACKLOG.md` (Ф-1..Ф-6) · `platform/BACKLOG.md` (П-1..П-4); засеяны оркестратором при лендинге переносом уже записанных отложенных решений, дальше ведут зоны; ЕДИНЫЙ бэклог PROGRESS фронт/платформа-строк НЕ принимает — остаётся трекером движка/полигона/доков; движковые стыки фронта (зона «бэкенд») живут в едином (строки 99–102); строки 96/97 переехали в платформенный (П-1/П-2) с ID-надгробиями-указателями (ID стабильны навсегда — внешние ссылки не рвутся). **(8) Лендинг зон** `frontend/` + `platform/` + `.gitignore` (`frontend/references/` — скриншоты вне git, пины замеров сохранены в доках). (02.08.2026, оркестратор №9). ✅
|
||
|
||
## D39.85 — Шов движок↔платформа: индустриальный стандарт ратифицирован — событийный поток, материализация, артефакты; ресёрч записан (02.08)
|
||
|
||
По слову владельца («двигаемся в сторону стандарта индустрии, запиши что узнал аргументированно»). Ресёрч: `docs/research/23-engine-platform-seam.md` (5-агентный воркфлоу: три веб-направления по первоисточникам + репо-инвентаризация + независимый арбитраж — 9/9 вердиктов подтверждены, 3 поправки внесены; правила internal проверены ЖИВЫМИ сборками go1.26.4; $0). Ратифицировано: **(1) Форма шва — три канала:** живой статус = версионированный однонаправленный NDJSON-поток событий движка (шаблон terraform -json: version-хендшейк первой строкой, semver «минор = ignore-unknown / мажор = reject», stdout только потоку — человеческие логи уже на stderr) → воркер-обёртка платформы материализует в СВОЙ Postgres идемпотентным апсертом (run_id, seq) → SSE и все чтения ТОЛЬКО из Postgres (Reporting Database, НЕ полный CQRS — предостережение Фаулера принято); массивный контент = артефакты границ стадий (export-JSON готов · таблица банка = строка 101 · манифест = строка 100); пост-фактум/ре-синк = `status --json`/`export` (CLI-as-API по критериям git-porcelain/kubectl/terraform — только для завершённого состояния, не для поллинга живого прогона). Реконсиляция обязательна: на обрыве потока материализация пересобирается из status --json и артефактов (BEP-каveat о потерянных при краше событиях). **(2) Анти-паттерны — запреты:** платформа НЕ читает живой SQLite движка (EXCLUSIVE-локи + смешение локинг-протоколов = порча по howtocorrupt §2.4 · checkpoint starvation = операционное проникновение · IntegrationDatabase-связность со схемой v1–v14+ · индустрия единодушна: Litestream/LiteFS/sqlite3_rsync/Fossil строят снапшот/реплику, не шарят живой файл); движок НЕ пушит HTTP (направление: движок эмитит — адаптер платформы пушит); человеческий вывод не парсится; неверсионированный ad-hoc JSON не эмитится (прецедент гниения docker jsonmessage); допустимая будущая форма чтения файла — ТОЛЬКО immutable-снапшот, экспортированный самим движком (VACUUM INTO уже есть — F4) с явным export-контрактом. **(3) Публичный read-пакет ОТКЛОНЁН репо-фактом:** NewReadOnlyRunner тянет 12 из 14 internal-пакетов (полный конфиг-стек + шаблоны + langpack + ре-рендер снапшотов, `runner.go:151-266`; арбитраж усилил: 12/14, не 10/13) — тонкого среза не существует; процессный контракт D39.81 подтверждён дословно. **(4) Модули:** sibling-структура двух модулей правильная — честный аргумент НЕ видимость (один модуль дал бы ту же изоляцию internal), а изоляция графа зависимостей: pgx/river не попадают в go.mod движка и не двигают транзитивные версии через MVS — довод от детерминизма; живой эксперимент-лазейка: модуль с путём, вложенным под `textmachine/backend/*`, импортирует internal (проверка по префиксу пути, golang/go#23970) → **ревью-гард: пути Go-модулей платформы/фронта никогда не вкладывать под путь движка**; go.work закоммитить при появлении Go-кода платформы (паттерн kubernetes/grafana). **(5) Носители:** НОВАЯ строка 103 (NDJSON-эмиттер со стабильным словарём + событие потолка — единственное отсутствующее, деньги сейчас только в тексте ошибки `stagerun.go:472-494`; малое касание — единичные call-sites рядом с готовыми slog) · входы контракта 95 дополнены тройкой (i)поток/(ii)артефакты/(iii)ре-синк · П-1 платформенного бэклога уточнён формой потока · README research-навигация += 23. Дизайн-промт контракта 95 — по слову владельца; словарь событий и продуктовый словарь статусов (ПТ-33) проектируются вместе (02.08.2026, оркестратор №9). ✅
|
||
|
||
## D39.93 — Дизайн-ввод владельца по строке 46 (02.08, ночь): проверки выхода — ИЗОЛИРОВАННЫМ модулем с ИМЕНОВАННЫМИ причинами; деталь «переиспользовать FlagCJKArtifact» СНЯТА в пользу именованного флага. ✅
|
||
|
||
Слово владельца: «какая разница почему пришёл отказ — бэкенду надо ПРИЧИНУ назвать (эхо · не тот язык · вообще не ответила); я выступаю за степень изолированности кода» + классический вопрос «сколько стоит добавить пару». Следствия, вносимые в дизайн пака экрана ДО его выдачи: (1) детекторы выхода живут отдельным пакетом чистых функций (вход: текст + дата-план цели; выход: именованный вердикт + счёт), движок только вызывает и маппит в диспозицию; (2) **деталь §3.6 отчёта «переиспользовать `FlagCJKArtifact` для нового экрана» СНЯТА** — она экономила правку `escalatable()`, но ВРЁТ о причине (off-target-язык лёг бы в телеметрию как «артефакт исходной письменности»); правильно: новый именованный флаг + явное включение в белый список `escalatable()` (диспозиция та же: эскалируем, не ретраим); (3) пары: сам экран пар-слепой (скрипт-набор цели из `data/lang-script.txt`), новая пара = строка данных; известные ограничения — 115 (явный embed-список: новая ЦЕЛЬ сегодня требует правки Go) и семантика ПОДМНОЖЕСТВ письменностей для ja/ko (чисто китайский выход для →ja набирает 1.000 — решается в данных набором скриптов, не в Go). Попутно: предложение владельца по DeepSeek «поднять токены размышления при low» = ровно открытый замер строки 44 (вариация флора при `low` не проводилась; при `high` фальсифицировано D39.86) — мини-проба ждёт его санкции.
|
||
|
||
## D39.99 — КОНТРАКТ API v0 РАТИФИЦИРОВАН: строка 95 закрыта; форма = OpenAPI 3.1; три пасса приёмки, 19/19 находок вправлены; пост-мортем промт-ревью в канон (04.08). ✅
|
||
|
||
**1. Артефакт и форма.** S3 упёрлась в замок (контракта не существовало, строка 95 без промта) — по слову владельца написала вход Ф-14 (`frontend/docs/API_CONTRACT_INPUT.md`) и черновик контракта. **Решение владельца о форме: нормативная поверхность = OpenAPI 3.1** (`openapi.yaml`: JSON Schema моделей, spectral-линт шестым шагом `npm run check`, типы фронта ГЕНЕРЯТСЯ `openapi-typescript` с дрифт-тестом по голден-паттерну, MSW типизируется от них) — класс «фикстура выдумала форму», случившийся ЧЕТЫРЕЖДЫ (org/fullname · титульная политика · «Раздел N» · девять статусов), закрыт механически; прозаический md остался компаньоном (провенанс ✓/◆/○ · обоснования · К-вопросы). AsyncAPI отложен с записью (Ф-24). **Дом ратифицированной копии — `docs/architecture/14-api-contract/`** (спека байт-копией + компаньон-README с ревью-шапкой; байт-сверка копий — обязанность каждого лендинга; генерация типов далее из ратифицированной копии — контракт первичен).
|
||
|
||
**2. Приёмка — три адверсариальных воркфлоу-пасса, 0 опровергнутых из 19 подтверждённых** (черновик: 4 линзы×скептики, 2 high — «withheld=текст не выдан» ложно о движке (sanitizer_stripped и c-lite drop отгружают текст под флагом, `disposition.go:96-104`/`export.go:203-215`) и чтения без канала шва (текст юнитов посреди прогона · полный банк — строка 101 это таблица подписи, не экспорт) + 8 medium — сквозной паттерн «инфляция провенанса ✓ на ◆-предложениях»; round-1 дофикс: 6/6 применён, перепроверено кодом, генерённая цепочка подтверждена пере-генерацией байт-в-байт; round-2 свежий взгляд на новые схемы: 5 medium — экспорт ненаблюдаем · promote без dst (движок hard-reject, `memseed.go:84-86`) · закрытый required kind против легального пустого (`memseed.go:323-326`) · самопротиворечие §2.7 · resume после потолка без канала поднятия; все вправлены, включая if/then-констрейнт с честным замером «openapi-typescript игнорирует 3.1-условия» → К-11). Сессия сама завела К-10 (несплитованный счётчик главы) и К-12 (poll vs push экспорта). State выведен из ПАРЫ (вердикт, наличие текста); фразы приложения А — плейсхолдеры (В-3 за владельцем); ПТ-34-инвариант вписан (noindex · no-store · выгрузка только владельцу).
|
||
|
||
**3. Очередь.** Строка 95 ЗАКРЫТА. **99/100/101/103 перевешены «к подключению фронта» → «скоро, БЛОКЕРЫ контракта»** (аргументы сессии подтверждены кодом: без 100 у главы нет стабильного id — нумерация плотная, `chunker.go:99-105`; без 99 индикатор 0% всю черновую волну — `status.go:328-331`; без 101 подписной экран читает сайдкар с капом 20 — `cmd/tmctl/render.go:98`). НОВЫЕ строки: **125** банк-экспорт артефакт (канал `/bank`) · **126** механизм поднятия потолка (платформа; продуктовое слово — К-8) · **127** DDL-коммент `migrate.go:193` устарел (`auto` не пишет никто — фантом утёк во фронт-доки дважды). Счёт скриптом: 103 строки · скоро 21 · бэкенд 58/66.
|
||
|
||
**4. Пост-мортем процесса (вопрос владельца «где мы ошиблись на берегу») — три слоя, фиксы в канон.** (а) Ошибка последовательности оркестратора: ратифицирован S3-промт с мёртвым основным сценарием (замок закрыт, промта строки 95 не существовало) — фронт три сессии упирался в один вход. (б) Ревью промта было структурным, не построчным: инструкция «пинг в docs/PROGRESS.md» дословно следовала таблице ролей CLAUDE.md, но противоречила решению владельца 02.08 из шапки зонного журнала. (в) Системная дыра: решения владельца, принятые в зонных сессиях, не доезжают до канона. **Фиксы:** CLAUDE.md — пинг-канал фронта/платформы = ЗОННЫЙ журнал (`frontend/docs/frontend-PROGRESS.md` — переименован по слову владельца, писать туда всем включая оркестратора), не docs/PROGRESS.md; промт оркестратора — два чек-пункта (хендофф-промты сверяются ПОСТРОЧНО: каждая инструкция с путём/каналом вне зоны — против зонной таблицы; при каждом лендинге зоны — свип новых «решений владельца» из зонного журнала на confirm списком); шапка `frontend/docs/BACKLOG.md` разведена «предлагать обязан / ратифицирует оркестратор» (просьба №3 сессии — прежняя формулировка спровоцировала остановку первого захода).
|
||
|
||
**5. Открыто на владельце:** продуктовые К контракта — К-1 (десять статусов) · К-3 (метка главы в дереве) · К-5 (ETA в MVP; ПТ-19 существует) · К-6 (ось ступеней замечаний — операторская унаследована) · К-8 (слово и статус стопа по потолку) + заполнение приложения А (В-3) + прежний список D39.98 п.4 (confirm двух решений · авторство подчистки · приёмка банк-арбитража). **Следующий разговор на берегу — бутстрап платформы П-1: у второй стороны контракта ноль строк кода, К-4/К-7/К-12 адресованы зоне, которой нет** (урок строки 95 — не ждать, пока три сессии упрутся). (04.08.2026, оркестратор №12). ✅
|
||
|
||
## D39.100 — РЕШЕНИЯ ВЛАДЕЛЬЦА 04.08 ВЕЧЕР: четыре К контракта закрыты, лимиты «как Claude Code» (ПТ-35), платформа ОТКРЫТА промтом P0, зонные журналы = name-PROGRESS (04.08). ✅
|
||
|
||
**1. К-вопросы контракта, закрытые владельцем:** **К-1** — десять статусов приняты. **К-8** — механизм «как Claude Code»: страница лимитов/использования в настройках (СТАТУС, не суммы — запрет денег на экране D39.84 в силе и НЕ superseded), стоп по потолку = новое 11-е значение `BookStatus:paused` + оповещение «перевод остановлен: лимиты исчерпаны»; заведены **ПТ-35** (реестр) и **П-5** (платформенный бэклог: API лимитов — форму проектирует P0). **К-5** — ETA показывать: `eta_seconds` в спеку (движок отдаёт, `status.go:112`). **К-6** — принцип принят: две ступени замечаний, граница по ЧИТАТЕЛЬСКОМУ эффекту, не по операторской шкале; карта пере-раскладки — одним листом с фразами В-3 на подпись (владелец: «позже»). **К-3** — закрыт канон-уточнением владельца: метка главы — ИЗ ДАННЫХ книги, зашитой формы «Глава N» не существует (это шаблон langpack-данных; легальна книга без номеров/глав вовсе) — фронту проверить спеку и фикстуры на зашитую форму. Правки спеки — задачей первого шага S3 (блок в `S3_SESSION_PROMPT.md`; минорный бамп версии + регенерация типов + байт-сверка копий; канон правит только оркестратор пере-ратификацией диффа).
|
||
|
||
**2. Платформа ОТКРЫТА:** выдан промт **P0** (`platform/docs/PLATFORM_SESSION_PROMPT.md`): стек live-сверкой → layout (гард D39.85: модуль НЕ под путём движка) → компилируемый скелет (HTTP+`/healthz` · session-auth каркас П-1 · драфт схемы read-model · интерфейс NDJSON-ингеста) → зонная батарея → дизайн-ответы К-4/К-7/К-12 + форма П-5 ПРЕДЛОЖЕНИЯМИ (ратифицирует оркестратор); $0, LLM не зовёт, не в скоупе П-2/деплой/UI. **Норма зонных журналов (решение владельца): весь прогресс фронта и платформы — в зонных `frontend/docs/frontend-PROGRESS.md` / `platform/docs/platform-PROGRESS.md`** (заведён), пишут все включая оркестратора; `docs/PROGRESS.md` = движок/полигон/доки.
|
||
|
||
**3. Старые хвосты:** оба «решения владельца 04.08» из журнала фронта CONFIRMED («+» в левой панели = Добавить книгу, половина Ф-7 закрыта легитимно · референсы возвращены на диск). Подчистка D-лога (D39.98 п.3): владелец — «не я, но санкционировал, может, и я» ⇒ закрыто как «санкционировано владельцем, исполнено сессией-синхронизатором»; дисциплина D23.3 впредь — без изменений. Приёмка банк-арбитража — ПОЗЖЕ по слову владельца (артефакты остаются в дереве незалендены). Заполнение приложения А (В-3 фразы + карта К-6) — позже, готовит оркестратор с фронтом одним листом.
|
||
|
||
**4. Актуализация носителей этим лендингом:** ПТ-реестр (ПТ-35 нов; ПТ-18/19/20/33 — ссылки на закрытую строку 95 заменены контрактом 14) · CLAUDE.md (пинг-канал платформы = зонный журнал) · docs/README (промт платформы в активных) · шапка ратифицированного компаньона (пост-ратификационные решения). Единый бэклог не менялся: счёт прежний (103 · скоро 21 · бэкенд 58/66, D39.99). (04.08.2026, оркестратор №12). ✅
|
||
|
||
## D39.102 — ПРИЁМКА БАНК-АРБИТРАЖА (оркестратор №13): research/24 ПРИНЯТ — все числа чисты пере-раном; консилиум закрыт классом, бэкенд-доработки спланированы строками 128–132, 4 вопроса владельцу (04.08). ✅
|
||
|
||
**1. Вердикт.** Отчёт `research/24-bank-arbitration.md` + харнесс `eval/bank_arbitration/` + черновик v1 (`archive/reports/`) ПРИНЯТЫ и залендены. Верификация тремя контурами: (а) 12-агентный воркфлоу — пере-раны ВСЕХ строк «заявление = команда» ($0, офлайн по сырью): 8/8 CONFIRMED без единого расхождения чисел; 23/23 адресов §A подтверждены по HEAD `7f6270a`; веб-сверка §D по первоисточникам; байт-сверка инжект-пробы с рендером движка; (б) независимое ревью харнесса: деньги пересчитаны из сырья — $0.107334 против $0.107335 (округление записи), цены = `models.yaml`, 84/84 finish=stop, слаг-дрейфа нет, голд 53/53 против сида; арифметика ПИНГА («+$0.0161») — склейка инкрементов C+E, леджер чист; «потолок $1.00» — со слов сессии (ратифицирован $1.20, D39.90 п.5), при факте $0.107 беспредметно; (в) слепое ревью кода банка (author≠reviewer) + 12 опровергателей. Оговорки приёмки (конфаунд армов C/D · хрупкий C4 · SC=недетерминизм провайдера · пары-иллюстрации A4 · атрибуция Xiong'23) — в ревью-шапке research/24; выводов отчёта они не двигают.
|
||
|
||
**2. Ратификации по итогам замера** (в русле приоров D39.46/50/65/69): корзина «закрыть по нужности» ратифицирована ЦЕЛИКОМ — равноправный консилиум как прод-механизм · кросс-модельное взвешивание уверенностью · self-consistency N прогонов · селекция «выбери из вариантов» (потолок 17/45 классом) · отказ-сигнал ⟦TM-NO-DST⟧ · эмбеддинг-фетч (остаётся закрыт D39.69). Строка 5 пере-скоуплена: остаток Q2 = рецензент-второго-семейства ТОЛЬКО на спорных КЛАСТЕРАХ (слот при ре-пробе 74), роутинг целыми family/series-юнитами (урок E1-химеры), эмиссия рецензента — та же draft/⟨проверить⟩ (инвариант D39.42 §C2-7 не тронут). Вербализованная числовая уверенность — ordinal-очередь ревью ВНУТРИ модели (AUC 0.77–0.85), не арбитр и не кросс-модельный сигнал. Маркер ⟨проверить⟩ на транслятор-проводе поведенчески пуст (Δ=0) — доктрина «неподписанное с пометкой» получает цену; проба редакторского провода — вопрос владельцу.
|
||
|
||
**3. Бэкенд-доработки строками.** **128** — фикс-пак банка (вход §G, класс D39.71; гейт — подпись владельца, вопрос №4 отчёта). **129** — банкнота-парсер теряет хвост многословного dst (`banknote.go:236` против ре-джойна `terminology.go:880-885`; находка приёмки против клейма A10). **130** — emitRankCap×writeAutoBank: терм, выпавший из топ-200, молча стирается из авто-банка посреди книги; FL-3 ратифицирован ДО авто-провода D39.42, взаимодействие не ратифицировалось. **131** — кап инъекции не считает маркер/гендер-ноты: авто-книга превышает бюджет ~на 40–60% (биллинг компенсирован резервацией по рендеру); фикс двигает RequestHash ⇒ СТОП-решение. **132** — стойкий аутедж ТОЛЬКО банк-провайдера валит ран вопреки коммент-контракту «optional step never aborts». Строка 38 дополнена указателем «со слов» (ординал-адресация чекпойнтов). Опровергнуто/не заводится: term-класс эмиссии (ратифицирован замером D39.43/50, гейт Q7 строки 18) · «луна»-пример Палладия (жадная сегментация не даёт; класс «сама/вода» реален, бласт-радиус — порядок drafts под подписью) · NoDst-почти-сентинел на zh-ru (target_script обязателен конфигом, OffLanguage отбивает; остаток — латиница-target, хвост 128).
|
||
|
||
**4. Вопросы владельцу** (подняты отчётом, приёмка подтверждает): (i) мини-голд алиасов §E-1 research/20 (висит с 17.07) — делать?; (ii) «Гуюэ» слитно — пар-норма Палладия для составных фамилий (данные класса Z-B3, чинит 8/45) или вкус книги (канал — сид)?; (iii) санкция пробы редакторского провода двухсекционки (~$0.05); (iv) выдать промт фикс-пака 128 одним паком (перекупка бэнк-батчей — центы)? Рекомендация оркестратора: (ii) пар-норма и (iv) да.
|
||
|
||
**5. Гигиена лендинга:** путь промта в шапке research/24 → архив; аннотации приёмки в §A4/§D; пинг «Полигон» получил закрывающий маркер с поправкой арифметики; README/CURRENT-STATE актуализированы; `platform/*` не тронуто; сырьё (84 json) сверено sha256-манифестом до/после пере-ранов — байт-нетронуто; `gold.jsonl`/`forms_dump.json` пере-раном воспроизведены байт-в-байт.
|
||
|
||
## D39.104 — ДОКТРИНА ИНЖЕКТА РАТИФИЦИРОВАНА: банк на проводе — ЗАКОН для всех ролей независимо от статуса строки; свобода — только по ОБЛАСТИ употребления; «Гуюэ» закрыт (04.08). ✅
|
||
|
||
**1. Доктрина** (слова владельца: «надо давать везде одинаково; если кто-то ошибся — это уровнем выше»; финал — «фиксируем так»): банк на проводе = ЗАКОН для всех ролей, независимо от статуса строки; право «перевести иначе, если сомнительно» УПРАЗДНЕНО — это канал разнобоя между параллельными главами по построению, а настоящие юзкейсы свободы (игра слов · разбор знаков · буквальное не-терминное прочтение) от статуса строки не зависят и получают узкую оговорку ОБЛАСТИ употребления, действующую на все строки одинаково. **Принятая цена:** неверная авто-строка едет консистентно до ревью (чинится одной правкой банка + ре-эдитом; разнобой не чинится ничем). **Остаточный риск:** оговорка как лазейка — под leakage-метрикой пробы. Инвариант D39.42 §C2-7 не задет: статусы draft/auto и подписная таблица не меняются — доктрина о ПРОВОДЕ. Ошибки чинятся уровнем выше (терминолог+гейты+подпись) ⇒ фикс-пак 128 — главный рычаг качества банка.
|
||
|
||
**2. Форма на проводе:** единый закон-блок редактора вместо двухсекционки; маркер ⟨проверить⟩ с провода снимается (поведенчески пуст — research/24 §C; минус токены); транслятор-заголовок — та же логика. Кандидат-тексты — §B промта пробы; внесение в движок — **строка 134** ПОСЛЕ отчёта пробы (двигает рендер → RequestHash → перекупка, цену назвать при внесении).
|
||
|
||
**3. «Гуюэ» (вопрос (ii) D39.102) ЗАКРЫТ: не чинить** — расхождение с голдом = вкус, канал сида; конвенцию в проде держит сам банк инжектом; ру-специфика этого класса на голде ровно одна (замер research/24 §F1) ⇒ отдельный аудит транскрипционных правил не заводится. Зависимость принята владельцем: **фикс-пак 128 обязателен** — без него авто-банк даёт не конвенцию, а химеру.
|
||
|
||
## D39.106 — ШОВ: прогон переживает деплой платформы; журнал в каталоге книги + systemd-юнит-на-прогон; платформа НЕ родитель движка (05.08). ✅
|
||
|
||
**1. Решение владельца 05.08.** Верификация до ратификации: четыре чистых панели, ~18 агентов, две модели (research/25, там же отвергнутые альтернативы с причинами) — 0 голосов за «родитель+пайп», 0 за монолит, 0 за gRPC/брокер; атака на готовое решение: «доминирующей альтернативы нет».
|
||
|
||
**2. Форма (заменяет ТРАНСПОРТ D39.85 §1; остальное D39.85 в силе):** движок = транзиентный systemd-юнит на прогон (`Restart=no`, SIGTERM); события = `events.jsonl` каталога книги как проекция коммитов SQLite движка (outbox, та же транзакция, что чекпойнт); платформа тейлит, курсор `(engine_run_id, seq)` коммитится с эффектом в одной Postgres-транзакции; `status --json` — ремонт по остановленному прогону. Формат NDJSON/hello/seq, деньги (холд+потолок = защита, события = свежесть, D39.84/D39.100) и запрет на живой SQLite — без изменений.
|
||
|
||
**3. Обязательные механизмы при постройке — research/25 §«Обязательные механизмы» (реконсилятор на каждый выход юнита + перезапуск после ребута · intent/`uncertain` + ночная сверка с провайдером · пиннинг версии бинаря на прогон · гейт потолка пер-вызов). Следствия: PD-59 superseded; пайп-путь `supervisor.go` P1 = дев-режим; ответ PD-13 переезжает на cgroup юнита прогона. Строка 103 и денежные строки единого бэклога — при освобождении PROGRESS.md; задачи зонам — промтами.**
|
||
|
||
*(Тела D39.107–D39.123 — слайс [`../archive/architecture/05-decisions-D39-106-123.md`](../archive/architecture/05-decisions-D39-106-123.md), вынесено D39.139; D39.106 ниже — живое тело.)*
|
||
|
||
## D39.124 — ЗАКРЫТИЕ СЕССИИ №15, передача №16; докс-диета: хроники в архив-слайсы, CURRENT-STATE и зонный журнал платформы подрезаны (09.08). ✅
|
||
|
||
**1. Итог №15 одной строкой:** семь приёмок эры закрыты (D39.109–123, лента в CURRENT-STATE); последняя — платформа-раннер P4 (`d29e30c`, D39.123). Все реестры/финдингс-гейты закрыты, `counts --check` зелёный, чужие живые зоны (полигон эксп-22/23, правка владельца в промте оркестратора) не тронуты — кроме санкционированного: правка владельца по D39.120 (Fable↔Opus как «другая модель семейства») причёсана и залендена этим же коммитом.
|
||
|
||
**2. Докс-диета (заказ владельца 09.08: stale-вес мешает моделям читать).** Перемещено ДОСЛОВНО, без переписывания: (а) зонный журнал платформы 1856→~630 строк — эры P0–P3 (сессии + ратификации P1/P2/P3, вопросы P0/P1) → `platform/docs/archive/platform-PROGRESS-P0-P3.md`; «Текущее состояние» переписано на живые факты; пинги оркестратора (формы артефактов движка) оставлены живыми в хвосте; (б) `docs/PROGRESS.md`: хроника №11–№13 (D39.91–105) + снимок шести бюллетеней шапки эры №15 → `docs/archive/PROGRESS-2026-08-02-04.md`; шапка CURRENT-STATE пересобрана (лента · живое · открыто-на-владельце · указатели; служебные буллеты курс/горизонт/стек/счёт сохранены) (лента закрытого · живое · открыто-на-владельце · указатели); (в) `docs/README.md`: строка «активные промты» сведена к действительно активным, отработанные — общим указателем на архив. Правило прежнее: архив = дословный перенос с баннером, решения живут в D-логе.
|
||
|
||
**3. Хендофф №16** *(очередь ДОПОЛНЕНА D39.125 п.4: докс-пак 167 — первой задачей)*. Счётчик в `ORCHESTRATOR_SESSION_PROMPT.md` бампнут (№15 закрыт после этой ноты). Очередь — CURRENT-STATE п. «ЖИВОЕ»: лендинг эксп-22 (+вопрос про эксп-23) · промт эмиттера (входное чтение — п.4 D39.123) · платформенный промт по слову. Норма-добавка в промт оркестратора: хендофф-артефакты другим сессиям — только durable абсолютные пути (`~/tm-handoff/`, `~/tm-backups/`), не scratchpad. Незакоммиченного за №15 не осталось; в дереве — только живой полигон (09.08.2026, оркестратор №15). ✅
|
||
|
||
## D39.125 — ДОКС-ДИЕТА ПО АУДИТУ: D-лог слайсирован (−66%), PROGRESS −42%, факты-против-кода исправлены; нормы формы доков; сессия №15 закрыта передачей №16 (09.08). ✅
|
||
|
||
**1. Аудит (заказ владельца 09.08, метод — его же).** Инвентарь ОБОИХ файлов целиком отдельным Opus-агентом + 4 холодных Opus-читателя с поисковыми заданиями (главы · деньги · эмиттер · модели) + верификатор жалоб: **61 VALID / 9 PARTIAL / 1 INVALID**; ответы читателей без фактических ошибок — но ценой двойных чтений и слепых грепов. Worksheet с ревью-шапкой: `archive/reports/DOC_AUDIT_INVENTORY_2026-08-09.md`. Диагноз: оба замысла выродились в хронику приёмок; событие жило в 3–4 носителях; дублирование дало три ФАКТИЧЕСКИХ расхождения (каждое ловила приёмка, ни одно — процесс); карта D-лога покрывала 14% веса.
|
||
|
||
**2. Исполнено этой нотой.** (а) **Слайсинг D-лога**: тела закрытых эр → 5 слайсов `archive/architecture/05-decisions-{D1-D38, D39-arch-reset, D39-20-58, D39-59-90, D39-91-105}.md` ДОСЛОВНО (сверка разбиения побайтным ассертом); телом в живом остались карта+эрраты, гейт-ноты D22·D25·D29·D30, несущие D39.25·30·33·42·47·58·62·63·64·69·70·81·84·85·93·99·100·102·104 и вся голова D39.106+; живой файл 961→323 КБ. (б) **PROGRESS 215→131 КБ**: пинги закрытых паков и блоки закрытых экспов → `archive/PROGRESS-2026-08-04-09.md`; мёртвые секции Память/Голос/Ридер-IDE закрыты указателем (синк CLAUDE.md); «Свежее состояние бэкенда» → указатель на CURRENT-STATE (D39.80). (в) **Факты-против-кода**: эррата D39.111 (баланс-минус-холды superseded D39.115) в шапку; research/27+строка 160 — subtitle ПОНИЖАЕТСЯ в тело, не выбрасывается. (г) Глоссарий: легенда неймспейсов (PD/П/Ф/В/К), «глава», денежный словарь, лексикон экспов. (д) README: правило чтения со слайсами, экспы 21 закрыт / 22-23 живые.
|
||
|
||
**3. Нормы формы (направление).** D-нота = РЕШЕНИЯ (что+почему одной фразой+указатель на нарратив); нарратив приёмки живёт ТОЛЬКО в ревью-шапке отчёта, прочие носители — указатели. Эррата — ОДНОЙ формой: навигационная в шапке D-лога (правка тел задним числом — против D23.3). Слайсы — только дословный перенос. Бэклог-строка: «диспозиция сверху, археология вниз»; ячейка >800 байт — кандидат на выселение в носитель. Статус-строка под заголовком каждого отчёта эксперимента (ПРИНЯТ Dxx / не ратифицирован). Остальной объём аудита — **строка 167** (карта→реестр всех нот · разгрузка жирных строк · 15-money-path · нормативный док эмиттера СО строкой 103 · STACK.md · DEFECT_REGISTER-форма П-строкой).
|
||
|
||
**4. Хендофф №16.** Очередь: докс-пак 167 ПЕРВОЙ задачей (worksheet готов) · лендинг эксп-22 (+вопрос про эксп-23) · промт эмиттера (входное чтение — D39.123 п.4 + нормативный док шва из 167) · платформенный промт по слову. Урок сессии — в промт оркестратора: двухфайловая правка одним скриптом БЕЗ транзакционной проверки потеряла блок (восстановлен из git за минуту; правки читающих>1 файла — сначала все чтения, потом все записи, затем сверка). Незакоммиченного за №15 нет; в дереве — живой полигон (09.08.2026, оркестратор №15). ✅
|
||
|
||
## D39.126 — ДОКС-ПАК СТРОКИ 167 ИСПОЛНЕН: реестр всех нот + линтер формы + разгрузка бэклога + топикальные входы (деньги · эмиттер · стек); строка 167 пере-скоуплена в остаток (09.08). ✅
|
||
|
||
**1. Исполнено** (состав заказа — worksheet `../archive/reports/DOC_AUDIT_INVENTORY_2026-08-09.md`; механика — дифф лендинга, здесь не пересказывается): (а) **реестр всех нот** — [`05-decisions-index.md`](05-decisions-index.md) (№·дата·суть·статус·тело·темы; извлечение 6+6 агентов воркфлоу, полнота против заголовков шести файлов сверена скриптом, единственная находка верификатора — титул D39.64 — вправлена); прозаическая карта шапки (17-КБ строка, покрытие 14% веса) заменена указателем на реестр, вводный текст Фазы 1 перенесён ДОСЛОВНО в слайс D1-D38; (б) **counts.py**: `--check` += полнота реестра (нота без строки реестра = расхождение), новый `--lint` = file:line-якоря живых доков (файл существует · строка ≤ длины файла; обзоры чужого кода research/21/26 вне линта); линт доведён до нуля — 8 путей research/17 на заархивированные файлы поправлены; (в) **разгрузка топ-10 жирных строк бэклога** (46·108·126·121·105·106·44·122·109·13б): тела ячеек ДОСЛОВНО → `13-tech-debt-anchors.md` §Б-*, в таблице — диспозиция+указатель («диспозиция сверху, археология вниз», D39.125 п.3); PROGRESS −24.5 КБ; (г) **топикальные входы**: [`15-money-path.md`](15-money-path.md) (деньги от гранта до settle; якоря сверены кодом) · [`16-events-emitter.md`](16-events-emitter.md) (сборка-норматив эмиттера, обязательное пре-чтение сессии строки 103; разрешённое расхождение «карантин прогона → карантин ПРОЕКЦИИ» показано, побеждает D39.123 п.2в) · [`../STACK.md`](../STACK.md) (роль→модель→конфиг→квирки); (д) **К-статусы компаньона контракта** сведены: шапка `:14` противоречила блоку пост-ратификации и таблице §4 — К-1/К-3/К-5/К-8 аннотированы ЗАКРЫТЫМИ (D39.100), К-13 заведён строкой таблицы (его там не было вовсе); (е) шапка 09-target дотянута до пост-D39.125 · product-requirements освежён (ПТ-9/19/20/25/35) · CURRENT-STATE сжат (лента-дубль и рукописный скоро-список сняты, курс/горизонт/стек — короче с указателями) · форма эрраты впредь — ТОЛЬКО навигационная в шапке (три прижизненных правки-на-месте поименованы там же).
|
||
|
||
**2. Находки пака, получившие носителей:** (а) ⚠ **ВЕСЬ банковый контур (банкнота+терминолог+классификатор) жив только ран-локальным конфигом книги** — шире заявленного строкой 140 («банкнота»); сверено грепом shipping-c1 (`gates.terminology`/`gates.banknote` = 0 вхождений), дописано в строку 140 и STACK.md; (б) эскалация в shipping мертва `budget_usd: 0` — STACK.md §примечания; (в) шапка-таблица эндпоинтов quirks датирована 04.07 и отстала — полигону при лендинге эксп-22 (вместе со статус-баннерами экспов); (г) кросс-ссылка 160↔Ф-30/В-4 поставлена (строка 160 + пинг в журнал фронта); пинг платформе о форме DEFECT_REGISTER секциями отправлен (П-строку заводит зона).
|
||
|
||
**3. Строка 167 пере-скоуплена в остаток:** статус-баннеры экспов + шапка эндпоинтов quirks (полигон, при лендинге эксп-22) · DEFECT_REGISTER секциями (зона платформы, пинг отправлен). Счёт очереди не меняется (09.08.2026, оркестратор №16). ✅
|
||
|
||
|
||
## D39.127 — ПРИЁМКА ФРОНТА S3.6 ПРИНЯТА И ЗАЛЕНДЕНА (`57e6bd1`); промт S3.7 выдан; Ф-47 ратифицирован (`sense` обязателен); строка 169 — экспорт банка (10.08). ✅
|
||
|
||
**1. Приёмка (оркестратор №16; воркфлоу 12 агентов: 6 линз + скептики-верификаторы, author≠reviewer).** Гейты пере-прогнаны ИСПОЛНЕНИЕМ: `check:full` EXIT=0 · vitest 160 · `shot` ×3 · сценарии зелёные; десять ключевых клеймов записи S3.6 подтверждены кодом. **12 находок CONFIRMED (1 high: замер ширин таблицы банка молча проваливается в скрытой keep-alive вкладке и не повторяется при показе — `frontend/src/ui/Table.tsx:232`), 24 минорных, 1 опровергнута** — все переданы промтом S3.7 §8. Нарратив и поправки к записи S3.6 (ложный клейм §12 о механизме сторожа спойлера · число-дрейф §7–§14 · обратный порядок разделов 12–15) — приёмочная запись в зонном журнале фронта, здесь не пересказываются. Референс fleet_2.png докинут владельцем при приёмке, якоря палитры подтверждены пиксельной пробой (доминанта #181818 · #292929 · #184176 дословно).
|
||
|
||
**2. Ратификации.** (а) **Ф-47: `BankTerm.sense` — обязательное поле, пустая строка = «различителя нет»** (спека объявляет `sense` частью ключа уникальности `(book, src, sense, since, until)`, держа его вне `required` — противоречие внутри одного файла); исполняет S3.7 в зонной копии (0.2.1→0.2.2), канон `14-api-contract/` — диффом при лендинге S3.7. (б) Черновик ДОБАВОЧНЫХ полей `BankTerm` (note/gender/contexts/variants/…) НЕ ратифицирован — ждёт слова владельца по границе ПТ-33 (contexts = спойлер по построению; variants/confidence раскрывают конвейер). (в) Гейт S4 (D39.119 п.4) снят этой приёмкой; очередь фронта: S3.7 → приёмка → S4. (г) **Владелец при ревью выданного промта поймал ПРОПУСК приёмки: Ф-35 (интерфейс без хардкода русского) в промт не попала** — оркестратор собрал состав пака из бэклога зоны и долгов, записанных самой сессией, не пройдя лист владельца (START_PROMT) независимым свипом; промт дополнен задачей 9 (словарь строк + линт-гейт против кириллических литералов + хранилище выбора; переводы и список языков НЕ выдумываются). Свип вглубь показал: требование отсутствовало и в реестре продукта — заведено строкой **ПТ-36**. Урок в память оркестратора: состав пака сверять со ВСЕМИ источниками требований, не только с трекером зоны.
|
||
|
||
**3. Бэклог.** Новая строка **169** — экспорт банка для чтения фронтом (Ф-43: канала под `GET /books/{id}/bank` нет вообще; банк в приватном SQLite, платформе читать запрещено D39.85): движковый артефакт экспорта + платформенная проекция, гейт подписного экрана S5.
|
||
|
||
**4. Хвосты чужих зон, НЕ тронуты (передано полигонному лендингу):** застейдженный `docs/README.md` линкует `POLYGON_EXP2223_DOVODKA_SESSION_PROMPT.md`, а файл в индексе — `POLYGON_EXP2223_REDO_SESSION_PROMPT.md` (битая ссылка после коммита); тот же указатель в полигонной части CURRENT-STATE; строка «активные промты» README отстаёт по фронту (S3.5→S3.7) — чинится тем же касанием (10.08.2026, оркестратор №16). ✅
|
||
|
||
## D39.128 — ПОЛНОЕ ПЕРЕ-ЧТЕНИЕ КОРПУСА ПО ЗАКАЗУ ВЛАДЕЛЬЦА; выданы промты: бэкенд-эмиттер (103+135+165, закрывает PD-113) и платформа P5 (П-9+PD-140+П-11) (10.08). ✅
|
||
|
||
**1. Чтение.** По заказу владельца 10.08 («изучи вопрос досконально, перепрочитай документацию, не грепами») прочитаны ЦЕЛИКОМ: живой D-лог (все тела, 1–469) · `docs/PROGRESS.md` · `platform/docs/platform-PROGRESS.md` · `frontend/docs/frontend-PROGRESS.md` · `16-events-emitter.md` · `15-money-path.md` · `research/23` (через баннер) · `research/25`. Противоречий, меняющих план паков, не найдено; одно поверхностное расхождение передано сессии задачей (граница гейта потолка: `15-money-path.md` §2 пп.1–2 расходятся на поверхности — выяснить по коду, строка 135).
|
||
|
||
**2. Промты (запуск обоих — по слову владельца; параллельность легальна, зоны не пересекаются; фронт S3.7 живёт в `frontend/` параллельно).** (а) **Бэкенд-эмиттер** `docs/BACKEND_EMITTER_SESSION_PROMPT.md`: строка 103 (журнал `events.jsonl` по форме D39.106; словарь — ответ ДИФФОМ на предложение платформы `events.go`; сквозная проба своим журналом через настоящий декодер платформы в копии зоны) + 135 (гейт потолка пер-вызов) + 165 (различимые exit-коды — PD-113) + 102 опционально; $0; дизайн-развилки нормдока §5 отданы сессии с записью решений; голден/снапшот-нейтральность — обязательное доказательство. (б) **Платформа P5** `platform/docs/PLATFORM_P5_SESSION_PROMPT.md`: П-9 `POST /books` (+PD-72; ⚠ развилка «кто пишет `book.yaml` при интейке» ГЕЙЧЕНА ратификацией — вопрос в зонный журнал до стройки той половины) + стоп/резюм PD-140 (кандидат-дизайн: намерение стопа своей стороной до SIGTERM — дискриминатор против PD-152) + наблюдаемость П-11 + печать конфигурации PD-114 + DEFECT_REGISTER секциями (остаток 167).
|
||
|
||
**3. Хвост чужого дерева (повтор D39.127 п.4):** строка «активные промты» `docs/README.md` отстаёт (S3.5→S3.7, эмиттер/P5 не назван) и несёт чужой застейдженный полигонный hunk — актуализирует полигонный лендинг (10.08.2026, оркестратор №16). ✅
|
||
|
||
## D39.129 — ПРИЁМКА ФРОНТА S3.7 ПРИНЯТА И ЗАЛЕНДЕНА (`3e465bd`); канон контракта — 0.2.2; арбитраж 8.1: HIGH приёмки S3.6 снята как ложноположительная (10.08). ✅
|
||
|
||
**1. Приёмка (оркестратор №16; воркфлоу 11 агентов: 6 линз + скептики, отдельная арбитражная линза по спорной 8.1).** Гейты исполнением: `check:full` EXIT=0 · vitest **279** · 9 сценариев / 88 проверок. **12 находок CONFIRMED (1 high: запись ложно клеймит импорт `fill.ts` сценами — дубль подстановки в `scenes.mjs` жив и добавлен самой сессией), 0 опровергнуто, 16 minor**; блокеров лендинга нет. Носитель находок — блок «находки приёмки S3.7» следующего фронт-промта (S4); нарратив — приёмочная запись зонного журнала.
|
||
|
||
**2. Арбитраж 8.1 (спор моей приёмки S3.6 с сессией): ПРАВА СЕССИЯ.** В Chromium геометрический запрос форсит расчёт раскладки и под `content-visibility: hidden` — замер таблицы в скрытой keep-alive вкладке даёт ширины эталона (живой прогон сцены `hidden` при этой приёмке). HIGH из D39.127 п.1 снята как ложноположительная; сессия не поверила приёмке, замерила и сняла свой же готовый механизм — образцовое поведение. **Урок в норму приёмки (дописан в память оркестратора): браузерное поведение не подтверждается рассуждением от кода — вердикт без живого прогона = PLAUSIBLE, не CONFIRMED.**
|
||
|
||
**3. Ратификации и закрытия.** (а) Канон `14-api-contract/` догнал **0.2.2** байт-копией зонной спеки (`sense` → required, пустая строка = «различителя нет» — исполнение D39.127 п.2а); зеркало байт-равно. (б) Строки зоны Ф-47/Ф-49/Ф-50/Ф-51/Ф-40 закрыты; Ф-25/Ф-35 закрыты код-половиной; заведены Ф-52…Ф-55 и вопрос **В-9** (какие языки интерфейса обещает продукт — владелец). (в) **ПТ-36 → 🔶**: механизм i18n построен (каталог 157 ключей · гейт «текст местом» · стор языка · `<html lang>`), содержимое — только ru; список языков — 🔒 владелец. (г) Остатки слоя данных из ревью (глушащие отметки reread · `asked` при resync · дырка гейта вычисленных литералов · вакуумные пассы perf/zoom-сторожей) — фронт-зона, в блок находок S4-промта. **S4 — следующий этап; промт после приёмки P5** (экран загрузки стоит на `POST /books`) (10.08.2026, оркестратор №16). ✅
|
||
|
||
## D39.130 — ПРИЁМКА ПЛАТФОРМЫ P5 ПРИНЯТА И ЗАЛЕНДЕНА В ТРИ РАУНДА (`69d485a`); ратификации: Go-floor 1.26.6 · интейк `book.yaml` формой Б · контракт-диспозиции · строка 170 и дописка 165; гейт S4 фронта ПАЛ (14.08). ✅
|
||
|
||
**1. Приёмка (оркестратор №16).** Раунд 1 — воркфлоу 10 агентов: **8 находок (1 high: пол ревизии библиотеки игнорировался на вставке; деньги: `FinishUnspawnedStop` без гарда живой попытки; интейк: цепочки зомби/потери исходника), 0 опровергнуто.** Раунд 2 — ре-чек дофикса 6 агентами: **3 находки (2 high: гейт тулчейна фактически ПРИНИМАЛ 1.26.5 — floor жил только в тексте ошибки; гард корня хранилища не переживал unmount-в-BooksDir и маскировался бутовым MkdirAll).** Раунд 3 — закрыт с пинами/посадками; кросс-семейное ревью дофикса самой сессией дало 5 находок (две — уничтожение данных), эмпирически подтвердив D39.120. Финальная верификация исполнением: батарея EXIT=0 (16 пакетов, `-race`, живой PG `~/.local/pgsql:55433`); **гейт версий живьём отказывает 1.26.5 и `go1.27rc1`, принимает 1.26.6/1.26.10**; сентинел `.tmplatform-books`; `revision+1` ровно у двух заявленных прогресс-писателей; тестов **261→359** (удалённых 0), регистр **198** (145 закрыто · 48 открыто · 1 major PD-113 — ждёт эмиттера). Живые числа проб — «со слов» с пометкой. Нарратив — зонный журнал (три записки-плана).
|
||
|
||
**2. Ратификации.** (а) **Go-floor 1.26.6** (пять stdlib-адвизори, две трассированы в живые пути сетевого модуля): `make version-check` сравнением версий (`sort -V`, пререлизы отвергаются) + `toolchain go1.26.6` в go.mod; цена названа и принята — офлайн-хост с `GOTOOLCHAIN=local` и 1.26.5 зону не соберёт; **движок этим не двигается** (патч-версия, x/text-вахта Ш-2/119 не задета). (б) **Интейк `book.yaml` — форма Б** (платформа ОДИН раз рендерит стартовый конфиг новой книги из деплой-шаблона; дальше файл принадлежит оператору): ратифицирована как ИНТЕРПРЕТАЦИЯ D39.110 §2б с аудит-следом — то решение о потолках/правке СУЩЕСТВУЮЩЕГО файла, создание стартового конфига несуществующей книги ему не противоречит; несогласие владельца отменяет одной репликой; стройка Б — следующим касанием зоны. **Форма В** — строка **170** (`tmctl init`, движок пишет свой конфиг). (в) **Контракт (диспозиции владельца контракта):** PD-172 `file` последним · PD-173 enum-причина `rejected` (продуктовые фразы — владелец) · PD-174 404/503-классы · PD-180 «201 несёт `parsing`» + перечень отказов интейка — спек-правка **0.2.3 = задача S4-промта** (фронт бампит зеркало и типы, канон — диффом при лендинге S4). (г) Мотивированное исключение Н2 (два прогресс-писателя синка остаются на `revision+1` — прыжок через пол развязал бы книжную и главную шкалы) ПРИНЯТО. (д) PD-178 закрыта переформулировкой (состояние user-менеджера плавает между сессиями стенда) + скип-гейт по СПОСОБНОСТИ.
|
||
|
||
**3. Бэклог и очередь.** Строка **170** заведена; строка **165** дополнена PD-196 (exit 1 движка не различает классы отказа `manifest` — «источник нечитаем»/«конфиг битый»/«лок»; интейк чуть не удалил файл пользователя за опечатку оператора — различимость классов = мандат эмиттер-пака). **Гейт S4 фронта ПАЛ** (D39.129 условие исполнено): вход S4 = экраны библиотеки/загрузки на живом `POST /books` + находки приёмки S3.7 + спек-правка 0.2.3; промт — по слову владельца (14.08.2026, оркестратор №16). ✅
|
||
|
||
## D39.131 — ПРИЁМКА БЭКЕНД-ПАКА «ЭМИТТЕР ШВА»: строки 103+135+165+102 закрыты, движковая половина PD-113/PD-196 построена (14.08). ✅
|
||
|
||
**1. Приёмка и лендинг (`9cfe080`, 31 файл, тестов 749→794).** Панель 5 верификаторов: сквозная проба ПЕРЕ-СНЯТА с нуля (свой tmctl из дерева пака → живой `ingest.Tail` платформы в копии зоны: hello adopted, чужой регион пропущен, повтор за курсором = 0, подделка payload = `ErrPayloadConflict`) · 5 СВОИХ мутаций вне списка сессии — все CAUGHT (суммарно 16/16) · деньги исполнением (settle+чекпойнт+`spend` — одна транзакция; репэйр-гейт «2.0×→0» воспроизведён; micro-USD int64 с ceil; события вне BriefHash/снапшота/RequestHash — голден бит-в-бит) · кросс-модельный опровергатель (D39.120 п.1а). Дофикс-раунд ДО лендинга: `once_key`-lookup предикатом `AND once_key <> ''` (частичный индекс заработал — EXPLAIN-пин над боевой константой, до фикса SCAN = O(units²) на пути волны) · `PendingEvents` батчем LIMIT 256 (аварийный путь из O(N²) в константу на событие) · `StreamVersion` 1.0→1.1 (добавлены `Ceiling.Scope` и outcome `ceiling|stopped` — минор по собственному правилу). Механика — журнал, секция «Бэкенд» §0–§10.
|
||
|
||
**2. Ратификации.** (а) Полоса отказов **10–19** с классами словарём (10 конфиг · 11 «прочли и нарезали — книги в байтах нет» · 12 лок · 19 безымянный) + exit **4** потолок / **5** graceful stop; сужение класса 11 ратифицировано (11 = вердикт, по которому интейк удаляет загрузку; всё конфиг-объяснимое = 10). (б) `eta_seconds` эмитится из темпа ТЕКУЩЕГО прогона (пропуск поля ОБНУЛЯЛ бы колонку читателя каждой строкой — `pgstore/sink.go:110-113`). (в) Отказ не пишет терминального `finished`. (г) Предложение платформе «фолд `unit_done` ПРИСВАИВАНИЕМ, не инкрементом» ратифицировано направлением (at-least-once требует идемпотентности у потребителя; заодно самолечит потерю недодрейненного хвоста при рестарте). (д) Эскалационный кап НЕ прицениваает хоп — ОСТАВЛЕН: перелёт ≤1 хопа escalate_to-модели, задокументирован и запинен; реопен — первый живой инцидент. (е) Посылка «гейт потолка на границе юнита» ОПРОВЕРГНУТА кодом: `Reserve` всегда был пер-вызовным; на границе юнита сидел репэйр-суб-бюджет — он и ужесточён (строка 135); `15-money-path.md` §2 поправлен.
|
||
|
||
**3. Находки приёмки → носители.** **ПЛАТФОРМЕННАЯ половина шва НЕ построена** — заленденный потребитель не читает новые сигналы: exit 4 превращается в `failed` (outcome() знает 0/2/3, `paused_reason` читается из stale-снапшота ДО drain), `refusedTheSource()` не смотрит на код вовсе (опечатка book.yaml по-прежнему ведёт к удалению загрузки), `Ceiling.Scope` дропается, dev-супервизор стейл ⇒ **П-15 зонного бэклога платформы** (пинг в их журнал; PD-113/PD-196 в их регистре остаются open до её стройки). **Деадлок деплоя v15**: `status` (read-only) отказывает старой схеме, а платформа зовёт его ПЕРЕД каждым спавном и settle ⇒ апгрейд бинаря запирает все старые книги — строка **174** (решить ДО деплоя нового бинаря: `tmctl migrate`-команда либо деплой-порядок). `backupStamp` секундной точности маскирует класс «занято» — строка **173**. Сериализацию писателей журнала держит только flock проекта (два конфига в одном каталоге = перемешанный поток) — наблюдение в теле, реопен при живом инциденте.
|
||
|
||
**4. Инцидент нормы: «author≠reviewer» сессия исполнила как стиль чтения** (свой контекст, без второго) и в первой редакции отчёта приписала себе разделение — сама вскрыла, независимые панели провела пост-фактум; корень («требование без механизма исполнения») канонизирован п.6а норм хендофф-промтов (`aef64f3`) ДО этой приёмки. Ультраревью владельца 14.08 шва не видело (облачный бандл собирает только tracked-файлы, пак был untracked) — «молчание ревью ≠ свидетельство корректности» (14.08.2026, оркестратор №16). ✅
|
||
|
||
## D39.132 — ПРИЁМКА ПЛАТФОРМЫ P6 + ДОФИКС ПРИНЯТЫ И ЗАЛЕНДЕНЫ: шов закрыт с обеих сторон, PD-113 закрыт, 0 major; ратификации — day_usd вне шаблона · пере-подпись направления §3 · второй гейт батареи · exit 13 направлением (15.08). ✅
|
||
|
||
**1. Приёмка (оркестратор №16).** Раунд 1 — панель 5 адверсариальных верификаторов по P6 (две линзы другой моделью; исполнением: живой демон, живой PG, live-пробы) → фикс-лист ФП-1…ФП-8 (тяжёлое: `status --json` с exit 2 при flagged-юнитах читался платформой как отказ — расчёт flagged-прогона откладывался вечно, спавн по книге отказывал; порядок апгрейда в деплой-доке гонял `migrate` СТАРЫМ бинарём; денежный гейт `BooksForMigration` не запинен — посадка приёмки переживала батарею). Раунд 2 — дофикс той же сессией: все ФП закрыты, её собственное ревью нашло и закрыло ещё 6 (глоток ошибки перечитки в ветке маркера; документ-не-манифест как пустой манифест на единственном файло-удаляющем пути; stdout без потолка). Финальная верификация исполнением: батарея `-race` + живой PG + ОБА гейта — EXIT=0, скипов 0; тестов 359→**416** (команды в журнале зоны); деньги из сырого леджера стенда двумя путями; 2 СВОИХ посадки — пойманы. Механика — зонный журнал, разделы «P6» и «Дофикс P6».
|
||
|
||
**2. Ратификации.** (а) **`day_usd` убран из платформенного шаблона книги** (решение владельца 15.08): трата прогона ограничена купленным объёмом (холд+`--ceiling-usd`), дневная ось на платформе дублирующая; в движке остаётся операторской опцией, обработка `daily_ceiling`/409 — предохранитель. **PD-199 закрыт этим же решением: `null` на проводе подтверждён**, слово в контракт не заводится. (б) **`PLATFORM_DIRECTION` §3 пере-подписан**: oapi-codegen «взять — доказано» → кандидат при P7; sqlc — привязан к P7 (масса запросов читающей поверхности); River-факт поправлен. (в) **Второй гейт батареи принят** (`TM_PLATFORM_TEST_ENGINE_BIN`+`_BOOK_TEMPLATE`, форма как у БД-гейта; с обоими гейтами скипов 0). (г) **exit 13 = `schema_mismatch` ратифицирован НАПРАВЛЕНИЕМ**: обе зоны сошлись на числе независимо (платформа — ждущий класс, движок — полоса 10–19); финализация и закрытие строк 174/175 — приёмкой бэкенд-пака migrate. (д) **PD-241 (стоп пользователя переименовывается в `paused/credit_exhausted`, если потолок приехал тем же дрейном) — направление: намерение стопа выигрывает НА СТАТУСЕ**, деньги не затронуты; исполнение — следующим касанием зоны, отменяется одной репликой владельца.
|
||
|
||
**3. Исправления оркестратора при лендинге и хвосты.** Регистр: откачено переименование PD-198→PD-199 и удалена строка-дубль (246→245; «ID стабилен навсегда»); PD-200/PD-180 — по секциям; счёт-базис журнала «396→403» заменён воспроизводимым (359→416, PD-234). Новые остатки — строками PD-217…PD-223, PD-241…PD-245 (тяжелее прочих: PD-217 — книга на `daily_ceiling`/вечном холде блокирует апгрейд движка без выхода). Единый бэклог: строка 176 — движку `recover`/другой код на панику (exit 2 коллизия с completed-with-flags, PD-212). Урок приёмки — знанием: **шов, у которого движковая половина менялась под потребителем, проверяется перечислением ВСЕХ каналов движка** (exit-контракт сверили — status-канал упустили и сессия, и её ревью; поймала только панель). Очередь: приёмка бэкенд-migrate (дерево ждёт в `backend/`) → приёмка S4 → промт P7. (15.08.2026, оркестратор №16) ✅
|
||
|
||
## D39.133 — ЗАКРЫТИЕ СЕССИИ №16, передача №17 (15.08). ✅
|
||
|
||
Сессия №16 (09–15.08): лендинги D39.126–132 (докс-пак 167 · приёмки S3.7 · P5 в три раунда · эмиттер шва · P6+дофикс). Состояние, очередь и открытое на владельце — CURRENT-STATE и D39.132 п.3 (не дублируются). Первые задачи №17 по очереди: **приёмка бэкенд-migrate ПОСТ-ФАКТУМ** (код в main коммитом владельца `535581d` БЕЗ приёмки — обязательна до деплоя; закрывает строки 174/175, финализирует exit 13 по эррате шапки) → строка 172 (цены DeepSeek 16.08 — на владельце) → приёмка S4 → промт P7 платформы. Роль-промт обновлён этим же коммитом. (15.08.2026, оркестратор №16) ✅
|
||
|
||
## D39.134 — ПРИЁМКА БЭКЕНД-ПАКА «tmctl migrate» ПРИНЯТА И ЗАЛЕНДЕНА (`d55edd4`): строка 174 закрыта, 175 пере-скоуплена, exit 13 ФИНАЛИЗИРОВАН; ратификации — отказ write-пути БД новее бинаря · restore point под локом вне секундного неймспейса (15.08). ✅
|
||
|
||
**0. Контекст git.** Темп-коммит владельца `535581d` (снапшот всего дерева, слово владельца — не инцидент) откачен локальным soft-reset; содержимое пересобрано скоуп-раздельными коммитами (`8929566` gitignore · `3b1fe9a` док-закрытия №16 · `d55edd4` этот пак); origin/main на момент лендинга держит старую линию — развязка на владельце (force-push его словом, локально не пуллить).
|
||
|
||
**1. Приёмка исполнением (панель 6 линз в изолированных копиях без .git; $0, только агент-токены).** Все 8 пере-раненных клеймов отчёта сошлись: батарея EXIT=0 · 810 тестов (+16 воспроизведён по диффу) · голден бит-в-бит · живые пробы на КОПИЯХ стендовых БД v14→v15 и v7→v15 (деньги до цента ДВУМЯ путями: status/report и независимый SQL; 0.126068 / 0.408077 не сдвинулись) · лок = 12 без restore point · v99 = 13 в обе стороны, файл байт-в-байт. 6/6 СОБСТВЕННЫХ мутаций приёмки (шов на no-op · снятие класса 13 · снятие гарда newer · зануление committed · перестановка found/expected в токене · слом идемпотентности) пойманы тестами пака. Мутационные числа автора («8/8», «10/10», «2.6 ГБ-репро») — со слов сессии, независимо не пере-ранены; несущее свойство «шов не под бюджетом пакета» запинено тестом пака и мутацией №1 приёмки. Механика, фикс-лист ФМ-1..7 и поправки цитат отчёта — запись приёмки в PROGRESS «Бэкенд» 15.08 (состав — там).
|
||
|
||
**2. Ратификации.** (а) **exit 13 = `schema_mismatch` ФИНАЛИЗИРОВАН** (эррата шапки исполнена): полоса отказов = 10 конфиг · 11 источник · 12 лок · **13 схема** · 19 безымянный; машинный токен `schema_mismatch found=N expected=M`; found<expected чинится `tmctl migrate`, found>expected — только новым бинарём (migrate не врёт успехом). ⚠ **Поправка провенанса** (поймано кросс-модельной линзой панели): формулировка «обе зоны сошлись на числе НЕЗАВИСИМО» (D39.132 п.2г и эррата шапки 15.08) неверна — платформа прочитала 13 из незакоммиченного дерева движка и сама это записала (`platform/internal/ingest/exit.go:63-64`); на силу ратификации не влияет (финализация состоялась этой приёмкой), клейм независимой сходимости снят. (б) **Отказ write-пути БД новее бинаря** — расширение сверх буквы заказа, названное автором явно, РАТИФИЦИРОВАНО: тихое письмо старым кодом в новую схему — опаснейшая половина того же факта, и без него самолечение платформы зацикливалось бы на ложном успехе. (в) **Restore point** — под локом, только при реально применяемом шаге, имя `<метка>-pre-migrate.db` вне секундного неймспейса платного пути. (г) exit 19 из migrate не производится (неопознанный store-отказ и провал снятия restore point = exit 1 ВНЕ полосы) — принято направлением «полоса обещает „ничего не произошло, жди"», хвосты честности — фикс-лист.
|
||
|
||
**3. Строки.** 174 ЗАКРЫТА (деадлок разорван; деплой-порядок «дренаж → новый бинарь → migrate ИМ → прогоны» записан платформой дофиксом P6 — их README уже верен, клейм §5(в) отчёта устарел к приёмке, не ошибочен). 175 ПЕРЕ-СКОУПЛЕНА: ближняя половина (типизированный mismatch у status + money-тест) исполнена паком, строка остаётся на дальний остаток (а)–(в). Новая 177 — гигиена restore point (находки панели ВНЕ карты отчёта: ретрай в ту же секунду после сорванного шага = exit 1 «backup already exists» на цикле самолечения · kill -9 посреди шва оставляет РВАНУЮ копию под легитимным именем · копии не подчищаются · SIGINT в migrate не прерывает). Дописки тем же касанием: 93 (`redrive --dry-run` на устаревшей БД мигрирует БЕЗ restore point), 146 (ценовой гейт держит и ДЕТЕКТОР самолечения: на протухших ценах `status` даёт 10, не 13 — цикл «поймал 13» не наступает), 176 (usage-строка invocation.go не знает migrate/backup/seed-lint — чинить разом тем же касанием exit-контракта).
|
||
|
||
**4. Платформе (пинг в зонный журнал):** движковая половина финальна — PD-201 (самолечение «поймал 13 → migrate → повтор») можно строить; их хвосты: `deploy/README.md:131` и П-1 зонного бэклога несут МЁРТВЫЙ текст ошибки схемы («schema vN … expects vM» движок больше не печатает) · комментарий-образец `runs.go:45` зовёт голый `tmctl` из PATH (копипаст = тихий no-op старым бинарём при живом деадлоке). Всё — вход промта P7. (15.08.2026, оркестратор №17) ✅
|
||
|
||
## D39.135 — ПРИЁМКА ФРОНТА S4 ПРИНЯТА И ЗАЛЕНДЕНА (`267aa35`); КОНТРАКТ 0.2.3 В КАНОНЕ: PD-172 уточнён по коду платформы, title/reject_reason — форвард-контракт с носителем в P7 (15.08). ✅
|
||
|
||
**1. Приёмка исполнением (панель 5 линз в изолированных копиях; $0, только агент-токены).** Слепая линза по заказу+диффу — «принять» до чтения отчёта; пере-ран гейтов: `npm run check` 335/335 · `check:full` EXIT=0 (8 маршрутов · 11 сценариев · axe 0 блокирующих; «136 проверок» отчёта = фактически 134 — наивный греп ловил 2 строки vite) · spectral/типы/тест дрейфа зелёные · до-пакные числа арбитража (157 ключей · чанк 724130) подтверждены ОБРАТНЫМ применением диффа байт-в-байт · живые нарушения двух гейтов — красные · фикстура формы: обязательное поле за файлом = 400, необязательное = 201. Линза истинности спеки: PD-172/173/174/180 — ВЕРНО ПО КОДУ платформы (обе стороны цитатами). Механика, фикс-лист ФС-1..12 и поправки отчёта — запись приёмки в зонном журнале фронта 15.08 (состав — там).
|
||
|
||
**2. Ратификации.** (а) **Контракт 0.2.3 — В КАНОНЕ**: `docs/architecture/14-api-contract/openapi.yaml` = байт-зеркало зонной копии (cmp пуст). (б) **PD-172 — формулировка спеки УТОЧНЕНА ПРОТИВ текста заказа, уточнение ратифицировано**: платформа останавливает чтение формы НА файле (`v0.go:349-361`) — обязательное поле после файла = 400 «как не слали», необязательное молча теряется (201); текст D39.130 п.2в «поле после файла = 400» амендирован кодом (сессия назвала отклонение вслух, две линзы сверили независимо). (в) **BookIntake.title и Book.reject_reason = ФОРВАРД-контракт**: платформа сегодня title НЕ читает (switch формы без case "title", имя всегда titleFrom) и reject_reason НЕ проецирует на провод (`v0.go:497` «never projected»); оба конформны (поля необязательные), но обещание без носителя — дефект класса «обязательство без адресата» ⇒ реализация обоих — ЯВНЫЙ вход промта P7. (г) `not_configured` сегодня недостижим на книге (не терминален — `waitsForTheDeployment`) — в enum оставлен осознанно как словарь версии. (д) **verify_bank дефолт OFF — временно, направлением**: с включённой галочкой прогон приходит в `awaiting_bank`, куда идти некуда до S5; дефолт возвращается при построенном пути подписи; отменяется словом владельца. (е) S4 = ПРИНЯТО с фикс-листом ФС-1..12 → вход промта S5 (тяжелейший ФС-1: интейк-мир стартует прогон с total=0 — общий прогресс 0/0 и ETA NaN, путь заказа §4 в мок-мире добить).
|
||
|
||
**3. Владельцу (confirm-лист, сам не ратифицирую):** В-11 фразы PD-173 (⚠ кавеат панели: фраза not_configured «Сервис пока не готов принять эту книгу» говорит о приёме, а книга уже принята и отклонена позже) · В-10 спойлер (поиск по странице/печать обходят размытие) · Ф-62 (переименовать книгу нечем — у книги в контракте нет ни одной записи) · Ф-63 (рамка поля 1.20:1 — токен всей оболочки, вид принимает владелец).
|
||
|
||
**4. Поправки к отчёту S4** (носитель — запись приёмки в зонном журнале): «словарь платформы — четыре значения» → пять (пропущен schema_mismatch) · «одна из трёх фраз недостижима» → сегодня недостижимы ВСЕ ТРИ (reject_reason не проецируется вовсе) · §1/§2 отчёта несут СНЯТОЕ правило PD-172 (противоречие с собственным §9а; тот же текст остался в докблоке upload.ts — ФС-5) · «31 строка DOM / 59 618px» — замер S2 04.08, не этого пака · «46 находок → 6 выжило» = 5 различных (одна — дубль). (15.08.2026, оркестратор №17) ✅
|
||
|
||
## D39.136 — ПАКЕТ СЛОВ ВЛАДЕЛЬЦА 15.08 (напрямую №17, первоисточник): фриз фронта · структура глав В ОЧЕРЕДЬ · контракт-ревью 0.3.0 ЗАКАЗАН · пере-заказ фраз PD-173 · санкции фазы Д; закрыты строки 116 и 126 (15.08). ✅
|
||
|
||
**1. Санкции и снятия (слово владельца напрямую оркестратору №17, 15.08).** (а) Расход фазы Д $6.0024 и цепь потолков $4.50→$6.74 — рука владельца, устный синк с полигоном легитимен; замена ja-книги на `enkan_no_hate_ja` — тоже; СТОП ja-оси снят. (б) Возражение Sol по `tier` — с листа №17 СНЯТО («полигон не твоя забота»), остаётся у параллельного оркестратора/владельца.
|
||
|
||
**2. Фриз фронта (слово 15.08: «я бы фризанул»).** S0–S4 приняты — зона ЗАМОРОЖЕНА; промт S5 не выдаётся. Разморозка: лендинг P7 + ответы на настоящий гейт S5 (В-10 спойлер · пере-заказ фраз В-11 · ПТ-33 закрыт п.4). Мок-мир НЕ сносится (П-16/Ф-29: снос — после читающей поверхности); живая smoke-линия против дев-стенда — легитимный мини-пак и во фризе, по слову владельца. Одобрено тем же словом к исполнению первым касанием зоны: Ф-63 (перекраска токена рамок минимальным сдвигом) · Ф-28 (бамп пинов сборки с security-адвайзори).
|
||
|
||
**3. Структура глав — В ОЧЕРЕДЬ (слово 15.08: «эти доработки очень важны… максимально качественными»).** Гейт D39.122 п.4 ПАЛ: Этап 0 (строка 160) ставится ближайшим бэкенд-паком; Этап 1 (161) — сначала ДИЗАЙН-ПАК с мандатом максимального качества (стройка после ратификации дизайна; дешёвое окно закрывается первой книгой внешнего пользователя); тесты структуры глав — узлом будущего холодного прогона (одним из, не главным — до прогона далеко). Фактура: research/27 + epub-стенд (`~/books/*.epub` — Кристофф/en, isekai/ja), мастер-гу = txt GB18030.
|
||
|
||
**4. Банк: фразы и sense (слово 15.08).** (а) **Фразы PD-173 НЕ утверждены** — направление: КОНКРЕТНЕЕ причина отказа; **граница ПТ-33 ПЕРЕ-ЧИТАНА владельцем: охранять АЛГОРИТМЫ бэкенда, а не минорную механику** — «не раскрывать внутренности» не значит «говорить абстракциями»; пере-заказ фраз — вход S5; мультиязычность фраз ВСЕХ зон (бэкенд/платформа/фронт, машинные коды vs хардкод-строки) — вход контракт-ревью. (б) **Добавочные поля `BankTerm` НЕ заводить** (ПТ-33-вопрос закрыт): смысла хватает — «главное чтоб смысл был ёмкий и достаточный на всю книгу, но не слишком подробный»; новая строка 178 — sense возможно КОРОТКОВАТ, калибровка при касании банка. (в) Переименование книги (Ф-62) — В КОНТРАКТ направлением; форма — из контракт-ревью.
|
||
|
||
**5. Контракт-ревью 0.3.0 — ЗАКАЗАН (слово 15.08: «жёсткий ресёрч по всему репозиторию кучей агентов… кросс-модели… судейство буллетов прежде чем записывать в бэклог»).** Строка 179; форма: фазный воркфлоу оркестратора — (Ф1) инвентарь-чтение кода трёх зон + планов; (Ф2) greenfield-проект API без нашей спеки + линза индустриальных стандартов (RFC 9110/9457, SSE, публичные стайлгайды) + аудит квирков «контракт или протёкшая реализация»; (Ф3) кросс-модельное СУДЕЙСТВО каждого буллета (опровергатели другой моделью) с миграционной ценой; (Ф4) доклад владельцу → ратификация → ТОЛЬКО потом бэклог/0.3.0 батч. Мандат анти-инерции: «ратифицировано ≠ правильно». Входы: Ф-56 · Ф-57 · Ф-61 · Ф-62 · форма PD-172 · пагинация/производительность чтения банка · i18n сообщений всех зон · спойлер-защита (если В-10 = «защита»).
|
||
|
||
**6. Точечные ратификации.** (а) **PD-203**: флаг остановки на АККАУНТЕ — только по причинам уровня аккаунта (исчерпание кредита); пауза одного прогона живёт на прогоне (владелец согласился с рекомендацией №17). (б) **Строка 116 ЗАКРЫТА по делегации** («разберись и стоит ли моего внимания» — не стоит): порог приёмки классификатора становится ВЫБОРОЧНЫМ — «≥4/5 прогонов N=5 достигают 6/6» (рекомендация 02.08); вахта: риг пере-снять после смены цен/весов DeepSeek 16.08 (опция вендор-сессии). Классификатор здоров: защитный $0-смежный проход типов терминов, вреда не пишет (draft-side-only), 6/6 на думающем уровне. (в) **Строка 126 ЗАКРЫТА** (остаток «ручка на экране» исполнен S4, D39.135; помечена 15.08, закрывается этой нотой). (г) Вендор-сессия DeepSeek — промт `docs/BACKEND_DEEPSEEK_REPIN_SESSION_PROMPT.md` ВЫДАН (строка 172 получила носитель; консервативный пин ПИКОМ ратифицирован направлением). (15.08.2026, оркестратор №17) ✅
|
||
|
||
## D39.137 — ПРИЁМКА ВЕНДОР-СЕССИИ «ПЕРЕ-ПИН DeepSeek» ПРИНЯТА И ЗАЛЕНДЕНА (`76049bb`): пик запинен, потолки снова защищают; строка 172 пере-скоуплена, новые 180/181; ToS-дельты нет (15.08). ✅
|
||
|
||
**1. Приёмка инлайн, исполнением ($0).** Дифф вне комментариев = ровно 3 строки (дата + 2 цены) — сверено; вендор-страница пере-прочитана оркестратором НЕЗАВИСИМО (WebFetch): все шесть пиковых клеток, окна 01–04/06–10 UTC и дата вступления 16.08 16:00 UTC совпали до цента; голден бит-в-бит + ledger/config-тесты — зелёные пере-раном приёмки; поиск вне карты: fallback-якорь цены = `default_model: deepseek-v4-flash` (ссылка, не литерал) — переехал автоматически, дыры нет. Реплей леджера трёх прогонов двумя таблицами (контрольная дельта старой таблицей = 0.00000000) и ToS-дифф по Wayback (444/444 и 364/364 строк, 0 расхождений; вердикты D39.29/30 не двигаются) — приняты по механике, со слов сессии с воспроизводимым методом. Отчёт и §8-самоervью — образцовые.
|
||
|
||
**2. Статусы.** (а) Пик запинен: flash 0.44 / 1.32 / cache-hit 0.014 · pro 1.32 / 3.96 / 0.044 за 1M; офф-пик = ½ (в комментарии, схема плоская); `cache_write_per_m: 0` верно — цены записи у вендора нет. (б) Шиппинг-цепочка c1 = 100% DeepSeek ⇒ множитель СЧЁТА ×4.2–4.4 в пике / ×2.1–2.2 в долине (замер по трём реальным прогонам). (в) Кэш-хит pro ×12.1 — эскалация с горячим префиксом перестала быть почти бесплатной. (г) Стендовая книга coldrun-a: `book_usd: 0.25` тем же объёмом работы теперь пробивается (пик $0.559) — CeilingHalt при пере-прогоне = цена, не поломка.
|
||
|
||
**3. Строки.** 172 ПЕРЕ-СКОУПЛЕНА: пере-пин ИСПОЛНЕН; остаток — (а) схемное решение владельца по докладу §5 отчёта (рекомендация сессии: пик оставить; scheduler-вариант не начинать до ответа вендора «по какой отметке времени тарифицируется вызов» — не задокументировано — и замера доли пика; дешёвый рычаг = операционное правило «прогоны не стартуют в 01–04/06–10 UTC», почти всё ×2 без строчки Go) · (б) пере-калибровка ставки $0.03/глава (166/П-10; множитель замерен) · (в) exp08 v3 (85) обязателен до budget_usd · (г) вахта весов **V4-Pro-0813** (веса сменились под тем же слагом — класс D39.61; риг готов: §7.4 отчёта, `TestLiveClassifierHarmSet`, после 16:00 UTC 16.08). Новые: **180** — `prices_checked` одно поле на ВСЮ таблицу: бамп по факт-чеку одного вендора сдвинул 120-дневный гейт свежести остальным семи (дедлайн 07.11→13.12); лечение — пер-модельная дата ЛИБО ре-чек остальных вендоров до исходного дедлайна. **181** — консент-число пере-покупки врёт после смены цен: `projectRebill` складывает ИСТОРИЧЕСКИЙ `cost_usd` (`rebill.go:166`), а резерв/сеттл считают НОВОЙ таблицей (`stagerun.go:431/:613`) ⇒ оператор соглашается на сумму до ×4.4 меньше реальной, `projected_book_usd` у `status` — так же; траты защищены потолками, врёт ЧИСЛО СОГЛАСИЯ.
|
||
|
||
**4. Владельцу/фазе Д (не решается этой нотой):** экономическая посылка интерим-редактора D39.22 «dspro ×2 дешевле glm» в ПИКЕ ПЕРЕВЁРНУТА — замер на 129 реальных edit-вызовах: dspro пик ×1.26 ДОРОЖЕ glm-5, офф-пик дешевле лишь ×1.59 (контрфактика по оси цены, оговорка сессии честная). Вход ратификации жильцов при фазе Д. (15.08.2026, оркестратор №17) ✅
|
||
|
||
## D39.138 — ПРИЁМКА КОНТРАКТ-РЕВЬЮ (research/28) ПРИНЯТА; решения владельца 16.08 по докладу РАТИФИЦИРОВАНЫ; заказан ломающий батч 0.3.0; строка 179 закрыта, PD-104 и В-10 закрыты, новые строки 183–187 (16.08). ✅
|
||
|
||
**1. Приёмка (оркестратор №17, $0).** Отчёт — `docs/research/28-contract-review.md` (сессия по промту `CONTRACT_REVIEW_SESSION_PROMPT.md` → архив; зона не нарушена: единственный файл сессии, дерево не коммичено). Верификация: 4 независимых опровергателя пере-открыли ИСПОЛНЕНИЕМ 42 улики несущих блоков (Б-0/Б-13а · Б-1/Б-15 · Б-2/Б-3/Б-23 · Б-7а-п.4/Б-19а) — **0 опровергнуто по существу**; 5 косметических поправок + находка приёмки (вердикт К-10 в §6 противоречит Б-0 — закрывается «НЕ строить») — всё в ревью-шапке отчёта. REJECTED-секция существует (29 отвержений: 9 на ратификациях владельца, 4 — самопризнанные ошибки чтения); покрытие обязательных входов промта — полное (таблица §6); leave-one-out по линзам задекларирован и выборочно сходится. Ограничение метода честно заявлено сессией: все опровергатели — семейство Claude; кросс-СЕМЕЙНЫЙ проход доклада — отдельный заказ (этой нотой не решается, полигон занят фазой Д).
|
||
|
||
**2. Ратификация решений владельца 16.08 (первоисточник — §8 отчёта; перенос сюда — по §8б п.1; при конфликте побеждает эта нота).**
|
||
(а) **Б-0 «переделываем»:** конвейер уходит с провода — `Progress` → ОДИН счётчик до ближайшей остановки, знаменатель — КУПЛЕННЫЙ объём (после подписи банка полоса заново — В-5, §8 п.8); `finalizing` свернуть (лестница фаз — устная фраза владельца, не норма, §8 п.15); `verify_bank` → `stop_for_signing`; `TermOrigin`/`TermStatus` снять с провода; конвейерные слова вычистить из описаний (компилируются в исходники клиента); завести гейт на утечку. Колонки платформы и словарь шва движок↔платформа НЕ трогаются.
|
||
(б) **В-1 модель ошибок — вариант B (§8 п.4):** машинный `code` (двухуровневый: стабильный корневой + расширяемый вложенный) + `request_id`; `title`/`detail` — developer-facing, клиент НЕ показывает, фразу рисует клиент по словарю кодов; серверная локализованная фраза — отдельным полем только для неперечислимых причин; `errors[]` с указателем поля. **Два класса конкретности (В-2, §8а):** класс 1 (детерминированные — вход/счёт) — конкретика максимальная; класс 2 (модельные — прескрин/провайдер/фильтр) — ОДИН грубый код на класс, без вариации между попытками, с лимитом попыток; К-9 тем же решением: `rejected` + грубый код, 12-й статус не заводить.
|
||
(в) **Жанр — выкинуть** (Б-23, «Просто выкидываем»): из промптов, канона брифа (двигает `BriefHash` ⇒ только в общее resnapshot-окно), `book.yaml`-рендера платформы, контракта, формы — строка 184.
|
||
(г) **Дописывание глав — в ТЕКУЩУЮ книгу, «костылей не будет»** (Б-19а): форма `POST /books/{id}/parts` + ответ «что сдвинется и почём» ДО подтверждения; движковый гейт против МОЛЧАЛИВОЙ перекупки хвоста при вставке не в конец; вместе со строками 160–162 — строка 185.
|
||
(д) **Транспорт НЕ менять** (§5б, проверено агентом другого тира с веб-ресёрчем): REST/SSE остаются, паттерн poke/pull легитимен; план — сжатие → ETag/304 → скоуп в кадре → дельта-чтения → staleTime (строка 186); сжатие и условные чтения записываются В КОНТРАКТ, не в зонный док.
|
||
(е) **Экспорт БУДЕТ:** операции остаются; Б-4 обязателен — `state` вместо булева `ready`, `failure_code`, `expires_at`, эхо формата, правило доступа к ссылке (ПТ-34); закрывает К-12.
|
||
(ж) **История прогонов — в МВП не нужна** (из батча снята; данные уже в Postgres, один read-путь по запросу поддержки).
|
||
(з) **В-6:** `run-options`/409 получают `blocked: {code, book_id}`.
|
||
(и) **К-6:** замечания показывать ВСЕ; в тексте сворачивать/раскрывать кнопкой; словарь ступеней заранее НЕ проектировать; зависимость `Note.id` закрывает батч; зонная половина — фронту при разморозке.
|
||
(к) **В-10 спойлер = «вежливость» — ЗАКРЫТ:** контракта не касается, `sense` обязателен, размытие — визуальное дело фронта, находимость Ctrl+F — приемлемое следствие.
|
||
(л) **PD-104 ЗАКРЫТ словом владельца** (§8 п.14): `SignupGrantMicroUSD` → **0** на бете, начисление руками; возврат $5 — вместе с суточным агрегатным потолком при появлении платежей; исполнение — P7-однострочник (грант при неверифицированном email уже 0, `login.go:306-308`).
|
||
(м) **0.3.0 — НЕ последний 0.x:** право ломать в 0.x держится весь бета-период; окно 1.0 — после беты.
|
||
|
||
**3. Батч 0.3.0 ЗАКАЗАН (строка 183).** Состав и порядок — §5 отчёта (порядок не косметика: Б-1 модель ошибок ПЕРВОЙ — от словаря кодов зависят Б-2/Б-3/Б-8/Б-14а/§8а); резка — §5а; направления вне батча — хвост §5. Исполнение — ОТДЕЛЬНАЯ сессия по промту (норма D39.120 п.2 / эррата 15.08-в), промт — очередь №17. Правила лендинга (§8б): решения перенесены ЭТОЙ нотой до любой правки спеки · компаньон правится ВМЕСТЕ со спекой (его §5-ответ про волны опровергнут исполнением, Б-0; «канала банка нет» — Б-7а) · канон первым, зеркало фронта отдельным зонным коммитом, cmp-сверка обязательна.
|
||
|
||
**4. Строки.** 179 ЗАКРЫТА (сессия → доклад → эта ратификация; исполнение — 183). Новые: **183** батч 0.3.0 (носитель состава — research/28 §5) · **184** жанр вон · **185** дописывание глав + гейт молчаливой перекупки · **186** сеть/перф §5б · **187** два лживых комментария движка о `memory_version` (`snapshot.go:188-189` + `membank/memory.go:360-363` — оба описывают до-pack-20 поведение). Владелец-лист: PD-104 и В-10 закрыты; Ф-56/Ф-57/Ф-61/Ф-62 — диспозиции §6 (исполнение батчем); К-13-остаток (описание `:879`) — в батч.
|
||
|
||
**5. Пинги розданы** (§8б п.4/§9): платформе — деньги/надёжность §9 + PD-104 + платформенная половина батча + К-10 «не строить»; фронту — диспозиции четырёх вопросов зоны + мок-находки §9 + перф-входы разморозки. Движковые находки §9 — строки 187 и 185 (ja-мина: новый ruby-алиас двигает `memory_version` → снапшот; громкий `--resnapshot`, не тихая перекупка — уточнение приёмки). (16.08.2026, оркестратор №17) ✅
|
||
|
||
## D39.139 — ПОДРЕЗКА ХВОСТОВ И АКТУАЛИЗАЦИЯ ПЛАНИРОВОЧНЫХ ДОКОВ (заказ владельца 16.08: «перечитай закоммиченное, пройди все доки планирования, спили протухшее»). ✅
|
||
|
||
**1. Хвосты подрезаны (санкция — слово владельца 16.08 «не пора ли подрезать»).** (а) D-лог: тела D39.107–123 (закрытые эры №14–15) → слайс `archive/architecture/05-decisions-D39-106-123.md`; живая голова теперь **D39.124+**, живым телом оставлен D39.106 (шов — на него ссылаются классом); пол обновлён во всех носителях правила чтения (CLAUDE.md ×2 · README · ORCHESTRATOR_SESSION_PROMPT · титул D-лога); 591→389 строк. (б) PROGRESS: три закрытые бэкенд-записи 14–15.08 (эмиттер · migrate · DeepSeek-репин) → слайс `archive/PROGRESS-2026-08-14-15.md`; секция «Полигон» НЕ тронута (живая зона); 578→406 строк. Реестр 05-decisions-index.md покрывает все номера одним хопом — counts `--check` зелёный.
|
||
|
||
**2. Свип планировочных доков трёх зон (прочитаны целиком: product-requirements · 09-target · ORCHESTRATOR_SESSION_PROMPT · backend/README · platform/README+BACKLOG+PLATFORM_DIRECTION · frontend FRONTEND_PLAN+FRONTEND_SESSION_PROMPT+BACKLOG+STACK_DECISIONS §8). Противоречия найдены и разведены:**
|
||
(а) **Моя зона — исправлено этим лендингом:** ПТ-16/ПТ-18 держали «открытый К-9» (закрыт D39.138 п.2б) · ПТ-20 держал «живой 0.2.2» и «гейт S4 пал» (0.2.3; S4 принят, зона заморожена) · ПТ-22 нёс жанр (выкинут — строка 184) · ПТ-33 нёс «лестницу фаз» как норму (устная фраза владельца, §8 п.15) и опровергнутый ответ §5 компаньона (Б-0) · ПТ-34 дополнен носителем Б-4 · ПТ-35 держал открытый К-13 (закрыт) · README держал В-10 в гейте разморозки (пропуск МОЕГО лендинга D39.138 — пойман пере-чтением коммита) · шапка 09-target освежена.
|
||
(б) **Зона платформы — пинг-аддендум в журнал (сама не правится):** `PLATFORM_DIRECTION` §2 и `BACKLOG` П-7 держат «дефолт $5» против закрытого PD-104 (грант 0 на бете) · баннер §3 «ратификация за оркестратором» закрыт ещё D39.132 п.2б (oapi-codegen кандидат при P7 · sqlc привязан к P7) — баннер не обновлён · §4 п.5 «сервер вправе склеивать» сузится батчем (запрет склейки `note`, Б-6в).
|
||
(в) **Зона фронта — пинг-аддендум в журнал:** `FRONTEND_SESSION_PROMPT` §9 п.1, `FRONTEND_PLAN` §6 п.1 и `STACK_DECISIONS` §8 п.1 учат ПОФАЗНОМУ прогрессу «draft N/M ∥ edit N/M» — устареет батчем (Б-0: один счётчик, знаменатель купленный); `STACK_DECISIONS` §8 протух целиком — все 4 пункта построены (D39.122/131/132); Ф-59 закрывается ответом В-10 «вежливость»; Ф-37 ждала К-10 — отвечен «НЕ строить»; Ф-39 закрыта D39.136 п.4б.
|
||
|
||
**3. Не тронуто сознательно:** зонные доки чужих зон (правят сессии зон по пингам); исторические тела под ⚠-баннерами (01–06, FRONTEND_SESSION_PROMPT §исторические — баннеры уже стоят); секция «Полигон» PROGRESS и все файлы живого полигона. (16.08.2026, оркестратор №17) ✅
|