textmachine/docs/DOC_REVISION_REFUTED.md

23 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# СНЯТЫЕ ОПРОВЕРГАТЕЛЕМ — НЕ ЧИНИТЬ (7)
## `docs/architecture/09-target-architecture.md:181`
**Почему находка неверна:** Опровергнуто на СВОЁМ носителе автора. Автор предъявил реестр как доказательство закрытия, но легенда реестра (product-requirements.md:5) читает 🔶 как «ЧАСТИЧНО», а не «построено»: ПТ-18 (H10) = 🔶 с прямо названным остатком «продукт-кнопки и связка с прескрином = строка 94», ПТ-19 (H9) = 🔶 с остатком «замер скорости и ETA на целой книге = строка 54». Строка 94 бэклога в PROGRESS.md:239 держит кнопки стоп/продолжить ОТКРЫТЫМИ. Значит из трёх заявленных закрытий подтверждается ОДНО — H15 (ПТ-9 = ✅; терминолог реально в коде: backend/internal/pipeline/terminologist.go, backend/internal/terminology/*, KWIC в terminology.go). Заголовок находки «три из семи закрыты» — а на нём стоит severity major — ложен в двух случаях из трёх, и предложенная правка вписала бы в ратифицированный док НОВОЕ ложное утверждение «H9/H10 закрыты», прямо спорящее с 🔶 в реестре и с открытой строкой 94. Дополнительно: blame показывает, что строка 181 — нетронутый текст 13.07, покрытый общей оговоркой строки 14 «тело ниже = замысел арх-ресета 13.07», то есть это карта находок аудита, а не живой статус-борд.
## `docs/architecture/09-target-architecture.md:48`
**Почему находка неверна:** Опровергнуты обе несущие посылки находки, хотя её кодовый факт я подтвердил. (1) Указатель самой находки битый: «⚠-баннер §2 строк 145150» не существует — реальный баннер §2 стоит на строках 9499, а 145150 это тело «Слой 4»/«Слой 5». Находка, которая опирается на образец правки по несуществующим строкам, воспроизводима принимающим как ошибка. (2) Класс D («противоречие ратифицированному») не держится: D39.7 ратифицировал «граница — НЕ рычаг НА ЭТОМ МАТЕРИАЛЕ», D39.8 — «сцен-детекция/carryover-машинерия НЕ строятся ДЛЯ КНИГ ЭТОГО КЛАССА». Обе формулировки СКОУПЛЕНЫ книгами класса zh-вебновелла, а §0.1 — ровно инвариант про ДРУГИЕ классы книг («не смеет предполагать структуру конкретной книги»). Вписать в §0.1 «ось стратегии границы замерена и не строится» значило бы обобщить класс-скоупленный замер на весь спектр — та самая ошибка, которую §0.1 называет ЗАПРЕЩЁННОЙ («книга плоская → урежем нарезку»). (3) Посылка «§0.1 не покрыт оговоркой» неточна: blame показывает строку 48 как нетронутый текст 13.07, а строка 14 несёт общую оговорку «Баннер — не переписывание, тело ниже = замысел арх-ресета 13.07», покрывающую всё тело ниже шапки, включая §0.1; сам заголовок §0.1 датирован «(поправка владельца, 2026-07-13)». ПОДТВЕРЖДАЮ только кодовую половину: в backend/internal/chunk/ нет ни выбора стратегии границы, ни фоллбек-лестницы (греп 'logical|Logical' по пакету пуст при положительном контроле grep -c greedy backend/internal/chunk/chunker.go → 2; в backend/internal/config/ нет оси Boundary при положительном контроле — оси Segmentation/DraftBudgetOut там есть, pipeline.go:113126).
## `docs/architecture/17-seam-inbound-law.md:74`
**Почему находка неверна:** Находка построена на ДОК-КОММЕНТАРИИ, а не на механизме. Прочёл renderDecisions целиком (httpapi/bank.go:331-357): в ней нет ни одного switch и ни одной map — она проецирует ФОРМУ (null→0, presence-флаги), а слова передаёт как есть. И передавать их как есть законно, потому что на этом направлении словари СОВПАДАЮТ побайтно: wire-действия `approve`/`decline` равны membank.ActionApprove/ActionDecline (decisions.go:61-62), а закрытый wire-словарь `termKinds` — {name,place,title,term,nickname} — это ровно тот набор, который читающая таблица termKind пропускает без перевода. Обратного отображения контракт→движок в платформе НЕТ ВООБЩЕ: греп по контрактным словам находит только константы читающей таблицы, при рабочем положительном контроле (тот же класс грепа находит движковые auto/draft/seed/ruby/mined в bank.go:113-129). Значит утверждение дока «перевод односторонний, на чтении» СЕГОДНЯ ВЕРНО, и якорь на bank.go:15-21 жив (токен на :16). Исполнение находки вписало бы в ратифицированный закон ЛОЖЬ («перевод ДВУНАПРАВЛЕННЫЙ») — ровно тот вред, ради которого пересуд и существует.
## `docs/architecture/03-implementation-notes.md:5`
**Почему находка неверна:** Ни одно утверждение баннера сегодня не ложно — я проверил каждое исполнением, значит класс A (дрейф факта) не выполнен. Баннер — ⚠-датированная запись о том, ЧТО СДЕЛАЛ ПАК-15 25.07; вписывать в неё bookfile (30.08) и standdata (27.08) значит приписать паку-15 то, чего он не делал, то есть заменить верную историческую запись на ложную. Премисса находки («док читается как карта кода») тоже не подтвердилась: и CLAUDE.md, и backend/README.md:3 адресуют 03 за КОНТРАКТАМИ Фазы 0 «через баннер», а карта пакетов лежит в backend/README.md, который бэкенд читает ПОЗИЦИЕЙ РАНЬШЕ. Второй носитель (12-go-style-notes:22) говорит о ратификации сплита и композит-корне — тоже не инвентарь пакетов.
## `CLAUDE.md:84`
**Почему находка неверна:** Фактическая половина находки воспроизводится (файл tracked с 9bb00d4, шесть коммитов, последний 8afc2e7 29.08) — но вывод «класс A, док утверждал верное и сгнил» неверен по трём независимым уликам. (1) ХРОНОЛОГИЯ УБИВАЕТ КЛАСС A: правило впервые записано в CLAUDE.md 01.08 (87a0124), когда файл был под git уже четыре недели (с первого коммита 04.07). Утверждение, которое НИКОГДА не было верным как факт об индексе, не может «быть верным когда-то и стать ложным сегодня»; строка — НОРМА действия («не коммить»), а не описание состояния дерева. (2) ПРОЕКТ ЯВНО ЗНАЕТ ОБА ФАКТА И ПРИМИРИЛ ИХ МАШИНОЙ: живой отслеживаемый хук frontend/scripts/githooks/pre-commit:11-13 дословно пишет «START_PROMT.MD is tracked and often modified — a bare `git commit -a` would carry it away in silence» и блокирует файл в стейдже. Tracked-статус — не противоречие правилу, а ЕГО ПРИЧИНА: именно потому, что файл tracked и почти всегда модифицирован, голый коммит унёс бы его молча. Правило не протухло — оно вооружено. (3) КОММИТ 29.08 ПРЕДПОЛАГАЕТ ПРАВИЛО ЖИВЫМ, А НЕ ОТМЕНЯЕТ ЕГО: его собственное сообщение — «on his explicit instruction and against the standing guardrail», то есть разовое переопределение владельцем стоящей нормы; D-ноты, отменяющей норму, в живом логе и реестре нет (грепнуто при позитивном контроле 142 хита). Единственное живое упоминание в D-логе (строка 694) норму ПОДТВЕРЖДАЕТ. Плюс два дефекта в самой находке: (а) её собственный указатель битый — строка 694 принадлежит D39.157 (заголовок на 680), а не «D39.158 п.7» (заголовок на 696); (б) «цена уже уплачена» подменяет факт: reset --mixed 24.08 сделан «ПО ЕГО СЛОВУ» (владельца), дерево сверено побайтно по 20 файлам — правило отработало как задумано, а не навредило.
## `docs/glossary.md:37`
**Почему находка неверна:** Находка перевёрнута: короткая форма — не описка, а ГОСПОДСТВУЮЩАЯ конвенция проекта, а выбивается ровно тот носитель, который находка объявила «верным». Счёт по живым докам: `configs/langpacks/` без префикса — 17 вхождений (в т.ч. CLAUDE.md:70 в §Гардрейлы, 09-target-architecture.md:125, 10-prompt-architecture.md:46, 12-go-style-notes.md, 13-tech-debt-anchors.md:146), `backend/configs/langpacks/` — ОДНО, и это как раз docs/glossary.md:47. Указатель не мёртв: собственный линтер проекта резолвит зонно-относительные якоря списком LINT_PREFIXES_RAW (в нём есть "backend/" и "backend/configs/"), комментарий рядом называет их «ЗОННО-ОТНОСИТЕЛЬНЫЕ якоря… их в корпусе больше пятнадцати», и --lint даёт 0 проблем. Опора находки на CLAUDE.md §Онбординг тоже не держит: та фраза («пути от КОРНЯ репозитория») стоит в пункте 3 маршрута чтения и относится к путям ДОКОВ в онбординг-списке, тогда как тот же CLAUDE.md пятью десятками строк выше сам пишет `configs/langpacks/`. Класс B не подтверждается: цель существует, резолвится инструментом и написана по канону.
## `platform/deploy/README.md:30`
**Почему находка неверна:** Находка исходит из посылки, что путь в доке резолвится ОТ КАТАЛОГА ФАЙЛА. В этом репозитории посылка ложна, и это доказывается самим же файлом. `platform/deploy/README.md` пишет `internal/login/dev.go` и `internal/config/config.go` — от `platform/deploy/` каталога `internal` НЕ существует (проверено: MISSING), а от корня зоны оба файла на месте. То есть весь док последовательно пишет пути ОТ КОРНЯ ЗОНЫ `platform/`, и `docs/STACK_DECISIONS.md` — ровно та же форма, а не опечатка и не копипаст. Конвенция не самодельная: ратифицированный гейт якорей `docs/scripts/counts.py` резолвит путь перебором множества префиксов, где `platform/` стоит явно (`LINT_PREFIXES_RAW`), и на всём корпусе даёт «0 проблемных якорей в 100 живых доках». Прецедент из CLAUDE.md, на который опирается находка, — про другое: там пути не резолвились НИ от корня, НИ по конвенции. Наконец, все три вхождения — бэктик-текст, а не markdown-ссылка, так что «переход по ссылке из редактора промахивается» тоже не воспроизводится: переходить не по чему.