52 KiB
ПЛАН РАЗБОРА ТЕХДОЛГА ДОКУМЕНТАЦИИ — заказ владельца 01.09.2026
⚠ ВРЕМЕННЫЙ РАБОЧИЙ ДОКУМЕНТ. Живёт, пока идёт разбор; по закрытию последнего батча уезжает в
archive/вместе с реестром находок. Держать его в живых доках после закрытия — значит сделать ровно то, против чего заказан сам разбор.Заказ владельца дословно: свести находки в план и идти по нему · привести документацию в хороший порядок · с бэклогом ПООСТОРОЖНЕЕ · спилить лишнее, актуализировать · старое и откровенно лишнее выкинуть, актуальное оставить и НЕ ПОТЕРЯТЬ · старые решения и мусор спиливать, чтобы не забивать контекст сессиям · касается и фронтовой, и платформенной, и бэкенд-документации (прямая санкция на чужие зоны, выданная 01.09).
Контроль исполнения — отдельный агент модели Fable 5 (решение владельца 01.09): после КАЖДОГО коммита я предъявляю ему коммит, он сверяется с реестром находок и выносит, верно ли закрыто. Пинг-понг идёт, пока обе стороны не скажут «техдолг закрыт». Мой самоотчёт закрытием НЕ считается.
Источники
- Реестр находок —
DOC_REVISION_FINDINGS.md: 130 живых находок с уликами (команда + вывод), по одной секцииN001…N130. - Снятые опровергателем —
DOC_REVISION_REFUTED.md: 7 находок, которые адверсариальный проход ОПРОВЕРГ. ⚠ Их чинить НЕЛЬЗЯ: «починка» вернёт дефект.
Как добыты находки (чтобы вес был понятен)
Воркфлоу docs-staleness-revision-A, 15 срезов × (ревизор + опровергатель), 30 агентов, 0 отказов,
1689 вызовов инструментов. 1432 утверждения проверены ИСПОЛНЕНИЕМ, 115 положительных контролей
(норма: отрицательный результат предъявляется вместе с доказательством, что инструмент в этой
области способен хоть что-то найти). Найдено 137 → адверсариальный пере-суд снял 7 → осталось 130.
⚠ Вес находки не одинаков. 82 разрушающие и блокерные прошли пере-суд (75 ПОДТВЕРЖДЕНО). Остальные проверены ОДНИМ агентом — они наряд на перепроверку, а не истина: исполнять их на доверии запрещено, каждую верифицирую своей командой перед правкой.
Дисциплина разбора (жёсткая, из заказа владельца)
- Не потерять. Прежде чем удалить абзац/строку/док — грепнуть его отличительный токен по всему дереву и назвать, куда уехало содержимое. Удаление без адреса = потеря.
- Бэклог — осторожно. Строку закрываем ТОЛЬКО когда лекарство предъявлено в коде своей командой. ID строк стабильны навсегда и на них ссылаются доки — закрытая строка уезжает в D-ноту с номером решения, а не стирается молча.
- Чужие зоны. Санкция владельца выдана на ДОКУМЕНТАЦИЮ. Код чужих зон не трогаю. Каждая правка чужого дока объявляется в зонном журнале, чтобы зона увидела.
- Гейты перед каждым коммитом:
counts.py --checkи--lint,git statusна чужое, коммит только явным списком путей. - Соседний 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: к ней отказ «юнит/б -
N039major ·docs/architecture/15-money-path.md:6· B-мёртвый-указатель — Норму «чистый ФАЙЛ» ратифицировал D39.179 п.4, который сам говорит: «уточняет D39.177 §2в … Ось «зона» была НЕВЕРНА … Носитель нормы — шапка 15-money- -
N040major ·docs/architecture/15-money-path.md:19· A-дрейф — Перечень движковых суб-бюджетов читается как исчерпывающий (репэйр + эскалация) и не знает третьего семейства — книго-широких бюджетов банк-ролей `gat -
N041major ·docs/architecture/15-money-path.md:21· D-противоречие-ратифицированному — «Различение живёт в отчёте прогона и в логе» перестало быть верным 31.08. D39.181 п.2 ратифицировал закон раскрытия: «признак остановки по объёму обяз -
N113minor ·docs/architecture/15-money-path.md:6· C-исполненное-как-открытое — Пак контракта 0.9.0 ЗАЛЕНДЖЕН 31.08 коммитом0a680a3(D39.180), файл в дереве чист, версия в нём — 0.9.0. Настоящее время «двигается прямо сейчас» лож -
N114minor ·docs/architecture/15-money-path.md:14· A-дрейф — Из трёх опор канона, названных здесь, у двух в доке есть носители (телеметрия — леджер/status в §2, потолки — §2/§3), а у третьей — «явное согласие на
Б3 — Шапка журнала и остальной PROGRESS
-
N013major ·docs/PROGRESS.md:3· A-дрейф — Канон уже НЕ 0.8.0: вdocs/architecture/14-api-contract/openapi.yamlстоит 0.9.0 — минор уехал с лендингом P12 31.08, о котором сообщает ЭТА ЖЕ стро -
N014major ·docs/PROGRESS.md:3· A-дрейф — Числа «73%» в цитируемом отчёте холодного прогона НЕТ вовсе. Отчёт даёт долю редактора с ДВУМЯ знаменателями: 49.3% от всего прогона ($0.214865 из $0. -
N015major ·docs/PROGRESS.md:3· E-второй-носитель — Шапка объявляет себя ЕДИНСТВЕННЫМ носителем состояния очереди, но не несёт двух лендингов 31.08, которые несётdocs/README.md: бэкенд-пак «ДЕНЬГИ И -
N016major ·docs/PROGRESS.md:80· C-исполненное-как-открытое — Довод «⇒ строка жива» опирается на прогоны coldrun-a/b, но 31.08 отработал НОВЫЙ холодный прогон (coldrun-v16), в котором редакторская волна гонялась -
N017major ·docs/PROGRESS.md:143· A-дрейф — Гейт назначен на событие, которое УЖЕ произошло (первый холодный прогон, 31.08), и прогон показал, что назначенный замер этим путём недостижим: манифе -
N018major ·docs/PROGRESS.md:157· A-дрейф — Файла.bank-stop.jsonбольше НЕ существует: он снесён вместе с писателем и четырьмя тестами при постройке входной двери шва (D39.158) — в Go-коде дв -
N019major ·docs/PROGRESS.md:182· D-противоречие-ратифицированному — Дважды протухла. (1) Цифра «≈$0.05» СНЯТА ратифицированной нотой D39.179 п.1 как протухшая: пере-пин DeepSeek 15.08 даёт множитель 4.47, а замер 31.08 -
N020major ·docs/PROGRESS.md:196· C-исполненное-как-открытое — Строка 232 ЗАКРЫТА лендингом 31.08 (bb541a8, экземпляр A11). Читающий методstore.AnnouncedOnceKeys()построен, его докстринг называет строку 232 -
N021major ·docs/PROGRESS.md:202· C-исполненное-как-открытое — Строка 240 исполнена лендингом P12 31.08 (0a680a3, D39.180) — обеими ветвями своей же диспозиции. ГардLiftBankStopСНЯТ (вplatform/осталось д -
N075minor ·docs/PROGRESS.md:3· B-мёртвый-указатель — Промт НЕ вdocs/archive/prompts/— он до сих пор лежит в корнеdocs/. В архиве промтов лежат два ДРУГИХ холодно-прогонных промта (`BACKEND_COLDRUN -
N076minor ·docs/PROGRESS.md:3· A-дрейф — Сегодняmainопережаетorigin/mainна 48 коммитов. Несущий вывод («развязки нет») выжил —origin/mainостаётся ПРЕДКОМmain, расхождения по-пр -
N077minor ·docs/PROGRESS.md:3· A-дрейф — «Пять» было верно до 31.08 (P8-FIX · P8-REVIEW · P9 · P10 · P11). После P7, где долг выдачи был отложен в P8, по реестру нот легло ШЕСТЬ P-нумерованны -
N078minor ·docs/PROGRESS.md:15· C-исполненное-как-открытое — Условие, по которому число обещано пере-калибровать, ИСПОЛНИЛОСЬ: платный прогон отработал 31.08 и дал собственную оценку движка $1.1377277707 на деся -
N079minor ·docs/PROGRESS.md:146· C-исполненное-как-открытое — Гейт пал: первый холодный прогон отработал 31.08 и выдал ровно то число, на котором строка условила решение —families_held=0(строка требует ослабл -
N080minor ·docs/PROGRESS.md:183· B-мёртвый-указатель — Оба line-якоря строки 203 уехали после контрактного минора 0.9.0 (P12,0a680a3, 31.08).openapi.yaml:1784-1787сегодня показывает поляid/`units -
N081minor ·docs/PROGRESS.md:193· B-мёртвый-указатель — Якорь уехал на 28 строк после контрактного минора 0.9.0 (P12, 31.08): цитируемая фраза стоит на:2079, а:2051показывает заголовок совсем другой -
N082minor ·docs/PROGRESS.md:207· C-исполненное-как-открытое — Строка исполнена НАПОЛОВИНУ, и строка об этом не знает: 31.08 коммитом94381bbвdocs/scripts/githooks/pre-commitдобавлен warn-блок, который пере
Б4 — Контракт API 14 (README + openapi)
-
N034major ·docs/architecture/14-api-contract/README.md:8· A-дрейф — Канон стоит на 0.9.0 с 31.08 (минор заленджен D39.180 вместе с паком P12), а ревью-шапка всё ещё называет базой 0.8.0. Верно: зеркало 0.2.3 против кан -
N035major ·docs/architecture/14-api-contract/README.md:981· C-исполненное-как-открытое — Расхождение ЗАКРЫТО:Resumeбольше не отвечает 202 на исчерпанный прогон — вердиктceilingSpentвозвращаетErrCeilingReached, и `httpapi/v0.go:8 -
N036major ·docs/architecture/14-api-contract/README.md:1637· A-дрейф — Собственная команда дока, исполненная сегодня, даёт 26 хитов, а не ноль: платформа сжимает САМА, в Go, вplatform/internal/httpapi/conditional.go(` -
N037major ·docs/architecture/14-api-contract/README.md:1718· B-мёртвый-указатель — Вся колонка «Откуда взят (платформа)» Приложения А-2 съехала: реальные производители лежат на 240–270 строк ниже названных, а на названных номерах сто -
N038major ·docs/architecture/14-api-contract/openapi.yaml:1414· E-второй-носитель — Деплой отвечает ТРЕМЯ значениями:runStage(platform/internal/pgstore/readmodel.go:576) выдаётre_passдля всего пере-прохода, помимоdrafting/` -
N108minor ·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 вовсе БЕ -
N109minor ·docs/architecture/14-api-contract/README.md:60· B-мёртвый-указатель — Файла по этому пути нет: отчёт вынесен в архив коммитом31b96d1(27.08) и лежит какdocs/archive/reports/CONTRACT_MINOR_REPORT_2026-08-27.md. Ссылка -
N110minor ·docs/architecture/14-api-contract/README.md:990· C-исполненное-как-открытое — Носитель «вход P7» израсходован — пак P7 принят D39.153, и ⚠-абзац НАД самой таблицей это уже пишет («Носитель израсходован: пак P7 принят D39.153»). -
N111minor ·docs/architecture/14-api-contract/README.md:998· B-мёртвый-указатель — Строки 148 в едином бэклоге НЕТ — её удалилa023e39решением владельца 21.08. Хуже: ТОТ ЖЕ документ на строке 1670 уже это знает и пишет «⚠ Прежний -
N112minor ·docs/architecture/14-api-contract/README.md:1002· B-мёртвый-указатель — Промт вынесен в архив: живой путь —docs/archive/prompts/BACKEND_SILENT_HARM_SESSION_PROMPT_2026-08-28.md. Дополнительно: половина того, на что ссыл
Б5 — Реестр загейченных триггеров 13
-
N029major ·docs/architecture/13-tech-debt-anchors.md:52· E-второй-носитель — Это ВТОРОЙ (и единственный не-баннированный) носитель статуса строки F4 реестра памяти, и он разошёлся с кодом:tmctl backupсуществует (cmd/tmctl/m -
N030major ·docs/architecture/13-tech-debt-anchors.md:72· D-противоречие-ратифицированному — Обе половины ложны и противоречат ратифицированной D39.69 §3 («строки 27/84 ЗАКРЫТЫ … neuter end-to-end (enum · gender_neuter в injection-данных · See -
N031major ·docs/architecture/13-tech-debt-anchors.md:100· C-исполненное-как-открытое — feed_cap ЗАКРЫТ ратифицированной нотой D39.69 §1 («value-порядок отреза бюджета (частота-desc — feed_cap ЗАКРЫТ этим, из строки 86 изъят)»), и код это -
N032major ·docs/architecture/13-tech-debt-anchors.md:134· B-мёртвый-указатель — Единственная объявленная функция файла — быть справочником file:line-якорей («Этот файл — справочные file:line-якоря … Актуализируется лендингами пако -
N033major ·docs/architecture/13-tech-debt-anchors.md:180· C-исполненное-как-открытое — Гейт по письму источника ПОСТРОЕН и стоит внутри самой lintNumberMagnitude; код называет заказ по имени в комментарии — «SOURCE-script gate (строка 79 -
N105minor ·docs/architecture/13-tech-debt-anchors.md:12· E-второй-носитель — Один и тот же якорь ja-препа живёт в двух живых носителях, и копии разошлись: строка 81 бэклога уже исправлена на «migrate.go:187/194», а справочник — -
N106minor ·docs/architecture/13-tech-debt-anchors.md:24· B-мёртвый-указатель — Якоря реестра техдолга в ДВА дока моего среза сдвинулись ровно на +6 строк и не были актуализированы: коммитd2cd30c(22.08) дописал ⚠-поправки в 02-m -
N107minor ·docs/architecture/13-tech-debt-anchors.md:104· E-второй-носитель — Факт про neuter лежит в этом файле ДВАЖДЫ, и копии разошлись ВНУТРИ одного документа: тело пункта (строки 70-72) несёт пере-сверку 23.08 «ЧЕТЫРЕ пункт
Б6 — Шов и эмиттер: 16, 17
-
N042major ·docs/architecture/16-events-emitter.md:11· B-мёртвый-указатель — Якорь ведёт не туда И цель больше не существует:docs/PROGRESS.md:149— это строка бэклога 42, а строк 103 и 165 в таблице нет вовсе (закрыты D39.13 -
N043major ·docs/architecture/16-events-emitter.md:17· B-мёртвый-указатель — Три якоря §1 («что уже есть со стороны движка», раздел БЕЗ ⚠-баннера) уехали:cmd/tmctl/main.go:67-70— это константы полосы отказов (`refusalLast = -
N044major ·docs/architecture/16-events-emitter.md:38· A-дрейф — Дословная цитата, которую док обещает в шапке («дословные цитаты — в кавычках-ёлочках»), в дереве больше не существует:events.go:5-6теперь читаетс -
N045major ·docs/architecture/16-events-emitter.md:66· B-мёртвый-указатель — ВСЕ двенадцать якорей вplatform/docs/DEFECT_REGISTER.mdмертвы — ни один не попадает в свою строку. Фактические номера: PD-60→343, PD-61→344, PD-79 -
N046major ·docs/architecture/17-seam-inbound-law.md:56· B-мёртвый-указатель — Якорь родился верным и сгнил дрейфом — и уехал на строку, ВЫГЛЯДЯЩУЮ так же. На 23.08 (коммит4f56160, тот же, что написал якорь)mining.go:221бы -
N047major ·docs/architecture/17-seam-inbound-law.md:71· C-исполненное-как-открытое — Загрузчик сида СТРОГИЙ с пака входной двери:backend/internal/seed/decode.goназывает строку 212 своим именем и ставитdec.KnownFields(true)— неи -
N048major ·docs/architecture/17-seam-inbound-law.md:97· C-исполненное-как-открытое — Первая строка таблицы «Двери, УЖЕ подразумеваемые живыми строками» описывает как ПРЕДСТОЯЩУЮ ту самую дверь, которую собственная шапка дока объявляет -
N049major ·docs/architecture/17-seam-inbound-law.md:100· C-исполненное-как-открытое — Строка 231 закрыта паком «деньги» (D39.170, 29.08) и снята с бэклога — сам PROGRESS.md говорит это в лоб. Док цитирует её ДВАЖДЫ как живую: на строке -
N115minor ·docs/architecture/16-events-emitter.md:3· E-второй-носитель — Движок с 31.08 (bb541a8) пишетStreamVersion = "1.2"— минор поднят подFinished.Volume(D39.181 п.2). 1.1 сегодня — это версия ЧИТАТЕЛЯ платфор -
N116minor ·docs/architecture/16-events-emitter.md:90· C-исполненное-как-открытое — PD-60 (строка 88, «открыт») и PD-61 (строка 90, «открыт») оба стоят в регистре какfixed(P6, дерево сессии). Шапка дока баннирует только «PD-113 отк -
N117minor ·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
-
N023major ·docs/architecture/03-implementation-notes.md:64· A-дрейф — Шапка строки 3 объявляет §3-контракты «живым референсом бэкенда», а формула §3.1 не совпадает с кодом ни одним полем-разделителем: реальный RequestHas -
N024major ·docs/architecture/03-implementation-notes.md:262· D-противоречие-ратифицированному — D30 п.1 ратифицировал ПРЯМО ОБРАТНОЕ и с явным supersede: «Флип D1: редактор — БИЛИНГВАЛЬНЫЙ (черновик + исходник), новый дефолт». Реестр решений поме -
N026major ·docs/architecture/09-target-architecture.md:12· A-дрейф — Канон стоит на 0.9.0, а не на 0.8.0: минор 0.9.0 залендён 31.08 паком платформы P12 (D39.180), и ОБА названных в этой же строке носителя показывают 0. -
N027major ·docs/architecture/10-prompt-architecture.md:51· C-исполненное-как-открытое — Вопрос закрыт и ПОСТРОЕН: WS2 пака-11 отрендерил редакторский констрейнт-блок именно как src→dst-мэппинг, и D39.13 ратифицировал это дословно как «зак -
N028major ·docs/architecture/10-prompt-architecture.md:52· C-исполненное-как-открытое — Q4a ИЗМЕРЕН 18.07 и ратифицирован D39.9 («верность НЕ покупается на translate-стадии»), а топологию ролей решил эксп-21 (D39.117: full-regen, починка -
N092minor ·docs/architecture/03-implementation-notes.md:212· B-мёртвый-указатель — Ниdc6ea8e, ниa32ec2eв репозитории не существуют —git cat-file -tотвечает «Not a valid object name» на оба, при том что тот же вызов на реал -
N093minor ·docs/architecture/03-implementation-notes.md:267· C-исполненное-как-открытое — Запрошенный «структурный запрет» построен и ратифицирован дважды: (1) на загрузке —config/pipeline.go:731отказывает конфигу, где модель провайдера -
N095minor ·docs/architecture/09-target-architecture.md:12· A-дрейф — Механизмов, которых таблица не знает, уже не два: 31.08 (после последней правки дока) залендён пак D39.181/182 «закон раскрытия», добавивший в шов ДВА -
N096minor ·docs/architecture/09-target-architecture.md:178· B-мёртвый-указатель — ТокенH14-inversion-guardв ледджере, на который §3 явно ссылается заголовком раздела, не встречается ни разу: реальный идентификатор — `H14-D38.4-t -
N097minor ·docs/architecture/10-prompt-architecture.md:8· B-мёртвый-указатель —08-sync-audit-ledger.mdвынесен вdocs/archive/architecture/25.07 как отработанный (санкция владельца,docs/archive/README.md:5), и рядом с `09 -
N098minor ·docs/architecture/10-prompt-architecture.md:17· A-дрейф — Механизм, названный здесь как построенный, СНЯТ паком-15: пар-ключевая картаprompts:в конфиге сегодня не просто не используется — она отвергается -
N099minor ·docs/architecture/10-prompt-architecture.md:18· B-мёртвый-указатель — Строка 366 живого D-лога сегодня пустая и лежит внутри эры D39.135 (приёмка фронта S4, 15.08) — то есть на 250 строк мимо цели и в чужой эре. Цитируем -
N100minor ·docs/architecture/10-prompt-architecture.md:33· A-дрейф — Инвентарь пар-специфики в телах промтов неполон с 24.07: паком-13 в ОБА боевых промпта вписан блок «Единицы и приёмы (общие для zh→ru)» с зашитыми кит -
N101minor ·docs/architecture/10-prompt-architecture.md:41· C-исполненное-как-открытое — exp15 как гейт ПАЛ: эксперимент исполнен и залендён 25.07 в редакции REV.2 (D39.7), потрачено $12.79. §4 п.2 того же дока это уже фиксирует («exp15 ЗА -
N102minor ·docs/architecture/12-go-style-notes.md:8· C-исполненное-как-открытое — Норма как норма жива, но её единственный пример — мёртвый указатель, и он указывает ровно в обратную сторону. `backend/internal/pipeline/checkers_zh_r -
N103minor ·docs/architecture/12-go-style-notes.md:16· B-мёртвый-указатель — ИдентификатораglossaryBlockHeaderв дереве нет: константа с русским заголовком жила вinternal/pipeline/memory.go:504и удалена тем же паком-14 ( -
N104minor ·docs/architecture/12-go-style-notes.md:17· A-дрейф — Фактический хвост нормы («в код … не возвращаются») сегодня ложен: в НЕтестовом Go живут 8 упоминаний, все в комментариях —cmd/tmctl/main.go:313, `
Б8 — Корневые и онбординг: CLAUDE.md, README, STACK, glossary, product-requirements
-
N022major ·docs/README.md:13· A-дрейф — Канон контракта уехал до 0.9.0 (заленджен 31.08, D39.180), а зонная копия стоит на 0.2.3 от 15.08 — 2999 строк против 1444. «Байт-зеркало» сегодня ЛОЖ -
N050major ·docs/glossary.md:11· C-исполненное-как-открытое — P12 принят и залёнджен 31.08 нотой D39.180 (коммит0a680a3), обязательство D39.158 закрыто целиком, регистр: major 2 против 7. Глоссарий лежит в онбор -
N051major ·docs/glossary.md:22· E-второй-носитель — В START_PROMT.MD есть секция V6 от 18.08.2026 (идея переделки архитектуры пайплайна), разобранная в реестр 23.08 строками ПТ-37..ПТ-43. Парный носител -
N052major ·docs/product-requirements.md:32· E-второй-носитель — Число — июльские деньги ДО пере-пина цен DeepSeek 13–15.08. Два других живых носителя того же числа несут ⚠-оговорку про множитель ×4.2–4.4 (STACK.md) -
N053major ·docs/product-requirements.md:56· A-дрейф — P12 залёнджен 31.08 (0a680a3) вместе с минором, канон в дереве стоит на 0.9.0. Верно: канон 0.9.0 с 31.08 (D39.180), зеркало фронта отстаёт уже на СЕМ -
N054major ·docs/product-requirements.md:63· D-противоречие-ратифицированному — D39.147 (слово владельца 17.08) АМЕНДИРОВАЛ условие разморозки: «лендинг P7 зону БОЛЬШЕ НЕ размораживает», S5-промт не выдаётся, разморозка — отдельны -
N068minor ·CLAUDE.md:8· B-мёртвый-указатель — Путь написан отdocs/, а файл — корневой: от корня репозиторияarchitecture/09-target-architecture.mdне существует; реальный путь — `docs/archite -
N069minor ·CLAUDE.md:21· B-мёртвый-указатель — Второй уцелевший docs-относительный путь, битый ДВАЖДЫ: нет префиксаdocs/И нет расширения.md. Реальный носитель — `docs/architecture/12-go-styl -
N070minor ·CLAUDE.md:93· A-дрейф — Число родилось верным и сгнило дрейфом. На 24.08 (ff03dca— коммит, вписавший фразу) голова, как её определяет титул D-лога («голова D39.124+ (подрезк -
N083minor ·docs/README.md:20· A-дрейф — Половина фразы верна, половина протухла.--checkдействительно гейчен составом коммита (docs/scripts/githooks/pre-commit:74).--lintНЕ гейчен н -
N084minor ·docs/README.md:31· A-дрейф — Правило не исполнено ровно для одного файла — и это тот файл, который холодная бэкенд-сессия увидит первым вls docs/. `BACKEND_COLDRUN_V16_SESSION_ -
N085minor ·docs/STACK.md:7· B-мёртвый-указатель — Блок стадии draft лежит на строках 60–84 (stages:— 59,- name: draft— 60, следующая стадия- name: edit— 85). На заявленных 36–60 сегодня бло -
N086minor ·docs/STACK.md:15· B-мёртвый-указатель — Блокescalationлежит на строках 142–159 (escalation:— 142,chains:— 143,default:— 153,adult:— 154,budget_usd: 0— 159). На заявлен -
N087minor ·docs/STACK.md:16· B-мёртвый-указатель — Указатель РОДИЛСЯ ВЕРНЫМ 09.08 (085dbb9): строка 6docs/PROGRESS.mdтогда читалась «Открыто на владельце: прогон Sol-пакетов руками (150) · кред -
N118minor ·docs/glossary.md:7· B-мёртвый-указатель — В файле docs/ORCHESTRATOR_SESSION_PROMPT.md (240 строк) символа «№» нет НИ РАЗУ: его шапка намеренно номер не держит — «Счётчик ролей ОДИН, номер выда -
N119minor ·docs/product-requirements.md:50· B-мёртвый-указатель — Сам факт ЖИВ (проверено кодом, см. positive_control), но указатель «очередь №20» умер дважды: роль передана №20→№21 (D39.177, 31.08) и №21→№22 (D39.18 -
N120minor ·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 — баннеры или архив
-
N025major ·docs/architecture/06-memory-risk-registry.md:81· B-мёртвый-указатель — Колонка «Где в коде/схеме» реестра указывает шесть file:line-якорей, и пять из шести уехали: реальные адреса — MessagesWithInjection render.go:246 (а -
N088minor ·docs/architecture/01-decisions.md:19· A-дрейф — Каталогаpkg/в бэкенде нет вовсе; план исполнен подinternal/: internal/llm, internal/ledger, internal/obs, internal/store. Имена совпали, префик -
N089minor ·docs/architecture/01-decisions.md:39· A-дрейф — FTS5 в движке нет НИ на горячем, ни на холодном пути: во всём backend/ ноль виртуальных таблиц и единственное упоминание FTS5 — отрицание в комментари -
N090minor ·docs/architecture/01-decisions.md:55· B-мёртвый-указатель — Обоих коммитов в истории репозитория НЕ существует (git cat-file -t c7f8a95→ «Not a valid object name»). Реальные коммиты того же дня и того же сод -
N091minor ·docs/architecture/01-decisions.md:93· A-дрейф — Отдельного файла БД под банк памяти НЕТ и не было построено: у книги ровно ОДНА база<book_id>.db(config/book.go:189), и банк памяти живёт в ней же -
N094minor ·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): бэкенд-доки
-
N007major ·backend/README.md:11· A-дрейф — Перечень команд читается исчерпывающим и отстал на ТРИ верба из одиннадцати:backup,seed-lint,bank-apply.bank-apply— это ратифицированная -
N008major ·backend/README.md:24· A-дрейф — Машинной стоп-таблицы (.bank-stop.json) в движке НЕТ — её снёс пак «входная дверь шва» (d1eb8a9, ратифицирован D39.158); уцелевшая.bank-stop.txt -
N009major ·backend/README.md:82· D-противоречие-ратифицированному — От$HOMEНЕ дефолтится НИЧЕГО.internal/standdataрезолвит корпус ТОЛЬКО от корня репозитория (<repo>/books), и его собственная шапка говорит пр -
N010major ·backend/README.md:99· C-исполненное-как-открытое — Долг ПОГАШЕН и это записано в двух носителях. Код по обоим якорям сегодня говорит обратное README: repair.go:131 — «The boundary is the TARGET's decla -
N011major ·backend/README.md:101· B-мёртвый-указатель — Строка 53 в едином трекере не существует: она закрыта D39.82 (носитель этого сказан в самой таблице — строка 111: «D39.82 закрыл строку 53 через `putU -
N012major ·backend/docs/D15.2-content-addressed-resume-spec.md:529· A-дрейф — Голова схемы сегодня v16, а не v7, и номер v8 давно занят чужой миграцией. Спека при этом ЖИВА: строка бэклога 49 («Этапы Б+В спеки D15.2») открыта, и -
N071minor ·backend/README.md:20· B-мёртвый-указатель — Экспортированнойchunk.Ingestне существует — в пакете живёт неэкспортированнаяingest(p string), обёртка надIngestEncoded. Родилась ошибка в Т -
N072minor ·backend/README.md:94· B-мёртвый-указатель — README объявляет, что все его «строка N» разрешаются в таблицу «Бэклог», и цитирует тринадцать номеров. Семь из них в таблице отсутствуют — закрыты и -
N073minor ·backend/docs/MONEY_HONESTY_REPORT.md:787· C-исполненное-как-открытое — Заленджено — коммитомbb541a8(31.08) и принято нотой D39.182. Фраза стоит в секции, которая сама называет себя «§11. Последний абзац — СОСТОЯНИЕ, не -
N074minor ·backend/docs/SEAM_FIX3_PLAN.md:1· F-целиком-историческое — Четыре записки-плана паков шва — чистые списки намерений отработавших сессий. Паки приняты и заленджены (D39.158: «Четыре пака зоны бэкенда приняты и
Б11 — ЧУЖАЯ ЗОНА (санкция владельца 01.09): фронт-доки
-
N055major ·frontend/README.md:7· A-дрейф — S4 исполнен 14.08 и ПРИНЯТ 15.08 (D39.135,267aa35): библиотека, интейк, форма запуска прогона, настройки, читалка — построенные экраны. Перечислени -
N056major ·frontend/README.md:66· D-противоречие-ратифицированному — Зеркало НЕ байт-равно: 0.2.3/16 операций против канона 0.9.0/20 операций, разные md5. И правило «зеркало = байт-копия» ратифицированно ПРИОСТАНОВЛЕНО -
N057major ·frontend/docs/BACKLOG.md:50· D-противоречие-ратифицированному — D39.144 (16.08) снял гейт полноты. Канон:awaiting_bankс ЛЮБЫМ состоянием решений → 202. Якорьmining.go:201тоже уехал: там сегодня стоит прямая -
N058major ·frontend/docs/BACKLOG.md:51· B-мёртвый-указатель — В каноне 0.9.0 нет ни схемыBankDecision, ни значенияpromote, ни путиPOST …/bank/decisions, ни «частичного накопления»: канон 0.5.0 снёс их и -
N059major ·frontend/docs/BACKLOG.md:62· C-исполненное-как-открытое — Канон 0.9.0 перевесил поток на КНИГУ:GET /books/{bookId}/events, и его описание прямо называет причину — «a book is received and cut into chapters -
N060major ·frontend/docs/BACKLOG.md:63· C-исполненное-как-открытое — Ручка построена: канон 0.9.0 даётGET /capabilitiesс обязательнымlanguage_pairs(«Every pair the deployment knows about, unavailable ones includ -
N061major ·frontend/docs/BACKLOG.md:68· C-исполненное-как-открытое — Канон 0.9.0 несёт иPATCH /books/{bookId}(merge patch, толькоtitle, 409 при живом прогоне), иDELETE /books/{bookId}(204, 409 при живом прого -
N062major ·frontend/docs/FRONTEND_PLAN.md:692· D-противоречие-ратифицированному — Ратифицированный канон 0.9.0 кладёт на провод ОДНУ пару {done,total}, считаемую в ГЛАВАХ по всем проходам, плюс открытую строкуstage. Клиент, напис -
N063major ·frontend/docs/STACK_DECISIONS.md:245· C-исполненное-как-открытое — Все ЧЕТЫРЕ пункта («пофазный прогресс», «персист манифеста глав и чанков», «JSON-выход таблицы подписи банка», «приём внешнего TRACEPARENT в cmd/tmctl -
N121minor ·frontend/README.md:21· A-дрейф — Маршрутов ВОСЕМЬ: S4 завела/intake, и он есть в обоих замкнутых тестом списках. Приёмка S4 в том же дереве печатает «8 маршрутов, 11 сценариев». -
N122minor ·frontend/docs/BACKLOG.md:3· B-мёртвый-указатель — Строк 99–102 в живомdocs/PROGRESS.mdбольше нет — все четыре закрыты и по норме журнала («закрытые строки здесь НЕ хранятся») ушли в D-лог. Шапка у -
N123minor ·frontend/docs/BACKLOG.md:23· B-мёртвый-указатель — Токена--color-hintв зоне больше нет вовсе — ни вtokens.css, ни в тестах, ни в коде; строка держит хвост на несуществующем токене. Вторая полови -
N124minor ·frontend/docs/FRONTEND_SESSION_PROMPT.md:2· B-мёртвый-указатель —S3_SESSION_PROMPT.mdв зоне не существует: промты S3/S3.5/S3.7 архивированы 14.08 вdocs/archive/prompts/FRONTEND_S3*, зонные копии сняты. Довод б -
N125minor ·frontend/docs/STACK_DECISIONS.md:111· B-мёртвый-указатель — Зона зависит от пакетаplaywright1.62.1, а не от@playwright/test: последнего нет ни вpackage.json, ни в деревеnode_modules. Сессия, постав -
N126minor ·frontend/docs/STACK_DECISIONS.md:116· E-второй-носитель — Шагов уcheckшесть, и spectral — ЧЕТВЁРТЫЙ. Тот же файл на строке 148 уже утверждает «шесть шагов», то есть носитель противоречит сам себе; вторая -
N127minor ·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 -
N064major ·platform/README.md:10· A-дрейф — Перечень устарел с лендингом пака sqlc 29.08:check: build vet fmt lint sqlc-check— пятый шагsqlc-checkв списке отсутствует. Хуже перечня — умо -
N065major ·platform/deploy/README.md:252· C-исполненное-как-открытое — Глаголtmctl migrateсуществует и заленджен (backend/cmd/tmctl/migrate.go, в диспетчереmain.go:184/:245, свой код выхода `exitSchemaMismatch = -
N066major ·platform/docs/PLATFORM_DIRECTION.md:159· C-исполненное-как-открытое — sqlc ВЗЯТ и заленджен 29.08 (D39.172: «Пакsqlcпринят и заленджен: 40 запросов пяти файловpgstoreна типизированный слой, пин 1.31.1, `sqlc di -
N067major ·platform/docs/STACK_DECISIONS.md:621· B-мёртвый-указатель — Лечебная команда «самой частой грабли стенда» указывает на путь, которого не существует:tm-runs.sliceпо конвенции имён systemd вложен вtm.slice -
N128minor ·platform/deploy/README.md:428· C-исполненное-как-открытое — Воркер существует с пака P4: прогон спавнится вinternal/runs/spawn.go, который задаётWorkdir: l.Workdirтранзиентному юниту, а корень УЖЕ настро -
N129minor ·platform/docs/PLATFORM_DIRECTION.md:101· B-мёртвый-указатель — Указатели на строки единого бэклога, розданные по всему срезу, в шести случаях целят в строки, которых в живой таблице БОЛЬШЕ НЕТ: правило бэклога — « -
N130minor ·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). Пока формулировка стоит, следующая смена повторит откат. Формулировку задаёт владелец — сам не переписываю.