books/dovodka/СВЕРКА-РЕВИЗИИ-16-08.md
2026-08-20 03:54:54 +03:00

34 KiB
Raw Blame History

Сверка внутренней ревизии фазы Д с телом отчёта (16.08)

Источники: ~/books/dovodka/revizia-fazy-D-11-08.json (82 находки) и priemka-D4-14-08.json (49). Сверку делал отдельный агент. Эти находки НЕ верифицированы автором отчёта исполнением — их надо пере-проверить прежде, чем двигать на них выводы. Человекочитаемый вид — по просьбе владельца 16.08 (jsonl-транскрипт ему не нужен).

Счёт: всего 131 · отражено в отчёте 66 · НЕ отражено 65


Находки, которых в отчёте НЕТ

1. [критично]

P13 — вердикт по H-1 (A6/A0) определяется двумя пачками прогона, объявленного «валидацией цепочки» и судимого 11.08 по НЕ замороженному промту; паритет обвязок (П-4, paritet.py) для них не проверялся ничем. Снятие этих двух пачек даёт пол n=13 sd 1.4058 → порог 1.0917 и A6/A0 1.0938, то есть «ПЕРЕШЁЛ ПОРОГ» вместо печатаемого «ниже порога».

Почему важно: H-1 — гипотеза владельца «проблема в черновике». Отчёт печатает «НЕ УСТАНОВЛЕНА» (Д4.2, Д9.1, Д14.6 п.5), а Д14.11 отдельно говорит, что по ВЕРНОСТИ A6 не хуже переписа (+0.12). Переходит ли H-1 порог, решает необъявленное решение о том, считать ли валидационный прогон боевым замером — владелец этого выбора не видел.

2. [критично]

P12 — пачка 69de717f3f осталась в замере, хотя её судила сессия, аннулированная за сравнение вариантов. Снятие: пол claude n=15 sd 2.14 порог 1.54 → n=14 sd 2.21 порог 1.65; A3/A0 2.16 → 2.21; порог sol 3.65 → 3.89; A1B/A0 sol 4.74 → 4.81.

Почему важно: Двигает ВСЕ печатаемые числа обоих семейств, включая порог 1.65, против которого читается «A4 неотличим, разрыв 0.11». Норма «сессия, нарушившая протокол, аннулируется ЦЕЛИКОМ» — собственная норма проекта, и её нарушение не объявлено (отчёт утверждает обратное, см. contradicted).

3. [важно]

P07 — унаследованный гейт честности пола itog_d4 не гоняет; на данных claude его вердикт — «ПОЛ СМЕЩЁН, боевые числа снимаются» (систематический сдвиг +1.8 между наборами p1/p2).

Почему важно: claude — семейство, несущее ОБА CONFIRM фазы. Если бы объявленный гейт был прогнан, боевые числа этого семейства снимались бы ДО чтения перевесов. Ни гейт, ни его вердикт в отчёте не упомянуты ни разу.

4. [важно]

P42 — два пре-рег-правила о маржевом гейте противоречат друг другу: строка П-1 (:1070) велит АННУЛИРОВАТЬ пачку семейства, не взявшего маржевый контроль; Д4.4 вместо этого лишь понижает его вердикты до описательных. Код исполняет мягкое правило, выбор не объявлен девиацией.

Почему важно: Единственный CONFIRM фазы (H-2а «опровергнута») стоит на том, что Sol считается вторым семейством. По буквальному П-1 его пачка аннулируется → остаётся одно семейство → «ЭСКАЛАЦИЯ К АДЪЮДИКАЦИИ», а не CONFIRM. Д14.6 п.2 повторно опирается на «оба семейства перешли свой порог».

5. [важно]

P44 — клетки A4 и A1B оплачены при НУЛЕВОМ изменении текста (фиксер не исполнил ни одного указанного места); контраст A4/A0 на 4 единицах из 31 равен нулю ПО ПОСТРОЕНИЮ, а не по замеру. Штатный контроль «близнец» унаследованного рига (absjudge.py:687-696) itog_d4.py не гоняет.

Почему важно: A4 — «кандидат в прод» и прямой ответ на заказ :86-87. Ровно это вскрытие отчёт делает для английского близнеца E4 (Д11.4: 12 из 16 побайтно равны E0, «вдвое дешевле» снято) и НЕ делает для zh A4, чей вердикт «неотличим, разрыв 0.11» после этого читается иначе.

