23 lines
14 KiB
Markdown
23 lines
14 KiB
Markdown
# СНЯТЫЕ ОПРОВЕРГАТЕЛЕМ — НЕ ЧИНИТЬ (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 строк 145–150» не существует — реальный баннер §2 стоит на строках 94–99, а 145–150 это тело «Слой 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:113–126).
|
||
|
||
## `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-ссылка, так что «переход по ссылке из редактора промахивается» тоже не воспроизводится: переходить не по чему.
|
||
|