Measure the stand snapshot and record D39.35: the zero-cost draft resume is already dead, so hygiene lands before the mini run and the nits stop being conditional

This commit is contained in:
Claude (backend session) 2026-07-25 20:31:20 +03:00
parent 1f3745de54
commit 0222527367
4 changed files with 25 additions and 4 deletions

View file

@ -14,7 +14,7 @@ Go-бэкенд издательского художественного пер
## Источники истины (по убыванию)
1. **`docs/architecture/05-decisions-log.md` (D1D39.34)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
1. **`docs/architecture/05-decisions-log.md` (D1D39.35)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем 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.

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.34); при конфликте с любым доком он выше.**
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1D39.35); при конфликте с любым доком он выше.**
- `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

@ -993,3 +993,24 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
**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 явно не строил).
**Норма, которую этот аудит подтвердил делом:** трекер «Открытые петли» ловит то, что попало в него РУКАМИ оркестратора, и систематически теряет обещания, зашитые в ТЕЛА ратификаций («ОБЯЗАН включить», «выдам после», «в бэклог»). **Сплошной аудит корпуса становится периодической процедурой** — не реже чем перед каждым платным прогоном и при передаче роли; дешевле, чем один потерянный обязательный гейт.
## D39.35 — ЗАМЕР: $0-резюм драфта на стенде УЖЕ МЁРТВ (снапшот разошёлся по трём осям) — аргумент «гнать, пока он жив» ОТМЕНЁН; порядок исправлен: ниты и обязательный флип берём ДО прогона (25.07, оркестратор №8). ✅
**Проверка исполнением (мой замер, read-only, $0):** прочитал таблицу `snapshots` копии стендовой БД `rerun2/guzhenren-rerun2.db` и сравнил с кодом сегодня.
| ось снапшота | стенд (23.07) | код сегодня | вердикт |
|---|---|---|---|
| `style_check_version` | `cheapgate-v3-dc-checkers+u15.0.0` | `cheapgate-v4-percent-latin-brokenword+u15.0.0` | **разошлась** |
| `render_format_version` | `renderfmt-v2-editor-src2dst+dc3-gender` | `renderfmt-v3-draft-gender+editor-src2dst+dc3-gender` | **разошлась** |
| `langpack_version` | `langpack-v1-09974d6cdac2` | `langpack-v1-a7d4be2c0465` | **разошлась** |
**Следствие, отменяющее вчерашний аргумент (мой и критика):** резюм внутри снапшота — инвариант, а снапшот стенда сместили ещё паки 1316 (профилактика чекеров, render-формат, langpack). Значит **«$0-резюм драфта» на стенде не существует уже двое суток**, и вся конструкция «мини-прогон срочно, пока он жив» была построена на предпосылке, которую никто не измерил. Признаю: я принял её от критика и не проверил, хотя проверка стоила одного SQL-запроса.
**Что из этого следует практически (и это ЛУЧШЕ, а не хуже):**
1. Прогон в любом случае пере-оплачивается целиком, поэтому **срочности нет** — и, наоборот, дешевле сначала доложить в стек то, что и так поедет первым resnapshot, а потом мерить. Порядок исправляется на: **(1) микро-пак «предпрогонная гигиена» — два нита общности + ОБЯЗАТЕЛЬНЫЙ флип `Gates.RegressionGuard.Enabled` (D38.4 п.5, невыполненное обязательство, D39.34) + опц. проекция пере-оплаты в `tmctl status`; всё $0-код → (2) мини-прогон-замер ~10 глав на этом стеке → (3) пак-19.**
2. Смысл прогона от этого только растёт: он мерит форму, которую мы собираемся оставить, и заодно проверяет живьём построенное (rebill-гейт, лейбл-путь как no-op, майнинг-стоп, чекеры).
3. **Ниты больше ничего не «убивают»** — терять нечего, а значит их условность (D39.31 п.5) снимается: берём в микро-пак.
**Деньги мини-прогона, по фактическим цифрам rerun2** (`rerun2/RERUN_REPORT.md`): срез 15 глав = 28 336 байт GB18030; драфт **$0.010931**, редактура за арм **$0.04010.0766**, судья $6.4617 (не зовём). Экстраполяция на ~10 глав: **драфт ≈ $0.02, редактура ≈ $0.080.15 за арм****один арм ≈ $0.100.17, два арма (итерация №2 dspro-vs-glm) ≈ $0.200.32.** Потолок книги $15 не приближается; судья остаётся невызванным по D39.32.
**Операционное (в промт прогона):** стендовая БД на схеме **v9**, бинарь ожидает **v10** — первая же write-команда мигрирует; **перед прогоном сделать резервную копию `rerun2/*.db`** (запись rerun2 — единственный носитель фактуры того прогона).