6. [критично]

R73 — прайор шума взят с ПОЛА, а не с контраста: замеренный контраст той же структуры в 1.40× шумнее (sd 3.063 против 2.19 на border, пере-снято исполнением). Порог различимости во ВСЕХ проходах строится из пола. Рядом лежит P40 (важно), утверждающая обратное направление: пол несёт межсессионную компоненту, которой в контрасте нет по построению, то есть порог ЗАВЫШЕН.

Почему важно: Порог — решающее правило всей дуги: Д4 1.54/1.65, Д3 0.99/0.90, Д6 0.93, Д1 1.47, Д15 1.84, Д16 2.17. Две выжившие находки называют его смещённым в ПРОТИВОПОЛОЖНЫЕ стороны, и ни одна в отчёт не попала — то есть калибровка порога не «консервативна», а неизвестна по знаку. Прямо задевает положительные утверждения (E0/D0 перешёл, J0/D0 перешёл, «маржевый декой ПРОЙДЕН»).

7. [важно]

R03+R04 — axiscal.py: число «заражение» (:228) вычитает счёт ЦИТАТ из суммы ОСЕВЫХ БАЛЛОВ (разные величины; Sol получает 32, цитируя в 13 раз гуще, то есть по прибору выходит «аккуратнее»); нулевой модели нет вовсе, шансовый пол атрибуции различается у семейств в 4.5×. Проверено сегодня: в выводе axiscal нет ни одной строки частоты срабатывания на случайном входе.

Почему важно: Это прямое нарушение собственной нормы фазы Д0.6 (:836-838) в самом свежем $0-классификаторе, и именно на axiscal ссылается П-5 при выносе ТЕРМИН из НЕСУЩЕЙ суммы («axiscal показал, что посадок на ТЕРМИН нет вовсе», :1108). То есть прибор без нулевой модели определил, какие оси несут вердикты фазы.

8. [важно]

P19+P25 — донор декоя во ВСЕХ 62 пачках оси Д4 — арм A0, при пре-рег-норме «донор декоя уравнен по армам». В каждой пачке лежит почти-копия A0 — знаменателя всех трёх первичных контрастов.

Почему важно: Отчёт объявляет ровно этот дефект у прохода tier (§9, :466-473) и специально чинит его в японской ноге Д16 (:2466), но нигде не говорит, что ось Д4 — несущая ставку владельца — его повторила. Вместе с P17 (связывание меток) это работающий канал деанонимизации базы сравнения.

9. [важно]

R76+R77 — правило Д0.4: «нижняя граница 95% ДИ» опирается на percentile-bootstrap среднего, тогда как решающий тест рига — точный перестановочный; фактическое покрытие ДИ 0.92 при n=16/32, а не 0.95; правило требует ОБЕ границы внутри ±1.50 (то есть TOST, а названо non-inferiority), поправку Холма не несёт, и его мощность нигде не посчитана (при равенстве армов шанс получить «НЕ ХУЖЕ» — 0.80…0.27 в зависимости от sd, для A6 при n=16 недостижим).

Почему важно: Д14.6 п.2 опирается на Д0.4, чтобы объявить исход по H-2а «тем же и ТВЁРЖЕ». Прибор, которым эта твёрдость меряется, анти-консервативен и по построению смешивает α двух семейств вердиктов.

10. [важно]

P31+P32 — детектор адъюдикации отредактирован МЕЖДУ четвёртым и пятым ответом адъюдикатора и на момент приёмки лежал незакоммиченным; второе условие правила П-1 («CONFIRM с пометкой: вынесен одним семейством, подтверждён адъюдикацией») в коде не реализовано вовсе.

Почему важно: Эскалация A3/A0 — маршрут разрешения главной ставки владельца H-2б — разрешается только половиной объявленного правила, а решающий детектор менялся после прихода части вердиктов. Отчёт называет контроли адъюдикации дефектными (Д4.4), но именно эти два пункта не называет.

11. [важно]

P08+P15 — свод и селфтест восстанавливают текст ГРУБОГО декоя правилами посадки ЧУЖОГО пака: 62/62 меток не сходятся с полем sig ключа. Печатаемая доля «цитат не найдено» завышена вшестеро (без CTRLdecoy у claude 0.8%, у sol 2.4% против печатаемых 5%); пункт годности пачки «цитата, которой нет в своём варианте», в bad вообще не записывается (itog_d4.py:102-107).

