diff --git a/docs/DOC_CLEANUP_PLAN.md b/docs/DOC_CLEANUP_PLAN.md index 04516fb7..9267b018 100644 --- a/docs/DOC_CLEANUP_PLAN.md +++ b/docs/DOC_CLEANUP_PLAN.md @@ -86,17 +86,17 @@ | **Б4** | Шапка журнала и остальной бэклог | 14 | 0/7/7 | ✅ ЗАКРЫТ | | **Б5** | Контракт API 14 | 8 | 0/4/4 | ✅ ЗАКРЫТ | | **Б6** | Реестр загейченных триггеров 13 | 8 | 0/5/3 | ✅ ЗАКРЫТ | -| **Б7** | Шов и эмиттер 16, 17 | 11 | 0/8/3 | ⬜ | -| **Б8** | Движковые арх-доки 03, 09, 10, 12 | 16 | 0/4/12 | ⬜ | -| **Б9** | Корневые и онбординг: CLAUDE.md, README, STACK, glossary, product-requirements | 14 | 0/4/10 | ⬜ | -| **Б10** | Ранние арх-доки 01/04/06 — ТОЛЬКО баннеры, архив СНЯТ (контролёр 4.2) | 6 | 0/1/5 | ⬜ | -| **Б11** | ЧУЖАЯ ЗОНА: бэкенд-доки — баннеры, НЕ архив (N074 corrected) | 10 | 0/6/4 | ⬜ | -| **Б12** | ЧУЖАЯ ЗОНА: фронт-доки (три неприкасаемых) | 15 | 0/8/7 | ⬜ | -| **Б13** | ЧУЖАЯ ЗОНА: платформенные доки | 8 | 1/4/3 | ⬜ | -| **Б14** | Углы вне ОБЕИХ сеток: `PROGRESS` 19–56 и 273–483 · `ORCHESTRATOR_SESSION_PROMPT.md` (32 КБ, не аудирован никем) · `05-decisions-index.md` статусы · шапка D-лога · `platform/BACKLOG.md` · `platform-PROGRESS.md` (415 КБ) · `DEFECT_REGISTER.md` (782 КБ) · `docs/POLYGON_*` | — | — | ⬜ | -| **Б15** | Явный мусор: байт-дубль промта P0 в двух архивах · `frontend/docs/API_CONTRACT_{DRAFT,INPUT}.md` (78 КБ с баннером «не читать» в ЖИВОМ каталоге) · `16-events-emitter` §5–§6 · `14-README` §6б/6в | — | — | ⬜ | -| **Б16** | Шапки статуса у `research/**` и `experiments/**` (60 файлов): тела НЕ трогать (D23.3), только датированная строка статуса там, где её нет | — | — | ⬜ | -| **Б17** | Пинги зонам по МЁРТВЫМ УКАЗАТЕЛЯМ В КОДЕ (не доки, правит зона): `artifact.go:11` · `backup.go:28` · `pgstore/books.go:776` · `languages.ts:3-8` · `tmctl/main.go:72` · `store/ledger.go:172` · `cheapgates.go:34` · `pipeline.puml:72` | — | — | ⬜ | +| **Б7** | Шов и эмиттер 16, 17 | 11 | 0/8/3 | ◐ закрыт РЕЗОМ частично | +| **Б8** | Движковые арх-доки 03, 09, 10, 12 | 16 | 0/4/12 | ◐ закрыт РЕЗОМ частично | +| **Б9** | Корневые и онбординг: CLAUDE.md, README, STACK, glossary, product-requirements | 14 | 0/4/10 | ◐ закрыт РЕЗОМ частично | +| **Б10** | Ранние арх-доки 01/04/06 — ТОЛЬКО баннеры, архив СНЯТ (контролёр 4.2) | 6 | 0/1/5 | ◐ закрыт РЕЗОМ частично | +| **Б11** | ЧУЖАЯ ЗОНА: бэкенд-доки — баннеры, НЕ архив (N074 corrected) | 10 | 0/6/4 | ◐ закрыт РЕЗОМ частично | +| **Б12** | ЧУЖАЯ ЗОНА: фронт-доки (три неприкасаемых) | 15 | 0/8/7 | ◐ закрыт РЕЗОМ частично | +| **Б13** | ЧУЖАЯ ЗОНА: платформенные доки | 8 | 1/4/3 | ◐ закрыт РЕЗОМ частично | +| **Б14** | Углы вне ОБЕИХ сеток: `PROGRESS` 19–56 и 273–483 · `ORCHESTRATOR_SESSION_PROMPT.md` (32 КБ, не аудирован никем) · `05-decisions-index.md` статусы · шапка D-лога · `platform/BACKLOG.md` · `platform-PROGRESS.md` (415 КБ) · `DEFECT_REGISTER.md` (782 КБ) · `docs/POLYGON_*` | — | — | ⬜ следующей смене | +| **Б15** | Явный мусор: байт-дубль промта P0 в двух архивах · `frontend/docs/API_CONTRACT_{DRAFT,INPUT}.md` (78 КБ с баннером «не читать» в ЖИВОМ каталоге) · `16-events-emitter` §5–§6 · `14-README` §6б/6в | — | — | ⬜ следующей смене | +| **Б16** | Шапки статуса у `research/**` и `experiments/**` (60 файлов): тела НЕ трогать (D23.3), только датированная строка статуса там, где её нет | — | — | ✅ ЗАКРЫТ | +| **Б17** | Пинги зонам по МЁРТВЫМ УКАЗАТЕЛЯМ В КОДЕ (не доки, правит зона): `artifact.go:11` · `backup.go:28` · `pgstore/books.go:776` · `languages.ts:3-8` · `tmctl/main.go:72` · `store/ledger.go:172` · `cheapgates.go:34` · `pipeline.puml:72` | — | — | ⬜ следующей смене | ### Критерии приёмки по батчам @@ -236,3 +236,35 @@ for f in docs/research/*.md docs/experiments/*.md; do head -12 "$f" \ **Хвост лендинга ресёрча.** Очередь п.5 велит новой смене лендить файл, лендинг которого владелец 01.09 откатил (`162ab9b`). Пока формулировка стоит, следующая смена повторит откат. **Формулировку задаёт владелец — сам не переписываю.** + +--- + +## ⟶ СОСТОЯНИЕ НА ЗАКРЫТИЕ СМЕНЫ №22 (02.09.2026) + +**Что случилось сверх плана.** Владелец 02.09 расширил заказ с «починить протухшее» до «спилить всё +лишнее во ВСЕХ зонах». Отработали три прохода агентами (рез → сверка → дофикс) плюс финальный: +**живые доки 4.41 → 3.68 МБ, снято 731 КБ**; вход бэкенд-сессии **347 → ~270 КБ**. + +**Батчи Б7–Б13 закрыты РЕЗОМ частично, а не по реестру находок.** Контролёр свёл два потока: +29 находок закрываются уликой реза (`N042 N043 N045 N116 N117 N024 N092 N093 N027 N028 N098 N099 +N101 N050 N051 N088 N094 N010 N074 N055 N121 N057 N059 N061 N062 N124 N126 N065 N128`), 11 остатков +(`N044/N115` строка 243 · `N048` · `N097` · `N095` · `N025` · `N008` · `N073` · `N060` · `N066` · +`N129`), 2 открыты (`N007` backend/README · `N100` 10-prompt). + +**Седьмой слайс журнала — ВЫЧЕРКНУТ**, не отложен. Довод замером: журнал на маршруте чтения не лежит +(канон велит «целиком не читать», номер грепается), а греп ходит и в слайсы ⇒ вынос не экономит ни +байта входа, ни шума поиска. Только выглядел бы работой. + +**Гейты, построенные вместо норм-пожеланий** (`docs/scripts/counts.py`, проверены посадкой мутаций): +вес бэклога судится ПРЕФИКСОМ ячейки (девять известных рядов — дедовщиной, гейт краснеет на десятом) · +токен якоря короче 12 знаков не считается сверкой по содержимому · временные доки разбора в +`LINT_SKIP_DOCS`. Линтер: **52 предупреждения → 0**; сверяемых по содержимому **16% → 22%**. + +**Что НЕ построено и передаётся:** гейт «удалена строка защищённого класса без адреса в том же +коммите» — идея контролёра, выведенная из корпуса: все 18 признанных потерь смены несли маркер +защищённого класса. Это перевод протокола удаления из дисциплины в механику, и он стоит больше +остальных вместе взятых. + +**Сжатие реестра нот под кап 400 Б/ряд — следующей смене.** Замер: реестр 132 КБ, **47% входа**; +медиана ряда первых 60 нот — 277 Б, последних 60 — **566 Б** (норма «одна строка на ноту» сгнила вдвое +за месяц). Гейт формы родится КРАСНЫМ на ~100 рядах — это и есть наряд. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index dabbbf53..666403f2 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-01, голова D39.185 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №22** (единственный носитель — здесь; роль передана 01.09, №21 закрыт нотой передачи D39.184). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **88** живых доков в `docs/` против **198** заархивированных, 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 88 три ВРЕМЕННЫЕ (`DOC_CLEANUP_PLAN` · `DOC_REVISION_FINDINGS` · `DOC_REVISION_REFUTED`), они уедут в архив по закрытии разбора, то есть постоянных **85**; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 97 (major 2) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) РАЗРЫВ ЦИКЛА: книга не отдаётся файлом ПОЛЬЗОВАТЕЛЮ — открыта ПЛАТФОРМЕННАЯ половина.** Движок пишет файл с 30.08 (`tmctl build` — EPUB 3 + чистый txt, D39.175), и холодный прогон 31.08 предъявил это живьём: собранный EPUB настоящего перевода прошёл `epubcheck` 0/0/0/0 и передан владельцу. Открыто ровно одно: канон обещает `createExport`/`getExport`, а платформа их НЕ монтирует (смонтировано 15 операций из 20; нет также `getRun`, `updateBook`, `deleteBook`). Долг числится с P8 (`platform/BACKLOG.md` П-17), и НИ ОДИН пак платформы после P7 его не взял (проверка вместо ручного счёта, чтобы не гнило при каждом лендинге: `grep -rn 'createExport\|getExport' platform/internal/ --include=*.go` — пусто). **Слово «отдаёт результат» ложно по букве ТОЛЬКО платформенной половиной** (п.4) · **(2) ~~холодный прогон движка~~ ОТРАБОТАЛ 31.08, закрыт РЕШЕНИЕМ ВЛАДЕЛЬЦА «не доводить»** (отчёт — `archive/reports/COLDRUN_V16_REPORT_2026-08-31.md`, числа относятся к `065d8ac`). Потрачено **$0.436110** из санкции $0.80. ПРЕДЪЯВЛЕНО живьём: объёмный потолок · D39.158 ОБЕИМИ половинами (стоп и не-стоп) · exit 16 · строки 154/198/239/240. ⚠ **Причина большой доли редактора НЕ УСТАНОВЛЕНА** (каузальные истории и их снятие — §4 отчёта). Доля редактора идёт с ДВУМЯ знаменателями: **49.3%** от всего прогона ($0.214865 из $0.436110) и **81.3%** внутри порции П1 (⚠ ходившее «73%» — фантом, в отчёте его нет ни разу). Следующий шаг — контролируемая проба по ЧЕТЫРЁМ осям (роли осей и три требования, купленные ошибками этого прогона, — §14 отчёта; ось `stale` НЕДОСТИЖИМА — §10 там же). ⚠ **Цена: слово владельца 31.08 — ≈$0.60, потолок $0.80, ДЕСЯТЬ глав ПОЛНОЙ цепью включая редакторскую волну.** ⚠ **КЛЮЧИ: гейт снят словом владельца 30.08, разбор двух путей — D39.176 п.6.** Живое отсюда: конвенционного `.env` НЕТ НИ У ОДНОЙ книги корпуса (заполнены только `projects/textmachine/backend/.env` и `.../eval/.env`), поэтому прогон движка обязан передавать `--keys-file` абсолютным путём и только на `translate`; для п.3 нужен ДРУГОЙ файл — `TM_PLATFORM_ENGINE_KEYS_PATH`, тоже АБСОЛЮТНЫМ путём (`platform/internal/config/config.go`, греп `must be an absolute path`). Лечение операционное и $0 — направить переменную на уже заполненный файл; проверять ПРОГОНОМ, не чтением (гардрейл `.env`) · **(3) живой сквозной прогон через API платформы** — форма манифеста, сайдкара банка и карта причин флагов сочинены платформой САМОСТОЯТЕЛЬНО. ⚠ Уточнено 01.09: гейт СНЯТ холодным прогоном, и настоящие артефакты движка теперь ЕСТЬ (каталог `books/gu-zhenren/coldrun-v16/`), но сверка вышла ТОНКОЙ: на шов реально вышло **одно значение `flag_reason` из пятнадцати** (`sanitizer_stripped`), остальные четырнадцать по-прежнему только чтением кода, а манифест против `platform/internal/ingest/manifest.go` не сверялся вовсе · **(4) дверь выдачи** — строго ПОСЛЕ (3) (⚠ слово владельца 30.08: дверь ВСЕГДА строит файл — отказ юзеру не отдаётся, неполная книга уходит с пометкой, т.е. дверь зовёт `tmctl build --partial`; отказ по умолчанию остаётся операторской ручкой CLI; D29.1(б) «fail-closed» читать как «никогда молча» — честность несут пометки) · **(5) проводка `--max-units`** — снятие гейта, а не стройка: механизм в движке стоит (D39.170), живое основание гейта — `PD-422` · **(6) разморозка фронта** — ПОСЛЕ (4): зеркало отстало на СЕМЬ миноров (`frontend/docs/api-contract/openapi.yaml` — `0.2.3` против канона `0.9.0`, и первый из них — ЛОМАЮЩИЙ 0.3.0), 16 операций против 20; отставание ратифицировано D39.142 п.5 на время фриза и две ручки разъехались, размораживать раньше значит перегенерировать типы дважды. ⚠ **ДВА ЗАГЕЙЧЕННЫХ ТРИГГЕРА НАЖАТЫ И НЕ ОТРАБОТАНЫ — строка бэклога 237** (`go.work` · вендор-сверка эффорта `deepseek-v4-pro`; реестр `13-tech-debt-anchors.md` §Б-108). ⚠ **Состояние git — снимать КОМАНДАМИ, не чтением** (ветка `polygon` ушла вперёд, коммит здесь не цитирую): работа полигона лежит на ней и в `main` НЕ влита, а `git status -- eval/` в main-дереве пуст ПО ПОСТРОЕНИЮ и уводит в ложный вывод «работы нет»; **«развязка git с origin» ОПРОВЕРГНУТА** — `origin/main` остаётся ПРЕДКОМ `main`, расхождения нет (`git merge-base --is-ancestor origin/main main` → rc 0). ⚠ Пункт «развязка git с origin» в листе владельца ниже держится ТОЛЬКО как вопрос про force-push его рукой; утверждением о расхождении дерева он не является — арбитр этой пары именно здесь. +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-02, голова D39.186 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №22** (единственный носитель — здесь; роль передана 01.09, №21 закрыт нотой передачи D39.184). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **88** живых доков в `docs/` против **198** заархивированных, 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 88 три ВРЕМЕННЫЕ (`DOC_CLEANUP_PLAN` · `DOC_REVISION_FINDINGS` · `DOC_REVISION_REFUTED`), они уедут в архив по закрытии разбора, то есть постоянных **85**; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 97 (major 2) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) РАЗРЫВ ЦИКЛА: книга не отдаётся файлом ПОЛЬЗОВАТЕЛЮ — открыта ПЛАТФОРМЕННАЯ половина.** Движок пишет файл с 30.08 (`tmctl build` — EPUB 3 + чистый txt, D39.175), и холодный прогон 31.08 предъявил это живьём: собранный EPUB настоящего перевода прошёл `epubcheck` 0/0/0/0 и передан владельцу. Открыто ровно одно: канон обещает `createExport`/`getExport`, а платформа их НЕ монтирует (смонтировано 15 операций из 20; нет также `getRun`, `updateBook`, `deleteBook`). Долг числится с P8 (`platform/BACKLOG.md` П-17), и НИ ОДИН пак платформы после P7 его не взял (проверка вместо ручного счёта, чтобы не гнило при каждом лендинге: `grep -rn 'createExport\|getExport' platform/internal/ --include=*.go` — пусто). **Слово «отдаёт результат» ложно по букве ТОЛЬКО платформенной половиной** (п.4) · **(2) ~~холодный прогон движка~~ ОТРАБОТАЛ 31.08, закрыт РЕШЕНИЕМ ВЛАДЕЛЬЦА «не доводить»** (отчёт — `archive/reports/COLDRUN_V16_REPORT_2026-08-31.md`, числа относятся к `065d8ac`). Потрачено **$0.436110** из санкции $0.80. ПРЕДЪЯВЛЕНО живьём: объёмный потолок · D39.158 ОБЕИМИ половинами (стоп и не-стоп) · exit 16 · строки 154/198/239/240. ⚠ **Причина большой доли редактора НЕ УСТАНОВЛЕНА** (каузальные истории и их снятие — §4 отчёта). Доля редактора идёт с ДВУМЯ знаменателями: **49.3%** от всего прогона ($0.214865 из $0.436110) и **81.3%** внутри порции П1 (⚠ ходившее «73%» — фантом, в отчёте его нет ни разу). Следующий шаг — контролируемая проба по ЧЕТЫРЁМ осям (роли осей и три требования, купленные ошибками этого прогона, — §14 отчёта; ось `stale` НЕДОСТИЖИМА — §10 там же). ⚠ **Цена: слово владельца 31.08 — ≈$0.60, потолок $0.80, ДЕСЯТЬ глав ПОЛНОЙ цепью включая редакторскую волну.** ⚠ **КЛЮЧИ: гейт снят словом владельца 30.08, разбор двух путей — D39.176 п.6.** Живое отсюда: конвенционного `.env` НЕТ НИ У ОДНОЙ книги корпуса (заполнены только `projects/textmachine/backend/.env` и `.../eval/.env`), поэтому прогон движка обязан передавать `--keys-file` абсолютным путём и только на `translate`; для п.3 нужен ДРУГОЙ файл — `TM_PLATFORM_ENGINE_KEYS_PATH`, тоже АБСОЛЮТНЫМ путём (`platform/internal/config/config.go`, греп `must be an absolute path`). Лечение операционное и $0 — направить переменную на уже заполненный файл; проверять ПРОГОНОМ, не чтением (гардрейл `.env`) · **(3) живой сквозной прогон через API платформы** — форма манифеста, сайдкара банка и карта причин флагов сочинены платформой САМОСТОЯТЕЛЬНО. ⚠ Уточнено 01.09: гейт СНЯТ холодным прогоном, и настоящие артефакты движка теперь ЕСТЬ (каталог `books/gu-zhenren/coldrun-v16/`), но сверка вышла ТОНКОЙ: на шов реально вышло **одно значение `flag_reason` из пятнадцати** (`sanitizer_stripped`), остальные четырнадцать по-прежнему только чтением кода, а манифест против `platform/internal/ingest/manifest.go` не сверялся вовсе · **(4) дверь выдачи** — строго ПОСЛЕ (3) (⚠ слово владельца 30.08: дверь ВСЕГДА строит файл — отказ юзеру не отдаётся, неполная книга уходит с пометкой, т.е. дверь зовёт `tmctl build --partial`; отказ по умолчанию остаётся операторской ручкой CLI; D29.1(б) «fail-closed» читать как «никогда молча» — честность несут пометки) · **(5) проводка `--max-units`** — снятие гейта, а не стройка: механизм в движке стоит (D39.170), живое основание гейта — `PD-422` · **(6) разморозка фронта** — ПОСЛЕ (4): зеркало отстало на СЕМЬ миноров (`frontend/docs/api-contract/openapi.yaml` — `0.2.3` против канона `0.9.0`, и первый из них — ЛОМАЮЩИЙ 0.3.0), 16 операций против 20; отставание ратифицировано D39.142 п.5 на время фриза и две ручки разъехались, размораживать раньше значит перегенерировать типы дважды. ⚠ **ДВА ЗАГЕЙЧЕННЫХ ТРИГГЕРА НАЖАТЫ И НЕ ОТРАБОТАНЫ — строка бэклога 237** (`go.work` · вендор-сверка эффорта `deepseek-v4-pro`; реестр `13-tech-debt-anchors.md` §Б-108). ⚠ **Состояние git — снимать КОМАНДАМИ, не чтением** (ветка `polygon` ушла вперёд, коммит здесь не цитирую): работа полигона лежит на ней и в `main` НЕ влита, а `git status -- eval/` в main-дереве пуст ПО ПОСТРОЕНИЮ и уводит в ложный вывод «работы нет»; **«развязка git с origin» ОПРОВЕРГНУТА** — `origin/main` остаётся ПРЕДКОМ `main`, расхождения нет (`git merge-base --is-ancestor origin/main main` → rc 0). ⚠ Пункт «развязка git с origin» в листе владельца ниже держится ТОЛЬКО как вопрос про force-push его рукой; утверждением о расхождении дерева он не является — арбитр этой пары именно здесь. > - ⚠ **Норма приёмки, купленная аудитом D39.167 п.1:** акт лендинга, объявивший закрытие строки регистра или бэклога, обязан быть СВЕРЕН СТАТУСОМ в тот же заход — иначе следующий пак собирается ПО РЕГИСТРУ и едет чинить построенное. Машинная половина — строка бэклога **225**. > - ⚠ **ЛЕНТА КОНТРАКТНЫХ МИНОРОВ** (что принёс каждый — телом ноты): **0.5.0** — D39.161 · **0.6.0** — D39.162/D39.163 · **0.7.0** — D39.166 · **0.8.0** — D39.169 · **0.9.0** — D39.180. Прожитые дампы приёмок P9/P10 — `archive/PROGRESS-2026-08-backend.md` и тела нот. > - **ЖИВОЕ:** полигон — **фаза Д ИДЁТ** (заказ 10.08; деньги санкционированы 15.08 напрямую полигону — ⚠ числа потолка в носителях расходятся, фактическую цепь сверить при лендинге петель; ja-книга `enkan_no_hate_ja`; при ратификации фазы Д в D-ноту: декой-правило + обязательный кросс-семейный опровергатель приёмки — одобрены 10.08; свежие фриз-коммиты полигона в дереве — НЕ трогать) · платформа и контракт — статус в строке выше, здесь НЕ дублируется (один носитель на факт) · **фронт ЗАМОРОЖЕН** (D39.136 п.2 + **D39.147: морозится ДАЛЬШЕ лендинга P7 — слово владельца 17.08; P7 зону НЕ размораживает, S5-промт не выдаётся, разморозка отдельным словом по достижении сквозного пути**; перечень первого касания зоны — синк зеркала на ТЕКУЩИЙ канон (отставание и его цена — п.6 очереди выше и строка бэклога 183(б)) + перегенерация типов + моки + гейт утечки конвейера + ФС-1..12 + Ф-63/Ф-28 + фразы В-11 по словарю кодов — не отменён, ждёт разморозки) · закрытые стройки эры — реестром нот `architecture/05-decisions-index.md` (D39.130–137, одна строка на ноту). diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index 0cb7512b..8ee45dce 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -244,3 +244,4 @@ | D39.183 | 31.08 | **Слово владельца: запрет «не подгонять тесты под зелень» — про МОТИВ.** Правка *чтобы прошло* запрещена; правка от ЗАКАЗАННОЙ или ратифицированной смены поведения — обслуживание, протухший тест не держим. ⚠ Заказанность решает ЗАКАЗ, а не сессия. Условие — объявление в отчёте | жив | ЖИВОЕ: полноту объявления не проверяет ничто — строка бэклога 248 | тесты канон процесс | | D39.184 | 01.09 | **Передача роли оркестратора №21 → №22.** Смена приняла P12 + минор 0.9.0, холодный прогон, закон раскрытия и одиннадцать экземпляров — D39.179–D39.182; `arch-3` закрыт. Девять названных ошибок оркестратора. ⚠ Класс смены: **отсутствие в своей области видимости принято за отсутствие вообще — четырежды у трёх участников**; норма — отрицательный результат с ПОЛОЖИТЕЛЬНЫМ КОНТРОЛЕМ | жив | ЖИВОЕ: заказ владельца 01.09 — ревизия доков на протухшее, планы бэкенда и платформы, вынос в архив | передача процесс | | D39.185 | 01.09 | **Четыре строки бэклога закрыты лендингами 31.08, а в таблице стояли открытыми:** 194 (деньги банк-ролей в проекции, A10) · 238 (деньги слепы к правке исходника на месте, A6) · 239 (`checkWave` не видел исчезнувшую стадию, A7+A12) · 240 (оплаченный стоп подписи мог исчезнуть молча, P12). ⚠ 238 и 239 стояли в шапке секции «Бэкенд» как СВОБОДНАЯ РАБОТА ЗОНЫ. Два опровержения текста 194 и честная граница: проекция денег стала НИЖНЕЙ | жив | +| D39.186 | 02.09 | **Ревизия и чистка документации ВСЕХ зон по заказу владельца.** 1432 утверждения проверены исполнением, 130 живых находок (6 блокеров); три прохода агентами + финальный: живые доки 4.41 → 3.68 МБ (снято 731 КБ), вход сессии 347 → ~270 КБ. Контроль — агент Fable 5.1 сквозным контекстом: 18 потерь защищённых классов и ~27 дефектов реза найдены и починены. Нормы переведены в гейты: префикс веса бэклога · минимум токена якоря 12 знаков; линтер 52 → 0, сверяемых 16% → 22%. Строки бэклога 194/238/239/240 закрыты D39.185. | жив | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index b16ccb0c..78ab3b18 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.185 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.186 (живой файл: карта · эрраты · живые тела · голова 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+). @@ -1899,3 +1899,59 @@ content-hash строки. **Провенанс находок:** ревизия документации 01.09 (воркфлоу `docs-staleness-revision-A`, 15 срезов × ревизор+опровергатель, 1432 утверждения проверены исполнением); реестр — `docs/DOC_REVISION_FINDINGS.md`, контроль исполнения — отдельный агент Fable 5.1 (решение владельца 01.09). + +## D39.186 — РЕВИЗИЯ И ЧИСТКА ДОКУМЕНТАЦИИ ВСЕХ ЗОН: снято 731 КБ, вход сессии упал на пятую часть, нормы переведены в гейты (02.09). ✅ + +**Заказ владельца 01–02.09,** расширявшийся трижды: ревизия на протухшее → планы доработок и архив → +**«спилить мусор из документации и дать лёгкий путь новым сессиям, но не потерять важное»** → «убрать +всё лишнее», с прямой санкцией на документацию ЧУЖИХ зон (платформа, фронт, бэкенд). + +### Что сделано + +**Ревизия исполнением** (воркфлоу, 15 срезов × ревизор+опровергатель, 30 агентов): **1432 утверждения +проверены командой**, 115 положительных контролей, 137 находок → адверсариальный пере-суд снял 7 → +**130 живых**, из них 6 блокеров. Реестр — `docs/DOC_REVISION_FINDINGS.md`. + +**Чистка тремя проходами** (рез → сверка → дофикс) плюс финальный: **живые доки 4.41 → 3.68 МБ**, +снято **731 КБ**; вход бэкенд-сессии **347 → ~270 КБ**. Контроль исполнения — отдельный агент модели +Fable 5.1 со сквозным контекстом (решение владельца): он отсудил ~430 кандидатов, нашёл **18 потерь +защищённых классов (4 весомых)** и **~27 дефектов, внесённых самим резом** — все возвращены и починены. + +**Нормы переведены в ГЕЙТЫ** (`docs/scripts/counts.py`, каждый проверен посадкой мутации): +- вес бэклога судится **ПРЕФИКСОМ** ячейки; девять рядов, потерявших вес до гейта, — дедовщиной, + гейт краснеет на десятом. Прежний счёт подстрокой давал ложное срабатывание от слова «скоро» в прозе; +- **токен якоря короче 12 знаков** не считается сверкой по содержимому: долю сверяемых можно было + накрутить пустышкой; +- временные артефакты разбора — в `LINT_SKIP_DOCS` (52 предупреждения из 52 были в них одних). +Итог: **линтер 52 → 0**, сверяемых по содержимому **16% → 22%**. + +**Две строки канона, заработанные сменой:** греп живого дерева с исключением `prompts`/`reports` +(но НЕ `archive/architecture` — там тела закрытых эр) · сообщение коммита о ДЕРЕВЕ, не о процессе. + +### Что записано против себя + +- **Блокеры бэклога:** строки **194 · 238 · 239 · 240** закрыты лендингами 31.08, а в таблице стояли + открытыми, и **238/239 шапка предлагала следующей сессии как свободную работу** — её отправили бы + строить построенное. Закрыты нотой D39.185. +- **Шапка очереди учила выдуманному числу:** «редактор съел 73% захода» — в отчёте холодного прогона + числа 73% НЕТ НИ РАЗУ (греп = 0), реальные 49.3% и 81.3%. +- **Денежный док занижал цену главы в 5–8 раз:** числа мерены до пере-пина DeepSeek (×4.47, D39.179), + и знак вывода перевёрнут — константа $0.03 не завышена, а ЗАНИЖЕНА. +- **Реестр нот — 47% входа сессии** при собственной норме «одна строка на ноту»: медиана ряда первых + 60 нот 277 Б, последних 60 — **566 Б**. Норма сгнила вдвое за месяц; сжатие — следующей смене. +- **Тела нот тронуты девять раз** (D39.124 · D39.128 · D39.153 · D39.155). Проверено перед решением: + отличительный токен каждой снятой строки живёт ещё в 4–61 файле, уникально не потеряно ничего; + **владелец 02.09 велел не откатывать** — заказ был вырезать мусор. Запись выправлена эрратой 02.09-в. +- **Ошибки оркестратора:** наряд второго прохода сопоставлен срезам ПО ПОРЯДКУ в журнале без проверки + порядка — агенты поймали и нашли свои наряды сами · трижды подряд исполнялся первый пункт поправки + контролёра при брошенном нумерованном остатке · дважды греп по форме принят за проверку смысла + (регистр, разметка ячейки) · сообщения коммитов несли механику сессии (24 из 47). +- **Контролёр ошибся четырежды** и записал это на себя: метод счёта якорей («93 новых» → **девять**, + при этом рез снял 260 чистыми), артефакт «за концом файла», неверный операнд, промах по носителю. + +### Открыто на следующей смене + +Сжатие реестра нот под кап 400 Б/ряд (гейт формы родится красным — это и есть наряд) · гейт «удалена +строка защищённого класса без адреса в том же коммите» (все 18 потерь смены несли такой маркер) · +батчи Б14/Б15/Б17 · 11 остатков и 2 открытых находки реестра · норма письма доков — черновик разобран +контролёром, владельцу не вносилась. Седьмой слайс журнала **вычеркнут** замером, не отложен.