textmachine/docs/DOC_CLEANUP_PLAN.md

52 KiB
Raw Blame History

ПЛАН РАЗБОРА ТЕХДОЛГА ДОКУМЕНТАЦИИ — заказ владельца 01.09.2026

⚠ ВРЕМЕННЫЙ РАБОЧИЙ ДОКУМЕНТ. Живёт, пока идёт разбор; по закрытию последнего батча уезжает в archive/ вместе с реестром находок. Держать его в живых доках после закрытия — значит сделать ровно то, против чего заказан сам разбор.

Заказ владельца дословно: свести находки в план и идти по нему · привести документацию в хороший порядок · с бэклогом ПООСТОРОЖНЕЕ · спилить лишнее, актуализировать · старое и откровенно лишнее выкинуть, актуальное оставить и НЕ ПОТЕРЯТЬ · старые решения и мусор спиливать, чтобы не забивать контекст сессиям · касается и фронтовой, и платформенной, и бэкенд-документации (прямая санкция на чужие зоны, выданная 01.09).

Контроль исполнения — отдельный агент модели Fable 5 (решение владельца 01.09): после КАЖДОГО коммита я предъявляю ему коммит, он сверяется с реестром находок и выносит, верно ли закрыто. Пинг-понг идёт, пока обе стороны не скажут «техдолг закрыт». Мой самоотчёт закрытием НЕ считается.

Источники

  • Реестр находокDOC_REVISION_FINDINGS.md: 130 живых находок с уликами (команда + вывод), по одной секции N001N130.
  • Снятые опровергателем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 съехала: реальные производители лежат на 240270 строк ниже названных, а на названных номерах сто

  • 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 1315.08. Два других живых носителя того же числа несут ⚠-оговорку про множитель ×4.24.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 лежит на строках 6084 (stages: — 59, - name: draft — 60, следующая стадия - name: edit — 85). На заявленных 3660 сегодня бло

  • N086 minor · docs/STACK.md:15 · B-мёртвый-указатель — Блок escalation лежит на строках 142159 (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-дрейф — Отдельного файла БД под банк памяти НЕТ и не было построено: у книги ровно ОДНА база <book_id>.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 резолвит корпус ТОЛЬКО от корня репозитория (<repo>/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-мёртвый-указатель — Строк 99102 в живом 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). Пока формулировка стоит, следующая смена повторит откат. Формулировку задаёт владелец — сам не переписываю.