Почему важно: «Замечаний годности 0» и строки контролей цитирования печатаются во ВСЕХ панелях фазы (Д3.2, Д6.2, Д1.2, Д12.2) как доказательство исправности прибора. Межсемейный разрыв по точности цитирования в текущей печати не виден вовсе.

12. [важно]

P30 — замок кассы снимается процессом, который его не ставил, без проверки живости PID: после 20 минут ожидания любой процесс снимает чужой ЖИВОЙ замок и покупает клетку повторно.

Почему важно: Это ровно класс двойной оплаты, ради которого замок заведён и который стоил эксп-22 верхней границы невозвратной пере-оплаты ≤$0.846103. Отчёт при этом рекламирует «атомарный O_CREAT|O_EXCL-замок с проверкой живости PID» (:824) — но это runs.py (журнал сессий), а не касса.

13. [важно]

R23 — материал оси Д6 подменён на другую книгу без единого артефакта слова владельца; закоммиченный реестр требований по-прежнему называет исходную книгу, а улика R36 при этом зелёная.

Почему важно: На этой книге стоят ось Д6 и вся японская нога H-4 (Д16). Отчёт (Д6.0:1367) утверждает «Книга заменена по слову владельца» — носителя у этого утверждения в репо нет, а единственный документ, против которого валиден conformance-гейт, называет другую книгу.

14. [важно]

R70 — арм A1 получает втрое более слабое лечение на новой половине оси: банк на новых 16 единицах срабатывает вдвое-втрое реже, медиана флагов падает с 3 до 1. (Смежно R57/R34: 5 оплаченных клеток вернули вход ПОБАЙТНО, четыре из них — A1.)

Почему важно: Половина единиц, на которых меряется H-2а, лечена почти никак — результат «не хуже A0» на таком материале означает в основном «мы почти ничего не сделали», а не свойство флагового контура. Отчёт этой асимметрии половин оси не печатает.


Находки, которым тело отчёта ПРОТИВОРЕЧИТ

1. R31 + R40 (оба «критично», опровергнуть не удалось, числа пере-сняты двумя агентами независимо):

канон-гейт — единственный источник «мест» для A1/A1B и A4 — на 78.4% состоит из срабатываний вида «канон в выходе ЕСТЬ, просто реже, чем термин в исходнике» (74 флага: 16 «нет вовсе», 58 «есть, но реже»); норма Д0.6 «всякий классификатор печатает частоту срабатывания на случайном входе» для canon_gaps не исполнена.

Отчёт говорит: «Что ревью ОПРОВЕРГЛО (снято, чтобы не осталось в обороте). Канон-гейт contour.py подозревался в том, что меряет не то… прибор специфичен в 2.4 раза и нулевую модель проходит… Подозрение снято; остаётся мягкая правка формулировки флага.» Отчёт вынес в оборот ОДНУ сторону внутренне расколотой ревизии: этим контролем опровергнута только R68, а R31 и R40 выжили, и именно они говорят, что вход арма H-2а на 78% состоит из мест, которые чинить не надо.

Якорь: docs/experiments/23-editor-tier.md:977-981

2. P12 + P43: пачка 69de717f3f сессии, аннулированной за сравнение вариантов, НЕ пере-сужена и осталась

во всех числах; журнал карантина annulled.txt числит 11 файлов и 3 сессии против 15 файлов и 4 сессий на диске.

Отчёт говорит: «…аннулировано за нарушение протокола 4 сессии (16 пачек) плюс 2 отдельные пачки; все пере-сужены, аудит транскриптов механический, у обоих семейств одинаковый.»

Якорь: docs/experiments/23-editor-tier.md:1248-1250

3. P03 («критично», механика воспроизведена, опровергнуть не удалось): порог различимости строится на n

ПОЛА (15) и применяется к средним по 31, 16 и 54 наблюдениям. При пороге, посчитанном на n самого среднего, гейт чувствительности Sol ПРОЙДЕН (1.925/2.466 против +2.963), а A3/A0 sol 3.13 порог 2.541 ПЕРЕХОДИТ → П-1 даёт CONFIRM по H-2б обоими семействами. (P39 опровергла только атрибуцию «дефект кода itog_d4» — весь риг делит на n пола, — но не арифметику.)

