# ПЛАН РАЗБОРА ТЕХДОЛГА ДОКУМЕНТАЦИИ — заказ владельца 01.09.2026 > **⚠ ВРЕМЕННЫЙ РАБОЧИЙ ДОКУМЕНТ.** Живёт, пока идёт разбор; по закрытию последнего батча > уезжает в `archive/` вместе с реестром находок. Держать его в живых доках после закрытия — > значит сделать ровно то, против чего заказан сам разбор. > > **Заказ владельца дословно:** свести находки в план и идти по нему · привести документацию > в хороший порядок · **с бэклогом ПООСТОРОЖНЕЕ** · спилить лишнее, актуализировать · > **старое и откровенно лишнее выкинуть, актуальное оставить и НЕ ПОТЕРЯТЬ** · старые решения > и мусор спиливать, чтобы не забивать контекст сессиям · **касается и фронтовой, и > платформенной, и бэкенд-документации** (прямая санкция на чужие зоны, выданная 01.09). > > **Контроль исполнения — отдельный агент модели Fable 5** (решение владельца 01.09): после > КАЖДОГО коммита я предъявляю ему коммит, он сверяется с реестром находок и выносит, верно ли > закрыто. Пинг-понг идёт, пока обе стороны не скажут «техдолг закрыт». Мой самоотчёт > закрытием НЕ считается. ## Источники - **Реестр находок** — [`DOC_REVISION_FINDINGS.md`](DOC_REVISION_FINDINGS.md): 130 живых находок с уликами (команда + вывод), по одной секции `N001`…`N130`. - **Снятые опровергателем** — [`DOC_REVISION_REFUTED.md`](DOC_REVISION_REFUTED.md): 7 находок, которые адверсариальный проход ОПРОВЕРГ. ⚠ Их чинить НЕЛЬЗЯ: «починка» вернёт дефект. ## Как добыты находки (чтобы вес был понятен) Воркфлоу `docs-staleness-revision-A`, 15 срезов × (ревизор + опровергатель), 30 агентов, 0 отказов, 1689 вызовов инструментов. **1432 утверждения проверены ИСПОЛНЕНИЕМ**, 115 положительных контролей (норма: отрицательный результат предъявляется вместе с доказательством, что инструмент в этой области способен хоть что-то найти). Найдено 137 → адверсариальный пере-суд снял 7 → **осталось 130**. ⚠ **Вес находки не одинаков.** 82 разрушающие и блокерные прошли пере-суд (75 ПОДТВЕРЖДЕНО). Остальные проверены ОДНИМ агентом — они наряд на перепроверку, а не истина: исполнять их на доверии запрещено, каждую верифицирую своей командой перед правкой. ## Дисциплина разбора (жёсткая, из заказа владельца) 1. **Не потерять.** Прежде чем удалить абзац/строку/док — грепнуть его отличительный токен по всему дереву и назвать, куда уехало содержимое. Удаление без адреса = потеря. 2. **Бэклог — осторожно.** Строку закрываем ТОЛЬКО когда лекарство предъявлено в коде своей командой. ID строк стабильны навсегда и на них ссылаются доки — закрытая строка уезжает в D-ноту с номером решения, а не стирается молча. 3. **Чужие зоны.** Санкция владельца выдана на ДОКУМЕНТАЦИЮ. Код чужих зон не трогаю. Каждая правка чужого дока объявляется в зонном журнале, чтобы зона увидела. 4. **Гейты перед каждым коммитом:** `counts.py --check` и `--lint`, `git status` на чужое, коммит только явным списком путей. 5. **Соседний worktree `/home/ubuntu/projects/textmachine` — НЕ ТРОГАТЬ** (указание владельца 01.09): ни чтением, ни записью, ни git-командой. Каталог `books/` — симлинк туда же. ## Батчи Порядок — по убыванию цены ошибки. Каждый батч = один коммит = одна сверка контролёра. | Батч | Предмет | Находок | бл / maj / min | Статус | |---|---|---|---|---| | **Б1** | Блокеры бэклога: строки, закрытые кодом, но открытые в таблице | 3 | 3 / 0 / 0 | ⬜ не начат | | **Б2** | Денежный путь `15-money-path.md` | 7 | 2 / 3 / 2 | ⬜ не начат | | **Б3** | Шапка журнала и остальной PROGRESS | 17 | 0 / 9 / 8 | ⬜ не начат | | **Б4** | Контракт API 14 (README + openapi) | 10 | 0 / 5 / 5 | ⬜ не начат | | **Б5** | Реестр загейченных триггеров 13 | 8 | 0 / 5 / 3 | ⬜ не начат | | **Б6** | Шов и эмиттер: 16, 17 | 11 | 0 / 8 / 3 | ⬜ не начат | | **Б7** | Движковые арх-доки: 03, 09, 10, 12 | 17 | 0 / 5 / 12 | ⬜ не начат | | **Б8** | Корневые и онбординг: CLAUDE.md, README, STACK, glossary, product-requirements | 17 | 0 / 6 / 11 | ⬜ не начат | | **Б9** | Ранние арх-доки 01/04/06 — баннеры или архив | 6 | 0 / 1 / 5 | ⬜ не начат | | **Б10** | ЧУЖАЯ ЗОНА (санкция владельца 01.09): бэкенд-доки | 10 | 0 / 6 / 4 | ⬜ не начат | | **Б11** | ЧУЖАЯ ЗОНА (санкция владельца 01.09): фронт-доки | 16 | 0 / 9 / 7 | ⬜ не начат | | **Б12** | ЧУЖАЯ ЗОНА (санкция владельца 01.09): платформенные доки | 8 | 1 / 4 / 3 | ⬜ не начат | ### Состав батчей поимённо **Б1 — Блокеры бэклога: строки, закрытые кодом, но открытые в таблице** - `N001` блокер · `docs/PROGRESS.md:176` · C-исполненное-как-открытое — Строка 194 ЗАКРЫТА лендингом 31.08 (`bb541a8`, экземпляр A10 закона раскрытия): `projectBookUSD(...) + r.bankRoleCommittedUSD()` уже стоит в `status.g - `N002` блокер · `docs/PROGRESS.md:200` · C-исполненное-как-открытое — Строка 238 ЗАКРЫТА тем же лендингом 31.08 (`bb541a8`, экземпляр A6 «проекция видит правку исходника»). Посадка `rebillsource_test.go` называет строку - `N003` блокер · `docs/PROGRESS.md:201` · C-исполненное-как-открытое — Строка 239 ЗАКРЫТА лендингом 31.08 (`bb541a8`, экземпляр A7+A12). Правило `exportConfigDrift` не «перенесено», а сведено в ОДНО общее определение `orp **Б2 — Денежный путь `15-money-path.md`** - `N004` блокер · `docs/architecture/15-money-path.md:31` · D-противоречие-ратифицированному — Числа взяты из D39.165 §1 (28.08) и меряны на леджерах ДО ценового перелома. D39.179 п.1 (31.08) ратифицировал: DeepSeek пере-пинен под цены, вступивш - `N005` блокер · `docs/architecture/15-money-path.md:35` · A-дрейф — Абзац описывает ТОЛЬКО живую ветвь `run abandon`. С пака P11 (PD-385, коммит e548e5a от 29.08) есть вторая ветвь — PHASE=settling: к ней отказ «юнит/б - `N039` major · `docs/architecture/15-money-path.md:6` · B-мёртвый-указатель — Норму «чистый ФАЙЛ» ратифицировал D39.179 п.4, который сам говорит: «уточняет D39.177 §2в … Ось «зона» была НЕВЕРНА … Носитель нормы — шапка 15-money- - `N040` major · `docs/architecture/15-money-path.md:19` · A-дрейф — Перечень движковых суб-бюджетов читается как исчерпывающий (репэйр + эскалация) и не знает третьего семейства — книго-широких бюджетов банк-ролей `gat - `N041` major · `docs/architecture/15-money-path.md:21` · D-противоречие-ратифицированному — «Различение живёт в отчёте прогона и в логе» перестало быть верным 31.08. D39.181 п.2 ратифицировал закон раскрытия: «признак остановки по объёму обяз - `N113` minor · `docs/architecture/15-money-path.md:6` · C-исполненное-как-открытое — Пак контракта 0.9.0 ЗАЛЕНДЖЕН 31.08 коммитом 0a680a3 (D39.180), файл в дереве чист, версия в нём — 0.9.0. Настоящее время «двигается прямо сейчас» лож - `N114` minor · `docs/architecture/15-money-path.md:14` · A-дрейф — Из трёх опор канона, названных здесь, у двух в доке есть носители (телеметрия — леджер/status в §2, потолки — §2/§3), а у третьей — «явное согласие на **Б3 — Шапка журнала и остальной PROGRESS** - `N013` major · `docs/PROGRESS.md:3` · A-дрейф — Канон уже НЕ 0.8.0: в `docs/architecture/14-api-contract/openapi.yaml` стоит 0.9.0 — минор уехал с лендингом P12 31.08, о котором сообщает ЭТА ЖЕ стро - `N014` major · `docs/PROGRESS.md:3` · A-дрейф — Числа «73%» в цитируемом отчёте холодного прогона НЕТ вовсе. Отчёт даёт долю редактора с ДВУМЯ знаменателями: 49.3% от всего прогона ($0.214865 из $0. - `N015` major · `docs/PROGRESS.md:3` · E-второй-носитель — Шапка объявляет себя ЕДИНСТВЕННЫМ носителем состояния очереди, но не несёт двух лендингов 31.08, которые несёт `docs/README.md`: бэкенд-пак «ДЕНЬГИ И - `N016` major · `docs/PROGRESS.md:80` · C-исполненное-как-открытое — Довод «⇒ строка жива» опирается на прогоны coldrun-a/b, но 31.08 отработал НОВЫЙ холодный прогон (coldrun-v16), в котором редакторская волна гонялась - `N017` major · `docs/PROGRESS.md:143` · A-дрейф — Гейт назначен на событие, которое УЖЕ произошло (первый холодный прогон, 31.08), и прогон показал, что назначенный замер этим путём недостижим: манифе - `N018` major · `docs/PROGRESS.md:157` · A-дрейф — Файла `.bank-stop.json` больше НЕ существует: он снесён вместе с писателем и четырьмя тестами при постройке входной двери шва (D39.158) — в Go-коде дв - `N019` major · `docs/PROGRESS.md:182` · D-противоречие-ратифицированному — Дважды протухла. (1) Цифра «≈$0.05» СНЯТА ратифицированной нотой D39.179 п.1 как протухшая: пере-пин DeepSeek 15.08 даёт множитель 4.47, а замер 31.08 - `N020` major · `docs/PROGRESS.md:196` · C-исполненное-как-открытое — Строка 232 ЗАКРЫТА лендингом 31.08 (`bb541a8`, экземпляр A11). Читающий метод `store.AnnouncedOnceKeys()` построен, его докстринг называет строку 232 - `N021` major · `docs/PROGRESS.md:202` · C-исполненное-как-открытое — Строка 240 исполнена лендингом P12 31.08 (`0a680a3`, D39.180) — обеими ветвями своей же диспозиции. Гард `LiftBankStop` СНЯТ (в `platform/` осталось д - `N075` minor · `docs/PROGRESS.md:3` · B-мёртвый-указатель — Промт НЕ в `docs/archive/prompts/` — он до сих пор лежит в корне `docs/`. В архиве промтов лежат два ДРУГИХ холодно-прогонных промта (`BACKEND_COLDRUN - `N076` minor · `docs/PROGRESS.md:3` · A-дрейф — Сегодня `main` опережает `origin/main` на 48 коммитов. Несущий вывод («развязки нет») выжил — `origin/main` остаётся ПРЕДКОМ `main`, расхождения по-пр - `N077` minor · `docs/PROGRESS.md:3` · A-дрейф — «Пять» было верно до 31.08 (P8-FIX · P8-REVIEW · P9 · P10 · P11). После P7, где долг выдачи был отложен в P8, по реестру нот легло ШЕСТЬ P-нумерованны - `N078` minor · `docs/PROGRESS.md:15` · C-исполненное-как-открытое — Условие, по которому число обещано пере-калибровать, ИСПОЛНИЛОСЬ: платный прогон отработал 31.08 и дал собственную оценку движка $1.1377277707 на деся - `N079` minor · `docs/PROGRESS.md:146` · C-исполненное-как-открытое — Гейт пал: первый холодный прогон отработал 31.08 и выдал ровно то число, на котором строка условила решение — `families_held=0` (строка требует ослабл - `N080` minor · `docs/PROGRESS.md:183` · B-мёртвый-указатель — Оба line-якоря строки 203 уехали после контрактного минора 0.9.0 (P12, `0a680a3`, 31.08). `openapi.yaml:1784-1787` сегодня показывает поля `id`/`units - `N081` minor · `docs/PROGRESS.md:193` · B-мёртвый-указатель — Якорь уехал на 28 строк после контрактного минора 0.9.0 (P12, 31.08): цитируемая фраза стоит на `:2079`, а `:2051` показывает заголовок совсем другой - `N082` minor · `docs/PROGRESS.md:207` · C-исполненное-как-открытое — Строка исполнена НАПОЛОВИНУ, и строка об этом не знает: 31.08 коммитом `94381bb` в `docs/scripts/githooks/pre-commit` добавлен warn-блок, который пере **Б4 — Контракт API 14 (README + openapi)** - `N034` major · `docs/architecture/14-api-contract/README.md:8` · A-дрейф — Канон стоит на 0.9.0 с 31.08 (минор заленджен D39.180 вместе с паком P12), а ревью-шапка всё ещё называет базой 0.8.0. Верно: зеркало 0.2.3 против кан - `N035` major · `docs/architecture/14-api-contract/README.md:981` · C-исполненное-как-открытое — Расхождение ЗАКРЫТО: `Resume` больше не отвечает 202 на исчерпанный прогон — вердикт `ceilingSpent` возвращает `ErrCeilingReached`, и `httpapi/v0.go:8 - `N036` major · `docs/architecture/14-api-contract/README.md:1637` · A-дрейф — Собственная команда дока, исполненная сегодня, даёт 26 хитов, а не ноль: платформа сжимает САМА, в Go, в `platform/internal/httpapi/conditional.go` (` - `N037` major · `docs/architecture/14-api-contract/README.md:1718` · B-мёртвый-указатель — Вся колонка «Откуда взят (платформа)» Приложения А-2 съехала: реальные производители лежат на 240–270 строк ниже названных, а на названных номерах сто - `N038` major · `docs/architecture/14-api-contract/openapi.yaml:1414` · E-второй-носитель — Деплой отвечает ТРЕМЯ значениями: `runStage` (platform/internal/pgstore/readmodel.go:576) выдаёт `re_pass` для всего пере-прохода, помимо `drafting`/` - `N108` minor · `docs/architecture/14-api-contract/README.md:6` · B-мёртвый-указатель — D39.169 ратифицировала минор 0.8.0, а не 0.9.0; 0.9.0 принят и заленджен нотой D39.180 (31.08). Тело того же дока (строка 69) описывает 0.9.0 вовсе БЕ - `N109` minor · `docs/architecture/14-api-contract/README.md:60` · B-мёртвый-указатель — Файла по этому пути нет: отчёт вынесен в архив коммитом 31b96d1 (27.08) и лежит как `docs/archive/reports/CONTRACT_MINOR_REPORT_2026-08-27.md`. Ссылка - `N110` minor · `docs/architecture/14-api-contract/README.md:990` · C-исполненное-как-открытое — Носитель «вход P7» израсходован — пак P7 принят D39.153, и ⚠-абзац НАД самой таблицей это уже пишет («Носитель израсходован: пак P7 принят D39.153»). - `N111` minor · `docs/architecture/14-api-contract/README.md:998` · B-мёртвый-указатель — Строки 148 в едином бэклоге НЕТ — её удалил `a023e39` решением владельца 21.08. Хуже: ТОТ ЖЕ документ на строке 1670 уже это знает и пишет «⚠ Прежний - `N112` minor · `docs/architecture/14-api-contract/README.md:1002` · B-мёртвый-указатель — Промт вынесен в архив: живой путь — `docs/archive/prompts/BACKEND_SILENT_HARM_SESSION_PROMPT_2026-08-28.md`. Дополнительно: половина того, на что ссыл **Б5 — Реестр загейченных триггеров 13** - `N029` major · `docs/architecture/13-tech-debt-anchors.md:52` · E-второй-носитель — Это ВТОРОЙ (и единственный не-баннированный) носитель статуса строки F4 реестра памяти, и он разошёлся с кодом: `tmctl backup` существует (cmd/tmctl/m - `N030` major · `docs/architecture/13-tech-debt-anchors.md:72` · D-противоречие-ратифицированному — Обе половины ложны и противоречат ратифицированной D39.69 §3 («строки 27/84 ЗАКРЫТЫ … neuter end-to-end (enum · gender_neuter в injection-данных · See - `N031` major · `docs/architecture/13-tech-debt-anchors.md:100` · C-исполненное-как-открытое — feed_cap ЗАКРЫТ ратифицированной нотой D39.69 §1 («value-порядок отреза бюджета (частота-desc — feed_cap ЗАКРЫТ этим, из строки 86 изъят)»), и код это - `N032` major · `docs/architecture/13-tech-debt-anchors.md:134` · B-мёртвый-указатель — Единственная объявленная функция файла — быть справочником file:line-якорей («Этот файл — справочные file:line-якоря … Актуализируется лендингами пако - `N033` major · `docs/architecture/13-tech-debt-anchors.md:180` · C-исполненное-как-открытое — Гейт по письму источника ПОСТРОЕН и стоит внутри самой lintNumberMagnitude; код называет заказ по имени в комментарии — «SOURCE-script gate (строка 79 - `N105` minor · `docs/architecture/13-tech-debt-anchors.md:12` · E-второй-носитель — Один и тот же якорь ja-препа живёт в двух живых носителях, и копии разошлись: строка 81 бэклога уже исправлена на «migrate.go:187/194», а справочник — - `N106` minor · `docs/architecture/13-tech-debt-anchors.md:24` · B-мёртвый-указатель — Якоря реестра техдолга в ДВА дока моего среза сдвинулись ровно на +6 строк и не были актуализированы: коммит d2cd30c (22.08) дописал ⚠-поправки в 02-m - `N107` minor · `docs/architecture/13-tech-debt-anchors.md:104` · E-второй-носитель — Факт про neuter лежит в этом файле ДВАЖДЫ, и копии разошлись ВНУТРИ одного документа: тело пункта (строки 70-72) несёт пере-сверку 23.08 «ЧЕТЫРЕ пункт **Б6 — Шов и эмиттер: 16, 17** - `N042` major · `docs/architecture/16-events-emitter.md:11` · B-мёртвый-указатель — Якорь ведёт не туда И цель больше не существует: `docs/PROGRESS.md:149` — это строка бэклога 42, а строк 103 и 165 в таблице нет вовсе (закрыты D39.13 - `N043` major · `docs/architecture/16-events-emitter.md:17` · B-мёртвый-указатель — Три якоря §1 («что уже есть со стороны движка», раздел БЕЗ ⚠-баннера) уехали: `cmd/tmctl/main.go:67-70` — это константы полосы отказов (`refusalLast = - `N044` major · `docs/architecture/16-events-emitter.md:38` · A-дрейф — Дословная цитата, которую док обещает в шапке («дословные цитаты — в кавычках-ёлочках»), в дереве больше не существует: `events.go:5-6` теперь читаетс - `N045` major · `docs/architecture/16-events-emitter.md:66` · B-мёртвый-указатель — ВСЕ двенадцать якорей в `platform/docs/DEFECT_REGISTER.md` мертвы — ни один не попадает в свою строку. Фактические номера: PD-60→343, PD-61→344, PD-79 - `N046` major · `docs/architecture/17-seam-inbound-law.md:56` · B-мёртвый-указатель — Якорь родился верным и сгнил дрейфом — и уехал на строку, ВЫГЛЯДЯЩУЮ так же. На 23.08 (коммит `4f56160`, тот же, что написал якорь) `mining.go:221` бы - `N047` major · `docs/architecture/17-seam-inbound-law.md:71` · C-исполненное-как-открытое — Загрузчик сида СТРОГИЙ с пака входной двери: `backend/internal/seed/decode.go` называет строку 212 своим именем и ставит `dec.KnownFields(true)` — неи - `N048` major · `docs/architecture/17-seam-inbound-law.md:97` · C-исполненное-как-открытое — Первая строка таблицы «Двери, УЖЕ подразумеваемые живыми строками» описывает как ПРЕДСТОЯЩУЮ ту самую дверь, которую собственная шапка дока объявляет - `N049` major · `docs/architecture/17-seam-inbound-law.md:100` · C-исполненное-как-открытое — Строка 231 закрыта паком «деньги» (D39.170, 29.08) и снята с бэклога — сам PROGRESS.md говорит это в лоб. Док цитирует её ДВАЖДЫ как живую: на строке - `N115` minor · `docs/architecture/16-events-emitter.md:3` · E-второй-носитель — Движок с 31.08 (`bb541a8`) пишет `StreamVersion = "1.2"` — минор поднят под `Finished.Volume` (D39.181 п.2). 1.1 сегодня — это версия ЧИТАТЕЛЯ платфор - `N116` minor · `docs/architecture/16-events-emitter.md:90` · C-исполненное-как-открытое — PD-60 (строка 88, «открыт») и PD-61 (строка 90, «открыт») оба стоят в регистре как `fixed(P6, дерево сессии)`. Шапка дока баннирует только «PD-113 отк - `N117` minor · `docs/architecture/16-events-emitter.md:114` · B-мёртвый-указатель — Тела D39.119/122/123 уехали в слайс `docs/archive/architecture/05-decisions-D39-106-123.md`, где всего 210 строк — номера 394/416/428/430 там не сущес **Б7 — Движковые арх-доки: 03, 09, 10, 12** - `N023` major · `docs/architecture/03-implementation-notes.md:64` · A-дрейф — Шапка строки 3 объявляет §3-контракты «живым референсом бэкенда», а формула §3.1 не совпадает с кодом ни одним полем-разделителем: реальный RequestHas - `N024` major · `docs/architecture/03-implementation-notes.md:262` · D-противоречие-ратифицированному — D30 п.1 ратифицировал ПРЯМО ОБРАТНОЕ и с явным supersede: «Флип D1: редактор — БИЛИНГВАЛЬНЫЙ (черновик + исходник), новый дефолт». Реестр решений поме - `N026` major · `docs/architecture/09-target-architecture.md:12` · A-дрейф — Канон стоит на 0.9.0, а не на 0.8.0: минор 0.9.0 залендён 31.08 паком платформы P12 (D39.180), и ОБА названных в этой же строке носителя показывают 0. - `N027` major · `docs/architecture/10-prompt-architecture.md:51` · C-исполненное-как-открытое — Вопрос закрыт и ПОСТРОЕН: WS2 пака-11 отрендерил редакторский констрейнт-блок именно как src→dst-мэппинг, и D39.13 ратифицировал это дословно как «зак - `N028` major · `docs/architecture/10-prompt-architecture.md:52` · C-исполненное-как-открытое — Q4a ИЗМЕРЕН 18.07 и ратифицирован D39.9 («верность НЕ покупается на translate-стадии»), а топологию ролей решил эксп-21 (D39.117: full-regen, починка - `N092` minor · `docs/architecture/03-implementation-notes.md:212` · B-мёртвый-указатель — Ни `dc6ea8e`, ни `a32ec2e` в репозитории не существуют — `git cat-file -t` отвечает «Not a valid object name» на оба, при том что тот же вызов на реал - `N093` minor · `docs/architecture/03-implementation-notes.md:267` · C-исполненное-как-открытое — Запрошенный «структурный запрет» построен и ратифицирован дважды: (1) на загрузке — `config/pipeline.go:731` отказывает конфигу, где модель провайдера - `N095` minor · `docs/architecture/09-target-architecture.md:12` · A-дрейф — Механизмов, которых таблица не знает, уже не два: 31.08 (после последней правки дока) залендён пак D39.181/182 «закон раскрытия», добавивший в шов ДВА - `N096` minor · `docs/architecture/09-target-architecture.md:178` · B-мёртвый-указатель — Токен `H14-inversion-guard` в ледджере, на который §3 явно ссылается заголовком раздела, не встречается ни разу: реальный идентификатор — `H14-D38.4-t - `N097` minor · `docs/architecture/10-prompt-architecture.md:8` · B-мёртвый-указатель — `08-sync-audit-ledger.md` вынесен в `docs/archive/architecture/` 25.07 как отработанный (санкция владельца, `docs/archive/README.md:5`), и рядом с `09 - `N098` minor · `docs/architecture/10-prompt-architecture.md:17` · A-дрейф — Механизм, названный здесь как построенный, СНЯТ паком-15: пар-ключевая карта `prompts:` в конфиге сегодня не просто не используется — она отвергается - `N099` minor · `docs/architecture/10-prompt-architecture.md:18` · B-мёртвый-указатель — Строка 366 живого D-лога сегодня пустая и лежит внутри эры D39.135 (приёмка фронта S4, 15.08) — то есть на 250 строк мимо цели и в чужой эре. Цитируем - `N100` minor · `docs/architecture/10-prompt-architecture.md:33` · A-дрейф — Инвентарь пар-специфики в телах промтов неполон с 24.07: паком-13 в ОБА боевых промпта вписан блок «Единицы и приёмы (общие для zh→ru)» с зашитыми кит - `N101` minor · `docs/architecture/10-prompt-architecture.md:41` · C-исполненное-как-открытое — exp15 как гейт ПАЛ: эксперимент исполнен и залендён 25.07 в редакции REV.2 (D39.7), потрачено $12.79. §4 п.2 того же дока это уже фиксирует («exp15 ЗА - `N102` minor · `docs/architecture/12-go-style-notes.md:8` · C-исполненное-как-открытое — Норма как норма жива, но её единственный пример — мёртвый указатель, и он указывает ровно в обратную сторону. `backend/internal/pipeline/checkers_zh_r - `N103` minor · `docs/architecture/12-go-style-notes.md:16` · B-мёртвый-указатель — Идентификатора `glossaryBlockHeader` в дереве нет: константа с русским заголовком жила в `internal/pipeline/memory.go:504` и удалена тем же паком-14 ( - `N104` minor · `docs/architecture/12-go-style-notes.md:17` · A-дрейф — Фактический хвост нормы («в код … не возвращаются») сегодня ложен: в НЕтестовом Go живут 8 упоминаний, все в комментариях — `cmd/tmctl/main.go:313`, ` **Б8 — Корневые и онбординг: CLAUDE.md, README, STACK, glossary, product-requirements** - `N022` major · `docs/README.md:13` · A-дрейф — Канон контракта уехал до 0.9.0 (заленджен 31.08, D39.180), а зонная копия стоит на 0.2.3 от 15.08 — 2999 строк против 1444. «Байт-зеркало» сегодня ЛОЖ - `N050` major · `docs/glossary.md:11` · C-исполненное-как-открытое — P12 принят и залёнджен 31.08 нотой D39.180 (коммит 0a680a3), обязательство D39.158 закрыто целиком, регистр: major 2 против 7. Глоссарий лежит в онбор - `N051` major · `docs/glossary.md:22` · E-второй-носитель — В START_PROMT.MD есть секция V6 от 18.08.2026 (идея переделки архитектуры пайплайна), разобранная в реестр 23.08 строками ПТ-37..ПТ-43. Парный носител - `N052` major · `docs/product-requirements.md:32` · E-второй-носитель — Число — июльские деньги ДО пере-пина цен DeepSeek 13–15.08. Два других живых носителя того же числа несут ⚠-оговорку про множитель ×4.2–4.4 (STACK.md) - `N053` major · `docs/product-requirements.md:56` · A-дрейф — P12 залёнджен 31.08 (0a680a3) вместе с минором, канон в дереве стоит на 0.9.0. Верно: канон 0.9.0 с 31.08 (D39.180), зеркало фронта отстаёт уже на СЕМ - `N054` major · `docs/product-requirements.md:63` · D-противоречие-ратифицированному — D39.147 (слово владельца 17.08) АМЕНДИРОВАЛ условие разморозки: «лендинг P7 зону БОЛЬШЕ НЕ размораживает», S5-промт не выдаётся, разморозка — отдельны - `N068` minor · `CLAUDE.md:8` · B-мёртвый-указатель — Путь написан от `docs/`, а файл — корневой: от корня репозитория `architecture/09-target-architecture.md` не существует; реальный путь — `docs/archite - `N069` minor · `CLAUDE.md:21` · B-мёртвый-указатель — Второй уцелевший docs-относительный путь, битый ДВАЖДЫ: нет префикса `docs/` И нет расширения `.md`. Реальный носитель — `docs/architecture/12-go-styl - `N070` minor · `CLAUDE.md:93` · A-дрейф — Число родилось верным и сгнило дрейфом. На 24.08 (ff03dca — коммит, вписавший фразу) голова, как её определяет титул D-лога («голова D39.124+ (подрезк - `N083` minor · `docs/README.md:20` · A-дрейф — Половина фразы верна, половина протухла. `--check` действительно гейчен составом коммита (`docs/scripts/githooks/pre-commit:74`). `--lint` НЕ гейчен н - `N084` minor · `docs/README.md:31` · A-дрейф — Правило не исполнено ровно для одного файла — и это тот файл, который холодная бэкенд-сессия увидит первым в `ls docs/`. `BACKEND_COLDRUN_V16_SESSION_ - `N085` minor · `docs/STACK.md:7` · B-мёртвый-указатель — Блок стадии draft лежит на строках 60–84 (`stages:` — 59, `- name: draft` — 60, следующая стадия `- name: edit` — 85). На заявленных 36–60 сегодня бло - `N086` minor · `docs/STACK.md:15` · B-мёртвый-указатель — Блок `escalation` лежит на строках 142–159 (`escalation:` — 142, `chains:` — 143, `default:` — 153, `adult:` — 154, `budget_usd: 0` — 159). На заявлен - `N087` minor · `docs/STACK.md:16` · B-мёртвый-указатель — Указатель РОДИЛСЯ ВЕРНЫМ 09.08 (085dbb9): строка 6 `docs/PROGRESS.md` тогда читалась «**Открыто на владельце:** прогон Sol-пакетов руками (150) · кред - `N118` minor · `docs/glossary.md:7` · B-мёртвый-указатель — В файле docs/ORCHESTRATOR_SESSION_PROMPT.md (240 строк) символа «№» нет НИ РАЗУ: его шапка намеренно номер не держит — «Счётчик ролей ОДИН, номер выда - `N119` minor · `docs/product-requirements.md:50` · B-мёртвый-указатель — Сам факт ЖИВ (проверено кодом, см. positive_control), но указатель «очередь №20» умер дважды: роль передана №20→№21 (D39.177, 31.08) и №21→№22 (D39.18 - `N120` minor · `docs/product-requirements.md:57` · B-мёртвый-указатель — Якорь РОДИЛСЯ верным 02.08 (fbefe33: тогда 89-93 были ровно комментарием «the --pairs column aligned byte-for-byte to how the edit wave concatenated t **Б9 — Ранние арх-доки 01/04/06 — баннеры или архив** - `N025` major · `docs/architecture/06-memory-risk-registry.md:81` · B-мёртвый-указатель — Колонка «Где в коде/схеме» реестра указывает шесть file:line-якорей, и пять из шести уехали: реальные адреса — MessagesWithInjection render.go:246 (а - `N088` minor · `docs/architecture/01-decisions.md:19` · A-дрейф — Каталога `pkg/` в бэкенде нет вовсе; план исполнен под `internal/`: internal/llm, internal/ledger, internal/obs, internal/store. Имена совпали, префик - `N089` minor · `docs/architecture/01-decisions.md:39` · A-дрейф — FTS5 в движке нет НИ на горячем, ни на холодном пути: во всём backend/ ноль виртуальных таблиц и единственное упоминание FTS5 — отрицание в комментари - `N090` minor · `docs/architecture/01-decisions.md:55` · B-мёртвый-указатель — Обоих коммитов в истории репозитория НЕ существует (`git cat-file -t c7f8a95` → «Not a valid object name»). Реальные коммиты того же дня и того же сод - `N091` minor · `docs/architecture/01-decisions.md:93` · A-дрейф — Отдельного файла БД под банк памяти НЕТ и не было построено: у книги ровно ОДНА база `.db` (config/book.go:189), и банк памяти живёт в ней же - `N094` minor · `docs/architecture/04-unhappy-paths.md:120` · C-исполненное-как-открытое — Паспорт качества главы ПОСТРОЕН и отдаётся `tmctl status`: тип `pipeline.ChapterPassport` (internal/pipeline/status.go:157-159, «the per-chapter quali **Б10 — ЧУЖАЯ ЗОНА (санкция владельца 01.09): бэкенд-доки** - `N007` major · `backend/README.md:11` · A-дрейф — Перечень команд читается исчерпывающим и отстал на ТРИ верба из одиннадцати: `backup`, `seed-lint`, `bank-apply`. `bank-apply` — это ратифицированная - `N008` major · `backend/README.md:24` · A-дрейф — Машинной стоп-таблицы (`.bank-stop.json`) в движке НЕТ — её снёс пак «входная дверь шва» (d1eb8a9, ратифицирован D39.158); уцелевшая `.bank-stop.txt` - `N009` major · `backend/README.md:82` · D-противоречие-ратифицированному — От `$HOME` НЕ дефолтится НИЧЕГО. `internal/standdata` резолвит корпус ТОЛЬКО от корня репозитория (`/books`), и его собственная шапка говорит пр - `N010` major · `backend/README.md:99` · C-исполненное-как-открытое — Долг ПОГАШЕН и это записано в двух носителях. Код по обоим якорям сегодня говорит обратное README: repair.go:131 — «The boundary is the TARGET's decla - `N011` major · `backend/README.md:101` · B-мёртвый-указатель — Строка 53 в едином трекере не существует: она закрыта D39.82 (носитель этого сказан в самой таблице — строка 111: «D39.82 закрыл строку 53 через `putU - `N012` major · `backend/docs/D15.2-content-addressed-resume-spec.md:529` · A-дрейф — Голова схемы сегодня v16, а не v7, и номер v8 давно занят чужой миграцией. Спека при этом ЖИВА: строка бэклога 49 («Этапы Б+В спеки D15.2») открыта, и - `N071` minor · `backend/README.md:20` · B-мёртвый-указатель — Экспортированной `chunk.Ingest` не существует — в пакете живёт неэкспортированная `ingest(p string)`, обёртка над `IngestEncoded`. Родилась ошибка в Т - `N072` minor · `backend/README.md:94` · B-мёртвый-указатель — README объявляет, что все его «строка N» разрешаются в таблицу «Бэклог», и цитирует тринадцать номеров. Семь из них в таблице отсутствуют — закрыты и - `N073` minor · `backend/docs/MONEY_HONESTY_REPORT.md:787` · C-исполненное-как-открытое — Заленджено — коммитом bb541a8 (31.08) и принято нотой D39.182. Фраза стоит в секции, которая сама называет себя «§11. Последний абзац — СОСТОЯНИЕ, не - `N074` minor · `backend/docs/SEAM_FIX3_PLAN.md:1` · F-целиком-историческое — Четыре записки-плана паков шва — чистые списки намерений отработавших сессий. Паки приняты и заленджены (D39.158: «Четыре пака зоны бэкенда приняты и **Б11 — ЧУЖАЯ ЗОНА (санкция владельца 01.09): фронт-доки** - `N055` major · `frontend/README.md:7` · A-дрейф — S4 исполнен 14.08 и ПРИНЯТ 15.08 (D39.135, `267aa35`): библиотека, интейк, форма запуска прогона, настройки, читалка — построенные экраны. Перечислени - `N056` major · `frontend/README.md:66` · D-противоречие-ратифицированному — Зеркало НЕ байт-равно: 0.2.3/16 операций против канона 0.9.0/20 операций, разные md5. И правило «зеркало = байт-копия» ратифицированно ПРИОСТАНОВЛЕНО - `N057` major · `frontend/docs/BACKLOG.md:50` · D-противоречие-ратифицированному — D39.144 (16.08) снял гейт полноты. Канон: `awaiting_bank` с ЛЮБЫМ состоянием решений → 202. Якорь `mining.go:201` тоже уехал: там сегодня стоит прямая - `N058` major · `frontend/docs/BACKLOG.md:51` · B-мёртвый-указатель — В каноне 0.9.0 нет ни схемы `BankDecision`, ни значения `promote`, ни пути `POST …/bank/decisions`, ни «частичного накопления»: канон 0.5.0 снёс их и - `N059` major · `frontend/docs/BACKLOG.md:62` · C-исполненное-как-открытое — Канон 0.9.0 перевесил поток на КНИГУ: `GET /books/{bookId}/events`, и его описание прямо называет причину — «a book is received and cut into chapters - `N060` major · `frontend/docs/BACKLOG.md:63` · C-исполненное-как-открытое — Ручка построена: канон 0.9.0 даёт `GET /capabilities` с обязательным `language_pairs` («Every pair the deployment knows about, unavailable ones includ - `N061` major · `frontend/docs/BACKLOG.md:68` · C-исполненное-как-открытое — Канон 0.9.0 несёт и `PATCH /books/{bookId}` (merge patch, только `title`, 409 при живом прогоне), и `DELETE /books/{bookId}` (204, 409 при живом прого - `N062` major · `frontend/docs/FRONTEND_PLAN.md:692` · D-противоречие-ратифицированному — Ратифицированный канон 0.9.0 кладёт на провод ОДНУ пару {done,total}, считаемую в ГЛАВАХ по всем проходам, плюс открытую строку `stage`. Клиент, напис - `N063` major · `frontend/docs/STACK_DECISIONS.md:245` · C-исполненное-как-открытое — Все ЧЕТЫРЕ пункта («пофазный прогресс», «персист манифеста глав и чанков», «JSON-выход таблицы подписи банка», «приём внешнего TRACEPARENT в cmd/tmctl - `N121` minor · `frontend/README.md:21` · A-дрейф — Маршрутов ВОСЕМЬ: S4 завела `/intake`, и он есть в обоих замкнутых тестом списках. Приёмка S4 в том же дереве печатает «8 маршрутов, 11 сценариев». - `N122` minor · `frontend/docs/BACKLOG.md:3` · B-мёртвый-указатель — Строк 99–102 в живом `docs/PROGRESS.md` больше нет — все четыре закрыты и по норме журнала («закрытые строки здесь НЕ хранятся») ушли в D-лог. Шапка у - `N123` minor · `frontend/docs/BACKLOG.md:23` · B-мёртвый-указатель — Токена `--color-hint` в зоне больше нет вовсе — ни в `tokens.css`, ни в тестах, ни в коде; строка держит хвост на несуществующем токене. Вторая полови - `N124` minor · `frontend/docs/FRONTEND_SESSION_PROMPT.md:2` · B-мёртвый-указатель — `S3_SESSION_PROMPT.md` в зоне не существует: промты S3/S3.5/S3.7 архивированы 14.08 в `docs/archive/prompts/FRONTEND_S3*`, зонные копии сняты. Довод б - `N125` minor · `frontend/docs/STACK_DECISIONS.md:111` · B-мёртвый-указатель — Зона зависит от пакета `playwright` 1.62.1, а не от `@playwright/test`: последнего нет ни в `package.json`, ни в дереве `node_modules`. Сессия, постав - `N126` minor · `frontend/docs/STACK_DECISIONS.md:116` · E-второй-носитель — Шагов у `check` шесть, и spectral — ЧЕТВЁРТЫЙ. Тот же файл на строке 148 уже утверждает «шесть шагов», то есть носитель противоречит сам себе; вторая - `N127` minor · `frontend/docs/frontend-PROGRESS.md:221` · C-исполненное-как-открытое — Приёмка S4 состоялась 15.08 и записана В ЭТОМ ЖЕ ФАЙЛЕ строкой 465 («ПРИНЯТО и залендено `267aa35`, D39.135»). Два места одного файла говорят разное. **Б12 — ЧУЖАЯ ЗОНА (санкция владельца 01.09): платформенные доки** - `N006` блокер · `platform/docs/STACK_DECISIONS.md:414` · D-противоречие-ратифицированному — Строка (и парная ей 415 про `mined_rejects`) неверна в четырёх местах сразу. (1) `mined_delta` БОЛЬШЕ НЕ «путь из book.yaml»: ключ РЕТИРОВАН — `Retire - `N064` major · `platform/README.md:10` · A-дрейф — Перечень устарел с лендингом пака sqlc 29.08: `check: build vet fmt lint sqlc-check` — пятый шаг `sqlc-check` в списке отсутствует. Хуже перечня — умо - `N065` major · `platform/deploy/README.md:252` · C-исполненное-как-открытое — Глагол `tmctl migrate` существует и заленджен (`backend/cmd/tmctl/migrate.go`, в диспетчере `main.go:184/:245`, свой код выхода `exitSchemaMismatch = - `N066` major · `platform/docs/PLATFORM_DIRECTION.md:159` · C-исполненное-как-открытое — sqlc ВЗЯТ и заленджен 29.08 (`D39.172`: «Пак `sqlc` принят и заленджен: 40 запросов пяти файлов `pgstore` на типизированный слой, пин 1.31.1, `sqlc di - `N067` major · `platform/docs/STACK_DECISIONS.md:621` · B-мёртвый-указатель — Лечебная команда «самой частой грабли стенда» указывает на путь, которого не существует: `tm-runs.slice` по конвенции имён systemd вложен в `tm.slice` - `N128` minor · `platform/deploy/README.md:428` · C-исполненное-как-открытое — Воркер существует с пака P4: прогон спавнится в `internal/runs/spawn.go`, который задаёт `Workdir: l.Workdir` транзиентному юниту, а корень УЖЕ настро - `N129` minor · `platform/docs/PLATFORM_DIRECTION.md:101` · B-мёртвый-указатель — Указатели на строки единого бэклога, розданные по всему срезу, в шести случаях целят в строки, которых в живой таблице БОЛЬШЕ НЕТ: правило бэклога — « - `N130` minor · `platform/docs/STACK_DECISIONS.md:566` · E-второй-носитель — Перечень админ-команд отстал от CLI на семь глаголов. В диспетчере `cmd/tmplatformctl/main.go` сегодня: grant · adjust · balance · logins · revoke · b ## Сверх находок — работы заказа, которых в реестре нет Реестр отвечает на «что протухло». Заказ владельца шире, и эти пункты в него не попали: - **Б13. Архивация отработавшего (0в).** Промт `BACKEND_COLDRUN_V16_SESSION_PROMPT.md` лежит в живом `docs/`, при этом ДВА носителя (таблица `README.md` и CURRENT-STATE) уже утверждают, что он в `archive/prompts/`. Плюс исполненные план-доки зон: `backend/docs/SEAM_*`, `MONEY_HONESTY_*`, `platform/docs/p8-review/`, `platform/docs/p9/`. - **Б14. Планы доработок в бэкенд и платформу (0б).** По остатку единого бэклога (189 строк, 59 «скоро») и регистра платформы (435 строк, 97 открытых, major 2). - **Б15. Хвост лендинга ресёрча.** Очередь п.5 велит новой смене лендить файл, лендинг которого владелец 01.09 откатил (`162ab9b`). Пока формулировка стоит, следующая смена повторит откат. **Формулировку задаёт владелец — сам не переписываю.**