Record the corpus audit as D39.34: twenty-three undisposed ratified items, the never-executed regression guard obligation, corrected queue and narrowed pack nineteen scope

This commit is contained in:
Claude (backend session) 2026-07-25 20:15:03 +03:00
parent add0ac9a17
commit 1f3745de54
5 changed files with 30 additions and 7 deletions

View file

@ -14,7 +14,7 @@ Go-бэкенд издательского художественного пер
## Источники истины (по убыванию)
1. **`docs/architecture/05-decisions-log.md` (D1D39.33)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
1. **`docs/architecture/05-decisions-log.md` (D1D39.34)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
2. `docs/experiments/00-provider-quirks.md` — wire-квирки провайдеров (читать ПЕРЕД правкой адаптеров/вызовами провайдеров).
3. `docs/architecture/09-target-architecture.md` (7 слоёв; статус стройки — шапка-таблица) · `12-go-style-notes.md` (норматив общности §0) · `10-prompt-architecture.md` (промпт-тема).
4. `docs/architecture/01-decisions.md` (Р1Р10), `02-mvp-plan.md`, `04-unhappy-paths.md`, `06-memory-risk-registry.md` — тела исторические, читать через ⚠-баннеры 25.07.

View file

@ -1,6 +1,6 @@
# Промт бэкенд-сессии: ПАК-19 «голос и состояние» (ДВУХФАЗНЫЙ: дизайн → ратификация → стройка)
**СТАТУС: АКТИВЕН — позиция в очереди РАТИФИЦИРОВАНА (`D39.33`, 25.07).** Владелец амендировал курс: **масштаб целой книги уходит в КОНЕЦ**, за достройку алгоритмического идеала, а доказательство эффективности крупных изменений идёт **мини-прогонами ~10 глав**. Под этим курсом механизмы D21 — законно первый пункт идеала. (История: промт был запаркован после того, как проверка показала, что его исходная выдача была ре-ордерингом оркестратора против ратифицированного тогда курса D39.22; директива владельца сняла конфликт.)
**СТАТУС: СКОУП УРЕЗАН И ПОЗИЦИЯ УТОЧНЕНА АУДИТОМ (`D39.34`, 25.07). Стартует ПОСЛЕ мини-прогона-замера и сид-дельты.** Курс D39.33: масштаб последним, доказательство эффективности — мини-прогоны ~10 глав. Аудит корпуса вскрыл, что (а) сид/банк-дельта стоит раньше по D39.20, (б) замер остатка обязан пройти ПОКА ЖИВ $0-резюм драфта, то есть ДО пака, вызывающего resnapshot, (в) **инъекционная часть D21 ратифицирована УСЛОВНО** (D21 п.2: «Схема + детерминированный ты/вы-флаггер — безусловно; инъекционная часть — условно до полигон-эксперимента на ТРУДНЫХ парах»).
**Статус выдачи: 25.07.2026, оркестратор №8.** Цель — построить последний крупный НЕпостроенный рычаг качества: механизмы D21 (voice-профиль · реестр обращений ты/вы · reveal-окна). Ратифицированы 09.07 как механизмы Ф2, в коде их НЕТ — есть только описания будущих таблиц в комментариях миграций. Пак **двухфазный** (образец паков 16/17): фаза 1 — дизайн + СТОП, фаза 2 — стройка по размеченному списку.
@ -24,7 +24,8 @@
Каждый пункт — «реши сам и аргументируй»; советы ниже = приоры, опровергаются аргументом или замером.
- **V1. Скоуп и порядок.** Какие из трёх механизмов берём сейчас и в каком порядке. *Приор: реестр обращений первым* — он детерминирован, дёшев, даёт $0-детектор (слой 1) и материализует уже ратифицированный журнал; *reveal-окна вторыми* — это расширение существующей идиомы окон, а не новая сущность; *voice-профиль третьим* — он самый дорогой по схеме и бюджету инъекции. Опровергни, если данные говорят иначе.
- **V1. Скоуп и порядок — граница ратификации, «ровно так».** Строим БЕЗУСЛОВНУЮ половину: схема трёх сущностей · **детерминированный ты/вы-флаггер** · reveal-окна. **Инъекционная часть ПРОЕКТИРУЕТСЯ, но НЕ проводится в прод** — D21 п.2 держит её условной до полигон-эксперимента на ТРУДНЫХ парах («лифт на лёгких = 0; исход «только флаггер-ось» легитимен и дешевле»), а `internal/store/migrate.go:312` добавляет гейт пилота и лендинга D15.2. Дизайн инъекции обязан быть в отчёте — чтобы полигон знал, что мерить, — но код за ним не идёт до отдельного решения.
- **V1-бис. Вход, которого пока нет.** Детерминированному флаггеру нужны speaker/addressee, а их производит Annotator (D21 п.5), которого в этом паке НЕТ. Ответь честно: на каком входе флаггер работает сегодня (атрибуция 说/道 детерминированным пре-гейтом?), и что именно он НЕ поймает без Аннотатора. Плюс требование из реестра памяти: гендер-аннотация нужна НАРРАТИВНАЯ (since_ch-смены + перспектива), а не булево поле.
- **V2. Схема и хранение.** Где живут три сущности (типы записей банка против отдельных таблиц), как ложатся на миграции, что делает версия банка со снапшотом, и какова политика append в середине книги. Явно ответь: **что из этого durable, что производное, что пере-оплачивается при правке.**
- **V3. Инъекция.** Формат, позиция, бюджет, приоритет; кэшируемый префикс для 23 главных героев (стабилен на книгу — кэш почти бесплатен); пер-ролевая разница (переводчик против редактора — реестр `role→инъекция` уже существует). **Обязательно: что именно фолдится в снапшот и почему** — блок `context_assembly` уже есть, новая ось обязана быть в нём или получить осознанный отказ.
- **V4. Детерминированный детектор отклонения голоса (слой 1, $0).** Ты/вы-флип в атрибутированной реплике против реестра пар — где живёт (пакет `checks`), как отчитывается (`QualityReport`), версионируется ли (`CheapGateVersion` фолдится БЕЗУСЛОВНО — любое изменение правила двигает снапшот всех книг: реши осознанно). Слой 2 (эмбеддинги) — НЕ в этом паке.
@ -39,7 +40,7 @@
2. **Только CONFIRMED идёт в инъекцию.** Курируемое ≠ намайненное.
3. **Ни одного пар/языкового литерала в Go** (§0). Ты/вы, формы обращений, признаки регистра — данные.
4. **Voice-профиль заморожен per-job**, пока не доказано обратное (см. базу выше).
5. **Ниты общности едут ЭТИМ паком.** Ратифицировано D39.31 п.5: они требуют `--resnapshot`, а этот пак его и так вызывает — платить дважды за одно нельзя. Оба: множитель `expectedHours := n * 2` (`internal/checks/checkers.go`) → данные пары; Detail-строки чекеров → шаблоны из данных (у второго байт-нейтральной формы НЕ существует определительно — он именно поэтому ждал resnapshot).
5. **Ниты общности + ОБЯЗАТЕЛЬНЫЙ флип `Gates.RegressionGuard.Enabled` едут этим паком — потому что он вызывает первый resnapshot.** Точная атрибуция (исправлено D39.34): D39.31 п.5 ратифицировал «ближайший ПОЛНЫЙ `--resnapshot`», а не именно этот пак. Флип `RegressionGuard` — НЕИСПОЛНЕННОЕ обязательство D38.4 п.5 («Оркестратор при сборке единого resnapshot ОБЯЗАН включить»): ключа `regression_guard` нет ни в одном шиппинг-конфиге, гейт = false, rerun2 прошёл без построенной наблюдаемости. Включить и покрыть тестом. Оба: множитель `expectedHours := n * 2` (`internal/checks/checkers.go`) → данные пары; Detail-строки чекеров → шаблоны из данных (у второго байт-нейтральной формы НЕ существует определительно — он именно поэтому ждал resnapshot).
6. **Пере-капчер golden — под ратифицированную смену поведения, с доказательством:** маскированный структурный дифф обязан быть пуст вне осей, которые пак сознательно двигает. Каждую сдвинутую ось назвать в отчёте отдельной строкой.
7. **Деньги durable не трогаем:** reserve→settle+чекпойнт одной транзакцией; инъекция не смеет ослепить потолок (бюджет инъекции входит в оценку).
8. **Никаких платных прогонов.** Фикстуры и мок; живой прогон — отдельное решение владельца после лендинга.