Отчёт говорит: «Sol не прошёл гейт чувствительности (маржевый декой +3.06 против своего порога 3.65). Его вердикты по H-2а/H-2б понижены до описательных» и Д4.2 «A3/A0 = 2.21 (claude) и 3.11 (sol, свой порог 3.65 не перешёл)… НЕ ПОДТВЕРЖДЕНА». Находка процитирована в Д14.13:2357 одной строкой и нигде не применена — то есть отчёт печатает вердикты, которые сам же несёт как перевёртываемые.

Якорь: docs/experiments/23-editor-tier.md:1227-1229 (и 1184-1188)

4. P42: по буквальной строке пре-рега П-1 семейство, не взявшее маржевый контроль (П-2), АННУЛИРУЕТСЯ

на пачке; Sol маржевый гейт не взял. Тогда по A1B/A0 остаётся одно семейство и вердикт — «эскалация», а не CONFIRM.

Отчёт говорит: «H-2а … ОПРОВЕРГНУТА (CONFIRM). A1B/A0 = 3.53 (claude) и 4.73 (sol); оба семейства перешли СВОЙ порог в одну сторону» — и повторно в Д14.6 п.2 «оба семейства перешли свой порог». Отчёт печатает ОБА пре-рег-правила (:1070 и :1227), исполняет мягкое и нигде не объявляет этот выбор девиацией.

Якорь: docs/experiments/23-editor-tier.md:1179-1182

5. P19 + P25: донор декоя — арм A0 во всех 62 пачках оси Д4; норма «донор уравнен по армам» не

исполнена и нигде не объявлена невыполненной (в реестре её улика подменена гейтом чужого пака verify23.py).

Отчёт говорит: Д0.6 печатает норму как принятую этой фазой: «Донор декоя уравнен по армам; судье запрещено сравнивать варианты между собой и читать их рядом», а Д4.7 сводит контроли фазы в таблицу «пробел → чем закрыт» без этой строки.

Якорь: docs/experiments/23-editor-tier.md:830

6. R09 (селфтест runs.py даёт 15 проверок, а не 16), P30 (замок КАССЫ снимается чужим процессом без

проверки живости PID), R49 (атрибуция судей ключуется на mtime, а всё дерево ~/books пере-штамповано одной датой 2026-08-10 22:01).

Отчёт говорит: «Судейские сессии регистрируются ДО запуска (eval/dovodka/runs.py, кап 80, атомарный O_CREAT|O_EXCL-замок с проверкой живости PID, селфтест 16/16). Гонка сессий по одному токену механически невозможна».

Якорь: docs/experiments/23-editor-tier.md:823-825

7. P44: на 4 единицах из 31 клетка A4 побайтно равна A0 (фиксер не исполнил ни одного указанного

места), то есть часть «неотличимости» A4 от эталона получена по построению, а не замером.

Отчёт говорит: «A4 — кандидат в прод. Единственный арм, неотличимый от боевого по судье (разрыв 0.11 при пороге 1.65) и при этом поднимающий канон с 0.892 до 0.937… Это прямой ответ на заказ :86-87.» Ровно такое вскрытие отчёт делает для английского близнеца E4 (Д11.4) и для zh A4 не делает.

Якорь: docs/experiments/23-editor-tier.md:1214-1216


Инструменты, признанные негодными внутри ревизии

  • promptdiff.py — R00 и R01, ОБА «критично», опровергнуть не удалось. СЕГОДНЯ ЗЕЛЁНЫЙ: eval/.venv/bin/python eval/dovodka/promptdiff.py en-ru и ja-ru → EXIT=0, «ПАР-ПРОМПТЫ КОНСИСТЕНТНЫ», необъявленных строк 0. Обе дыры живы в коде: promptdiff.py:119 по-прежнему line.startswith(pref) — хвост «объявленной» строки не проверяется ничем (а сам текст объявления в ALLOWED утверждает «Остаток строки совпадает дословно»); отсутствующий файл РОЛИ не роняет гейт, потому что main() перебирает d.glob('*.md') — падает только отсутствие всего каталога пары. Под зелёным гейтом стоят ФД-B, ФД-G и обе новые оси.

  • canon.py — R07 «важно» (снятая ревью классификация по-прежнему считается и пишется в артефакт). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0. Дефект жив: прогон заново персистировал ~/books/dovodka/canon- dissect.json — те же 24 записи с полем cls (парафраз 19 / другой 4 / исчез 1) и полем why из случайных слов окна ('этот','родов','дочь','её','Он'). То есть носитель-артефакт Д5, объявленный «спецификацией канон-фиксера», продолжает отдавать машинно-читаемыми данными ту разметку, которую Д5 объявляет недействительной. ⚠ Побочный эффект моей проверки: canon.py перезаписал этот файл (mtime 15.08 22:44); содержимое совпадает с зафиксированным ревизией, потерь нет.

  • material_ja.py — R05 «важно» (фильтр AI-меток объявлен механическим, кода нет; провенанса книги нет ни одним артефактом) и R06 «важно» (приколка манифестом не исполнена). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0, 9 единиц из 9 разных глав. R05 ЖИВ: AI直接使用/AI支援/生成AI встречаются только в докстринге (:11-14), кода фильтра нет, артефактов провенанса (n7233mn, дата публикации) нет. R06 в основном ПОЧИНЕН: появился читатель манифеста (units() :151-154), manifest-ja.json на диске, потребители — ja_axis.py, ja6.py, d7_self.py, bank.py.

  • axiscal.py — R03 и R04 «важно» (заражение вычитает счёт цитат из суммы осевых баллов; нулевой модели нет, шансовый пол семейств различается в 4.5×). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0. Дефекты живы: строка :228 по-прежнему печатает заражение = off base, а во всём файле нет ни одного упоминания случайного входа / шансового пола. Норма Д0.6 в самом свежем $0-классификаторе не исполнена, при том что на axiscal ссылается П-5 при выносе ТЕРМИН из несущей суммы.

  • itog_d4.py — P03, P07, P08, P15, P44 (порог на n пола; гейт честности пола не гоняется; декой восстанавливается чужими правилами посадки; контроль «близнец» не гоняется). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0 и печатает те самые вердикты — «A1B/A0 → CONFIRM», «A3/A0 → ЭСКАЛАЦИЯ К АДЪЮДИКАЦИИ», «A6/A0 → не подтверждено ни одним семейством».

  • contour.py --selftest — R48 «важно» (селфтест утверждает тавтологию и пропустил три из пяти известных дефектов). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0, «ХАРНЕСС ГОДЕН». Сами дефекты, которые он пропускал (Э-4, Э-5, Э-6), в отчёте объявлены и починены; тавтологичность проверок в отчёт не попала.

  • runs.py --selftest — R09 «мелко» (заявлено 16/16, исполнение даёт 15) и R49 «важно» (атрибуция на mtime пере-штампованного дерева). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0, «ЖУРНАЛ ГОДЕН». Отчёт (:824) продолжает печатать «селфтест 16/16».

  • sud.py --selftest — P18 и Д14.7 п.5 самого отчёта («на трёх осях из четырёх сертифицирует чужую панель», зашит на армы d4). СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0, «СУДЕЙСКИЙ ХАРНЕСС ГОДЕН» — то есть зелёный вхолостую ровно так, как описано.

  • paritet.py — P13 (для двух пачек прогона-валидации паритет обвязок не проверялся ничем) и оговорка самой ревизии «сверяет файлы репо, а не отправленное». СЕГОДНЯ ЗЕЛЁНЫЙ: EXIT=0, «ПАРИТЕТ ОБВЯЗОК СОБЛЮДЁН».

  • conformance.py --final — R43 и R44 «критично» (12 строк-заголовков считаются требованиями с пустой уликой, поэтому режим сдачи непроходим по построению; экранированный пайп в markdown-таблице уходит в shell литералом, из-за чего R37 зелена всегда, а R55 вечно красная). СЕГОДНЯ КРАСНЫЙ, но по ТРЕТЬЕЙ причине: EXIT=1 с « реестр отличается от закоммиченного» — то есть до структурных дефектов дело даже не доходит. Отчёт несёт красноту гейта (Д11.6) и дефект парсера у R55 (Д8 п.12), но не несёт того, что --final не может позеленеть ни при какой полноте пака.

  • adjud.py — P00, P01, P02 «критично» (обрезка имён осей регексом; контроль сговорчивости не слепой; посадкой считается любая цитата из декоя). ПОЧИНЕНО и отражено в отчёте (Д4.4 и Д14.8 Г-1…Г-4): сегодня adjud.py --controls EXIT=0, «форма карточки классы не выдаёт — контроли пригодны». Не отражены только P31 (детектор менялся после части вердиктов, незакоммичен) и P32 (второй половины правила П-1 в коде нет).

  • verify22.py — R26/R50/R61 «важно» (гейт чужого пака красный, число выведено из mtime). СЕГОДНЯ ЗЕЛЁНЫЙ: eval/.venv/bin/python eval/tenant_panel/verify22.py → EXIT=0, «ВСЕ ЧИСЛА ОТЧЁТА СХОДЯТСЯ». Эррата Э-14 отчёта соответствует состоянию на 11.08 и с тех пор устарела в лучшую сторону.