File diff suppressed because one or more lines are too long

View file

@ -11,7 +11,7 @@
## Структура
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1D39.33); при конфликте с любым доком он выше.**
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1D39.34); при конфликте с любым доком он выше.**
- `01-decisions.md` — принципы Р1Р10; `02-mvp-plan.md` — фазы и приёмка (v3, 09.07); `03-implementation-notes.md` — контракты Фазы 0; `04-unhappy-paths.md` — ~70 режимов отказа → механизм; `06-memory-risk-registry.md` — реестр рисков банка памяти; **[`09-target-architecture.md`](architecture/09-target-architecture.md) — целевая 7-слойная архитектура (D39; статус стройки — шапка-таблица; инвариант общности §0.1)** · [`10-prompt-architecture.md`](architecture/10-prompt-architecture.md) — консолидированная промпт-заметка (концерн 4) · [`12-go-style-notes.md`](architecture/12-go-style-notes.md) — норматив общности §0 + Go-ответы. **Исполненные (архив 25.07, санкция владельца, → `archive/architecture/`):** [`07-strategic-review.md`](archive/architecture/07-strategic-review.md) (стратаудит 09.07 — курс исполнен) · [`08-sync-audit-ledger.md`](archive/architecture/08-sync-audit-ledger.md) (ледджер синк-аудита — отработан) · [`11-implementation-plan.md`](archive/architecture/11-implementation-plan.md) (план пака-11 — исполнен целиком); `components.puml`/`pipeline.puml` — диаграммы (перерисованы 25.07 под пост-пак-16 реальность: волновой исполнитель, пакетный сплит пака-15, repair-петля за `enabled:false`, generic content-labels D39.25; владелец смотрит PlantUML-расширением VS Code; вручную НЕ рендерить).
- `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22), `12-quality-diagnosis`/`13-translator-bakeoff`/`14-quality-empirics`/`14b-meaning-battery` (дуга качества «мерить→строить», закрыты → D30/D32/D37/D38), `15-segmentation-empirics` (exp15: когезия под floor-шумом, фертильность — закрыт → D39.7/D39.8), `16-bank-mining` (exp16: WHICH/WHAT банк-майнинга — закрыт → D39.10).
- `research/` — фактура исследований 0405.07: `0110` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** · **`21` обзор LLM-транспорта чужих харнессов (23.07: наш транспорт опережает/вровень со всеми 11)** · **`22` доменные харнессы перевода (24.07: калибрующий — ядро подтверждено, впереди COGS/18+/общность/измеренность, позади Q4-выпуск и gate+repair-петля; сиквел `02`/`05`)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**.

View file

@ -972,3 +972,24 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
**Следствия, вступающие в силу сразу:** (а) пак-19 «голос и состояние» РАСПАРКОВЫВАЕТСЯ — под новым курсом он законно первый, и это уже не ре-ордеринг оркестратора, а исполнение директивы; (б) «следующий платный прогон» переопределяется из полного в МИНИ (~10 глав) и перестаёт быть гейтом чего-либо, кроме собственного вопроса; (в) «масштаб целой книги» уходит из ближайшей очереди в финальную позицию — перед пилотом Ф2.5.
**Честная запись о том, как это вскрылось (норма «признавай ошибки явно»):** позицию пака-19 я вчера предложил САМ, подав ре-ордеринг как исполнение плана; владелец усомнился, проверка дословными цитатами (D39.22 + CURRENT-STATE) подтвердила его сомнение, промт был запаркован (`16420c6`). Директива D39.33 делает ту позицию правильной ПО СУЩЕСТВУ — но она не задним числом оправдывает метод: вывод, совпавший с репликой собеседника, обязан быть проверен ПРОТИВ документов до выдачи, а не после.
## D39.34 — Сплошной аудит корпуса: 23 ратифицированные позиции БЕЗ диспозиции в трекере; подтверждён НЕИСПОЛНЕННЫЙ обязательный флип `RegressionGuard`; очередь и скоуп пака-19 исправлены по букве (25.07, оркестратор №8). ✅
**Метод:** 8-агентный аудит (6 читателей по срезам — D-лог · PROGRESS+3 архива · research · experiments · отчёты паков · арх-доки; синтез; критик с мандатом ОПРОВЕРГНУТЬ тезис оркестратора). 1.6M токенов. **Каждый несущий клейм я перепроверил исполнением сам** — ниже только подтверждённое.
**НАХОДКА №1 (HIGH, обязательство, не исполнено): `Gates.RegressionGuard.Enabled` так и не включён.** D38.4 п.5 (`:540`) ратифицировал: «Оркестратор при сборке единого resnapshot **ОБЯЗАН включить** `Gates.RegressionGuard.Enabled`, иначе построенная наблюдаемость на пере-прогоне не сработает». Проверил: ключ `regression_guard` **отсутствует во ВСЕХ шиппинг-конфигах** ⇒ гейт = zero-value `false`. То есть пере-прогон rerun2 прошёл БЕЗ той наблюдаемости, ради которой инфра-пак D38.3 строился. Обязательство остаётся в силе и переносится на ближайший resnapshot; вписано в промт пака, который его вызовет.
**НАХОДКА №2 (моя ошибка последовательности, принимаю).** Критик прав дважды: (а) **банк/сид-дельта стоит РАНЬШЕ** по ратифицированной очереди D39.20 (`:783`: «стайл-решения владельца → **банк-дельта** → итерация №2»), а я её из очереди уронил; (б) **аргумент про ниты у меня инвертирован**: D39.31 п.5 (`:934`) откладывал ниты именно ЧТОБЫ СОХРАНИТЬ $0-резюм драфта **под замер остатка**, — значит по той же логике замер обязан пройти ДО того, что вызывает resnapshot, а не после. Мой вчерашний вывод «прогон после пака-19» противоречит моей же ратификации суточной давности.
**НАХОДКА №3 (над-атрибуция, моя).** В промте пака-19 стояло «Ниты общности едут ЭТИМ паком. **Ратифицировано D39.31 п.5**». D39.31 п.5 ратифицировал «ближайший ПОЛНЫЙ `--resnapshot`», а не пак-19. Формулировка исправлена: ниты едут первым resnapshot, каким бы паком он ни был вызван.
**НАХОДКА №4 (скоуп пака-19 был шире ратификации).** D21 п.2 (`:254`) дословно: «Схема + детерминированный ты/вы-флаггер — **безусловно**; **инъекционная часть — условно** до полигон-эксперимента на ТРУДНЫХ парах (лифт на лёгких = 0; исход «только флаггер-ось» легитимен и дешевле)». Плюс `backend/internal/store/migrate.go:312`: механизмы «gated on the pilot and on D15.2 landing». ⇒ **пак-19 строит безусловную половину** (схема · детерминированный флаггер · reveal-окна), инъекция ПРОЕКТИРУЕТСЯ, но не проводится в прод до полигон-эксперимента. Промт исправлен.
**ИСПРАВЛЕННАЯ ОЧЕРЕДЬ (по букве, с учётом D39.33):**
1. **Мини-прогон-замер ~10 глав на ТЕКУЩЕМ стеке, пока жив $0-резюм драфта** — отвечает разом: остаток дефектов (решение о петле ремонта D39.24) · итерация №2 dspro-vs-glm, если владелец её хочет · живая проверка построенного (rebill-гейт, лейблы). Судья НЕ зовётся (детерминированный скан первым).
2. **Параллельно, $0: сид/банк-дельта** (元 · 赤城 · 学堂家老 · 春秋蝉) — она стоит раньше по D39.20 и без неё чтение любого прогона искажено.
3. **Затем пак-19** в урезанном скоупе (безусловная половина D21) — он и вызовет первый resnapshot, которым поедут ниты общности И обязательный флип `RegressionGuard`.
**23 позиции без диспозиции — приняты в трекер** (`PROGRESS.md`, блок «Найдено аудитом 25.07»), сгруппированы классами с явной диспозицией каждому. Три самые дорогие: неисполненный флип `RegressionGuard` (выше) · заморозка «этапа B ~300 глав» (D26 п.1) — **поглощена D39.33**, масштаб уходит в конец, отдельной петлёй больше не считается · этапы Б+В спеки D15.2 («промт выдам после пере-прогона», D33 п.5) — пере-прогон состоялся 23.07, промт не выдавался: остаётся открытым, но вне «идеала» (он про content-addressed resume, то есть про `guard_hash`, который D39.31 явно не строил).
**Норма, которую этот аудит подтвердил делом:** трекер «Открытые петли» ловит то, что попало в него РУКАМИ оркестратора, и систематически теряет обещания, зашитые в ТЕЛА ратификаций («ОБЯЗАН включить», «выдам после», «в бэклог»). **Сплошной аудит корпуса становится периодической процедурой** — не реже чем перед каждым платным прогоном и при передаче роли; дешевле, чем один потерянный обязательный гейт.