Итог сверки

Разобрал оба артефакта. Схема находок: revizia-fazy-D-11-08.json — 8 строк «checked» + 82 находки (severity · title · evidence · consequence · fix · verdict{refuted, why}), 23 критично / 40 важно / 19 мелко, опровергнуто ревизией 15; priemka-D4-14-08.json — 4 строки + 49 находок (то же плюс поле grounded, без fix), 10/26/13, опровергнуто 7. Итого 131 находка, из них 99 в классе критично+важно. Главная поправка к постановке задачи: утверждение «ни разу не процитированы» верно про ПУТИ ФАЙЛОВ, но не про содержание. Эррата Д0.11 (:898-981) прямо начинается словами «Ревью 82 находок … (67 выжили)» и разносит 14 из них по пунктам Э-1…Э-14; часть находок приёмки D4 разнесена по Д4.4, Д14.8, Д5, Д11. По существу отражены 66 находок из 131, не отражены 65. Из «отражённых» шесть существуют ТОЛЬКО как однострочный перечень в Д14.13 (:2353-2366) — секции, которая сама говорит, что разбор не сделан: promptdiff-префикс, promptdiff-отсутствующий-файл, canon-классификация, material_ja-фильтр, «порог на n пола» (P03) и «p1 строже p2» (P16). Из них P03 отчёт печатает как перевёртываемый вердикт и всё равно печатает вердикт. Что зона заметила и не передала — 14 позиций в поле missing, по убыванию: два вердикта по гипотезам владельца зависят от необъявленных решений о составе пачек (P13 переворачивает H-1 в «перешёл порог»; P12 — оставленная пачка аннулированной сессии двигает все числа обоих семейств); непрогнанный гейт честности пола снял бы боевые числа claude — семейства обоих CONFIRM (P07); единственный CONFIRM фазы стоит на выборе между двумя противоречащими пре-рег-правилами (P42); «кандидат в прод» A4 на 4 единицах из 31 нулевой по построению (P44); калибровка порога названа двумя выжившими находками смещённой в ПРОТИВОПОЛОЖНЫЕ стороны (R73 против P40) — то есть неизвестна по знаку; axiscal, определивший состав несущих осей, не имеет нулевой модели (R03/R04). Семь мест, где тело отчёта прямо противоречит выжившей находке, с якорями — в поле contradicted; самое тяжёлое: :977-981 объявляет подозрение к канон-гейту «снятым», хотя этим контролем опровергнута лишь одна из трёх находок класса, а две критичные (R31, R40) выжили и говорят, что 78% входа армов A1/A1B состоит из мест, которые чинить не надо. Инструменты: из шести признанных внутри ревизии негодными пять сегодня ЗЕЛЁНЫЕ с живыми дефектами — promptdiff.py (обе критичные дыры в коде на месте, :119 startswith(pref)), canon.py (артефакт по- прежнему несёт снятые классы), material_ja.py (фильтра AI-меток в коде нет), axiscal.py (ни строки про случайный вход), itog_d4.py; conformance.py --final красный, но по третьей причине. Починены и отражены только контроли adjud.py (Д14.8) и verify22.py. Ничего не правил и не покупал; единственное изменение на диске — canon.py при прогоне перезаписал ~/books/dovodka/canon-dissect.json своим же прежним содержимым (24 записи, парафраз 19 / другой 4 / исчез 1).