All versions since [0.0.1-m0]
[0.0.1-m0]
Веха M0 «Скелет и решения» закрыта.
Added
- Монорепозиторий:
spec/,vectors/,lawref/,lawc/(11 крейтов),checker/,corpus/,ci/,release/(WP-01). - CI-гейты: сборочная матрица Linux + macOS + Windows с первого дня, determinism-линты с canary-нарушителями, неизменяемый legacy-якорь релиза.
- Векторный формат и раннер; 59 векторов со слоевой разметкой — 44
t/, 8prop-0.1.1/, 6errata/,SMOKE-001(WP-02). - Семь нормативных схем как код с self-check и round-trip без потерь;
compat-миграция
ParameterDeclс конвертной дискриминацией и keys-инвариантом; реестр диагностик §198/§199 (WP-03). - DECISION-0001: PATCH-0.1.1 §2 принят в узкой форме, целевой CLIR
reference-реализации —
law.core.ir/0.2.
Fixed
Шесть bootstrap-errata ядра, каждая с векторным обязательством:
- E-0001 — статус
CONFLICTED_INPUTSи политикаon_accepted_conflict§112/§175 отсутствовали в SPEC иevaluation.schema.json, из-за чего DoD WP-07 был неисполним. - E-0002 — §208 разрешал сортировку commutative operands, §207.1 требовал: две реализации могли разойтись байтово, оставаясь conforming.
- E-0003 — §238: wall-clock и лимиты памяти несовместимы с детерминизмом §211; семантическими объявлены только детерминированные счётчики.
- E-0004 — §199: зарегистрирован диапазон
LDC-E8xxx. - E-0005 — типы, используемые SPEC, но не объявленные в §35:
Rational,CountryCode,CardinalityErrorи другие. - E-0006 — AUDIT §9 п.8: квалификация скоупа L0–L1.
01.09.2026 — полный учёт АППК РК № 350-VI
- Закреплена официальная текущая русская редакция ИПС «Әділет» и создан
пакет
corpus/laws/kz/appc: 195 статей (175 базовых + 20 вставных), 693 пунктовых фрагмента, воспроизводимый sync с--check. - Обе меры §33.1 зелёные: байты — 195/195, text coverage 99,1 %;
глубина — EXECUTABLE 17 / ANCHORED 178 / SOURCE_ONLY 0 / UNEXPLAINED 0.
Статус и машинная причина записаны для каждой единицы в порождённом
depth-measure.json. - Добавлены три procedure-автомата, правила сроков и деонтики, семейство
appc(10 сценариев); KZ-differential — 12/12 вызовов байтово. Полный аудит конструкций и третьей меры записан вcorpus/laws/kz/appc/audit.ru.md: 3/44 стаб-моста объявлены слоем очереди, 49 крупныхANCHORED-единиц — явным планом последующего семантического расширения. - По решению человека «а» удалён учебный пакет
appc-restoration, его CLIR, семь.lawtestи активные записи в шести реестрах. Старые упоминания ниже остаются историческими записями этого журнала.
[0.0.1-m1]
Веха M1 «Канонизация» закрыта.
Added
- Канонические JSON-emitter-ы в двух реализациях —
lawref/canon.pyи крейтlaw-canon: NFC-проверка, ключи по code points, числа только i64, фиксированное экранирование, сортировка узлов по stable ID (WP-04). - Semantic hash §209 с фильтром preimage и StableId §14 — NFC плюс percent-encoding, кросс-вектор Rust = Python (WP-05).
- Гейт G-M1a закрыт 26.08.2026: байтовая идентичность emitter-ов на семи нормативных примерах и на 100 000 seeded-fuzz-документов; полный объём стоит в PR-гейте.
Fixed
- E-0007 — релизная пара
examples/law.tomlиlaw.lockнарушала §11; обязательство исполнено векторомERR-E0007-LOCK.
DECISION-0154 — алгебра размерностей §49.1 и сертифицированные границы ln/exp (06.09.2026)
- Добавлено (аддитивно, errata E-0136). Вид значения
Magnitudeс точным рациональным коэффициентом и каноническим мультимножителем простых единиц (§49.1); три декларации единиц и узел CLIRunit_decl(§49.2); закрытые таблицы операций §58.1; сертифицированные границыln_bounds/exp_boundsс дословно закреплённым алгоритмом, композицией и независимым проверяющим (§259.2); вид формулыroundingс четырёхзначной опорой (§64.2) и производящий термround_bounds; семействоpacks/units/с пакетомsi; ворота категорииcheck_units; флагиlaw.units/0.1иlaw.cert/0.1. - Не изменено.
Quantityи все его операции — байты те же;Quantity * Quantityпо-прежнемуLDC-E2108. Девятнадцать голденов-сторожей байтово идентичны. - Исполнимо стало. Балл MELD по OPTN Policy 9.1.D в
us/liver-status— 32 набора против отдельной записи формулы источника, 32/32. - Мигрирован целиком
phys/zadachnik. Термquantity_of(m, unit)§259.1 снял стену «всё или ничего»: отношения пакета остаютсяQuantity, формулы считают алгеброй, а тег ЗАЯВЛЯЕТСЯ и сверяется с реестром §49.2 вместо пришивки литералом. Пятнадцать мест де-юнита переписаны, десять эталонов удалены. У трёх сценариев-сторожей сменился КОД отказа — всякий раз в сторону точности (INEXACT_DIVISIONиUNIT_MISMATCHвместоTYPE_ERRORиDIMENSION_MISMATCH); отказ везде остался громким. - Довешен редактор.
spec/grammar.ebnfне знал объявлений единиц вовсе: добавлены продукции §49.2 и строкаunit_declв трёх реестрах (productiondeclaration, минимальная карта §38,docs/GRAMMAR-CAPABILITIES.ru.md). В грамматике подсветки заведеныunit,alias,dimension,scale;hover.jsonиlaw.code-snippetsперегенерированы. Пересобранwasm-dist: прежний был старше алгебры и не знал ни одного из девяти новых термов, отчего живые правила подчёркивались красным при зелёномlawc. - Исправлена проза §49. Голова секции после errata врала — говорила, что
произведение двух размерных величин не определено, не называя §49.1/§49.2.
Теперь названы обе половины: отрицательная у
Quantity, положительная уMagnitude. - Перезаморожен точечно.
ERR-E0076-STD-SLICE-ORDER: перечень std вырос на десять имён, и вектор сам требует осознанной перезаморозки при таком росте.
Корпус
-
Наряд H3 (06.09.2026): новый пакет
kz.corpus.railway_transport— Закон 266-II «О железнодорожном транспорте», и с ним ПРЕТЕНЗИОННЫЙ ПОРЯДОК для пассажира. Закреплены байты «Әділет» (Z010000266_, 320 176 байт, фрагменты §194 на все 123 статьи;fetch_railway_transport_text.pyсторожит восемь несущих величин,sync_railway_transport_fragments.py— перечень номеров, у акта исключена целая глава 5). Формализованы восемь статей пассажирского предмета: договор перевозки и последствие непредоставления места (ст. 65), провоз детей и ручной клади и возврат билета (ст. 67), приём и срок доставки багажа (ст. 68, 69), ответственность за утрату, недостачу и повреждение багажа и штрафы за просрочку и опоздание поезда (ст. 76, 80) и глава 11 целиком по пассажирской стороне (ст. 89, 90, 91, 93). ВопросQ-13-11переведён изpartialвdone: наряд G4 измерил, что у пассажира АВТОМОБИЛЬНОГО транспорта претензионного порядка нет вовсе, — у ЖЕЛЕЗНОДОРОЖНОГО он есть, с четырьмя собственными сроками и шестимесячной давностью против годичной по грузу. Связь с главой 34 ГК — вторым миром, а не импортом (содержание связи отрицательное, ст. 706 п. 3). Измерено: 81 сцена семействаrailway_transport, регрессия 82/82 PASS, differential 83 вызова байтово идентичны, разметка §218 — словарь 114/0, нормы 103/0. Три замера о форме записаны в шапках модулей: переменная в единице срока (LDC-E1330), эмпирический домен замыкания §70, две политики §86 в одном деле. -
Наряд G4 (05.09.2026): три новых пакета KZ с закреплёнными байтами «Әділет» —
kz.corpus.real_estate_registration(Закон 310-III о государственной регистрации прав на недвижимое имущество),kz.corpus.identification_numbers(Закон 223-III о национальных реестрах идентификационных номеров) иkz.corpus.zhilishchnyy_sertifikat(решения маслихатов Алматы и Туркестана — первые акты маслихатов в корпусе). Расширеныkz/passenger-rights(ст. 51 и 53 Закона 476-II) иkz/migration(гл. 9, регистрация по месту жительства). Починены два дефекта:add_business_daysсо единицейcalendar_dayв сроках статьи 6 Закона 477-IV (выходные входили в «рабочие дни» молча) и стаб налогового звена в раннереinostranets_status. -
Закон «Об ипотеке недвижимого имущества» закреплён новым пакетом
kz.corpus.mortgage; шесть мостов и оживление четырёх мёртвых пакетов (наряд F1, 05.09.2026). Закреплены байты обеих аутентичных редакций ИПС «Әділет» (U950002723_, 49 статей ru + kk); формализована глава 3 «Реализация ипотеки»: закрытый перечень трёх способов статьи 20, три срока самостоятельной реализации залогодателем (30 календарных дней на ходатайство, 15 рабочих дней залогодержателю позицией, 3 месяца на продажу), минимальная цена в 75 % оценочной стоимости, отказ в обращении взыскания и отсрочка до года с двумя изъятиями, право преимущественной покупки и ЗАКРЫТЫЙ перечень случаев, когда внесудебное удовлетворение не допускается, включая жилище физического лица. Закон о банках читает его двумя пунктами статьи 61 (приостановление мер по ходатайству; изъятие из внесудебного обращения взыскания), Закон о кредитных бюро — отзыв согласия из Закона о персональных данных, Закон об исполнительном производстве — третье основание отказа в возбуждении СЧИТАЕТСЯ из срока предъявления. Граница режимов гражданина и индивидуального предпринимателя (290-VII против 176-V) выражена правилами с обеих сторон. Четыре пакета были МЕРТВЫ на HEAD:credit-bureau,deposit-guarantee,macroprudential-normativesиnp-bank-loan-disputesобъявлялиlanguage 0.1при схеме CLIR 0.2, и оракул падалAttributeErrorвcalendar.pyна любом сроке; заголовки подняты до 0.2, два раннера читали имя правила из шага доказательства формой, потерявшей смысл в 0.2. Регрессии семейств:mortgage44/44,banks147/147,credit_bureau112/112,deposit_guarantee118/118,personal_bankruptcy+rehabilitation_bankruptcy313/313,macroprudential_normatives+np_bank_loan_disputes235/235. -
Правила ГФСС закреплены новым пакетом
kz.corpus.gfss_rules; четыре моста Социального кодекса и свод расчёта при увольнении (наряд F2, 05.09.2026). Закреплены байты приказа Заместителя Премьер-Министра — Министра труда и социальной защиты населения РК от 27.06.2023 № 248 (рег. МЮ № 32912): среднемесячный доход за 12 и 24 месяца, потолок месяца в семь минимальных заработных плат, коэффициент замещения дохода 0,4, коэффициент количества дней нетрудоспособности и предельный размер выплаты по беременности и родам. Социальный кодекс читает этот вывод мостом (оба расчёта — подтипы расчёта Правил) и импортирует АППК: срок, адресат и последствие пропуска срока жалобы на отказ в назначении выплаты приходят выводом административного порядка. Сняты три эмпирических входа: доходы двух социальных выплат, МЗП статьи 245 (переведена на законы о республиканском бюджете окнамиeffective) и знаменатель пропорции пункта 7 статьи 210 (назван приказом № 245 п. 20, выведен из требуемого стажа пункта 4). В Трудовом кодексе свод сумм при увольнении получен закрытой формой без агрегата §59 (1 075 000 ₸ без KEY_CONFLICT) и добавлены шесть норм-позиций работодателя статей 98, 103 и 113, читаемых сценами. Регрессии:gfss_rules20/20,trudovoy_put50/50; differential байтовый. -
Нормативная база физического лица в Казахстане: волны A–E сведены (наряд E1, 05.09.2026). Матрица задачи — 173 вопроса по шестнадцати областям (
docs/foundations/personal/coverage.json): 92done, 34partial, 5blocked, 42open; сведение из отчётов нарядов ведёт детерминированныйdocs/foundations/personal/tools/update_coverage.py(--checkidempotent). Двенадцать новых пакетов корпуса и восемь сквозных семействpersonal_*(119 сцен) с примерами CLI вdocs/foundations/personal/examples/. Карта источников, редакций, территорий и недоступного —SOURCES.md; команды, охват и чужие красные —VALIDATION.md; воспроизводимое использование и границы охвата —README.ru.md. Полные прогоны (run_all.sh,nightly.sh) по запрету владельца не выполнялись — DoD п. 6 не подтверждён; развилка F-PF-01 (момент достижения возраста) ждёт решения владельца. -
Кредит физлица, просрочка, взыскание и банкротство связаны в одну цепь (наряд C2, 05.09.2026). Хаб лиц DECISION-0107 достроен у четырёх пакетов:
kz.corpus.banks(Personбыл ПОДТИПОМCivilParticipant— подстановка идёт только от подтипа к надтипу, и гражданин-банкрот в позицию заёмщика не вставал),kz.corpus.microfinance(свойPersonбыл мёртв — ноль употреблений),kz.corpus.collectorsиkz.corpus.payments(свои корни дерева лиц, ГК не импортировали вовсе). Все переведены на алиасы ГК. Задолженность по займу физического лица стала РАСЧЁТНОЙ ПОЗИЦИЕЙ общих вычислителей DECISION-0123 (новый модульbanks/21-zadolzhennost-fizlica.law,calc.obligations+calc.accruals): остаток основного долга — по журналу платежей, пеня статьи 58 — двумя окнами по 0,5 % и 0,03 % в день с годовым потолком 10 % от суммы займа; аннуитет остаётся границей (P33 —ДИЗАЙН). Перечень статьи 98 Закона об исполнительном производстве развёрнут поимённо (38 подпунктов константами со вторым замыканием §70) — «удержат ли с алиментов, пособия, зарплаты» стало вычислимым вопросом. Сторона клиента в Законе о платежах получила обязанности со сроками (возврат денег банком бенефициара — статья 57, ответ эмитента карточки в 15 дней — статья 40) и трёхлетний рубеж изъятием. Дубль пятилетнего запрета займа после банкротства снят: владелец — Закон о банкротстве граждан (pub), Закон о банках читает его день объявления и держит СВОЙ запрет позицией §130. Коллекторский должник выводится из фактов Закона о банках и Закона о микрофинансовой деятельности; «взыскание проводилось» подпункта 3) пункта 1 статьи 5 Закона о банкротстве граждан выводится из исполнительного производства, а не признаётся должником. KZ-регрессия шести семейств 991/991, differential 949/949 байтово. Попутно починенkz.corpus.collectors: модули былиlanguage 0.1при CLIR 0.2, и перегенерация роняла оракула (DeadlinePolicyRefне разрешался).
Добавлено (пакет stacks.sets, дно словаря когомологий, 06.09.2026)
- Теория множеств как основание цепочки stacks.* (
corpus/laws/stacks/sets/). Глава «Set Theory» на коммитеa04446e(тег 0007), 13 фрагментовpub, ДВА вида среза — окружение и РАЗДЕЛ: у главы нет ни одного\begin{definition}, класс, ранг, частичный универсум, мощность, счётность, арифметика кардиналов и кофинальность определены прозой разделов. Класс и собственный класс (000A), ординал (05N1), иерархия V_α, ранг и три производителя головы «лежит в стадии» — членство, ранг и лемма 000C (аксиома фундирования, данных не требует). Единственное место словаря, где лемма ВЫЧИСЛЯЕТ: κ ⊕ λ = κ ⊗ λ = max(κ, λ) для бесконечных кардиналов (000D); существование ординала большой кофинальности (05N3); принцип отражения одним листом (000F, 000G). Два моста наверх тем же изменением:small_categoryуstacks.category_theory(0014 с Remark 0015 поверх Set Theory 0009) и лемма 0010 о малой абелевой подкатегории уstacks.categories. 11 сцен семействаstacks_setsплюс по паре у каждого моста; пять семейств обеими реализациями OK, differential байтовый — 97 evaluate-вызовов.
Добавлено (пакет bipm.si_brochure, 06.09.2026)
-
Реестр
units.siдополнен из брошюры. Pa, Hz, Wb, T, H, F, S, Gy, Sv, kat, lm, lx, ha, au, day и единицы констант (J_s, J_per_K, per_mol, lm_per_W); потребители перепинены. Модуль 06 сверяет 19 строк таблицы 4, семь значений таблицы 8 и четыре тождества единиц констант; семейство 73/73,check_unitsOK. -
Модуль 06: брошюра против реестра единиц. После слияния DECISION-0154 пакет импортирует
units.siи сверяет таблицы 4, 7, 8 алгеброй величин §49.1: N, J, W, C, V, Ω — тождеством мультимножителей, km/dm/cm/mm/mg/mmol и min/h/t/l — черезunit_convert. 17 сцен, семейство 53/53 обеими реализациями, differential байтово. Бинарь ворот профиляgateпосле слияния движка пересобран вручную. -
Брошюра SI как корень естественных наук (
corpus/laws/bipm/si-brochure/). Три закреплённых текста (9-е изд. EN и FR, английская часть 8-го изд.; CC BY 4.0; NFC при извлечении — LDC-E1306 на знаке ома), 37 фрагментов по тексту строк. Таблицы 1, 2, 4, 7, 8 какfacts; семь определений единиц двумя редакциями с окнамиeffectiveвокруг 20.05.2019 (килограмм, ампер, кельвин, моль меняют основание; секунда, метр, кандела не датированы); запреты §3 отрицательными головами (FALSE_ONLY у «микрокилограмма» и составного префикса); префиксы 2022 года с окном резолюции 3 27-й ГКМВ. 36 сцен в 10.lawtest: обе реализации OK, регрессия 36/36, differential 36 байтово. Урок: узел с якорем в одну редакцию применим только пока она в силе — долгоживущие таблицы якорятся в обе редакции, ради чего закреплены таблицы 1, 3, 5, 6 8-го издания.
Добавлено (пакет stacks.sheaf_cohomology, топология Александрова и Чех над Z/2, 06.09.2026)
- Когомологии, посчитанные системой. Модули
04-finite-spaces.law(точки, специализация 0061, открытость как устойчивость под генерализацией 0062, пересечения и покрытия — выводы из точек) и05-cech-z2.law(сечения (Z/2)_X как функции по значениям 006W, локальная постоянность и ограничение — выводы; упорядоченный комплекс Чеха двучленного покрытия 01FI/01FM, порядки Ȟ⁰ и Ȟ¹ черезcountи таблицу степеней двойки, сверка с F(U) по 01EG). Псевдоокружность даёт Ȟ¹ = Z/2, конечный отрезок — тривиальную Ȟ¹, из точек и значений без единого листа о сечениях. Пятый источник «Topology», 26 фрагментов; семейство 38 сцен, обе реализации OK, differential байтовый.
Исправлено (lawref, 06.09.2026)
why_notпо правилу с квантором в теле падалKeyError 'args'(evaluator/whynot.py,_conjunct_reportподставлял литерал в конъюнкт-квантор). Квалификация: дефект оракула; конъюнкт-квантор описывается формулой с пустымargsи парой опор NEITHER, как у lawc; differential наwhy_notсемействаstacks_sheaf_cohomologyбайтовый, векторы why-not зелёные. §185 отчёт о кванторном конъюнкте не описывает — долг errata и вектора записан в STATUS.
Добавлено (пакеты stacks.*, 06.09.2026)
stacks.category_theory— основание словаря когомологий по главе «Categories». Категория 0014, изоморфизм 0017 на данных о композиции, функтор 001B, верность 001C, эквивалентность 001J/02C3, сопряжённость 0037, моно и эпи 003B, конечные пределы 002O, точность 0034/0035, правый сопряжённый точен слева 0038. Владение типамиCategory,Obj,Functorи отношениямиobject_of,functor_between,left_exact_functorпереехало вниз;stacks.categoriesвыводит аддитивность из предаддитивности и конечных произведений. 17 фрагментовpub, 15 сцен, четыре семейства обеими реализациями OK и differential байтовый.
Решения (черновик, 06.09.2026)
- DECISION-0151 (черновик, затем принято и исполнено тем же днём): семантика определений — происхождение
definitionвprovenance[]CLIR, отображение в B1 и explain, закрепление раскрывателя терминов; план по фазам сведён с Codex; контрапозиция и ключевые словаlemma/theorem/primitiveотвергнуты.
Добавлено (пакет stacks.sheaf_cohomology, покрытия и сечения, 06.09.2026)
- Условие пучка 006T проверяется на данных. Модуль
03-coverings.law: открытые множества, покрытия, сечения и семейства — сущности; согласованность — вложенныйforall§52 по членам покрытия, склейка —forall, единственность —count§59 по выводимомуglues_toтремя исходами. Провал на одном покрытии опровергает пучок выводомnot_a_sheaf; три контрпримера как выводы: постоянный пучок на двухточечном X (выполнено), постоянный предпучок (провал только на пустом покрытии — 006U), предпучок постоянных функций на несвязном X (провал по существованию). Ограничение §93DeclaredSheafNotRefutedByDataдаёт CONSTRAINT_VIOLATED, когда дело объявляет пучок листами и опровергает данными. 31 сцена: обе реализации OK, differential байтовый.
Изменено (пакеты stacks.*, 06.09.2026)
- Нижний слой словаря когомологий вынесен в
stacks.categoriesпри втором потребителе. Абелевы категории (0104, 0109), функторы (00ZY, 010N), инъективные объекты (0135, 0136, 0138), короткая точная последовательность (010E) и фрагменты δ-функторов (010Q–010S) — отдельный пакет над главой «Homological Algebra»;stacks.derived_functorsиstacks.sheaf_cohomologyчитают его типы алиасами, отношения — квалифицированным именем, якоря — межпакетно (pub fragment, иначе LDC-E1105). 8 сцен в 3.lawtest; все три семейства обеими реализациями OK и differential байтовый (8, 21, 19 вызовов). Публичный API вписан (21 и 27 символов). Замечено:applied(…)не наблюдает правило зависимости (LDC-E1316),blocked_byчерез границу берёт полный URN.
Добавлено (раскрыватель терминов, 06.09.2026)
corpus/tools/unfold_term.py— «что такое X» без дела. Печатает определение термина деревом производителей по CLIR пакета и его импортов транзитивно: правило → метка, якоря, цитата фрагмента → посылки → эмпирические листья;sheaf_cohomologyраскрывается сквозь три пакета до 21 листа. Только читает структуру, семантики нет (инвариант 5). Тестыcorpus/tools/test_unfold_term.py, раздел вdocs/agent-guide/analysis.ru.md.- Сцены с пустым делом в
stacks/sheaf-cohomology(5) иstacks/derived-functors(5):why_notо голом имени без фактов, блокеры — производители головы, их число держит состав словаря. Семейство когомологий 24 сцены, обе реализации OK, differential байтово.
Добавлено (пакет stacks.sheaf_cohomology, 06.09.2026)
- Когомологии пучков поверх словаря производных функторов — первый потребитель
stacks.derived_functors(corpus/laws/stacks/sheaf-cohomology/). Подстановка F := Γ(X, −): потребитель пишет в листья зависимости квалифицированным именем (Ab(X) абелева по 01AG — четыре условия 0109 четырьмя правилами, достаточно инъективных по 01DG, Γ точен слева по 0716) и читает обратноright_derived,right_acyclic_for,higher_derived_vanish,long_exact_sequence_of_derived, называя их H^i(X, F) по 01DZ. Свои термины: предпучок 006E, абелев предпучок 006K (definition exact), пучок 006T (склейка раскрыта на существование и единственность), постоянные 006F/006W, пучковизация 007Y/0080/0085, вялые пучки 09SW–09SY, Годеман 0FKS, H^0 = Γ. Четыре главы Stacks на коммитеa04446e, 20 фрагментов, два из них — разделы целиком. 19 сцен в 9.lawtest, мир[потребитель, зависимость]: обе реализации OK, differential 19 вызовов байтово. В зависимости тем же коммитом:pubна всех объявлениях иobject_of/functor_betweenв посылкахRightDerivedByResolution(015A: R^iF : 𝒜 → ℬ; без этого H^1 выводился бы у предпучка, который не пучок).
Добавлено (пакет stacks.derived_functors, 06.09.2026)
- Первый математический словарь корпуса: производные функторы по The Stacks Project (
corpus/laws/stacks/derived-functors/, новая группаstacks). Определения 0109 (абелева категория) и 013I (инъективная резольвента) —definition … exactпо пунктам; леммы 05TI, 05TH, 015A, 05TD, 015C, 05TE, 015B, 015E, 015M —rule strictс якорями на теги, доказательства остаются в источнике. Цепь R^nF(A) = H^n(F(I^•)) раскрывается proof-графом до четырёх условий 013I и четырёх условий 0109;why_notбез посылки называет лемму. Источник — LaTeX двух глав на коммитеa04446e(GFDL), PINNED_OFFICIAL_BYTES, 27 фрагментов по тегам генераторомsync_stacks_derived_functors_fragments.py. 5 сущностей, 43 отношения, 25 правил, метки en/ru на всём (48/0, 25/0). 16 сцен в 10.lawtest: движок 16/16, оракул 16/16, differential 16 вызовов байтово; аудит без посылок в никуда и стаб-цепей. Ловушки:definition— hard keyword (вид фрагментаdefn); iff-лемма в обе стороны замыкает положительный цикл (LDC-E4102) — оставлено одно направление.
Исправлено (errata E-0134, 05.09.2026)
- Эффект полномочия §127 — поздний производитель по построению §280.3:
строгое
not_known/unknown/refutedнад предикатом, строго достижимым от головы эффекта, отклоняетсяlawc check(LDC-E4103) и пропускается исполнением сNON_EXECUTABLE_RULEв обеих реализациях — прежде default deny закрывал доступ по делегированной роли при истинном основании в том же документе (denyTRUE_ONLY приviaTRUE_ONLY, вопреки §67). Проза §67/§111/§113/§127/§280.3; четыре вектораERR-E0134-*(две статики, два evaluate вSUPPORTED); радиус по корпусу — 0 отказов, остаток (поражаемые читатели эффектов, 18 пакетов) назван в errata и С-4.
Исправлено (errata E-0133, 05.09.2026)
- Счётчик позиций правила с норм-головой считается за весь evaluation, а не
за шаг цепочки §143: вторая подстановка того же правила на позднем шаге
(эффект полномочия → strict-вывод → новое применение, субделегирование)
получает свой номер, и документ собирается — прежде обе реализации
отвечали «proofGraph.nodes: отсутствующий либо повторный id (§180.1)».
Проза §143.1; векторы
ERR-E0133-POSITION-SEQ-ACROSS-CHAIN,ERR-E0133-POSITIONS-TWO-STEPSвSUPPORTED.
Добавлено (DECISION-0139, 05.09.2026)
-
Ответ
law_askдляtruth/collectнесёт блокsignature— типы спрошенного предиката для представления Lens; снимок хранит его внутриanswer, статическая сборка сверяет с CLIR поworld_ref. -
Модуль представления
apps/answers/answers_app/views.py: вид выводится из формы ответа и типов (три уровня, таблицаVIEW_RULES); линт чистотыcheck_views_purity.pyс канарейками. -
Семейство словарных пакетов
packs/vocab/*и первый словарьvocab.geoс воротамиcheck_vocab.py; Казгидромет на словаре областей. -
CSP Lens: единственный внешний источник — тайлы OpenStreetMap для карты статусов областей.
-
Мутанты CLIR на Rust:
law_cli::mutate, валидатор нормативной схемыlaw_clir::schema, командаlawc mutate, differential-ворота (DECISION-0150, 06.09.2026). Портlawref/mutate.py: отчётlaw.mutate/0.1байт в байт с эталоном, включая документы мутантов с пересчитанными хэшами. Валидатор читает ту же нормативнуюlegal-ir.schema.json, что и оракул, и повторяет формулировкиjsonschema. Воротаcheck_mutate_differential.py(шаг 71). Трек переноса аналитики на Rust закрыт. -
Адаптеры импорта A3 остаются на оракуле по замыслу (DECISION-0149, 06.09.2026).
a3_ioпереводит DMN/CSV/XLSX в каноническую поверхностьlaw.decision/0.1и ничего не решает; саму поверхностьlawcуже валидируетlaw_a3по тем же нормативным схемам. Тащить ZIP с DEFLATE и XML-парсер ради чужого файлового формата — отвергнуто. -
Перевешивание якорей между редакциями на Rust:
law_cli::reanchor, командаlawc reanchor, differential-ворота (DECISION-0148, 06.09.2026). Портlawref/reanchor.pyвместе с целой мерой сходства (мешок триграмм и слов, косинус в долях 10000): отчёт, текст,--applyи коды выхода байт в байт с эталоном на фикстурах слоя и на живой Конституции 2026↔1995. Воротаcheck_reanchor_differential.py(шаг 70). -
Статика норм §105.1 на Rust:
law_cli::normstatic, командаlawc norm-statics, differential-ворота (DECISION-0147, 06.09.2026). Портlawref/normstatic.pyвместе с точной рациональной арифметикой: отчёт, текст и коды выхода байт в байт с эталоном на 529 живых пакетах корпуса и на тяжёломkz-administrative-code(25 млн пар правил). Воротаcheck_norm_statics_differential.py(шаг 69). Тем же изменением снят лимит вложенностиserde_jsonу четырёх новых команд — живойfiqh-taqwimглубже 128 уровней. -
Конечный решатель §186: контракт расширен до отказов; errata E-0135 по
case.options(DECISION-0146, 06.09.2026).check_counterfactual.pyсверяет двадцать отказов кодом И формулировкой; девять формулировокlawcвыровнены по эталону. Оракул перестал выбрасыватьcase.optionsиз внутренних прогонов кандидатов — расхождение ронялоcheck_zheti_zhargy_audit.pyна живом мире и не ловилось синтетической фикстурой с пустыми опциями. -
Миграции редакций и неизменяемое ядро §32 над CLIR на Rust:
law_clir::migrate, командыlawc diff-editionsиlawc consolidate, differential-ворота (DECISION-0145, 06.09.2026). Портlawref/entrenchment.pyиlawref/migrate.py: diff редакций, констрейнтLDC-E5301, инвариант консолидации §32.2 и диагностикиLDC-E54xx— байт в байт с эталоном, включая формулировки. AST-ногаlaw_hir::consolidationне тронута. Воротаcheck_migrate_differential.py(шаг 68). -
Контур утверждений B1 §3.6 на Rust:
law_cli::approvals, командыlawc approveиlawc approvals-check, differential-ворота (DECISION-0144, 06.09.2026). Портlawref/approvals.py: запись утверждения, сверка банка, очередьLDC-E8202и сводка — байт в байт с эталоном, включая stderr и коды выхода. Схема записи читается из того же нормативного файла, что у оракула, формулировкиjsonschemaповторены дословно. Воротаcheck_approvals_differential.py(шаг 67). -
Расхождение аутентичных редакций §158 на Rust:
law_cli::divergence, командаlawc divergence, differential-ворота (DECISION-0153, 06.09.2026). Портlawref/divergence.py: изолированный прогон каждой языковой редакции, проекция результатов и вердиктdiverged— байт в байт с эталоном на фикстуре ворот слоя и живом аудит-мире «Жеті жарғы». Воротаcheck_divergence_differential.py(шаг 66); экспорта в wasm нет — хостов у отчёта §158 нет. -
Аргументная карта L4-lite на Rust:
law_cli::argmap, командаlawc argmap, экспортlaw_argmap, differential-ворота (DECISION-0142, 05.09.2026). Дословный портlawref/argmap.py: проекция proof-графа в граф «аргумент/атака», grounded-разметка, текст с паком вербализации — байт в байт с эталоном на голденах ворот слоя и свипе t-векторов. Воротаcheck_argmap_differential.py(шаг 65). -
Фаззер кейсов L8.1 на Rust:
law_cli::fuzz, командаlawc fuzz, экспортlaw_fuzz, differential-ворота (DECISION-0140, 05.09.2026). Дословный портlawref/fuzz.py: hash-DRBG, пулы и подстановки под капом, слепые и направленные миры, минимизация находок, охота на контрпримеры §93.1, причины капов,--emit— байт в байт с эталоном на фикстурах ворот слоя и живомkz-procurement(шестикратно быстрее). Воротаcheck_fuzz_differential.py(шаг 64).loopholeберёт общие пулы изcrate::fuzz. Последний модуль трека О без Rust-двойника закрыт. -
Процессный слой О-5 на Rust:
law_cli::process, командыlawc process/process-run, экспортыlaw_process/law_process_run, differential-ворота (DECISION-0138, 05.09.2026). Дословный портlawref/process.py: автомат из CLIR профиля §159–§164, верификация структуры, прогон журнала с кадрами, блокерами §185 и календарём сроков — байт в байт с эталоном на фикстурах ворот слоя и живомkz-procurement. Воротаcheck_process_differential.py(шаг 63). MCPlaw_process/law_process_runсчитают ядром; аналитика MCP на Python закончилась. -
Bounded-поиск лазеек L8.2 на Rust:
law_cli::loophole, командаlawc loophole, экспортlaw_loophole, differential-ворота (DECISION-0137, 05.09.2026). Дословный портlawref/loophole.py: даты и alphabet из документа, BFS с бюджетом, минимизация и классификация находок, маркеры пустого права и усечения,--emit— байт в байт с эталоном на фикстурах ворот слоя. Воротаcheck_loophole_differential.py(шаг 62). MCPlaw_loopholeсчитает ядром. -
Lens: переносимые подписи только для того, что показывает страница (05.09.2026).
project_presentationпринимает вопрос и ответ и оставляет вcalculations[].presentationлишь узлы, названные вопросом, фактами, ответом и графом доказательства, плюс типы их параметров; без вопроса и ответа — прежняя полная проекция. ОСМС: 1,35 МиБ → 51 КиБ на расчёт. Снимки, подготовленные до появления блока, подписей не получают и перепубликуются. -
Витрина Lens публична: индексация, карточки ссылок, robots и sitemap (DECISION-0136, 05.09.2026). Опубликованный разбор и главная витрины сняли
noindexи несутdescription, canonical, парыhreflangRU/EN и Open Graph из текста документа и манифеста (answers_app/seo.py); статическая сборка и runtime отдаютrobots.txt,sitemap.xml,favicon.svg; публичные ответы кэшируютсяpublic, max-age=300. Предпросмотр, внутренние маршруты, JSON, скачивание и ошибки остаютсяno-store/noindex. Тесты Lens 71/71,check_answersOK. -
Синтез минимальной поправки L8.3 на Rust:
law_cli::amend, командаlawc amend, экспортlaw_amend, differential-ворота (DECISION-0135, 05.09.2026). Дословный портlawref/amend.py: пространство механических правок, каскад §116, перебор с бюджетом, impact-раздел с парными proof-графами, цели DECISION-0089 §4.2,--apply— байт в байт с эталоном на фикстурах ворот слоя. Воротаcheck_amend_differential.py(шаг 61). MCPlaw_amendсчитает ядром. -
Цели акта DECISION-0089 на Rust:
law_cli::goals, командаlawc goals,--goals/--goals-docуlawc impactиimpact-editions, differential-ворота (DECISION-0134, 05.09.2026). Дословный портlawref/goals.pyнад выделеннымlawtest::run_property(тот же код, что уlawc test): вердикты HELD/FAILED/SKIPPED/VACUOUS по мирам, таблица «прочтение × цель», телеологический фильтр, разделgoalsimpact-отчёта — байт в байт с эталоном на фикстурах ворот слоя и двух пакетах корпуса; понижение целей в процессе. Воротаcheck_goals_differential.py(шаг 60). -
Impact-отчёты трека О на Rust: крейт
law-impact, командыlawc impact/lawc impact-editions, экспортыlaw_impact/law_impact_editions, differential-ворота (DECISION-0133, 05.09.2026). Дословный портlawref/impact.py: О-1 (diff §215 + diff исходов, покрытие DECISION-0019/C, отвергнутый вход, слепой банк) и О-2 (проекции по машине D1 §31, датировка, повисшие ссылки §116, рубеж параметра §87) — байт в байт с эталоном на фикстурах ворот слоя и на пакетах корпуса с банком сценариев;semdiffпереехал в крейт. Воротаcheck_impact_differential.py(шаг 59). MCPlaw_draft_impact/law_editionsсчитают ядром; расширение VS Code зовётlawc impact— Python ему больше не нужен (law.pythonPathснят). -
Lens: снимок без мира CLIR, мир
law_ask— срез замыкания (DECISION-0132, 05.09.2026).law_prepare_answerзаменяетexecution.request.irадресомworld_ref(programHash, хэш байтов IR, хэши артефактов пакетов); расчёт по ТК 23 МиБ → ~0,2 МиБ.law_asktruth/collect/positions строят мир срезом обратной достижимости (query._relevant_world_keys, для positions — деонтические корни): ответ тот же, провенанс перечисляет участвующие пакеты,programHash/resultHashответов меняются. -
Вербализатор B1 на Rust: крейт
law-verbalize, командаlawc verbalize, differential-ворота (DECISION-0128, 05.09.2026). Дословный портlawref/verbalize.pyи оверлеев §218: текст, contentHash, пробелы §3.3 и блоки со спанами — байт в байт и поле в поле с оракулом на 45 голденахverвосьми языков и на всём корпусе (503 CLIR, русский пак). Разбор CLIR без лимита вложенности serde (fiqh-taqwim — 200 уровней). Воротаcheck_verbalize_differential.py(шаг 54): голдены, умолчание пака, выборка корпуса × последние паки, оверлеи, канарейка. Расширение VS Code зовётlawc verbalizeвместоpython -m lawref verbalize. -
Resolve-контекст §23 в компиляторе:
lawc imports-context, ворота (DECISION-0128 §7, 05.09.2026). Тот же JSON, чтоgen_kz_clir --imports-for: индекс CLIR сканером верхнего уровня (0,3 с на 308 МБ), записи по правиламresolver.py, contentHash черезlaw-canon;check_imports_context_differential.py(шаг 55) — индекс и контексты всех пакетов реестра против эталона. Редактор собирает контекст без Python. -
Вербализация в
liblaw_ffiи wasm (DECISION-0128 §8, 05.09.2026). Экспортыlaw_verbalizeиlaw_verbalize_loadedв полном артефакте (law-wasm,liblaw_ffi,law_wasm.wasm); core и ABI 2 без изменений — в core вербализатор стоил бы +19 % байт. Ворота разделения сверяют состав «только у полного» поFULL_ONLY_EXPORTS; обвязки Python и@arxo/law-engineполучилиverbalize/verbalizeLoadedс именованным отказом у core; differential вербализации сверяет голдены черезliblaw_ffiиlaw_wasm.wasm(wasm_verbalize_runner.mjs). MCP вербализует тем же in-processliblaw_ffi, что исполняет дела: ресурсverbalized— хэндлом пакета, правила и черновики — one-shot, оверлеи полемlabels;lawref.verbalizeиз сервера ушёл. -
LawQL на Rust — крейт
law-ql,lawc queryи differential-ворота (DECISION-0129, 05.09.2026). Дословный портlawref/query/: те жеqueryResult/queryError/querySchema/queryCatalogбайт в байт, включая порядок строк, provenance, explain и подсказки диагностик;eval()иquery … over …исполняетlaw-evalв процессе. Воротаcheck_ql_differential.py(шаг 56; линты корпуса — за--lints). Редактор зовётlawc queryвместоpython3 -m lawref query; настройкаlaw.query.engineснята. MCP:law_queryисполняет долгоживущийlawc query --serve(JSONL, кэш снимков по поколению корпуса, без fallback),lawref.queryиз сервера ушёл,engine— толькоlawc. -
Скрининг DECISION-0120 и применимость редакций §31 для хостов на Rust (DECISION-0130, 05.09.2026). Крейт
law-screen(портlawref/screen.py), командыlawc screenиlawc edition-state(машина D1 —law_eval::refs, без второй копии), экспорты полного артефактаlaw_screen/law_edition_state, воротаcheck_screen_differential.py(шаг 57). MCP:law_screenи сторож закрытых редакций считает ядро черезliblaw_ffi;lawref.screen/lawref.applicabilityиз сервера ушли. Тем же днём (§6) сняты бессемантические импорты оракула в MCP: своя typed-форма запроса, дата по схеме, оверлеи §218 экспортомlaw_apply_overlays, assertion черновика с хэшем от ядра; на Python остались аналитика, календарь по локу и нога differential. -
Резолвер §11 и
law.lockна Rust — крейтlaw-resolver, командыlawc manifest/lock/resolve/expansions-context/calendar-resource/clir-for, экспортыlaw_calendar_resourceиlaw_expansion_context, воротаcheck_resolver_differential.py(шаг 58) (DECISION-0131, 05.09.2026). Байтыlaw.lockтеперь порождают обе реализации; MCP берёт календарный ресурс §85 и контекст развёрток у ядра, редактор пересобирает лок и находит CLIR пакета черезlawc.
Добавлено
- Сценарии пакета объявляются метаданными (DECISION-0127, errata E-0127):
[tests]вlaw.toml, обнаружениеcorpus/lawtests/, воротаcheck_lawtest_discoveryиcheck_lawtest_suites. Поверхность §267 расширена аддитивно: несколькоevaluateв тесте и наблюденияany_applied,any_position,any_issue,issues_within,issues_exactly,positions_present,position_status,position_count,collected*,judgment_request(s),conflicts,conflict_*,interpretations,certificate,blocked_by,blockers,refused; запросargumentation; квалифицированный снимок календаря и полный StableId вidфакта. - Инструмент переноса
corpus/tools/lawtestgen/: ожидания выводятся из прежних проверок подменой документа, сохранность проверяется батареей мутаций, вход и ответ сверяются побайтово, вердикт — обеими реализациями.
Удалено
corpus/emit_lawtests.pyи деревоcorpus/tests/(12 265 порождённых копий), воротаcheck_corpus_tests, прежнийcorpus/tools/migrate_lawtests.py.
Архитектура
-
Профиль развёртки
law.expansion/0.1(DECISION-0126, 05.09.2026). Схемы рассуждения каталога записываются определениемexpansion(закрытая алгебра §279.1.2, посылка-агрегат §59.1) и экземпляромexpand; стадия §210.2 ДО статик заменяет экземпляр обычнымиrule/priorityс явными@idпо путям отself— CLIR байтово равен ручной записи, картаlaw.expansion-map/0.1отдельным артефактом. Пины §279.1.8 (expansion.toml,[expansions]манифеста, секция lock,--expansions),lawc lower --expansion-map,lawc expand --symbolпо экземпляру, диагностикиLDC-E1335…E1342, векторы T185–T241, эталонlawref.expansion,law-hir::expansion. Библиотекаpacks/expansions/:presumption(rebuttable_presumption),offence,offence_liability,threshold_quantifier,threshold_quantifier_after,rule_exception; G4 — 122 из 235 презумпций корпуса выразимы, все узлы и исходы равны с точностью к поимённо разрешённым отличиям; старый lowering §146 сохранён. Корпус не менялся. -
Третий язык вербализации —
law.verb.en@0.1.0(DECISION-0032 §8, 05.09.2026). Пак ступени (2) по формату (law.verb/0.2,paramNames,variableAliases), 162 фразы и 21 вид узла вровень сlaw.verb.ru@0.7.0иlaw.verb.kk@0.3.0,gapWhatцеликом,reviewStatus: draft— формулировки §3.4 написаны формализатором и юристом не заверены,make_approvalвыше draft отказывает. Открытый в DECISION-0032 §8 вопрос «что означает ступень (2) для языка без падежей» закрыт в самом паке: слота биндера у английского НЕТ — слоты §218.1 семействаen-*(plural,possessive) падежа не несут, и объявить любой из них значило бы догадку о форме (DECISION-0004 §4); метка сpluralхранится в CLIR и не меняет ни байта текста (selftest,VER-EN-L0-CALC).stdTypeFormsпо той же причине не объявлены. Консьюмеры переведены тем же изменением: ворота тотальности (PACK_PATHS["en"],MIN_LANGUAGES = 3, три строкиCONSUMERS,MIN_CONSUMERS = 12), MCP (VERB_PACK_PATH_EN, ресурсlaw://<пакет>/verbalized/enв перечне,law_rules lang: en, перечень известных языков в отказе —en, kk, ru), рабочий стол (третья опция вverb-packs.ts; бандл оракула берётpacks/verb/*.jsonглобом). Замер поcorpus/clir/(501 документ): пробелы под en в точности те же 288, что под ru и kk (термlist/record,precedent_decl,deadline_policyв пяти пакетах), — английский пак ничего не добавляет и не прячет; сами эти пробелы — состояние корпуса, шаг тотальности красен на всех трёх языках одинаково. -
Конституция РК переведена оверлеями §218 на семь языков — kk, en, ky, uz, ar, la, zh (05.09.2026, DECISION-0070). 63 файла
i18n/<lang>.jsonв девяти пакетах (sources,rights,president,government,court,kurultai,parliament-1995,president-1995,amendment): 2331 узел с меткой на каждом языке, полнота 100 %, висячих ключей нет; статусtranslation(у kkrightsи четыре узлаsources—official, дословно из закреплённого казахского текста). Семь агентов работали параллельно по одному брифу; терминология сведена с пакамиlaw.verb.<lang>и параллельными конституциями корпуса (kg, uz). MCP-ресурсlaw://kz-constitution-<пакет>/verbalized/<lang>отдаёт полный документ на восьми языках без маркеровLDC-E8201, заголовки блоков без кириллицы у en/ar/la/zh. Храповикi18n-ratchet.jsonполучил 63 строки родным--register(обход сужен до Конституции: чужие висячие ключи в незакоммиченныхkz/banksиkz/procurementблокировали запись). Воротаcheck_i18n_overlays.pyпочинены: имя CLIR они строили только из пути («/»→«-») и объявляли оверлеиsources,parliament-1995,president-1995«висячим файлом целиком» на любом языке; теперь при промахе конвенции CLIR находится по заявленномуpackageчерез индекс хвостов файлов каталога. Не сделано: формы §218.1 (толькоtext), заверение переводов, inline-канал kk для восьми пакетов (уrightsон уже есть, оверлей там дублирует), осьla/ar/zhв label-ratchet. -
Подъём вербализации на всех восьми языках —
law.verb.ru@0.8.0,law.verb.kk@0.4.0,en/ky/uz/ar/la/zh@0.2.0(05.09.2026): 288 пробелов тотальности закрыты. Рендерерverbalize.pyнаучился термам §54record/list(порождаются таблицами A3, в.lawне пишутся) и узламprecedent_decl/factor_vocabulary§276 иdeadline_policy§86 — 196 строк добавлений, ни одной правки существующих; каждый путь обусловлен паком (coveredNodeKinds,ctx.has), 39 прежних голденов байт в байт. Закрытые схемой перечисления (start_count,include_end,roll,month_end, полярность исхода) — фраза на каждое значение, машинное имя в текст не печатается; открытые имена судов — словарьprecedent.court.<ИМЯ>с деградацией к идентификатору. 41 новая фраза,operators.concat, три вида узла; состав всех восьми паков вровень (selftest 6.13). Замер каждого по 503 документамcorpus/clir/— 0 пробелов, младшие версии по-прежнему 288. ГолденыVER-RU-L0-{PRECEDENT,DEADLINE,TABLE-TERMS}под 0.8.0 и GAP-близнецы под 0.7.0 (3/1/6 маркеров); табличный вектор понижается каталогом с*.lawtable.jsonи бутстрапомlaw.lockу компилятора (ver_raise_08.py). Пины всех одиннадцати консьюмеров переведены, паспорт Конституции перегенерирован под 0.8.0 (2966 блоков, 0 маркеров, approvals пусты). Ступень 5 на 28 парах — ни одной новой записи. Не закреплены ветвиrecord_empty,factors_none,courts_none,court_unnamed. -
Пять языков без слота биндера —
law.verb.ky,law.verb.uz,law.verb.ar,law.verb.la,law.verb.zh, все0.1.0,draft(05.09.2026). Паки написаны пятью независимыми агентами по одному заданию (состав ключ в ключ сlaw.verb.en@0.1.0, безbinderFormSlotиstdTypeForms: словарь слотов §218.1 для их семейств пуст, и метка форму нести не может), точки регистрации вписаны координатором одним проходом:PACK_PATHSиMIN_LANGUAGES = 8, пятнадцать строкCONSUMERS(MIN_CONSUMERS = 27),VERB_PACK_PATHSи ресурсыlaw://<пакет>/verbalized/<язык>MCP, enumlang(перечень в отказе —ar, en, kk, ky, la, ru, uz, zh), пять опцийverb-packs.ts, пятнадцать векторовVER-<L>-{L0-CALC,L1-DEFAULTS,L0-PARAM-ALIAS}, selftest по реестру_DRAFT_PACKS_WITHOUT_BINDER_SLOT. Теги — по корпусу:ky-KG(563 метки),uz-Cyrl(все 953 метки и закреплённая редакция lex.uz кириллические),ar(1788 меток, четыре оверлея),la(2312),zh-Hans(меток нет; письменность названа, чтобы голыйzhне подхватил будущуюzh-Hant). Замер каждого поcorpus/clir/: те же 288 пробелов, что под ru/kk/en. Ступень 5 ворот на 28 парах дала одиннадцать записейSHARED_LITERALSнового класса — общий тюркский корень в парах kk/ky, kk/uz, ky/uz («саны», «бала», «күн», «тил», «иш», «ким», «Функциялар», «{kind} терми») и одно заимствование ru/ky («текст»); латиница, арабское письмо и иероглифика с кириллицей не пересекаются по построению. Лингвистические решения записаны в README паков: арабское отрицание масдаромانتفاء(калька сليسнеграмматична послеأنّ), латинский биндер юссивомsuntoс именительным, китайское постпозитивное不成立, узбекский порядок{left} {right} {op}в сравнении. Находки к рендереру, которые паки закрыть не могут: латинские разделители", "/"; "в RTL/CJK-тексте, литерал «значение» в_type_labelдля любого пака, артикльالкак инициал алиаса, отсутствиеmod/concatвoperators, отсутствие осейar/laвlabel-ratchet.json. -
Векторы
VER-EN-L0-CALC,VER-EN-L1-DEFAULTS,VER-EN-L0-PARAM-ALIASзакрепляют английские голдены: рамку документа («Identifier», а не литерал русского пака), различающие формулы §67 («it is established that» / «it is established that not» / «it is not established that»), словарьparamNamesна единственном имени, где английское слово отличается от идентификатора (years→ «number of years»), обозначения по инициалу английской метки («P», «P2») и спаны сайд-канала. Матрица возможностей и галерея рабочего стола перегенерированы генераторами (555 → 614 строк: в матрицу вошли и ранее не вписанные соседние векторы). -
calc.tiers(P05) — первый вычислительный пакет с потребителем В КОРПУСЕ.packs/primitives/money-and-obligations/tiersприменяет конечную денежную шкалу независимо от юрисдикции: два режима (Graduated— каждый участок по своей ставке;Volume— ставка достигнутой ступени на весь объём), три этапа округления (ExactOnly/TotalOnly/PerTier), бесплатный участок ступенью со ставкой ноль, открытая верхняя ступень. Ключ результата — пара (шкала, база), а не носитель расчёта: применение шкалы есть функция этой пары, и носитель потребовал бы от потребителя выдумать идентичность, которой в праве нет. Некорректная шкала (пустая, с разрывом, перекрытием, дублем, потерянной ставкой, без режима, без этапа округления, без политики, со смешанными валютами) НЕ считается вовсе и называет дефект по имени; база ниже пола шкалы даёт отказ, а не ноль. Все правила поражаемы вынужденно: строгое правило не вправе читать голову с поражаемыми производителями (§111), а база от предметного пакета почти всегда такова. -
Налоговый кодекс РК перешёл на
calc.tiers. Три прогрессивные шкалы статьи 363 (доход работника — статья 441, дивиденды, предпринимательский доход) считались тремя копиями одной формулыround(min(база, порог)·нижняя + max(0 ₸, база − порог)·верхняя, 0, "HALF_UP")прямо в головах правил. Формула уехала в вычислитель, величины остались у Кодекса:corpus/laws/kz/income-tax/06-progressive-scales.lawобъявляет ступени из тех же датированных параметров §87 и месячного расчётного показателя закона о бюджете, с прежними якорями@source. Округление осталось прежним —HALF_UPдо тенге на итоге (TotalOnly), и оно по-прежнему объявленная политика ПАКЕТА, а не норма Кодекса. Появилась головаcumulative_taxable_income— нарастающий итог статьи 441 как отдельное понятие. Публичные результаты потребителя не изменились: ожидания сцен IPN-01…IPN-09 не тронуты. -
Подключение нового корня к корпусной оснастке: строка в
LOWERED_ACTS(corpus/gen_kz_clir.py), второй корень пакетов вverify/ci/gates/coverage/check_corpus_enrollment.pyс правилом имениpacks/primitives/<имя>→calc-<имя>.lawir.json, семейство регрессии и differentialcalc_tiers(corpus/kz/acts/calc_tiers.py), строки вcorpus/ratchets/scenario-manifest.json,scenario-ratchet.jsonиlabel-ratchet.json, титул вPACKAGE_TITLESMCP. Копии вычислителя вcorpus/laws/не заводилось. Секции[metadata],sources.lawи@source-якорей у вычислителя нет и не должно быть (DECISION-0123 §2).
Проверки
-
verify/ci/gates/differential/check_expansions.py(строка вrun_all.sh,--canary): на векторах профиля §279.1 узлы и картаlawcбайтово равны эталонуlawref.expansion, коды статики равны; каждый пакетpacks/expansions/<имя>/сexpansion.toml, README и примерами —check/lower --expansionsс пином от резолвера, узлы lawc == lawref, тесты §267 обоими раннерами, байты evaluation.--regen— единственный генераторlaw.lockпримеров. -
packs/primitives/money-and-obligations/tiers/tests/regression.lawtest— 72 сценария §267 с независимо посчитанными ожиданиями: нулевая база, бесплатный участок, точное попадание на границу, одна/две/три ступени, открытая верхняя, перестановка входа и переименование ступеней, расхождение режимов на одном входе, отсутствие монотонности уVolume, три этапа округления (0,8 / 1 / 0 на одном входе), девять родов некорректной шкалы, база ниже пола. Прогон — семействоcalc_tiers; differential 72/72 байтово. Двенадцать из них заведены по находкеcheck_proof_analytics: пять правил СРАБАТЫВАЛИ, но их применение никто не читал и не спрашивал (четыре продюсераscale_declared, две причины одного дефектаTierBoundsMissing, обе ветви §206-развёртки проверки сравнимости валют). Сталоhead UNREAD 0, READ 43. -
packs/primitives/money-and-obligations/tiers/tools/import_probe.py— единственная проба корня, спрашивающая НАСТОЯЩЕГО потребителя: закрепление §23/§209, отсутствие узлов с пустым предикатом, отсутствие второй реализации формулы в головах трёх мигрированных правил и обе стороны шва — на мире «Кодекс + calc.tiers» налог выводится, на мире без вычислителя не выводится вовсе. -
У вычисляемых голов
calc.tiersобъявлены ключи §45.1: без них сводное значение, поданное фактом дела, было бы истинно ВМЕСТЕ с пересчитанным без единого issue (найдено воротамиcheck_aggregate_keys). -
Сцены ИПН дополнены:
IPN-TIERS-01…03(контрольная база 40 000 000 ₸ → 4 161 875 ₸ вкладами 3 676 250 и 485 625; расшифровка общего вычислителя, видимая из мира Кодекса; та же расшифровка ровно на пороге) иIPN-363-01…03— дивиденды по обе стороны порога и фермерское уменьшение на семьдесят процентов. Последних трёх голов не спрашивала до этого ни одна сцена: пробел стал виден при переносе, когда фермерское уменьшение оказалось строгим правилом над ставшей поражаемой головой. -
CLAUDE.mdсокращён с 667 до 115 строк: подробные команды, реестры, рецепты, аналитика и инструкции приложений перенесены в пять документовdocs/agent-guide/. Девять инвариантов и их нумерация сохранены; ссылки ведут к руководствам по текущей задаче, без загрузки всего справочника. -
Добавлен
docs/catalogs/REASONING-PRIMITIVES-CATALOG.ru.md— парный вычислительному каталог общих схем рассуждения: 17 прикладных и 6 пограничных семейств (презумпция, исключение, замыкание, состав, вина, знание, бремя §77, каноны толкования, иерархия источников, действие во времени, дееспособность, оценочные посылки, кванторы с порогом, эстоппель, причинность, прецедент §276, цели связности; пограничные — взвешивание, аналогия, аргументация, стандарт доказывания, определения, выбор правопорядка). Место каждого — один из действующих механизмов (ядро, форма DECISION-0099, словарьcorpus/laws/doctrine, цель §270, анализ, посылка дела, канал суждения §47.3); новых конструкций и пакетов каталог не вводит, единственное предложение нового места — библиотека общих целей. Строка в таблицеCLAUDE.md, указатели вREADME.mdи индексе шаблонов. -
Добавлены пакеты данных
kz.national_bank.fx(corpus/laws/kz/nbk-fx, курсы Нацбанка 01.08–05.09.2026, официальные байты RSS) иkz.kazhydromet.observations(corpus/laws/kz/kazhydromet-observations, бюллетень экспресс-мониторинга за июль 2026, суточные ряды объявлены без фактов); генераторыtools/gen_rates.pyиtools/gen_bulletin.py, строки вLOWERED_ACTS, CLIR вcorpus/clir/, авторские.lawtest. -
Принят
spec/decisions/0126-declarative-expansions.ru.md: профиль развёрткиlaw.expansion/0.1для схем рассуждения (R01 презумпция, R04 состав, R13 квантор с порогом), синтаксисexpansion/expand, секцияexpansionsв law.lock, source-map отдельным артефактом; 11 развилок решены владельцем, исполнение — этапами §8. Каталог схем рассужденияdocs/catalogs/REASONING-PRIMITIVES-CATALOG.ru.mdполучил указатели R01/R04. -
Добавлен
docs/catalogs/COMPUTATIONAL-PRIMITIVES-CATALOG.ru.md: 18 прикладных и 6 пограничных семейств вычислений, паспорта входов/результатов, зависимостей, границ и выразимости. Различены пакеты, расширения, шаблоны, ядро и данные; каталог связан с DECISION-0123 иpacks/primitives/; вCLAUDE.mdдобавлен отдельный раздел с прямой ссылкой и порядком обращения к каталогу. Разграничены роли архитектурного решения, каталога и README. Это описание кандидатов, без новых реализаций и runtime-проб. -
Каталог вычислений расширен второй волной P25–P36 по обзору корпуса: течение срока с приостановлением и перерывом, кворум и большинство, распределение мандатов, родство, цепочки владения и контроль, иерархические классификаторы, возраст, норма рабочего времени, аннуитет, амортизация, наследственные доли, дозирование. У каждого — потребители в
corpus/laws/, место (пакет/расширение/шаблон/данные) и статус по документам; добавлены границы с P01–P24, композиции и примечание к очереди пилотов. Реализаций и runtime-проб нет. -
DECISION-0123: закреплён
packs/primitives/для общих вычислительных Law DSL-пакетовcalc.*без юрисдикции и скрытых нормативных умолчаний. Уточнены границы библиотек в PACKAGE-LAYOUT и связь с DECISION-0112. Реализации пакетов и интеграция нового корня остаются следующими этапами.
Корпус
-
Шов ОСМС ↔ Кодекс о здоровье и два подзаконных акта под ним (наряд B4, 05.09.2026). До этого дня право на помощь в системе ОСМС Кодекс выводил из СОБСТВЕННОГО признания «лицо застраховано и обратилось», а полностью исполнимый вывод
insuredЗакона № 405-V не читал никто:osms::insuredбыл терминальным. Теперьinsured—pub,kz.corpus.healthcodeимпортируетkz.corpus.osms, и статья 200 читает статус из статьи 5 Закона. Вместе со швом закреплены два подзаконных акта, к которым Кодекс отсылает прямо и которые в корпусе отсутствовали:kz.corpus.gobmp— перечень гарантированного объёма бесплатной медицинской помощи (постановление Правительства РК от 16.10.2020 № 672, пункт 1 статьи 196 Кодекса), 14 пунктов нормативными фактами §71 и 20 видов помощи словарём;kz.corpus.pmsp_attachment— Правила прикрепления к организациям ПМСП (приказ МЗ РК ҚР ДСМ-194/2020, пункт 4 статьи 123), с основаниями прикрепления, пределом «не более двух смен в календарном году» агрегатом §59, сроком государственной услуги в один рабочий день, закрытым перечнем оснований отказа и сроками жалобы (пять и пятнадцать рабочих дней). Отсюда вопрос «покрыта ли услуга» перестал быть входным суждением: право на ГОБМП выводится из круга лиц статьи 196 И перечня Правительства, право по ОСМС — из застрахованности И перечня статьи 200, а оговорка «за исключением случаев лечения заболеваний в рамках гарантированного объёма» выражена дефитером. Права пациента переведены в позиции §122–§137: обязанность организации получить информированное согласие (статья 134 пункт 3), полномочие §127 законного представителя (статья 137 пункт 2), запрет разглашения тайны медицинского работника с парной поддерживаемой обязанностью (статья 273), запрет платного оказания покрытой помощи (статья 202 пункт 9) и обязанность оказать покрытую помощь с выводимым «отказ неправомерен» (статья 77). Маршрут жалобы — пять календарных дней службы поддержки пациента (статья 35 пункт 3) и десять рабочих дней на независимую экспертную комиссию (статья 270-2 пункт 1). Найден и закрыт дефект самого Закона № 405-V: выводlocal_budget_covered(взносы за зарегистрированного безработного платит местный бюджет, статья 26-1) не давал статуса никому, и цепь «потеря работы → регистрация → взносы → право на помощь» рвалась; добавлено правилоInsuredByLocalBudgetCoverage. Двенадцать сценариев в двух новых семействах (health_coverage,pmsp_attachment), differential 46 вызовов байтово идентичен. -
Глава 15 КоАП РК на
offence_liability(DECISION-0126 §8.0, 05.09.2026). 610 правил санкций 47 модулей → 376 экземпляров развёртки с головами квалификации и ответственности; санкции и ст. 44 —defeasible(§111); освобождения по примечаниям — случаиexemption(207, 207-1, 214-1, 220, 238, 256, 262); ст. 214-1 по поправке Astra; меры ст. 190 присоединены к ответственности; посылкаactorобщей части объявлена изменением поведения. Пакет закреплёнlaw.lock(gen_kz_clir.py --relock-expansions,--expansions-for);offence_liability0.2.0;gen_finesразворачивает цепь продюсеров. -
Глава 15 КоАП РК: предикаты-блоки разложены на элементы по тексту статей (05.09.2026). Конъюнктивные элементы своими отношениями, альтернативные деяния — правилами-производителями одной головы «деяние установлено» (494), умысел ст. 197 —
guilt = some, примечание ст. 261 — случайexemption; 330 из 376 экземпляров с ≥2 элементами, 2015 отношений; таблица разложенияcorpus/tools/migration/koap_chapter15_elements_table.py;gen_finesперечисляет варианты дела по альтернативам (--verify-unfolded: 1067 дел с учётом вариантов, расхождений 0;noCase27). -
gen_fines --verify-unfoldedчерез Rust-ядро и пул потоков (05.09.2026). Проверка дел главы 15 шла Python-оракулом последовательно: 1067 полных прогонов по CLIR КоАП (14 363 узла, 7 102 правила) — 70 минут. Теперь —liblaw_ffi(обвязкаverify/ci/lib/law_ffi.py): одна загруженная программа, потоки по числу ядер (ctypes отпускает GIL, таблица хэндлов общая для процесса) — 25 с, тот же вердикт на всех 1067 делах; путь через оракул снят, остался один;--jobs N— число потоков. -
Редактор: профиль развёртки в подсветке, подсказках, переходах и дополнении;
parse --astчинится на файлах сexpand;.vsixодной командой (05.09.2026).expand,expansion,emit,exports,cases— ключевые слова tmLanguage, подсказки на §279.1.2–§279.1.5 (подразделы §279.1 подняты до##), сниппеты 52 → 55; параметр экземпляраexpandобъясняется карточкой из определения и ведёт к нему по Cmd+Click (lib/expansions.js); мост «правило → экземпляр» для узловX/elementsдерева доказательства и why-not с peek строкиemit; дополнение внутриexpand— незаданное по определению;install.shсобирает .vsix и ставит в Cursor/VS Code; линза «☰ по-русски» над правилом — абзац вербализации его узла peek-ом под объявлением и в подсказке (lawref verbalize --json: текст плюс блоки по узлам; пакет вербализуется раз на поколение файлов). Дефект компилятора:ArgumentValue::Listкак newtype-вариант с Vec во внутренне тегированном enum не сериализовался serde —lawc parse --astотказывал на любом файле сexpand. -
Редактор: инлеи с метками, линза «кто проверяет это правило», компилятор в wasm внутри расширения (05.09.2026). Инлеи §218 у имён отношений в правилах и
expand(язык и длина — настройки); линза над правилом, экземпляром и отношением — сцены.lawtestпакета и сценарии корпуса по головам, с переходом. Палитра §225 (parse,check,layer,lower,expand --symbol) считаетсяlaw_wasm.wasmв воркереnode:worker_threads: те же байты, что уlawc --json, без процесса на вызов и без сборки Rust у пользователя;.vsixнесёт комплектengine/. Замер на КоАП: проверка пакета 1,5 с через wasm после прогрева против 1,8 с у бинаря. Модульwasm-distоказался собран до DECISION-0126 — пересобран; смок сверяет реестрfeatureswasm с живымlaw-cli. -
Редактор, первая очередь доработок (05.09.2026). Строка состояния: подпись
law·wasm, даты сборок модуля и бинаря в подсказке, состояние «AST недоступен» с причиной раньше счётчиков. Быстрые правки: E4103 — записать strict-читателя defeasible (§111, DECISION-0088); E1337 — строка параметраexpandпо форме из определения; E1339 — метка экземпляра; E1340 — действие «пересобрать секцию expansions law.lock» (корпус —gen_kz_clir.py --relock-expansions, остальные —resolver.expansion_pins). Палитра в wasm доведена доtest,why-not,explain,graph(--program,--node);lawc testконтекста развёрток не принимает ни в CLI, ни в палитре — сцены пакетов с[expansions]по-прежнему гоняет раннер корпуса. Несохранённый буфер уходит в VFS модуля по своему пути, пакетный файл проверяется пакетом с текстом всех грязных буферов. Попутно: команды на векторах ищут бинарь и от рабочей папки. -
Редактор, вторая очередь (05.09.2026). Поиск ссылок на параметре или имени
expansion— в экземплярах всех пакетов рабочей папки, чей[expansions]ведёт в это определение (обход манифестов один на сессию). На экземпляре — линза «порождено N узлов · alias vX · пин в law.lock» (§279.1.4, клик — в определение) и инлеи версии иmin N. «Сцена из правила»: заготовка.lawtestпо конъюнктам тела и голове правила или экземпляра. Test Explorer: файлы.lawtest— наборы, сцены — тесты, прогонlawc test --json, отказ раннера (в том числе у пакетов с[expansions]) — errored с текстом, а не тихий «прошёл». -
Редактор, третья очередь (05.09.2026). Переименование F2 по всем файлам пакета (ключевое слово и не-идентификатор отвергаются). Cmd+T по рабочей папке: текстовый индекс строк объявлений с кэшем по mtime. «Узел CLIR»: StableId объявления → узел (и порождённые
имя/…) виртуальным документом; из любого JSON Cmd+Click по StableId — к объявлению или экземпляру. Панель «Law: пакет»: импорты, потребители по[dependencies], читаемое соседями сpub, безpub(долг §24) и не объявленное. -
kz.private.dogovornaya_penya— второй частный акт под импортированным статутом и первый счётный. Модельные (вымышленные) условия договора поставки № 7/2026 закреплены байтами; из перечня обязательств, платежей и даты расчёта выводятся остаток основного долга, периоды с неизменной базой, число дней, применённая ставка, начисление, потолок (п. 3.4), округление до тиына половиной вверх (п. 3.5) и итоги по обязательству и договору. 38 правил, 8 инвариантов §93.1, 21 сценарий, differential 88/88 байтово. Гражданский кодекс РК читается ОДНИМ экспортированным §24 предикатом (court_may_reduce_penalty, ст. 297) — расширять экспорт Кодекса нельзя: обратное замыкание импортов 32 пакета. Размер ВЗЫСКИВАЕМОЙ неустойки остаётся каналом суждения §47.3 (REQUIRES_JUDGMENT), и расчётная сумма присуждаемой не притворяется. Отчёт —tools/raschet.py(JSON и читаемая таблица), семантики в нём нет. -
Кандидат 4 KZ закрыт парой пакетов:
kz.corpus.gosuslugi(Закон № 88-V «О государственных и социально ответственных услугах») иkz.corpus.gosusluga_nedvizhimost(Правила оказания государственной услуги «Государственная регистрация прав (обременений прав) на недвижимое имущество», приказ Минюста РК № 27). Делегация подпункта 1) статьи 10 проверяетсяlawref check-delegation, а не декларируется; 99 сценариев в двух семействах, differential байтовый, шесть целей §270 с двумя падающими канарейками, два автомата §159—§164 с журналами. Решение — DECISION-0122.
Исправлено
lawc parseзавершается наA | Bвнутри аргумента generic (errata E-0129, 05.09.2026). ЗаписьDeadlinePolicy§86, переписанная в.lawбуквально, разбиралась ~минуту стены с ростом памяти и без вердикта: цикл аргументовtype_refна|звалtype_ref(), который ставилLDC-E0201, не съедая токен. Теперь — одна ошибка на поле (с указанием наvariant_type_decl) и пропуск до парного>; grammar объединений вtype_refне знает, файл отклонён. ВекторERR-E0129-UNION-IN-GENERIC-ARG(первый static путёмparse), unit-тестlaw-syntax, таймаут static-вызова вrun_vectors.py.lawc lowerбез resolve-контекста больше не понижает чужую голову правила в пустой предикат (errata E-0126, 04.09.2026). У пакета сimport-амиlowerбез--importsвозвращал rc=0 и CLIR с"predicate": ""у каждой qualified-ссылки (13 правил пилота partial-payment) и пустымenvelope.imports; гашениеLDC-E1104/LDC-E1105, заведённое DECISION-0102 дляcheck,lowerунаследовал через общий конвейер DECISION-0111 §2.4. Конвейер получил стадию: гасит толькоcheck. Воротаcheck_cross_package_lowering.py(красные с WP-35 по этой причине и с 02.09 поLDC-E4101в фикстуре@source) зелены; фикстура чужой головы, сверка с оракульнымresolve_symbol; четыре вектораERR-E0126-*; lower-shape раннерrun_vectors.pyпринимаетimports.- Модули актов KZ — на закрытый
EvaluationRequest0.2 (04.09.2026). 40 вызовов в 17 модуляхcorpus/kz/acts/звали оракула прежней позиционной формой и падалиTypeErrorдо первого сценария; 22 семейства кластера были красны с момента слияния 0.2. Переведены наengine.EvaluationRequest/.build(...)(корпусной конструктор пинит inlinedeadlinePolicyвDeadlinePolicyRef§2.9); обёртки шва вrun_goalscredit-bureau и iban — на формуwrapper(request); тот же дефект снят вcheck_calendar_lawtest. Проверено: 14 семейств зелены, KZ-differential байтово сходится наoked(11 вызовов) иcredit_bureau(109). Прямой конструктор оставлен только там, где дело само несётoptions: он их не достраивает, иlawcотвергает такой запрос целиком при зелёной регрессии. - Харвест миров под цели §270 переживал копию IR (04.09.2026). Корпусный
конструктор пинит inline
deadlinePolicyвdeepcopy(ir)на время вызова, поэтому дело, снятое швомset_evaluate, ссылалось на узел, которого в закоммиченном CLIR нет:run_goalscredit-bureau снимал 98 миров и не исполнял ни одного. Обёртка забирает узлы политики изrequest.irи пишет рядом с делами программу, которая их несёт. Цели HELD на 98 мирах, канарейка падает четырьмя контрпримерами.
Добавлено
-
packs/primitives/money-and-obligations/allocation—calc.allocation(DECISION-0123, каталог P04): пропорциональное распределение и очереди с пропорцией внутри недоплаченной очереди, наибольшие остатки поверхdiv_round, явные точность/единица/ политика остатка/приоритет, 30 дефектов входа, неразрешённое равенство как результат. 17.lawtest+ свойство §270, differential 17/17. Воротаverify/ci/gates/differential/check_primitives.pyдля всей категорииpacks/primitives/*(статика, lowering, тесты обеими реализациями, байты). -
Конституция Кыргызской Республики 2021 — первый акт кыргызского правопорядка (04.09.2026). 116 статей из 116: EXECUTABLE 101, SOURCE_ONLY 15 с объявленной причиной, UNEXPLAINED 0; 260 сценариев, differential байтовый на каждом. Акт закреплён ДВУМЯ аутентичными редакциями (ст. 13: кыргызский государственный, русский официальный), поэтому правило парного якоря §194 действует с первого коммита и мера §33.1 даёт одинаковые числа на обеих сторонах. Пороги взяты парами: на девяноста депутатах «большинство» и «не менее половины» расходятся одним голосом, и обе нормы стоят в акте рядом (ст. 78 ч. 1 против ст. 80 ч. 3). Срок задержания выражен
hours_between(48 против 49 часов), а не сутками: суточная единица дала бы другой ответ на деле, начатом вечером. Запрет изменения Конституции в чрезвычайном положении поставлен гардом при ОБОИХ путях изменения — при референдумном и парламентском, иначе один остался бы открытым. -
Конституция Республики Узбекистан 2023 — первый акт узбекского правопорядка (04.09.2026). Действующая консолидация с изменениями ЎРҚ-1158 (в силе с 25.07.2026), 155 статей из 155: EXECUTABLE 143, ANCHORED 12, SOURCE_ONLY 0. Закрепление потребовало среза
--lexuz-act-body(снятие трёх видов разметки портала между абзацами) и конвенции деления «155-модда.» в обеих мерах §33.1 — до неё документ не подпадал ни под одну и в учёте статей не участвовал. Набор признаков исполнимого содержания «uz» выведен замером по тексту: слова «фоиз» в акте нет ни разу. Одиннадцать порогов закрыты парами дел, три из них различаются одним словом («не менее двух третей» против «более двух третей»). Конституционность акта отдана каналу суждения §47.3 Конституционному суду; самозащита ст. 154 формализована в два хода. 120/120 регрессия, 121 вызов differential байтово,lawc test5/5. Слияние веткиuz-anchoredдовело меру до 134/21 и само нашло дубль понятия гражданства, невидимый каждой стороне порознь; разбор оставшегося уровня ANCHORED, ст. 18 ч. 2 и ст. 3 с 14 — до 146/9. Все девять оставшихся определительны по существу; ст. 3 и 14 заведены решением владельца при неснятом доводе против, и дела сторожат границу выбранного прочтения. -
Реестр обязательных требований: 33 → 51 канонической строки, F3 DECISION-0116 замкнут (04.09.2026). 21 несопоставленный пункт проверочного листа ОСиОТ закрыт не подзаконкой (её под этот остаток не существует — все ссылки ведут внутрь двух формализованных кодексов), а деонтикой самого Трудового кодекса: пять готовых шаблонов получили мост статуса субъекта предпринимательства, тринадцать заведены заново по статьям 68, 69, 81, 82, 96, 184, 158, 33, 26, 104, 62 п. 3 и 7. Пороги выражены сравнением в правиле, а не прозой в метке; минимальная заработная плата намеренно не числом — её устанавливает закон о республиканском бюджете. Мост к КоАП дополнен на все 18 строк тем же срезом статей 86–98 (6
mapped, 12not_mappedс причиной по тексту). Пункты листаmapped5 → 20,unmapped21 → 6 (остаток — Социальный кодекс, роль которого в сфере меняет владелец). Сценариев семействаlabour_osh64 → 82, KZ-differential байтовый на 49 вызовах. Разбор — DECISION-0116 §8. -
Измеритель безопасного strict-острова DECISION-0119 §10 (04.09.2026). Диагностическая
phase-profileделит solve-попытки, grounded-применения, CPU и визиты strict-правил на case-independent и потенциально зависящие от дела по статическому графу чтений. Наkz-criminal-codeбезопасный остров оказался равен 0 % для +0 и +1 факта; обязательное условие остановки сработало, поэтому кэш strict-базы шагов 3–6 не добавлялся. -
Автоматическое взыскание КоАП для 33 трудовых требований (DECISION-0116 F6, 04.09.2026). Отдельный CLIR-пакет
kz.corpus.labour_administrative_bridgeсопоставляет 17 требований с объективными сторонами статей 88–90, 93 и 97 КоАП: 9 связей прямые, 8 требуют подтверждения более узкого состава. Остальные 16 имеютnot_mappedс причиной после проверки статей 86–98, а не ложноеno_sanction. Резолвер принимает класс адресата и повторность и запускает reference evaluator на существующих правилах КоАП, возвращая предупреждение либо штраф в МРП; суммы в Python не дублируются. Точный crosswalk и rule id включены в индекс и его храповик. Восемь новых сценариев и mutation-canary держат условность, повторность, адресата, предупреждение и штрафы 40/80/120/400 МРП. -
Класс «старая арность вызова» в
check_evaluate_seam(04.09.2026). Прежний линт держал ИМЯ (позднее связывание) и форму ОБЁРТКИ, но не арность самого вызова, поэтому 40 дослиянных вызовов были ему невидимы, а красили только ночную регрессию. Теперьengine.evaluateс числом аргументов, отличным от одного, — громкий отказ чтением AST; канарейкаbad_evaluate_seam.pyпополнена четвёртой формой (9/9 классов). -
Полная проекция обязательных требований сферы инспекции труда (DECISION-0116, 04.09.2026). Manifest-driven индекс теперь содержит 33 канонических требования из Трудового кодекса и двух подзаконных актов, полный ОКЭД из 2108 кодов, 40 пунктов проверочного листа и воспроизводимый RSP-снимок из 61 страницы / 627 записей. Все строки имеют точный сценарий активации и
READ-правило proof-графа; применимость к ОКЭД закрыта как 6 явных assertions и 27not_oked_conditioned, безunknown. Добавлены ворота scope, официального снимка, полноты ОКЭД и связи канонической строки со сценарием/proof, все с mutation-canary. 124 обязанности небизнес- носителей удерживаются точными id, а 40 пунктов листа имеют сопоставление либо явную причинуambiguous/unmapped. -
Разделяемый хэндл движка и ABI 2 (DECISION-0115 шаг 3, 04.09.2026). Таблица загруженных программ нативно разделяема процессом: программа загружается один раз и исполняется из любого потока, а не копируется по числу воркеров (каждая копия
kz-criminal-codeстоит 35–80 МБ; четыре потока на одном хэндле добавляют к программе ноль). На wasm32 таблица остаётсяthread_local— у однопоточного рантайма глобальная блокировка была бы ценой без покупки, и байты браузерного пути не сдвинулись. Кэш видов остаётся у потока,EvaluationResources.programпереведён наArc, выгрузка определена под гонкой: начатый вызов доводится до конца, новые получаютHANDLE_UNKNOWN.ABI_VERSION= 2 при неизменных именах и конвертах — меняется обещание хосту, и обвязки (law_ffi.py, npm, лендинг) сверяют версию при загрузке. Держат три теста крейта и новая проверка воротcheck_ffi_differential: восемь потоков на одном хэндле и на разных делах обязаны дать байты одиночного вызова; байтовый контракт подтверждён на 313 векторах и 1960 вызовах шести живых семейств. -
Профиль горячего пути как данные ночного окна (DECISION-0115 шаг 1, 04.09.2026).
verify/ci/tools/hot_path_profile.pyснимает тёплый вызов движка через хэндлliblaw_ffiпо осям решения — загрузка программы, промах кэша вида, квантили p50/p95/p99 по wall и по CPU потока, размер ответа (узлы proof-графа и байты), рост с 0/10/100/1000 срабатывающими фактами дела, concurrency процессами — и пишетverify/ci/data/hot-path-profile.jsonс условиями прогона (git HEAD, тулчейн, CPU, load, профиль сборки,programHash). Дела живые, снятые швомset_evaluate. Это данные без порога, а не timing-gate:--compare A Bпечатает отношения парных снимков и предупреждает о разномprogramHash,--checkдержит форму файла. Первый снимок: тёплый вызов 2,1 мс CPU на пакете 1,1 МБ и 11,3 мс на кодексах при p99/p50 ≈ 1,17, но 1000 срабатывающих фактов дела дают 55–231 мс — цена линейна по узлам proof-графа (0,022–0,057 мс на узел), поэтому размер дела назван параметром допуска хоста. -
Пилот реестра обязательных требований по ст. 83-1 ПК РК (DECISION-0109, 04.09.2026). Версионируемый ОКЭД и A3-классификация, хаб
BusinessEntity, 26 шаблонов обязанностей главы 17 ТК, пакет 40-пунктового проверочного листа ОСиОТ и закреплённый RSP-снимок собраны в детерминированную проекциюapps/registry/index/business-requirements/. Канон содержит 6 требований для ОКЭД 25111; 3 эвристических кандидата изолированы от канона, 40 пунктов листа имеют сопоставление либо диспозицию, 43 расхождения названы по закрытому словарю. Персональная применимость доказывается движком в 7 сценариях по субъекту, identity, точному ОКЭД и дате. Новые ворота с канарейками держат источники, сопоставления, схему, provenance, детерминизм, свежесть и точный храповик 6 строк;not_observedиnot_mappedявно не трактуются как отсутствие обязанности или санкции. -
kz-macroprudential-normativesиkz-np-bank-loan-disputes: макропруденциальный контур НБРК и практика Верховного Суда по банковскому займу (04.09.2026). Постановление Правления НБРК от 25.08.2025 № 52 в двух консолидированных редакциях плюс постановление от 31.07.2026 № 92 отдельным источником (портал его не консолидировал): мера §33.1 EXECUTABLE 36 из 36 при нуле объявленных границ, 136 сценариев, differential байтовый на 136 вызовах, цели §270 5/5 HELD на 80 мирах, 23 A3-параметра §87 с одним датированным. Нормативное постановление Верховного Суда от 25.11.2016 № 7 в двух русских редакциях: EXECUTABLE 26 из 27 при одной объявленной границе, 97 сценариев, differential байтовый на 98 вызовах, цели 5/5 HELD на 69 мирах. ПЕРВОЕ применение профиля прецедента §276 в KZ-корпусе — четыре словаряfactors, пятьprecedent, десять порождённых приоритетов (CONFLICT_OBSERVED 5) и четыре прочтенияreason_model(OWNED_NODE_PROVED 4). -
Закон о банках 258-VIII: даты опубликования и введения в действие. У редакций
kz.corpus.banksне былоpublishedиin_force, и делегационная цепочка §30/§127 не замыкалась ни для одного подзаконного акта — D1 отвечал «ни одна редакция не применима» (LDC-E5305), то есть ошибкой о пороке подзаконного акта там, где порок был у родителя. Дата названа карточкой «Әділет» (17.01.2026), срок — пунктом 1 статьи 135 (шестьдесят календарных дней), Закон действует с 19.03.2026. Там же заведена power части третьей пункта 1 статьи 73 иpub-экспорт двенадцати деклараций. -
Провода к Гражданскому кодексу и правило их формы. Кодекс экспортировал восемь голов и тип
Pledge; постановление ВС читает статьи 299, 321 и 359 адаптерами, аZalogпакета СТАЛPledgeКодекса — двух имён у одного понятия больше нет. Правило формы записано в шапке пакета: голова читается посылкой; держать её ВМЕСТЕ с собственными посылками запрещено; «у меня дробнее» не освобождает; грубую голову чинит владелец; место провода задаёт роль головы. Публичность сдвинула пин у 30 пакетов — регрессия 26 затронутых семейств (4524 сценария) прошла без падений у соседей. -
Пятая живая пара делегационных ворот (
check_delegation.py, 88/88): постановление НБРК № 92 → power статьи 73 Закона о банках без единой ошибки и предупреждения; обратная сторона — постановление № 52 (25.08.2025) основания не объявляет, и приписанная ему власть отвергается LDC-E5305. Темпоральное звено впервые работает на живых данных в обе стороны. -
kz-macroprudential-normativesиkz-np-bank-loan-disputes: макропруденциальный контур НБРК и практика Верховного Суда по банковскому займу (04.09.2026). Постановление Правления НБРК от 25.08.2025 № 52 в двух консолидированных редакциях плюс постановление от 31.07.2026 № 92 отдельным источником (портал его не консолидировал): мера §33.1 EXECUTABLE 36 из 36 при нуле объявленных границ, 136 сценариев, differential байтовый на 136 вызовах, цели §270 5/5 HELD на 80 мирах, 23 A3-параметра §87 с одним датированным. Нормативное постановление Верховного Суда от 25.11.2016 № 7 в двух русских редакциях: EXECUTABLE 26 из 27 при одной объявленной границе, 97 сценариев, differential байтовый на 98 вызовах, цели 5/5 HELD на 69 мирах. ПЕРВОЕ применение профиля прецедента §276 в KZ-корпусе — четыре словаряfactors, пятьprecedent, десять порождённых приоритетов (CONFLICT_OBSERVED 5) и четыре прочтенияreason_model(OWNED_NODE_PROVED 4). -
Закон о банках 258-VIII: даты опубликования и введения в действие. У редакций
kz.corpus.banksне былоpublishedиin_force, и делегационная цепочка §30/§127 не замыкалась ни для одного подзаконного акта — D1 отвечал «ни одна редакция не применима» (LDC-E5305), то есть ошибкой о пороке подзаконного акта там, где порок был у родителя. Дата названа карточкой «Әділет» (17.01.2026), срок — пунктом 1 статьи 135 (шестьдесят календарных дней), Закон действует с 19.03.2026. Там же заведена power части третьей пункта 1 статьи 73 иpub-экспорт двенадцати деклараций. -
Пятая живая пара делегационных ворот (
check_delegation.py, 88/88): постановление НБРК № 92 → power статьи 73 Закона о банках без единой ошибки и предупреждения; обратная сторона — постановление № 52 (25.08.2025) основания не объявляет, и приписанная ему власть отвергается LDC-E5305. Темпоральное звено впервые работает на живых данных в обе стороны. -
fatf-recommendations: Рекомендации ФАТФ целиком и мост к Закону РК № 191-IV (04.09.2026). Международные стандарты ФАТФ (редакция с изменениями июня 2026 года) — сорок Рекомендаций, формализованные положения Пояснительных записок и одиннадцать терминов Глоссария: мера §33.1 EXECUTABLE 62 из 67 при UNEXPLAINED 0 и одной объявленной границе, все сорок Рекомендаций EXECUTABLE, 206 сценариев в двух семействах, differential байтовый на 207 вызовах, цели §270 7/7 HELD на 147 мирах при падающей канарейке, стабовая доля НОЛЬ из 214 правил. Права на текст решены чтением уведомления в самой публикации: оно запрещает и воспроизведение, и перевод, поэтому закреплены байты авторского изложения, а английская редакция названа проверяемой отсылкой с sha256. ВТОРОЕ семействоfatf_aml_bridgeисполняет ДВА CLIR на одном мире и сравнивает стандарт с Законом РК: восемь расхождений транспозиции, из них поставщики услуг траста и компаний вне перечня субъектов статьи 3 и полное отсутствие у Закона требований статьи 16 к сведениям о плательщике. Найдено попутно:entity_refдела с полемtypeНЕ совпадает сconst_refнормы — правило молча не срабатывает при зелёномcheckи пустых issues. -
kz-gats-financial-services: Перечень обязательств РК по ГАТС, сектор «финансовые услуги» (04.09.2026). WT/ACC/KAZ/93/Add.2 в части сектора 7 вместе с Частью I, Приложением к ГАТС по финансовым услугам и Протоколом о присоединении (Закон РК № 356-V). Первый в корпусе акт, чья единица деления — СТРОКА ТАБЛИЦЫ: заголовок строки стоит на той же строке байтов, что и содержимое двух других колонок, и мера §33.1 по статьям к нему неприменима — учёт ведётся явным списком строк, UNEXPLAINED 0. 96 сценариев, differential байтовый, цели §270 8/8 HELD на 61 мире при падающей канарейке. Цель нашла асимметрию Перечня: строка страхового посредничества допускает прямые филиалы через пять лет и не оговаривает ни одного условия. Политика §86 прочитана из текста («period starting FROM THE DATE of accession» →same_day): при умолчанииnext_dayокно филиалов открывалось бы на сутки позже, и семь сцен краснели именно так. Мост к главе 4kz/banksсобран без импорта — у соседа публичны пять символов, и нужных среди них нет; сверка семи условий статьи 15 с Перечнем дала одно соответствие a fortiori (10 млрд против оговорённых 20) и пять находок транспозиции, ответ о которых раздваивается прочтением оборота «such as follows». -
imf-articles-of-agreement: статья VIII Статей соглашения МВФ с переходным режимом статьи XIV (04.09.2026). Первый пакет группыimf: английский подлинник в редакции семи поправок, охват — шесть статей из тридцати одной (VIII разд. 1–7, XIV разд. 1–3, XXX(d), VI разд. 1–3, VII разд. 3–4, I), мера §33.1 EXECUTABLE 6 из 6 при UNEXPLAINED 0. 103 сценария, KZ-differential байтовый на 103 вызовах, цели §270 6/6 HELD на 61 мире при двух падающих канарейках. Пакет заведён ради одного противопоставления, которое инструмент делает видимым: в ОДНОМ договоре перечень ст. XXX(d) объявлен словами «includes, WITHOUT LIMITATION» — то есть открыт, и спор о его границе выражен группой прочтений §155 с политикойany_of, — а перечень изъятий ст. VIII разд. 4(b) закрыт формулой «shall not apply WHEN:» и выражен замыканием §70, дающим отрицания для строгого тела обязанности выкупа. Осевой спор ст. VIII разд. 2(a) против ст. XIV разд. 2 разрешён приоритетом §115 с наблюдённым конфликтом, а не порядком чтения. Форма заголовка «Article VIII: General Obligations of Members» развела две меры §33.1 МОЛЧА (act_splitнаходит 31 заголовок, ворота закрепления — ноль); внутри пакета обойденоirregular_headingsповерхen_article, конвенции «римский номер с двоеточием» в корпусе по-прежнему нет. Извлекатель свой: общий ломает строку по переносам PDF, и три перекрёстные ссылки становятся ложными заголовками статей. -
kz-microfinance: Закон «О микрофинансовой деятельности» № 56-V формализован целиком (04.09.2026). 58 статей в обеих аутентичных редакциях «Әділет»; мера §33.1 — EXECUTABLE 53 из 58 при UNEXPLAINED 0 (пять границ объявлены с причиной, проверенной по тексту). 344 сценария, KZ-differential байтовый на 345 вызовах, цели §270 6/6 HELD на 313 мирах при падающей канарейке, парный якорь §194 без долга. Опечатку казахской публикации (заголовки 29-8, 29-12 и 29-13 без слова «бап») поймал второй независимый счёт: русская сторона 58 заголовков, казахская 55; байты не правятся, факт объявленextra_unit,irregular_headingsи закрытым списком фетчера. Исполнением найдены три границы шаговых термов, которыеlawc checkпропускал молча:add_calendar_periodне берётcalendar_dayпри политике сmonth_endи не шагает назад,hours_betweenслеп ко всякому порогу короче часа. Два наблюдённых конфликта §116 давали BOTH и закрыты приоритетами. -
eaeu-treaty-2014: раздел XVI и Протокол по финансовым услугам (04.09.2026). Договор о ЕАЭС расширен с адресуемости до норм: статья 70, переходные положения статьи 103 и приложение № 17 целиком (37 пунктов и оба его собственных приложения). Разрезано второе приложение публикации приложений — 39 фрагментов с локаторамиannex/17/point/N; всего 157 фрагментов. Глубина §33.1 по телу Договора — EXECUTABLE 2 из 118 при UNEXPLAINED 0; мера по документу приложений НЕ снимается, и это граница с причиной (конвенции деления «ПРИЛОЖЕНИЕ № N» среди объявленных нет). 89 правил, 38 обязанностей §134, одиннадцать замыканий §70, один канал суждения §47.3. 69 сценариев четырёх семейств, differential байтовый на 70 вызовах, цели §270 — 6/6 HELD на 49 мирах при падающей канарейке. Семействоeaeu_banks_bridgeзадаёт один вопрос Протоколу и национальному закону и записывает расхождение редакций: закреплённая редакция 2014 года сохраняет за Казахстаном изъятие «открытие филиалов банков-нерезидентов запрещается», а действующий Закон 258-VIII даёт разрешительный порядок. Восемнадцать приоритетов §116 сняты по измерению: дефитер §107.3 поражает голову и без них, иcheck_proof_analyticsпоказывал все восемнадцать ни разу не наблюдёнными. -
kz-social-standards: Закон о минимальных социальных стандартах вместе с Правилами расчёта прожиточного минимума (04.09.2026). Первый пакет корпуса с ДВУМЯ источниками, связанными поручением: пункт 2 статьи 17 Закона № 314-V поручает уполномоченным органам утвердить порядок расчёта, и без совместного приказа № 623/585 величина прожиточного минимума названа, но не вычислима. Глубина §33.1 — EXECUTABLE 38 из 40 при SOURCE_ONLY 0; две исключённые статьи объявлены границей с причиной. 62 сценария, differential байтовый на 62 вызовах, три цели §270 HELD при падающей канарейке. Обе временны́е оси работают разом: окноeffectiveпо 1 января 2026 года между двумя законами о республиканском бюджете и датированный параметр §87 (возрастные границы женских групп, сдвигающиеся с 2019 по 2027 год). Движок шаблонаpinningнаучен единице, оканчивающейся кавычкой: заголовок исключённой статьи 13 в text block §17 не выразим как есть — лексер закрывает блок на три байта раньше, — и граница сдвигается на один байт вправо; единица без перевода строки за ней теперь громкий отказ. Существующие блоки корпуса байтово те же. -
iso-13616-iban: структура IBAN поверх свёртки ISO/IEC 7064 (04.09.2026). Второй акт линии стандартов идентификаторов и ПЕРВЫЙ пакет корпуса, чьи правила пишут ГОЛОВАМИ в отношения импортированного пакета: перестановку §194 ((pos + n - 4) mod n, одним выражением с переменным модулем) он вычисляет над позициями номера сам и подаёт результат свёртке MOD 97-10iso.check_characters, которая до этого принимала позиции уже переставленными и объявляла перестановку СВОЕЙ ГРАНИЦЕЙ. Контрольной арифметики в новом пакете нет ни строки; сосед открылpubровно одиннадцать читаемых символов, его differential остался байтовым. Реестр форматов по 77 странам — A3-таблица с двумя Text-колонками (буквы кода страны читаются прямо из начальных позиций номера),total: false: страна вне Release 87 даёт NoDecision, а не отказ, и обе ветви длины при этом молчат. Второй независимый счёт длины при порождении таблицы (сумма шаблона структуры против поля длины, все 77 стран) нашёл ТРИ ОПЕЧАТКИ самого реестра —18!n,25!,24!n/28!nв полях длины у CR, EG и SV; прочтение записано закрытым списком с сырыми байтами, молчаливой нормализации нет. 16 сценариев, differential 76 вызовов, цели §270 5/5 HELD на 13 мирах при FAILED канарейке (спрашиваются у СЛИНКОВАННОЙ программы — в несклеенном CLIR цель о диапазоне разрядов даёт VACUOUS, измерено), разметка §218 30/0 и 110/0,doctor— пробелов нет. Измеренная граница языка:entity X : pkg.name::Baseдопущенаspec/grammar.ebnf(строки 251-252, 326, 1088) и отвергается парсером (LDC-E0201на точке внешнего имени) — кандидат в errata; до неё стоит псевдоним типа, и потеря различия названа вpackage.law. -
Ревью пилота нашло перенос чужих годов и четыре дефекта своей же оснастки (04.09.2026). Мосты в законах о бюджете были написаны по переменной году (
when kz.corpus.budget_code::mrp(year, amount)), и потому закон 2026 года начал утверждать показатели 2025 года, а закон 2025 — показателей 2026: проба на живом мире далаTRUE_ONLYтам, где право молчит. Регрессия этого не видела — все её сценарии спрашивают свой год. Мосты ограничены годом своего закона. Там же починены: inline-таблица в[dependencies]роняла весь манифест (LDC-E1109) вместо того, чтобы быть пропущенной; сборка мира молчала о ДВУХ сборках одной версии пакета (теперьLDC-E1112называет и этот случай); список экспортируемых видов в воротах разошёлся с резолвером вопреки собственному комментарию; погашенный долг манифеста оставлял строку храповика, и возврат долга был бы молчаливым. Реестр диагностических кодов перегенерирован, три юнит-теста на новые правила. -
DECISION-0114 исполнен: производительность после хэндлов (04.09.2026). Отложенная сверка
programHashв пакетных хостах (CPU семейства 1,31×), полеexternalSnapshotsв конверте ABI и сертификаты §180 на хэндле (17,8–22,2 → 8,3–10,0 с), шарды семейств как единица параллелизма при семейной единице учёта (критический путь 185 → 21 с), индексы голов §230 и производные строгого слоя в компиляции у обеих реализаций (1,04–1,11×). Трое новых ворот с канарейками:check_deferred_verification,check_shard_coordinator, случай снимка §47.2 вcheck_ffi_differential. Байты CLIR, голдены и errata не тронуты; differential зелен после каждого шага. Темпоральные индексы §233 отменены замером (окноeffectiveу 2 % правил, и оно уже отсекается при компиляции);focused_truthотложен — профиль называет представлениеValue, а не объём вывода. -
Закон РК «О кредитных бюро и формировании кредитных историй в Республике Казахстан» формализован целиком (
kz-credit-bureau, 04.09.2026). N 573 от 06.07.2004 (Z040000573_), 38 статей действующей редакции ru: EXECUTABLE 38, ANCHORED 0, SOURCE_ONLY 0, UNEXPLAINED 0. 108 сценариев, KZ-differential байтовый на 109 вызовах, цели §270 — три HELD на 98 мирах при падающей канарейке с пятью контрпримерами. Тридцать четыре замыкания §70 (категории поставщиков и получателей, компетенция органа, виды деятельности, основания отказа, приостановления и лишения, состав информации по семи видам поставщика, условия двух договоров, цели использования), двадцать один приоритет §116 и семнадцать сроков — от часа режима реального времени (hours_between§84.1) до десяти лет хранения согласия. Участник системы —CivilParticipantхаба лиц ГК (DECISION-0107), а роль (бюро, поставщик, получатель, субъект) — предикат: банк по статье 18 и по статье 20 есть одно лицо в двух качествах.Четыре находки, каждую нашёл инструмент, а не чтение. Сценарии нашли два правила, не срабатывавших НИКОГДА при чистом
lawc check: запрет пункта 3 статьи 7 и несоблюдение требований статьи 8 читали классическое отрицание предикатов, у которых негативного продюсера не было вовсе. Цель §270 нашла непрочитанный круг действия подпункта 13-3 статьи 1 — негативная информация выводилась о любом лице с просрочкой свыше девяноста дней, а изъятие статьи 25 пункта 4 снимает требование согласия именно для неё. Запрос позиций нашёл, что датированный рубеж 01.01.2027 стоял окном исполнения обязанности, а не применимостью правила.Политика §86 разведена на две ПО ТЕКСТУ АКТА: сроки от ДАТЫ считаются
same_day, единственный срок «со дня» (ст. 26 п. 7) —next_dayпо статье 14 Закона «О правовых актах»; ответы отличаются ровно на сутки. Две границы самого акта названы строками: отзыва согласия акт не знает вовсе, а редакция подпункта 4) пункта 4 статьи 21 с 01.01.2027 в закреплённых байтах отсутствует. -
Закон РК «Об обязательном гарантировании депозитов, размещенных в банках второго уровня» формализован целиком (
kz-deposit-guarantee, 04.09.2026). № 169-III от 07.07.2006 (Z060000169_), 28 статей действующей редакции ru: EXECUTABLE 27, UNEXPLAINED 0, SOURCE_ONLY 1 — статья 8, исключённая Законом РК от 05.07.2012 № 30-V, с записанной причиной. 115 сценариев (из них 14 запросов позиций §140), KZ-differential байтовый на 116 вызовах, цели §270 — две HELD при падающей канарейке с двумя контрпримерами из текста. Восемь датированных параметров A3 несут потолки возмещения (20/10/5 млн ₸ и совокупный 20 млн), предел и кратность взносов, доли резерва; покрытие открыто датой состояния закреплённой редакции, а не датой введения акта в действие — дат отдельных сумм в закреплённых байтах нет, они в аппарате портала, и ниже рубежа право отвечает MISSING_PARAMETER_VALUE, а не нулём. Пять замкнутых перечней §70, семнадцать обязанностей и одна свобода нормами §140, депозитор — физическое лицо Гражданского кодекса (хаб лиц DECISION-0107). Закон о банках сознательно НЕ импортирован: лишение лицензии настоящий Закон не выводит, а потребляет.Три находки, каждую нашёл инструмент, а не чтение. Линт нашёл 46 меток с деонтикой при нуле деонтических голов — весь акт был сплющен в признание, и нарушение срока не было наблюдаемо; заведены нормы §140 с окнами. Аналитика proof-графов (DECISION-0108) нашла два приоритета §116 в состоянии UNSEEN при ЗЕЛЁНЫХ сценариях обеих ветвей: §116 разрешает столкновение полярностей, а две разные СУММЫ одного отношения истинны разом (замер: база 4 000 000 и база 2 500 000 одновременно TRUE_ONLY,
keyголовы этого не меняет), — оба изъятия переписаны в форму гарда, и общее правило при зачёте теперь молчит. Статический аудит нашёл две посылки в один конец: вычисленные пределы взносов никто не читал, и превышение предела не было наблюдаемо.Названы три границы (
corpus/drafts/deposit-guarantee/STATUS.md), главная — §86: ОДНО дело не вправе исполнить оба семейства сроков, потому чтоmonth_endобязателен календарной единице и запрещён дневной (обе стороны проверены отказом DEADLINE_POLICY_INVALID), аdeadlinePolicyу контекста одна. Акт несёт сроки обоих семейств от одного события — с даты лишения лицензии текут и рабочие дни, и год, — и дело о пропуске годичного срока после лишения лицензии юридически обычно, а машинно невыразимо одним контекстом. Закрывается errata (политика на уровне единицы), не правкой пакета. -
Закон РК «О коллекторской деятельности» формализован целиком (
kz-collectors, 04.09.2026). № 62-VI от 06.05.2017 (Z1700000062), 33 статьи в обеих аутентичных редакциях «Әділет»: EXECUTABLE 33 из 33, UNEXPLAINED 0, SOURCE_ONLY 0, учёт статей 33 из 33 в каждой редакции, паритет якорей §194 — непарных 0. 79 сценариев, KZ-differential байтовый, цели §270 5/5 HELD при падающей канарейке. Тринадцать замкнутых перечней §70; окно взаимодействия 8.00–21.00 взято сравнением часа в гарде, будний день —weekday_of(E-0091) плюс факт о выходном или праздничном дне, частота контактов — многосвязным comprehension по семи календарным дням. Названы две границы:forbearance-норма §130 VIOLATED в Core 0.1 не даёт никогда (§124.3 откладывает contra-action detection до событийной модели §79) — нарушение выражено поддерживаемой обязанностью §137; моста к перечню праздников нет, потому что предикатkz-prazdnikiключуется парой целых, а терма извлечения месяца и числа изDateв закрытом списке §84 не существует. -
TypeScript SDK: четыре пакета, хэндлы в wasm, обе рукописные копии ABI сняты (DECISION-0113, 04.09.2026).
@arxo/law-engine(wasm, палитра §225, хэндлы, воркер-адаптер,engineInfo),@arxo/law-types(17 файлов типов из нормативных схем + машинный реестр 157 кодовLDC-Exxxxтремя классами),@arxo/law-client(типизированный MCP-клиент из таблицы сервера и клиент реестра; Ajv живёт только здесь),@arxo/law-forms(4 модуля проекций из 10, 25 экспортов, 27 фикстур). Хэндловый слой переехал изlaw-ffiвlaw-wasm::handles— поправка к DECISION-0057 §2: довод «нативно-специфичное» был про поставку, а цена разбора IR (0,5–2 с на дело на пакете 5,7 МБ) у браузера та же.law-ffiостался единицей сборки без собственного кода: символы приезжают линковкой, 10 вnm -gU. Рабочий стол и лендинг перестали держать свои реализации ABI. Измерено: 311/311 векторов через хэндл байтово равныlawc evalи one-shot в обоих хостах; workspace 413 тестов; 139 ворот в конвейере. Четыре дефекта нашли пробы, а не рассуждение:onmessageв модульном воркере (strict mode — ReferenceError),instantiateStreamingбезapplication/wasm, протухший артефакт wasm рабочего стола, вакуумная фикстураemitLawtest/refusals. -
Заморожена
law.core/0.2(04.09.2026). Полностью реализованы пункты 1–11 DECISION-0111; заморожены 483 корпусных CLIR, 68 lock-файлов и 26 наборов 0.2-векторов, а 0.1-голдены сохранены без перезаписи. Добавлен постоянный gate границы версии и выпускной пакетrelease/0.2; digest-ID анонимного факта имеет формуassert-h<sha256>, синтаксически отличимую от запрещённого позиционногоassert-N. -
DECISION-0111 §2.11 — именованный срок
term(04.09.2026). Новая контекстная декларация понижается без собственного CLIR-узла в стабильные D/S/X и direct priority; единыйadd_legal_term(Date, Quantity)исполняет runtime-unit, а производные метки используют фиксированные нейтральные префиксы без идентификаторов. Четыре вектора, ручная развёртка и независимый parser/lowering lawref держат байтовое равенство; Lezer и Constructor поддерживают ту же поверхность. Структурные diagnostics получили честный JSON Pointer вместо фиктивного нулевого source span. -
Корпусные scenario ratchets синхронизированы (04.09.2026). Полный KZ- прогон монотонно затянул 88 выросших семейств (22 541 → 25 250 сценариев, понижений нет), а новое
ru_constitution_continuityпрошло 44/44 и внесено точными ID в manifest. Статические ворота видят 25 556 сценариев в 468 семействах шести раннеров без расхождений. -
FNMA/Truv goldens догнали закреплённый CLIR (04.09.2026). В шести
manifest.jsonобновлены только semantic hashes основного FNMA-пакета и deadline-спутника; 30 тестов адаптера снова держат байтовый round-trip, профиль, why-not и границу valid-through. -
Реестры рабочей версии и CLIR-узлов 0.2 синхронизированы (04.09.2026). До заморозки
feature-registry.schema.jsonразрешала точное имя prerelease0.2-draft;deadline_policyи зарезервированныйstageполучили явные причины отсутствия в текущем русском verbalizer pack. Selftest снова различает сознательно непокрытый вид и молча потерянное покрытие. -
Совместимость внутреннего EvaluationRequest с CLIR 0.1 (04.09.2026). Builder typed-запроса по умолчанию наследует
semanticVersionиз IR, а явная версия имеет приоритет. Старый корпус больше не попадает случайно под запрет inlinedeadlinePolicyиз 0.2; отдельные selftest держат обе ветви. -
Завершена фаза 0 DECISION-0084 для заявок ГЭСВ (04.09.2026). Два набора закреплённых source-байтов перемещены из ложных пакетов
corpus/laws/kz/gesv-*к BLOCKED-заявкамcorpus/drafts/kz-gesv-*;fetch_wave_a_missing_texts.py --checkследует этому размещению и сохраняет прежние проверки SHA-256 и воспроизводимости извлечения. -
Совместимость репозиторного Python-среза с 3.11 (04.09.2026). Формирование диапазона страниц в
extract_pdf_layout_text.pyи подсчёт строк вfetch_pacioli_computis_text.pyвынесли литералы с escape-последовательностью из выражений f-string: текст вывода прежний, а AST-ворота снова могут разобрать весь Python-срез на поддерживаемом Python 3.11. -
Полнота source-sync конвейера (04.09.2026). Девять генераторов с отказным
--checkдобавлены вrun_all.sh; пять write-only генераторов явно внесены вSYNC_OUT, а протухшее исключение GPK удалено. -
DECISION-0111 §2.10 — зарезервированный
stage(04.09.2026). Пустая именованная декларация понижается в schema-valid узел CLIR со статусомreserved; Lezer и карта возможностей знают форму. До появления локальной стратификации 0.3 оба evaluator-а тотально и побайтно одинаково отвечают fatalNON_EXECUTABLE_STAGE, не исполняя соседние узлы. -
DECISION-0111 §2.8–§2.9 — лексические metadata-блоки и именованная DeadlinePolicy (04.09.2026). Синтаксис 0.2 поддерживает общие binder-ы,
@source { … }иlabel … { … }с точной лексической областью;LDC-W1301и невозрастающийunanchoredделают пробел метки/якоря наблюдаемым. Политика срока стала именованным узлом CLIR и разрешаемой ссылкой контекста; inline и неизвестная ссылка отклоняются в 0.2, а оба evaluator-а исполняют один закреплённый документ политики. -
DECISION-0111 §2.6–§2.7 — две идентичности и стабильные анонимные факты (04.09.2026).
theoryHashотделён от provenance-awareartifactHashи оба закреплены CLIR/evaluation manifest; перенос якоря меняет только артефакт, перевод метки — ни один ключ. Анонимные assertions 0.2 получают digest-ID факта+provenance, точный дубль отклоняетсяLDC-E1331; lowering 0.1 сохраняет позиционныеassert-N. Долгоживущие FFI handle иlawc eval-serveкэшируют обе идентичности 0.2 наряду с legacyprogramHash, не пересчитывая большие IR на каждом запросе. -
DECISION-0111 §2.5 — точный proof приоритета и тотальный outcome (04.09.2026).
defeatв 0.2 предъявляетoutcome, цепочку объявленныхpriorityRuleи grounded-свидетелей условных рёбер; schema-canary и Lean checker отвергают путь, который нельзя разрешить. Blocking issue больше не соседствует сCOMPUTED; проекция 0.1 сохраняет прежние байты. -
DECISION-0111 §2.3–§2.4 — тотальный резолвер и единый compiler pipeline (04.09.2026). A3-параметры входят в symbol table до lowering, висячие
const_refи чужие enum-members без квалификации отвергаются;checkиlowerиспользуют один проход и обязаны дать одно множество кодов на всех 466 пакетах корпуса. Wiring различает нормативную точку gate и её исторический модуль реализации, не запуская один обход дважды. -
DECISION-0111 §2.2 — единый закрытый EvaluationRequest (04.09.2026).
evaluate(request)стал единственной сигнатурой во всех движках и хостах;case.options— единственное место семантических options, а calendar, external snapshots и receipt отделены как transport. Нормативная схема, сгенерированный тип Constructor и три request-вектора удерживают отказ на старой форме/неизвестном поле и выбранное прочтение в манифесте. -
DECISION-0111 §2.1 — двусторонний completion barrier (04.09.2026).
LDC-E4112отклоняет дефитер без обычного defeasible-кандидата той же головы и полярности; оба evaluator-а зеркально отвергают вручную собранный CLIR кодомNON_EXECUTABLE_STRATUM_BARRIER. Четыре corpus-пакета освобождены от мёртвых дефитеров,PROC-29закрепляет явный негатив. -
Семь линтов LawQL из записанных ловушек и baseline с диспозициями (DECISION-0108, стадия A, 03.09.2026).
aggregate-head-without-key,anchored-relation-without-executable,defeater-collision-without-direct-priority,same-side-priority-review,interpretation-without-group,dangling-const-ref,strict-reader-of-foreign-defeasible-head;ql-baseline.json— строкаdebt/accepted/false_positiveс причиной на каждую находку, автоматической записи нет;check_ql_lints.pyчитаетedges/fields/imports/literalsи dogfood-ит агрегатные головы противcheck_aggregate_keys. -
Аналитика над proof-графами регрессии (DECISION-0108, стадия B, 03.09.2026).
check_proof_analytics.pyснимает с накопителяreport_norm_graphпять осей — приоритеты, прочтения, дефитеры, рубежи дат §87/редакций, непрочитанные головы — как монотонные состояния по точным id с храповикомcorpus/ratchets/proof-analytics-ratchet.json; чтение proof-узлов — одной библиотекойverify/ci/lib/proof_evidence.pyна все ворота; ночное окно N4b, канарейка в PR-гейте; пропуски.lawtestколлектором названы (report_norm_graph.SKIPPED) и красны внеDECLARED_OUT. -
Первый содержательный мост на хабе лиц: ОСМС читает Трудовой кодекс (03.09.2026, ночь). Лицо и работодатель ОСМС стали алиасами лица и участника ГК (сестринский подтип в параметр не подставился бы), и Закон об ОСМС читает трудовой договор и месячную заработную плату Трудового кодекса:
employed_byвыводится изcontract_binds(ст. 27),employment_incomeза расчётный месяц — изmonthly_wage(ст. 29 п. 1). Оклад 300 000 KZT по договору даёт отчисления работодателя 9 000 KZT без единого факта ОСМС о выплате; без договора отчислений нет. Иные выплаты дело подаёт как прежде. Приёмка — регрессия ОСМС и налогового кодекса (читает ОСМС), differential; строка label-ratchet ОСМС ослаблена на два объявления (алиасы без меток). -
Хаб лиц принят КоАП, УК и ОСМС (03.09.2026, ночь). Физическое лицо КоАП и УК — подтип лица ГК, юридическое лицо КоАП — подтип юрлица ГК, лицо и работодатель ОСМС — подтипы лица и участника ГК. Одноуровневые подтипы без мостов и без потери меток;
lawc checkчист у пакетов с зависимыми, регрессия и differential семейств — числа в STATUS. -
Хаб лиц принят Социальным и Налоговым кодексами (03.09.2026, ночь). Физическое лицо Социального кодекса — подтип лица ГК (его читают налоговый кодекс и выслуга), налогоплательщик — подтип участника ГК (гражданин или организация). Одноуровневые подтипы без мостов и без потери меток;
lawc checkчист у трёх пакетов с зависимыми, регрессия и differential семейств — числа в STATUS. -
Хаб лиц принят ещё четырьмя пакетами (03.09.2026, ночь). Одноуровневые подтипы лиц ГК без потери меток и без мостов: Закон о госзакупках — поставщик и заказчик как участники ГК (Правила закупок читают их алиасами как прежде); Трудовой кодекс — физическое лицо как лицо ГК, работник как его подтип, работодатель как участник; персональные данные — участник отношений по обработке как участник ГК (субъект и оператор остаются его подтипами); страхование — участник страховых отношений как участник ГК.
lawc checkчист у шести пакетов с зависимыми; регрессия и differential семи семейств — числа в STATUS. -
Хаб лиц принят браком, акционерными обществами и банками (03.09.2026). Одноуровневые подтипы лиц ГК, без мостов и без потери меток: лицо закона о браке —
Person : CivilPerson(супруг, родитель, ребёнок — граждане ГК); лицо закона об АО —Person : CivilParticipant(акционером бывает и организация), общество остаётся его подтипом; у закона о банках лицо — участник ГК, банк и организация с банковскими операциями — юридические лица ГК. Приёмка —lawc checkчист у трёх, регрессия и differential семейств брака (с читающими его ДУМК и жеті ата), АО и банков — числа в STATUS. -
Хаб лиц принят исполнительным производством и банкротством граждан; мост ст. 74 отложен до правки компилятора (03.09.2026). Взыскатель, должник и «лицо» исполнительного производства — алиасы
CivilParticipantГК (роль несёт отношение), должник-гражданин закона о банкротстве —pub entity Dolzhnik : CivilPerson, день возбуждения дела (ст. 14) —pub. Мост «возбуждено дело о банкротстве должника → реализация арестованного имущества приостанавливается» понижается и исполняется верно (оракул, 218/218 с парой сцен), ноlawc checkне ведёт цепь подтипов через границу пакета (должник банкротства → лицо ГК → участник ГК) и даёт LDC-E2104 —checkиlowerрасходятся. Квалификация: дефектlawc(law-hir,entity_extendsнад Foreign без чтенияbaseимпортированного CLIR); мост снят до вектора и правки, находка записана в DECISION-0107 §6. Оба пакетаcheckчисты, 216/216, разметка зелёная (строка исполнительного производства ослаблена на три объявления — алиасы без меток). -
Хаб лиц в Гражданском кодексе (DECISION-0107, решение владельца 03.09.2026).
CivilParticipant,Person,LegalEntity,PublicEntityГК сталиpub; отраслевой акт объявляет своего субъекта ПОДТИПОМ лица ГК через алиас (type CivilPerson = kz.corpus.civilcode::Person; pub entity Serviceman : Person), и один URN остаётся одним лицом во всех пакетах (identity §36) — без алиасов сущностей и фактов тождества, которыми начинались пять связей этого дня. Пробы: подтип подставляется в предикат надтипа (checkOK, TRUE_ONLY), несвязанные типы компилятор отвергает (LDC-E2104), надтип из чужого пакета берётся через алиас. Пилот: Закон о воинской службе —Person : CivilPerson,Serviceman : Person, фактserviceman_identityснят; Правила прохождения службы выводят «не годен с исключением с учёта» изfitness_category(serviceman, FIT_E)напрямую.lawc checkчист у четырёх пакетов, разметка и формы зелёные; регрессия и differential одиннадцати зависимых семейств — числа в STATUS. -
Связь по карте № 4: заключение ВВЭ доходит до увольнения через тождество лица в Законе (03.09.2026). У Закона «О воинской службе» два субъекта — гражданин (
Person) и военнослужащий (Serviceman) — без единого отношения тождества, поэтому категория годности ВВЭ (о лице) не могла дойти до увольнения по здоровью (о военнослужащем) ни в одном пакете. Выбран вариант «тождество в Законе»:pub relation serviceman_identity(serviceman, person)— факт документа ВВК;PersonЗакона —pub, освидетельствуемый Правил ВВЭ — его алиас (511 упоминаний не тронуты); Правила прохождения службы импортируют ВВЭ и выводятunfit_with_deregistrationиз категории «Е» (fitness_category(person, FIT_E)) и тождества; «Д» ведёт в запас, не в отставку. Попутно измерен барьер §111 через границу пакета: строгий мост над поражаемым выводом Закона (основания статьи 26 поражаемы) уходил в поздний строгий слой (DECISION-0088), и поражаемое правило запаса сnot_knownего не видело при работающей отставке — мост и четыре его читателя стали поражаемыми,lawc checkдержит это LDC-E4103. Приёмка: KZ-VSP-154V («Е» → отставка; «Д» → запас, не отставка), 76/76 в трёх семействах; строка label-ratchet ВВЭ ослаблена на одно объявление (алиас без метки). -
WP-39 доведён до обучения (DECISION-0106 черновик, 03.09.2026):
corpus/dataset/export.py— JSONL по задачам стенда, по умолчанию право Казахстана на русском (решение владельца), разделение по замороженному срезу, проекция скелета под бюджет;source-licenses.json— статус источника в паре (WP-39 §(e));augment.py— синтетика §(c) с верификациейlawc lowerпротив эталона через ту же вставку;train/— награда RLVR, SFT и GRPO на TRL, вывод для стенда, рецепт. Срез перезаморожен (1 207 → 1 857 пар) — 37 норм утекли по §209 после роста корпуса.test_export.py— шаг 4run_all.sh. Полный экспорт: train 11 011 / held-out 1 100 строк, синтетика 13 552. Попутно починен красныйbaseline.py --selftest --quick:anchor_spansпоглощал соседние однострочники@source(X) rule …, а скелет со ссылкой на вырезанное правило теперь сверяется структурно. Первый GPU-замер (A100, 30 задач): Qwen3-14B 37 % / 0,14 → LoRA на 450 строках 60 % / 0,22 (gate_clean/iso_f1); отчёты вtrain/reports/. Ночной прогон 04.09 (1 707 строк × 2 эпохи, 5 ч на A100): на 60 задачах 87 % / 0,425 против 48 % / 0,25 у базы — уровень Claude с промптингом. -
Ключ §45.1 у агрегатных голов: 82 объявления в 32 пакетах (DECISION-0105, 03.09.2026). Отношение, чьё значение выводится через
count(collect …), объявляетkey(…)по неагрегатным аргументам. Без него сводное число, поданное делом, уживалось с пересчитанным: истинны оба, issue нет (измерено наaba-skill-vocabulary— 20 и 0 одновременно TRUE_ONLY). Найдено отчётом модели черезlaw_report. Исключеныfardвfaraid-sharesиsa-personal-status— доля функциональна лишь внутри прочтенияany_of§152. Держат: регрессия 583 сценария, differential 601 вызов байтово,check_lower, 141 сцена.lawtest. -
Ворота на ключ у агрегатных голов —
verify/ci/gates/silence/check_aggregate_keys.py(03.09.2026): голова без ключа и без записи — отказ, устаревшая запись (предикат обрёл ключ или исчез) — тоже. Реестрcorpus/slices/aggregate-key-exemptions.jsonведётся руками (exempt— норма законно многозначна,debt— пакет не собирается): функциональность не выводима из формы, и--registerзаглушал бы ворота не думая. Канарейка шесть проб; класс молчания вырос с пяти ворот до шести. -
Статья 7 Закона о госзакупках разведена по подпунктам, и легли оставшиеся мосты Правил (03.09.2026).
restrictedвыводился из одного основания — реестра недобросовестных (пп. 7); теперьrestriction_ground(supplier, ART7_G1…G13)— по константе на подпункт, эмпирический факт на каждый с содержанием подпункта в метке (исключения пп. 2 и 9 вписаны в факт: строгие потребители Правил не допускаютnot_known, §111),restricted— при любом основании. Правила читают подмножества: п. 193 автоотклонение по девяти подпунктам (1, 3–9, 13), п. 284 невключение в перечень квалифицированных по десяти (3–11, 13); п. 206 недопуск — по любому. Приёмка: KZ-PR-LAW-03 (коррупционное преступление — автоотклонение и недопуск; приостановление деятельности — только недопуск), KZ-PR-LAW-04 (пп. 10 мешает перечню, пп. 1 для перечня не считается), 990/990 в трёх семействах,lawc checkчист. -
Связь по карте № 3: Правила госзакупок (приказ № 687) читают Закон 106-VIII (03.09.2026). Правила держали свои сущности лота и поставщика (1929 и 885 сигнатур) и брали «нарушил требования статьи 7 Закона» делом в пяти местах. Теперь
type Lot/type Supplier— алиасы типов Закона, а два из пяти мостов выводятся: п. 206 пп. 2) (недопуск) — изrestrictedЗакона и поданной заявки, п. 505 (закупка из одного источника несостоялась) — изrestrictedи приглашения поставщику. Три оставшихся (п. 193 автоотклонение по подпунктам 1, 3–9, 13; п. 284 перечень квалифицированных по подпунктам 3–11, 13; п. 207) намеренно не проведены: Закон пока выводит только одно основание статьи 7 — реестр недобросовестных участников, — а сами Правила говорят, что для п. 284 это основание не считается. В Законеpubу лота, поставщика иrestricted. Приёмка: KZ-PR-LAW-01/02 (реестр Закона → недопуск и срыв единого источника; без записи в реестре — NEITHER), 988/988 в трёх семействах,lawc checkчист; строка label-ratchet ослаблена на два объявления (алиасы без меток). -
Судебное обжалование по статье 106 УПК: НП ВС № 3 в редакции с 01.07.2026 и правящее его НП ВС № 5 (03.09.2026). Заведён
kz/complaints-106— два инструмента Верховного Суда в одном CLIR. Глубина §33.1: у № 3 — 29 EXECUTABLE из 33 пунктов, 4 EXCLUDED, 0 UNEXPLAINED; у № 5 — 2 из 2. Регрессия 127/127, цели §270 3/3 HELD на 121 мире, три канарейки падают каждая по отдельности. Постановление № 5 закреплено ДВУМЯ редакциями: подписанный скан Верховного Суда (PINNED_OFFICIAL_BYTES, текстовый слой негоден — распознавание приняло кириллицу за латиницу) и текст ИПС «Әділет» как носитель фрагментов; связь —alignсо статусомreviewed_against_scan, сверка 99,5 % слов, расхождений по существу нет. Цель §270 нашла девятое основание возвращения жалобы (пункт 7 выводил возвращение мимо перечня пунктов 11 и 24 при закрытом и целом замыкании §70); ворота мёртвых символов нашли ещё две нормы — трёхсуточный срок исполнения требования судьи и различие «вручается / направляется» пункта 26. Спорная точка отсчёта «того же срока» пункта 6 объявлена двумя прочтениями §152 в группе §155any_of— выбор за человеком. -
Связь по карте № 2: конституционный закон о Правительстве читает Конституцию (03.09.2026). Разрез труда «принцип у Конституции, механика у закона» держался на собственной сущности Правительства в законе, и identity §36 делала два органа при одном URN: вывод статьи 69 (сложение полномочий перед новым Курултаем) в механику статьи 4 закона не входил, закон читал сложение делом. Теперь
type Government = kz.constitution.government:: Government,powers_relinquished— институциональный с мостом изgovernment_powers_relinquishedКонституции; в конституционном пакетеpubполучили Правительство, Курултай и три предиката статьи 69.kz.constitution.governmentвписан вPREBUILT_PACKAGESгенератора рядом сrightsиcourt. Приёмка: KZ-GOV-CON-01 — избран новый Курултай (факт Конституции) → полномочия члена прекращены и обязанности продолжаются (механика закона), без избрания — NEITHER; 9/9,lawc checkчист; строка label-ratchet ослаблена на одно объявление (алиас без метки). -
verify/ci/tools/link_map.py— карта близости пакетов против графа импортов, и первая связь «закон ↔ его правила» по ней (03.09.2026). Инструмент читает лексический индекс слоя обнаружения (детерминированный, без внешних зависимостей) и даёт три проекции: центроиды пакетов (находит пересечение предмета: воинская служба ↔ правила прохождения 0,80, Конституция о Правительстве ↔ закон о Правительстве 0,76, семейство закупок 0,52–0,74; НЕ находит хабовые связи — у реальных рёбер импорта косинус 0,04–0,4; шаблонные метки стаб-слоя отмечаетstub-like), метки, называющие чужой акт без импорта (ФНО → Налоговый кодекс ×52, правила закупок → закон о закупках ×44, Бюджетный кодекс → закон о бюджете ×22), и ближайшие предикаты других пакетов. По первой строке карты проведена связь: Правила прохождения воинской службы (Указ № 124) читают Закон «О воинской службе» — военнослужащий стал ОДНИМ лицом алиасом типа (type Serviceman = kz.corpus.conscription::Serviceman; до этого identity §36 делала его двумя лицами при одном URN), а срок службы, основание увольнения, предельный возраст и отпуск выводятся статьями 24, 26, 25 и 46 Закона вместо «моста делом».DischargeGroundЗакона сталpub. Приёмка: пара по виду службы (по призыву 12 месяцев истекли, офицеру по призыву 24 — нет), 46/46 в двух семействах, differential 185/185 байтово,lawc checkчист; строка label-ratchet ослаблена на одно объявление осознанно — у алиаса метки нет по грамматике. -
Четвёртая партия связи МРП ← бюджет: Социальный кодекс (03.09.2026). Девять «применимых МРП» пакета (адресная помощь, ст. 211, 213, 242, 256, специальное госпособие, пособия многодетным, награждённым матерям и на ребёнка) были эмпирическими отношениями на носителя: величина равнялась тому, что подаст дело, и у ст. 242 и 256 сцены подавали 1 000 тенге, а выплата на погребение «35 МРП» проверялась как 35 000. Бюджетные акты пакет импортировал давно ради МЗП ст. 244, но прогон семейства их не линковал. Теперь двадцать правил-мостов (носитель — из эмпирического факта, открывающего норму; год — окнами
effective), прогон линкует бюджет, сцены ст. 242/256 пересчитаны от 4 325 (151 375, 158 295, 406 550; долг 26 000 > 6 МРП), пара по оси года на пособии на рождение (149 416 против 164 350). Регрессия соцкодекса и двух зависимых семейств (подоходный налог, выслуга) 1775/1775. -
Третья партия связи МРП ← бюджет: банкротство граждан и бухучёт (03.09.2026). Оба пакета держали МРП ЭМПИРИЧЕСКИМ ЦЕЛЫМ («на дату заявления», «на дату платежа», «на 1 января»), а суммы обязательств, платежей и дохода — целыми тенге: величина равнялась тому, что подаст дело, и сцены подавали 3 932 на дату права 2026 года. Теперь оба импортируют
kz.corpus.budgetиkz.corpus.budget2025, суммы стали Money, выбор года записан окнамиeffectiveпо тексту (ст. 1 пп. 11 и ст. 5 Закона о банкротстве граждан; ст. 2 п. 2 Закона о бухучёте, у которого МРП перестал быть «на субъекта» — величина одна на год). Приёмка: 173/173 в двух семействах, пары по оси даты (платёж 3 933 тенге — погашение в 2025 году и нет в 2026; доход 135 000 × 4 325 освобождает в 2026 и превышает предел 2025 года), differential байтовый. -
Вторая партия связи МРП ← бюджет: упрощённое урегулирование, Трудовой кодекс, Закон об АО (03.09.2026). Три пакета читали величину по-разному и одинаково неверно: упрощённое урегулирование держало копию A3-параметром (как КоАП до утра), ст. 122 ТК и ст. 10 Закона об АО — ЭМПИРИЧЕСКИМ отношением, то есть МРП равнялся тому, что подаст дело (сцены АО подавали 100 тенге). Теперь все три импортируют
kz.corpus.budgetиkz.corpus.budget2025, ось выбора названа по тексту: день выплаты (п. 3 ст. 24 Закона 446-II; «на момент выплаты» ст. 122 ТК), финансовый год (ст. 10 АО). Приёмка: 245/245 в трёх семействах, пары по оси даты (ТК: 1 081 250 против 983 000 KZT за 250 МРП; АО: минимум капитала 216 250 000 против 196 600 000 KZT), differential пяти затронутых семейств 480/480 байтово. Четыре рукописных теста урегулирования получают МРП посылкой с записанной причиной:lawc testчитает один CLIR без линковки. -
Первая межотраслевая связь современного права РК: МРП КоАП и УК читается из законов о бюджете (03.09.2026). Замер графа импортов по 225 KZ-пакетам: 82 ребра, 160 изолированных; среди ~130 актов современного права связан один кластер из 21 вокруг бюджета и конституционных прав, а КоАП и УК стояли особняком. При этом КоАП держал КОПИЮ величины МРП A3-параметром (3 932 и 4 325 тенге, переписанные из бюджетных актов руками), а УК в тенге не отвечал вовсе — штраф статьи 41 оставался числом МРП. Теперь оба пакета импортируют
kz.corpus.budgetиkz.corpus.budget2025, а выбор года записан окнамиeffectiveпо тексту самих кодексов: статья 44 КоАП берёт показатель «на момент возбуждения дела», статья 41 УК — «на момент совершения» (приём kz.corpus.incometax). Параметр иlaw.lockКоАП сняты, у УК заведеныapplicable_mrpиfine_amount_in_tenge. Приёмка — пара сцен по оси даты у каждого кодекса (43 250 против 39 320 KZT за десять МРП по ст. 592; 86 500 против 78 640 KZT за двадцать МРП по ст. 41) и сторож молчания за пределами закреплённых лет (2024 год — NEITHER, а не подсчёт по чужому году); регрессия 212/212. Ту же копию МРП параметром держит ещёkz/uproshchennoe-uregulirovanie— не тронут. -
Два закона РК: надзор финансового рынка (474-II) и жилищные отношения (94) (03.09.2026). Оба цитировались уже закреплёнными байтами корпуса, а по адресу было пусто. Закреплены 76 и 168 статей (нумерация не сплошная: 66 и 46 вставных, у финансового рынка номер 15-20 не занят вовсе); перечни закрыты списками, и новая редакция со вставной статьёй роняет генератор, а не проезжает. Мера §33.1: EXECUTABLE 40 и 93, UNEXPLAINED ноль у обоих; разметка §218 с нулём неразмеченного. Приёмка — 27 и 36 сценариев, differential байтовый, 2 и 3 цели §270 HELD на мирах живой регрессии, обе канарейки FAILED. Пятнадцать и двадцать шесть статей учтены EXCLUDED с основанием из сноски закреплённого html: у финансового рынка это девять отменённых и шесть статей о финансовом омбудсмане, которые вводятся с 01.01.2027 и помечены порталом «текст исключен».
Исправлено
- E-0121 · §42/§48:
lawc checkведёт цепь подтипов сущностей через границу пакета (03.09.2026). Два разных чужих имени были несовместимы по построению (E-0098), хотяlowerи оба движка принимали: мост хаба лиц «должник банкротства → лицо ГК → участник ГК» давал ложный LDC-E2104. Резолвер отдаёт базы публичных сущностей (export_bases, цепь алиасов пройдена до цели), генераторы контекста кладут их ключомexportBases, компилятор (check_types_with_imports) ведёт цепь §42 по Foreign-звеньям: доказана — принять, известна целиком и не доходит — LDC-E2104, звено в пакете без предъявленных баз — непроверяемо, принимается. Три статических вектора из прозы §48; юнит-тесты law-hir 206/206, clippy чист; core differential 311/311, check_lower 8/8, cross-package и resolve зелёные.gen_kz_clir.py --imports-for <CLIR>печатает контекст для строгой проверки пакета корпуса; на исполнительном производстве строгийcheckчист, а отрицательный контроль без баз даёт LDC-E2104. Мост ст. 74 п. 3 (возбуждение дела о банкротстве → реализация приостанавливается) возвращён: 218/218, differential 297/297. - Хвост дефектов ядра (03.09.2026): E-0117…E-0120.
LDC-E1330— голое имя в позиции терма без объявления отвергается на check и lower (метаданные источника — идентификаторы, не термы); запрос-коллекция §174.1 при ошибке терма generator-а отвечает документом, а не traceback-ом (E-0118); статическая арность std-термовLDC-E2116(E-0119); иммунитет §128 глушит запрос судье (E-0120); знак слагаемых монотонного гарда — и в поражаемом слое;LDC-E4102называет каждый цикл. Differential 311/311. - E-0032 п. 3 и E-0116 (03.09.2026). Миграция голых доменных констант
генератором
verify/ci/tools/migrate_const_decls.py: +5 114 объявленийconstв 45 пакетах, ни один статус сценария не изменился, differential байтовый; воротаcheck_dead_symbols— восстановлен счётчик «ассертится и не читается», правило живости константы,--canary, 1 421 ожившая строка снята из реестра. E-0116: монотонный агрегатный гард (count/sum/maxпротив нижней границы,minпротив верхней надmonotone(P)) остаётся строго-положительным ребром,MONOTONE_GUARD_NEGATIVE_ADDENDсторожит слагаемые;us.ofac_50снова исполним, differential 305/305. - MCP: каталог называл константу именем её СУЩНОСТИ, и вопрос по этому
имени молчал (03.09.2026). У
la-protagoras-euathlusобъявлениеconst PROTAGORAS: Persona = entity_ref("…#Protagoras")каталог показывал константой «Protagoras» (URN значения), а само объявление — нуль-арной сигнатурой «PROTAGORAS()».law_ask merces_debeturпо подсказке каталога строил const_ref на сущность (публичный сервер) либо фантомную сущность дела (после правки_collect_refsтого же дня) — посылкаpactum_mercedis(PROTAGORAS, EVATHLUS)не унифицировалась, ответ NEITHER без единого issue при BOTH у оракула через шов (LA-PE-02). Один критерий на три стороны (catalog._addressable_constants): перечень констант каталога, словарь коротких имён резолва и сигнатуры; объявленная константа идёт в константы под именем объявления, короткое имя сущности-значения разрешается в const_ref на объявление-владельца (_entity_term), сущность из литералов без владельца (Kurekу словаря грамматики) — в entity_ref на неё, нуль-арные отношения и функции константами больше не считаются. По корпусу (472 пакета): в 249 из сигнатур в константы перешли 9 010 объявленных констант, из перечней ушли 323 URN значений. Семантики нет (инвариант 5); контрактtest_server.py+6 проверок раздела 6в-кватер, на HEAD-копииapps/mcpтри из них красны. - MCP: календарь §85 и политика §86 доходят до норм со сроками (03.09.2026).
44 акта KZ-корпуса считают рабочие дни (
add_business_days), но узлаcalendar_snapshotне несут: раннеры регрессии подмешивают снимок и байты ресурса руками, а через сервер такие нормы отвечали NEITHER сMISSING_CALENDAR(замер: ст. 16 банкротства граждан). Теперь, когда мир вопроса зовётadd_business_daysи снимка не несёт, в него входит календарный пакет профиля (официальный календарь РК), байты ресурса первого снимка мира подаются опцией, id — вcase.options.calendarSnapshot, как в делах регрессии; календарь назван в соактах ответа. Политику §86 вопрос подаёт аргументомdeadlinePolicy(law_ask, позиции, аналитика) — без неё ответ несётMISSING_POLICY, сервер её не подразумевает. Контракт: +4 проверки (15-й рабочий день в срок, 16-й — нет, без политики — код, не-объект — отказ ввода). - MCP-сервер не видел импортов пакета: мир вопроса теперь включает
замыкание
imports(03.09.2026).law_ask/positions/факты склеивали мир только с пакетами, откуда пришли факты; норма, читающая чужой предикат, через сервер отвечала NEITHER (посылка DEPENDS) — так у ОСМСminimum_wage_for_yearдавал ноль записей, у КоАП штраф в тенге не выводился, и ни одно из 82 рёбер импорта корпуса не доходило до ответа. Полное замыкание — уlaw_ask; аналитика §274 берёт срез по обратной достижимости от цели (query._relevant_world_keys, совет Codex: вариант B с откатом к полному), иначе капmaxArguments64 переполнялся нормативными фактами непричастных актов. Попутно:_merged_docобъединяетfeatures(литерал ронял A3-параметр соседа), провенанс берёт якоря у ассерций §73 (статья 7 закона о бюджете названа),law_explainразличает факт дела и нормативный факт акта, текст ответа перечисляет соакты. - Пачка закрытия дефектов ядра (03.09.2026): E-0110…E-0115, E-0100, DECISION-0102.
abs/roundнадIntegerв обеих реализациях и Lean (E-0110); все живые судейские ветви в каноническом порядке (E-0111); канал суждения §47.3 сквозьvalid_when,conditionцели и условие дефитера (E-0100,POWER_INVALID_EXERCISEне выпускается при судейскомvalid_when); реброcompletion§110/§111 — агрегат иforallнад выводимым предикатом считаются по замороженному множеству, цикл —LDC-E4102(E-0112); многоуровневые замыкания §70 (E-0113); несколькоwhen— конъюнкция, несколькоthen—<rule>/head/N, повторscope/effective/defeat—LDC-E1329(E-0114);include/excludeберут экспансию объявления (E-0115);lawc checkисполняет сухой lower и звучит его кодами, воротаcheck_lower_parity(DECISION-0102). 27 новых векторов, differential 302/302, сертификаты 302/302. Открыто: три акта с рекурсией через агрегат стали нестратифицируемыми подcompletion(STATUS). - MCP: вход таблицы решений достижим (DECISION-0104, 03.09.2026).
_resolve_predicateпринимает полный id без#и короткое имя узла — до этого сервер называл…:table:<т>/inputв whyNot и отвергал его как «не объявлен», и через MCP не срабатывала ни одна таблица режимаrules(26 пакетов).law_rulesпомечает вход таблицы вfactsTemplateи называет его фактом дела.DEFAULT_LEGAL_TIME26.08 → 03.09.2026: редакции ВВК (in_force 28.08) на умолчании молчали целиком.
Добавлено
-
Казахская грамматика: срез
kz.grammar.eliktewрасширен вторым источником — §§95—100 академической «Қазақ грамматикасы» 2002. Связка еліктеуіш закрыта целиком: род подражательного слова (пять признаков одной конъюнкцией), три словообразовательных разряда, соседний класс бейнелеуіш и синтаксическая функция. Второй слой получил собственную сущностьQgElikteuishSozi: §68 говорит о сочетании, §§95—100 о слове. Главная находка: источник ПРОТИВОРЕЧИТ САМ СЕБЕ — §95 включает в определение рода «сөйлемде ӘРҚАШАН сын-қимыл пысықтауыш», а §100 раздаёт роль по сочетанию и даёт тому же слову анықтауыш; пакет не выбирает между параграфами и держит оба вывода рядом. Ещё четыре находки: два источника среза расходятся в классификации бейнелеуіш (§99 без провода к роду против §68, соединяющего их одним основанием); §96 и §99 пересекаются по зрительному образу; род по проводу не несёт пяти признаков §95; §98 даёт четыре клетки перекрёстно. Правил стало 21, сценариев 9 в двух семействах, KZ-differential 58/58 байтово, четыре цели §270 HELD на 32 мирах. -
Три независимых финансовых пакета РК: АО, платежи и реабилитация/банкротство. Закреплены русские текущие копии и закрытые синхронизаторы 99, 74 и 147 статей. Добавлены исполнимые срезы корпоративных порогов, дивидендов, кворума и крупных сделок; системной значимости, окончательности перевода и допуска платёжных услуг; точного пропорционального распределения первой очереди, расходов, залога и очередности. Регрессия — 184 + 146 + 195, KZ-differential — последний полный срез 318/318 байтово, а payments и rehabilitation_bankruptcy дополнительно подтверждены 146/146 и 194/194 байтово. Четыре цели HELD и три падающие канарейки. Карты глубины оставляют неисполненные статьи видимыми как SOURCE_ONLY (4, 6 и 99), при UNEXPLAINED=0. В АО добавлена проверяемая нижняя граница статьи 58: участие половины состава означает соблюдение только законодательного минимума, без предположения о более низком уставном кворуме; а статья 81 п. 2 отдельно связывает защиту кредитора с реорганизацией разделением или выделением; статья 82 п. 1 — создание нового общества и универсальное правопреемство при слиянии; статья 83 п. 1 — прекращение присоединяемого общества и такое же правопреемство; статья 84 п. 1 — прекращение при разделении и переход ко вновь возникающим обществам; статья 85 п. 1 — выделение без прекращения реорганизуемого общества; статья 86 п. 1 — универсальное правопреемство при преобразовании; статья 87 п. 1 — судебное назначение доверительного управляющего при просрочке; статья 90 п. 2 — судебное правомочие органа после переходного нарушения; статья 79 — обязанность раскрытия на двух установленных ресурсах; статья 6 п. 1 — учреждение общества решением учредительного собрания или единоличным решением единственного учредителя; статья 8 п. 1 — нотариальная форма учредительного договора либо решения единственного учредителя; статья 9 п. 3 — доступ заинтересованного лица к уставу общества; статья 10 — точная граница минимального капитала в 50 000 МРП; статья 11 п. 3 — увеличение капитала размещением объявленных акций; статья 13 п. 1 — ликвидационное имущественное право владельца простой акции; статья 20 п. 2 — отсутствие отчёта при отсутствии размещения за отчётный период; статья 23 п. 1 — конъюнкт аудита, устава и решения собрания для обычных дивидендов; статья 24 п. 1 — отсутствие такого требования для привилегированных акций; статья 26 п. 3.1 — запрет инициированного обществом выкупа до первого собрания. В платежах добавлен запрет правил системы на исключительное участие и ограничение участия в других платёжных системах (статья 5 п. 3), а также обязанность оператора или операционного центра системно значимой либо значимой системы обеспечить обратную связь с её участниками (статья 9 п. 6 подп. 2), а также критерий значимого поставщика для организатора пенсионных, пособийных, социальных и иных выплат из бюджета или фонда социального страхования (статья 11 п. 1 подп. 7). Статья 13 п. 7 дополнена самостоятельным запретом менять условия или реквизиты указания клиента. Статья 14 п. 2 подп. 3 добавляет обязанность агента или субагента выдать клиенту подтверждающий документ с необходимыми реквизитами. Статья 19-1 п. 1 подп. 1 запрещает статус учредителя или участника платёжной организации лицу с неснятой или непогашенной судимостью. Статья 21 п. 2 подп. 1 обязывает Национальный Банк мониторить системно значимые платёжные системы; отсутствие такого статуса не выводит обязанность. Статья 22 п. 1 отдельно связывает этот мониторинг с полученными от оператора, операционного центра либо участника сведениями. Статья 23 п. 2 подп. 8 закрепляет ведение и публикацию реестра значимых поставщиков. Статья 25-1 п. 2 подпп. 1–4 признаёт транзакцию мошеннической по обращению клиента, подтверждённой информации органа уголовного преследования, основаниям внутренних документов либо записи отправителя или бенефициара в базе антифрод-событий и попыток. Статья 28 п. 1 запрещает закрывать счёт по заявлению клиента при наличии неисполненных требований к нему; остальные основания прекращения договора не подменены этим срезом. Статья 30 развернута восемью самостоятельными правилами для каждого названного платёжного инструмента, а не одним обобщающим основанием. Статья 31 п. 3 отдельно допускает сводное платёжное поручение в названных конфигурациях нескольких отправителей и (или) бенефициаров. Статья 32 п. 1 связывает возникновение прав и обязанностей по платёжному требованию с его предъявлением в банк отправителя денег. Статья 33 п. 3 разводит выдачу чека, которая платёж не завершает, и получение чекодержателем денег, окончательно исполняющее обязательство. Статья 35 пп. 1–2 связывает законное безакцептное списание с инкассовым распоряжением и возникновение прав и обязанностей с его предъявлением. Статьи 36–38 добавляют основание платёжного ордера, использование извещения без банковского счёта отправителя и подтверждённое согласие держателя электронного средства платежа. Статья 39 п. 1 добавляет выпуск и использование платёжной карточки уполномоченным поставщиком на основании договора с её держателем. Статья 40 п. 2 связывает права и обязанности карточного платежа с согласием предпринимателя или юридического лица принять этот платёж. Статья 41 п. 1 закрепляет обработку и клиринг внутристрановой межбанковской карточной операции за оператором из реестра платёжных систем. Статья 41-1 п. 1 добавляет открытие цифрового счёта на платформе цифрового тенге по заявке клиента после заключения договора цифрового счёта. Статья 41-3 п. 1 закрепляет исключительное право Нацбанка выпускать и погашать цифровые тенге; статья 42 пп. 1 и 4 — национальную валюту номинала электронных денег и возникновение прав владельца при их получении. Статья 41-4 добавляет право пользователя платформы цифрового тенге сменить обслуживающего цифровой счёт участника путём направления заявления. Статья 43 п. 1 добавляет выпуск электронных денег после получения установленной суммы с подтверждением; статья 44 п. 2 — денежное требование продавца, принявшего электронные деньги по договору. В банкротстве добавлены способы установления банкротства по заявлению должника либо кредитора/уполномоченного лица (статья 4 пп. 1–2) и основание заявления должника при устойчивой неплатёжеспособности (статья 5 п. 1), а также основание реабилитационной процедуры при временной неплатёжеспособности (статья 5-1 п. 1). Статья 6 п. 1 добавляет субсидиарную ответственность виновного в преднамеренном банкротстве лица и солидарную ответственность нескольких таких лиц, не подменяя расчёт её размера по статье 96. Статья 8 п. 1 добавляет запрет контрагенту отказаться от ранее заключённого договора только по причине возбуждения дела о банкротстве. Статья 7 п. 4 устанавливает возврат в натуре либо денежное возмещение по недействительной сделке; статья 8 п. 4 запрещает зачет взаимных требований в период процедуры, не подменяя исключение для генерального финансового соглашения. Статья 9 п. 1 определяет аффилированность участника, учредителя или акционера должника либо кредитора; статья 10 п. 4 подп. 2 исключает из конфиденциальных сведения о составе и решениях комитета кредиторов. Статья 11 п. 2 подп. 1 связывает решение о ликвидации и недостаточность имущества с обязанностью должника обратиться в суд о признании банкротом. Статья 12 п. 1 допускает к деятельности администратора подавшее уведомление квалифицированное физическое лицо или профессионального бухгалтера, не подменяя детальный перечень требований к кандидату. Статья 22 п. 2 даёт кредитору проверяемое право обжаловать решение суда или действие администратора, ущемляющее его законные интересы в процедуре. Статья 23 п. 1 даёт кредитору право участвовать в собрании только при включении его требования в реестр на дату этого собрания. Статья 24 п. 1 закрепляет организацию и проведение обычного собрания кредиторов за администратором, не смешивая это правило со специальным случаем отстранения управляющего. Статья 25 п. 1 подп. 1 признаёт надлежащим уведомлением двуязычную публикацию на ресурсе уполномоченного органа только при сроке не менее десяти рабочих дней до собрания. Статья 26 п. 2 выражает общий кворум только при строго более чем половине голосов участвующих кредиторов, включая заочно голосующих; граница ровно 50% отдельным сценарием не проходит.
-
Полные постатейные пакеты законов РК «О промышленной политике» и «О страховой деятельности». RU/KK и сырой HTML закреплены воспроизводимыми фетчерами и постатейными sync-генераторами. Глубина: 83 EXECUTABLE + 1 EXCLUDED и 129 EXECUTABLE + 14 EXCLUDED, при SOURCE_ONLY=UNEXPLAINED=0; вставные якоря используют подчёркивание. Добавлены сквозные нормы по перечню мер, субъекту, выплате, лицензионной власти/иммунитету и пруденциальному исключению; 9 сценариев, 4 цели и две падающие канарейки. Глава 6-1 страхования включена в MCP-профиль
islam. -
Цели §270 связки етістік замерены и записаны в манифест.
kz.grammar.etistik— 4/4 HELD на 45 мирах,kz.grammar.kosemshe— 3/3 HELD на 25; обе канарейки падают. Замер был отложен, потому что в момент фазы целейengines/не компилировался под errata E-0114, аrun_goals.pyшеллитlawc lower-property; строки вgoal-manifest.jsonне писались, пока вердикт не был измерен. Канарейкаkosemsheпри этом поймала собственную ошибку: первая её редакция стояла на однонаправленной цепи §66 и держалась — там всякая ступень по построению есть подмножество исходного факта, и ложного универсального утверждения не существует. Перенесена на единственное ветвление пакета (§§10—11, два маршрута к одной клетке письма), где падает с контрпримеромUyidy. Орфографический слой §§10—11 получил при этом первую цель за всё время существования среза №24. -
Провод «словарь → срез» для
kz.grammar.septik: одна строка дела даёт полную падежную парадигму. Устройство то же, что уkz.grammar.taueldik(импорт-поставщикkz.grammar.sozdik, ни один символ не назван, импорт ради пина байтов по contentHash). Измерено перебором всех тридцати аллморфов по шести падежам: у слова с аттестованным рядом отвечают ВСЕ ШЕСТЬ падежей, ровно по одной клетке на падеж («кітап» → -тың, -қа, -ты, -та, -тан, -пен). Граница ряда у септіка проходит по падежам: көмектес ряда не требует, и слово без аттестованного ряда получает ровно один падеж из шести, а не молчит целиком. Три сценария, регрессия 18/18. -
Казахская грамматика: новый пакет
kz.grammar.etistik(реестровый №67) и §66 у срезаkosemshe. Связка етістік закрыта целиком: §§60—65 — база глагола (род с четырьмя напечатанными значениями, пара «жетекші ↔ көмекші» с закрытым перечнем из тридцати форм, пара «салт ↔ сабақты», аналитический формант); §66 — вторым источником среза №24, цепью причин «тиянақсыз → требует завершающего глагола → основа сложного глагола». EXECUTABLE 6 из 6 при нуле посылок в один конец. Главная находка: перечень §62 даёт КЛАСС, но не РОД — слово «етістіктер» стоит у него в определяющей части, и обратный провод дал бы неcтратифицируемый цикл LDC-E4102. Ещё пять находок: два входа §62 дают разные наборы выводов; §§63—64 описывают разряд, а не определяют его; «ғана» §61 — настоящее ограничение круга; три «возможности» §61 — не клетки; §65 определён через §62, показатель и глагол разведены разными сущностями. Правил 50 и 6, сценариев 9 и 6, KZ-differential 140/140 байтово. -
Казахская грамматика: срез
kz.grammar.esimdikрасширен вторым источником — §§49—59 академической «Қазақ грамматикасы» 2002. Связка есімдік закрыта целиком: род местоимения (три признака), первое деление (субстантивтік и атрибутивтік), второе деление (семь разрядов с четырьмя закрытыми перечнями — 3, 13, 8 и 12 напечатанных форм) и синтаксическая функция. Второй слой получил собственную сущностьQgEsimdikSozi: §66 говорит о сочетании, §§49—59 о слове. Главная находка: род, полученный проводом от разряда, НЕ несёт трёх признаков §49 — разрыв принадлежит источнику, и пакет его не «чинит». Ещё шесть находок: два деления источник между собой не связывает; подлежащее §50 эллиптично и восстановлено заголовком; ровно один перечень открыт («т.б.» у целей вопроса §54); парадигма §52 напечатана условным наклонением при «әрқашан» рядом; §59 ставит рядом склонность и строгое ограничение; §§53 и 56 дают признак принадлежности по-разному. Правил стало 70, сценариев 15 в двух семействах, KZ-differential 171/171 байтово, разметка затянута с 6/0 и 3/0 до 51/0 и 70/0, четыре цели §270 HELD на 112 мирах. -
Казахская грамматика: новый пакет
kz.grammar.san_esim(реестровый №66). Связка сан есім закрыта целиком: §§37—48 академической «Қазақ грамматикасы» 2002 — род числительного (четыре напечатанных значения), строение (дара/күрделі, негізгі/туынды), шесть разрядов и шесть синтаксических функций. EXECUTABLE 12 из 12 при нуле посылок в один конец. Первый пакет 2002-й ветви, который читаетkz.grammar.phon: §43 выбирает аффикс реттік по классу конечного звука ОСНОВЫ, и отношения образования поэтому двуместны. Шесть находок чтения: четыре разряда аттестуются формой, два только значением; вопросы §42 и §46 совпадают и НЕ разделяют есептік и болжалдық; род выводится через значение каждого разряда, а не по заголовку; §38 требует одного корня, а §§40—41 этого не повторяют; §44 называет два аллоформа без признака выбора; «кейде» §48 п.6 — отдельный поражаемый вывод. Записана граница языка: числительность основы §44 нельзя выразить посылкойsan_esim(b)— вышел бы неcтратифицируемый цикл LDC-E4102. Правил 60, сценариев 15, KZ-differential 84/84 байтово, четыре цели §270 HELD на 40 мирах. -
Казахская грамматика: новый пакет
kz.grammar.zat_esim(реестровый №65) и расширениеkz.grammar.taueldik. Связка зат есім закрыта целиком: §§1—8 и §§22—30 академической «Қазақ грамматикасы» 2002 (род существительного, три пары его лексических разрядов, свойство көптік мағына и словообразовательные типы с пятью видами күрделі) — в новом пакете; §§10—11 (ортақ и оңаша тәуелдеу) — уtaueldik, которому принадлежит §9. Это первый срез семьи, чей единственный источник — академическая грамматика, и первый, у которого мера §33.1 видит весь его источник: EXECUTABLE 17 из 17. Пять находок чтения остережены сценариями: три пары разрядов источником не объявлены взаимоисключающими; §§6, 7 и §30 требуют рода в посылке; в §8 нет ни одного закрытого перечня («тәрізді», «секілді», «т.б.»); «жиі ұшырайды» о қос сөз есть частота, а не наличие; §24 называет четыре способа, §§25—29 описывают пять видов, и только §28 называет свой вид күрделі. Уtaueldikзаписана граница: провода от аффикса §9 к виду §§10—11 источник не даёт. Правил 52 и 20, сценариев 15 и 14, KZ-differential 92/92 и 81/81 байтово. -
Цели §270 у второго и третьего пакетов казахской грамматики.
kz.grammar.zat_esimзаведён сразу с четырьмя целями (HELD на 37 мирах),kz.grammar.taueldikполучил две (HELD на 7 мирах); у обоих есть обязательная канарейка, падающая всеми своими свойствами. Строки записаны вcorpus/ratchets/goal-manifest.json. -
Пакет
kz.halal— национальный стандарт РК «Общие требования к пищевой продукции Халал» (СТ РК OIC/SMIIC 1-2022). 95 пунктов,EXECUTABLE 44, 24 сценария, differential 43 вызова байтово, пять целей §270 HELD. Единица деления стандарта — ПУНКТ, и конвенцияru_standard_clauseзаведена вместе с пакетом в обоих реестрах меры §33.1 (corpus/tools/lib/act_split.py,verify/ci/gates/sources/check_source_pinning.py) и в профилеru-standard-clauseшаблонаpinning; шаблон получил опциональный ключlocator(умолчаниеarticle— существующие блоки байтово те же). Граница пакета проведена определением 3.19 самого стандарта: дозволенность пищи по Нормам Ислама приходит импортомquran.atima, которому добавлены триpub-экспорта §24. Разбор —STATUS.md. -
Казахская грамматика: новый пакет
kz.grammar.zat_esim(реестровый №65) и расширениеkz.grammar.taueldik. Связка зат есім закрыта целиком: §§1—8 и §§22—30 академической «Қазақ грамматикасы» 2002 (род существительного, три пары его лексических разрядов, свойство көптік мағына и словообразовательные типы с пятью видами күрделі) — в новом пакете; §§10—11 (ортақ и оңаша тәуелдеу) — уtaueldik, которому принадлежит §9. Это первый срез семьи, чей единственный источник — академическая грамматика, и первый, у которого мера §33.1 видит весь его источник: EXECUTABLE 17 из 17. Пять находок чтения остережены сценариями: три пары разрядов источником не объявлены взаимоисключающими; §§6, 7 и §30 требуют рода в посылке; в §8 нет ни одного закрытого перечня («тәрізді», «секілді», «т.б.»); «жиі ұшырайды» о қос сөз есть частота, а не наличие; §24 называет четыре способа, §§25—29 описывают пять видов, и только §28 называет свой вид күрделі. Уtaueldikзаписана граница: провода от аффикса §9 к виду §§10—11 источник не даёт. Правил 52 и 20, сценариев 15 и 14, KZ-differential 92/92 и 81/81 байтово. -
Цели §270 у второго и третьего пакетов казахской грамматики.
kz.grammar.zat_esimзаведён сразу с четырьмя целями (HELD на 37 мирах),kz.grammar.taueldikполучил две (HELD на 7 мирах); у обоих есть обязательная канарейка, падающая всеми своими свойствами. Строки записаны вcorpus/ratchets/goal-manifest.json. -
Профили MCP: поле
shared— названное разделение пакета между срезами. Профили не пересекаются селекторами, и это защита от молчаливого смешения правопорядков. Но акт бывает двупредметен по существу — годовые решения ҚМДБ о зекете суть исламское право, изданное органом в Казахстане, — и теперь второй профиль берёт такой пакет полемshared(«ключ: причина»). Отличие отborrowed: тот вычисляется замыканием импортов и пишется--register, аsharedесть решение владельца профиля и пишется рукой с причиной. Проверка пересечения СЕЛЕКТОРОВ не ослаблена — она смотрит только на префиксы; ворота дополнительно требуют, чтобы ключ существовал в корпусе, выбирался селектором другого профиля и не выбирался собственным, а разделённый пакет входит в обход импортов наравне с выбранными. Шапкаinitialize.instructionsназывает его с причиной.kz.dumk_zakat_nisabтеперь в обоих срезах (kz234 пакета,islam42),kz-dumk-fatwa— нет; канарейка ворот выросла на девять случаев. -
Формы правил без зеркал (DECISION-0099, WP-43). Семь извлекающих шаблонов формализации стали формами над CLIR: 1296 манифестов
<модуль>.law<форма>.toml, семь текстовых движков иruleform.pyсняты; состав форм считается из узлов CLIR (verify/ci/lib/template_forms.py) и пиннится порождаемымcorpus/ratchets/template-manifest.jsonворотамиcheck_template_composition(шаг 6); находки шаблонов считаются из CLIR, новый видsplit_deadlines— раздвоенная голова срока, невидимаяcompeting_deadlinesпо построению (25 строк в 11 пакетах). Табличныеclosed-listиpinningостаются на манифестах. -
Календарь хиджры Умм аль-Кура 1445–1460 (
fiqh.taqwim). Закреплена конечная материализация 192 месяцев KACST без календарной формулы; три A3-таблицы дают интервальныйhijri_of, начало и длину месяца, а типизированные правила — обратное соответствие и лунную арифметику. Два exactly-one прочтения §152 различают таблицу и адресное объявленное наблюдение. 11/11 сценариев, KZ-differential 12/12, G1–G6 HELD 12/12 на двух прочтениях, канарейка FAILED 2/2, разметка 620/0 и 21/0. По найденному разрыву добавлена E-0109: фиксированный шагcalendar_dayвadd_calendar_period; core differential 284/284. WASM/FFI carrier получил явный безопасный лимит вложенности 512, чтобы принимать законный A3 CLIR глубины 200 и по-прежнему отвергать неограниченно глубокий JSON. -
Годовые решения ҚМДБ о пітір садақа и підия (
kz.dumk_zakat_nisab) — и НАЙДЕННОЕ ОТСУТСТВИЕ тенгового нисаба. Семь решений Төралқа 2020–2026 парами kk/ru и шесть разъяснений Отдела шариата и пәтуа: 21 закреплённый документ, 13source-узлов, 253 фрагмента, 23 правила, 1 констрейнт §93.3, восемь датированных параметров §87 на 37 ветвей. Нисаб закята в тенге ҚМДБ ежегодно НЕ устанавливает — во всех решениях он назван доктринально, а единственная тенговая величина (13.04.2021) есть приблизительная оценка нисаба СЕРЕБРА (595 г ≈ 200 тыс. ₸), не 85 г золота; параметры заведены на то, что решениями действительно установлено. Ось редакций §31 развела две нормы: величину объявляет каждое решение с 16.04.2020, а условие «обязан достигший нисаба» — только разъяснения с 13.04.2021. Мост кfiqh.zakat— сквозным сценарием на слитом мире, а не правилом: у соседа нольpub-деклараций (LDC-E1105) и факты границу пакета в Core 0.1 не пересекают. Регрессия 36/36 за 1,1 с, KZ-differential 108/108 байтово за 2,4 с, цели §270 5/5 HELD на непустых доменах и на 10 мирах регрессии,impact-editionsдаёт PARAM-AXIS, разметка §218 76/0 и 23/0, парный якорь §194 с нулём непарных узлов, байтовое покрытие публикаций 99,6–99,8 %. Попутно записано расхождение реализаций:abs()над Integer-параметром A3 считается вlawrefи даётTYPE_ERRORвlaw-eval(94 расхождения из 108 вызовов); ядро не правилось, модель обошласьmax(P, 0). -
Фетвы Совета улемов ДУМК (
kz.dumk.fatwa) — первое прочтение §152 с ИНСТАНЦИЕЙ. Три фетвы, каждая в двух аутентичных редакциях (kk и ru): никах через АХАТ/ЗАГС (2022), фамилия мужа (2021), хадж без визы (2023). У прочтения есть орган (authority DUMK), окноeffectiveот даты издания и закреплённый текст; «лицо следует ханафитскому мазхабу» читается предикатомfiqh.taqlid::follows, а не своим дублем. Проба показала, чтоinterpretation … of pkg::FRAGMENTиextends pkg::Readingчерез границу пакета отвергаются громко (LDC-E0201), аauthorityу прочтения ПЕРЕНОСИТСЯ (узел CLIR,semanticHash, вербализация), но оценщиком не читается — эффект производит тело правила. CLIR 85 узлов, регрессия 23/23, KZ-differential 29/29 байтово, разметка §218 26/0 и 19/0, парный якорь §194 с нулём непарных узлов, цели §270 4/4 HELD на 19 мирах при падающей канарейке. Фетв о курбане и об оразе Совет улемов не издавал ни на одном языке (обход полного архива: 99 URL) — граница названа в STATUS, а не закрыта материалом раздела сұрақ-жауап. -
§24-экспорты у
fiqh.taqlid,fiqh.hajjиkz.corpus.marriage. До этого первые два не имелиpub-деклараций вовсе, и импорт по замыслу был невозможен при зелёномlawc check(LDC-E1105приходит только наlower). Байты трёх пакетов сдвинулись; перегенерированы они иkz-zhetiata. -
Казахская грамматика: второй источник среза
shylau— §§101—117 академической «Қазақ грамматикасы» 2002. Пакетkz.grammar.shylau, до сих пор отвечавший только на вопрос «как записывается частица» (§§83—88 справочника Сыздық), получил семнадцать закреплённых единиц морфологии 2002 года, отвечающих на другой вопрос — «что она есть и что делает»: род шылау (§101), три вида (§102 септеулік, §103 демеулік, §111 жалғаулық) и их подгруппы с названными членами и функциями (§§104—110, §§112—117). Норму это не задваивает: имена второго слоя несут префиксqg_, общим остаётся только носитель сочетания. Членство выражено правилом на каждый напечатанный член (74 клеточных правила), и потому расхождения перечней источника остались видимыми: §111 против §112, §115 и §116 расходятся составом, §111 и §117 совпадают, семь групп §103 пересекаются, а аномалия §109 («құрылым» в перечне против «Ғұрлым» в теле) и опечатка §116 «немес» не починены. Провода «демеулік → шылау» НЕТ: §101 требует двух условий, §103 называет одно. Правил 153, сценариев 32 в двух семействах, KZ-differential 293/293 байтово. -
Цели §270 у пакета казахской грамматики — впервые.
kz.grammar.shylauполучилtests/goals.lawtest(четыре многошаговые цели, все HELD на 150 мирах регрессии) и обязательную канарейкуanalysis/goals-canary.lawtest, падающую всеми тремя своими свойствами с контрпримерами. Строка пакета записана вcorpus/ratchets/goal-manifest.json. -
Османский декрет о семейном праве 1917. Новый пакет
osm.family_1917закрепляет 157 статей Hukuk-ı Aile Kararnâmesi во временно разрешённой единственной транслитерации Mehir, с полной глубинойEXECUTABLE 157. Исполнимы способность, препятствия, wali, форма, недействительность, mahr, talāq, tafriq и iddah; шесть A3-порогов имеют граничные сценарии, шесть целей проходят по выбранному официальному кодифицированному прочтению. Добавлены синхронизация источника--check, CLIR/раннер/ratchets, префикс профиляislam, карточка витрины и полный аудит. Сквозной MCP-сценарий сохраняет различие:fiqh.nikahоставляет тройное произнесение спорным, а декрет даёт окончательную séparation. Рецепция вне Турции и лунно-календарная часть iddah явно ограничены, а не выведены из отсутствующих данных. -
MCP:
law_report, граньfeedback(DECISION-0100, 03.09.2026). Отчёт модели-потребителя о расхождении формализации с источником: адрес обязателен и сверяется с каталогом (пакет,fragment,predicate), категория из закрытого перечня,callIdответа; обработчик ничего не считает и не хранит, запись делает журнал транспорта полямиMCP_REPORT_*, в ответеsemanticHashпакета. Право отчёт не меняет. 22 инструмента уall, 12 у срезов; абзац в инструкциях сервера. -
KZ: Правила религиозного туризма (приказ № 166) на двух языках. Новый пакет
kz-dini-turizmзакрепляет ОБЕ аутентичные ветви ИПС «Әділет» по 18 пунктов и ставит парный якорь §194 на каждое объявление (долг — ноль, канарейка проверена снятием одного якоря). Выражены определения пункта 2 (порог «от 24 часов до 1 года», лицензия внутри определения туроператора), конкурс религиозного объединения как автомат §160, замыкание §70 над кругом заключивших договор о взаимодействии, 13 обязанностей §134 и два канала суждения §47.3, названные самим текстом. Спор пункта 6 об отсылке к пункту 3 оставлен группой прочтений §152 соselection any_of. Добавлены 37 сценариев с байтовым differential и 6 тестов §267. Заведён вместо несостоявшегосяkz-qazhylyq: правил ДУМК об очереди паломников как закрепляемого текста не существует, а этот акт распределяет квоту между ТУРОПЕРАТОРАМИ и модель очереди прямо отрицает (пункт 9). Полный аудит формализации нашёл два дефекта, невидимых батарее ворот (тридцать правил без единого сценария; обязанности, не способные стать VIOLATED при открытом окне), — оба починены: сценариев 61, окна пунктов 11 и 17 кончаются началом путешествия, заведены три цели §270 с падающей канарейкой. Заведена власть §127 пункта 6: компетенция объединения вынести решение отделена от законности его содержания — первая от рассмотрения документов, вторая от спорного прочтения §152; пункт 8 переведён с пригодности на эффект власти. Отчёт —corpus/laws/kz/dini-turizm/audit.ru.md. -
Fiqh: джинаят (кисас, дия, акила, каффара). Новый doctrine-пакет
fiqh.jinayatзакрепляет 28 арабских и русских фрагментов Корана, Шараи’ аль-ислам и Бидаят аль-муджтахид; два доктринальных чтения изолированыinterpretation_group. Кисас, эффект прощения, дия, акила и двухступенчатая каффара исполнимы; A3-таблица хранит точные доли1/1,1/2,1/10, параметр — базу 100. Добавлены 19 сценариевJN-*, пять целей §270 с падающей канарейкой, source/QCR-bridge и полный аудит. Первичные владельцы Quran Clause Registry не изменены, 17:33 сохранёнREVIEW_REQUIRED. -
KZ: Закон об оценочной деятельности. Новый пакет
kz-valuationзеркалит семь глав и 33 статьи закреплённой русской редакции: проверяет обязательность оценки, квалификацию и независимость оценщика, договор, отчёт, экспертизу, страхование, палату, контроль и переходные сроки, но оставляет числовую стоимость внешнему суждениюOcenshchik. Добавлены 92 сценария с байтовым differential, три цели §270 и падающая канарейка на отсутствующий в Законе срок действия отчёта; экспортирован предикат действительности отчёта для последующей интеграции одиннадцати соседних пакетов. -
KZ: Закон № 261-IV «Об исполнительном производстве и статусе судебных исполнителей». Пакет
kz-enforcement— 193 статьи в семнадцати главах, EXECUTABLE 164/193 при 27 объявленных границах и нуле необъяснённых. Пять очередей удовлетворения требований (статьи 111–112) записаны членом перечисления и правилом на основание; пятая — замыканием §70 над признаком «названо статьями». Пропорция статьи 110 пункта 2 считается точно черезMoney/Money → RationalиMoney * Rational; округления акт не называет, и неделящееся дело отвечаетINEXACT_DIVISION— граница объявлена решением владельца. Предел удержания статьи 95 выражен СОХРАНЯЕМОЙ долей, изъятие «кроме алиментов и вреда» адресовано прожиточному минимуму, а не половине дохода. Оценка имущества — канал суждения §47.3 с оценщиком; упрощённое производство — автомат §160 с двумя выходами, различающимися судьбой мер обеспечения. Пороги выезда, лицензий, санкции и оплаты ЧСИ — датированным параметром §87. 118 сценариевKZ-ENF, differential байтовый (175 вызовов), три цели §270 на 116 мирах, канарейка падает. -
Фаза 0: третий облик исключённой статьи и второй счёт против него. У исполнительного производства нашлась статья (141-1), чья сноска об исключении снята извлечением, а уцелевшее «Примечание ИЗПИ!» о будущей статье осталось единственным телом — по байтам неотличимо от нормативного текста. Ни
excluded(пустое тело), ниexcluded_with_noteеё не описывали. Заведены поляabsent(статьи, снятые вместе с заголовком) иexcluded_with_apparatus, а главное — СЧЁТ С ДРУГОЙ СТОРОНЫ: публикация сама называет исключённые статьи сноской, и объявленное множество обязано совпасть с названным целиком. На восьми прочих актах таблицы новый счёт зелен без единой правки. -
KZ: Закон № 21-VIII о возврате государству незаконно приобретённых активов. Пакет
kz-asset-recoveryотражает семь глав закона: применимость, реестр, обеспечительные меры, добровольный и принудительный возврат, специальный фонд и международное сотрудничество. Порог статьи 14 исполнен как13 000 000 × ApplicableMrpAmountс A3-ставками 2025/2026, Комиссия включает лицо в реестр через власть, а статья 28 проверяется парой миров «явный отказ от доказательств / молчание». Исполнимы сроки статьи 17 (10-й и следующий рабочий день), право и сроки декларации статьи 18, а также 10/60 календарных дней статьи 38 от явной даты публикации и два старта пятилетней давности статьи 28. Добавлены обязанности публикации сведений фонда и раздельного учета управляющей компании, 22KZ-ARсценария, три цели §270 с отрицательной канарейкой и differential в общих храповиках. -
MCP: текст инструкций и промпты — под гранями профиля (03.09.2026). Тело
initialize.instructionsперестало быть статичным литералом и собирается из доступного (profile.instructions_body); промпт несёт грань, как инструмент, и в чужом профиле не показывается. Аудит нашёл, что на публичных срезахkz/islamтело предписывало как порядок работы восемь запрещённых там инструментов (весь черновой контур,law_loophole,law_amend) — тремя строками ниже шапки, где сказано, что этих граней нет, — и молчало о двух доступных (law_sources,law_query); промпт «Проверка черновика формализации» предлагался там, где запрещены все пять его шагов; строка проborrowedутверждала, будто заимствованные пакеты доступны «только как импортированные соседями», хотяlaw_askпо ним отвечает наравне. Добавлен абзац о самой формализации (модель акта, глубина §33.1 последним счётчиком обзораlaw_packages, «нормы нет в модели» ≠ «право молчит»), аkind='deadline'не перечисляется в профиле без календаря. Держат воротаcheck_mcp_profiles(audit_text, канарейка +5) иtest_server.py(+5 проверок подislam). -
Плановая сверка §170 — вне пути ответа (поправка к DECISION-0054, 03.09.2026). Расписание (степени двойки) остаётся в оракуле и остаётся детерминированным, переехало МЕСТО счёта:
document.VERIFICATION—"inline"(умолчание: векторы, differential, selftest, stdio) либо"deferred", где вызов ставит программу в очередь (due_verifications), а полный хэш считает хост (verify_program). У HTTP-демона MCP это делает фоновый сторожlaw_mcp/verify.pyвне глобального лока и в паузе простоя. Замер на kz-administrative-code: было 0,7–1,2 с стойки на 1-м, 3-м, 7-м и 15-м вопросе при медиане 103 мс — стало 24 вызова подряд с медианой 150 мс и максимумом 221 мс. Очередь видна в/healthz(verificationPending), а найденная мутация закрывает ответы (PROGRAM_MUTATED, -32002). Прогрев дополнительно доводит расписание семью вызовами на пакет. -
MCP: срез корпуса читает с диска только себя (03.09.2026). Процесс под профилем (
LAW_MCP_PROFILE=kz|islam) разбирает лишь селектор ∪ пинborrowed(Profile.reads,catalog._scan_corpus), а не весьcorpus/clir:islam— 38 CLIR, 0,13 с и 92 МБ вместо 446, 2,9 с и 1052 МБ;kz— 219 файлов, 768 МБ. Состав и контент-ключ среза байт в байт те же, что уrestrictнад полным корпусом (тест сверяет два процесса одного кода); устаревший пинborrowedтеперь не втягивает чужой пакет молча, а называет висячий импорт в stderr с командой--register(канарейка вtest_server.py). Отдельные сборки срезов со своими корпусами отвергнуты: состав велся бы руками, срезы не дизъюнктны, на латентность вызова полный разбор не влиял. -
Корпус: второй источник морфологии семьи
kz.grammar(03.09.2026). Академическая «Қазақ грамматикасы» 2002 закреплена выдержками оқу корпуса Института языкознания (fetch_kz_grammar_2002_texts.py: 134 фрагмента по морфологии как документ с единицей-фрагментом; синтаксис 57 и фонетика 31 воспроизводятся из тех же сохранённых страниц и ждут первого среза), правила орфографии 2019 — публикацией «Egemen Qazaqstan» (84 §).kz.grammar.septikрасширен на табыс, жатыс, шығыс и полный көмектес (56 правил, 15 сценариев, differential 99/99), исключения после ІІІ жақ тәуелдік — поражаемым слоем; фетчер впаян вrun_all.sh(--checkбез сети по всем копиям семьи).kz.grammar.taueldik(§ 9: гласные основы I/II лица, I мн., II сыпайы — 12 сценариев) иkz.grammar.zhiktik(§ 21: множественное число по букве конца и ряду, мұғаліммін — 9 сценариев) расширены тем же источником, differential 116/116. Три новых среза по тем же выдержкам:kz.grammar.shaq(§§ 74, 78—81: подтип → время тотальным map, осы шақ по строению; реестровые №18—20 сведены),kz.grammar.esimshe(§ 67),kz.grammar.ustau(§§ 83—94: закрытые и открытые перечни разрядов, неизменяемость, роль в предложении); 13 сценариев, differential 112/112.kz.grammar.rai(§§ 76—77: шартты рай с парадигмой лиц тотальным map, қалау рай) иkz.grammar.etis(§§ 69—72: четыре залога по суффиксу, основе и названному признаку) расширены; 13 сценариев, differential 56/56. -
Корпус:
kz.grammar.sozdik— орфографический словарь 2013 снимком §47.2 (03.09.2026). Шестое издание «Орфографиялық сөздік» закреплено из PDF qazcorpus.kz двумя срезами (предисловие, словник 53 898 статей / 52 798 заглавных слов, 36 буквенных фрагментов §194); таблицаsozdik.tsvпорождается фетчеромfetch_sozdik_texts.py, датасет §47.2 (105 596 вызовов, 25 МБ) — из таблицы одним кодом у синка и раннера (corpus/lib/sozdik_snapshot.py), закреплён егоcontentHash, а не копия. Дваexternal snapshot function(статьи заглавного слова, их число) и два строгих правила; раннерcorpus/kz/acts/grammar_sozdik.py(6 сценариев: статья байт в байт, склейка переноса, омонимы, честное молчание, отказ подменённого снимка, состав против meta), KZ-differential 8/8. Оси phon из статьи не выводятся намеренно (норма § 31 — предмет справочника, инвариант 5); мост — следующее решение каркаса (docs/KAZAKH-GRAMMAR.ru.md§8). -
MCP: постраничный каталог и прогрев горячих пакетов (03.09.2026).
law_packagesпостраничен во всех трёх режимах (limit/offset, единица — вpageUnit): обзор иqueryлистают акты (200 и 25),package=…— сигнатуры акта (80, максимум 300). Прежний кап в 300 строк остаток называл, но не отдавал: деталь административного кодекса — 481 КБ (~48 тыс. токенов), из них 3324 сигнатуры недостижимы ни одним вызовом; теперь 87 КБ и продолжение в тексте и структуре. Новыйlaw_mcp/warm.pyгреет самые дорогие пакеты при старте HTTP-транспорта (после объявления готовности, попакетно под глобальным локом;LAW_MCP_WARM_TOP/_BUDGET/_PACKAGES): первый вопрос к админкодексу — 0,28 с вместо 4,8 с, а на публичной точке холодная цена платилась по разу на каждый бэкенд пула (10,4 с дважды). Байты ответа от прогрева не зависят — это проверяется, а не декларируется. -
E-0108 / DECISION-0097: вторая половина вехи §105.1 — конфликт ПОЗИЦИЙ (03.09.2026). Семь образцов деонтического конфликта §105.1 обнаруживаются: пара рассматривается при совместимом grounding субъектов и пересекающихся окнах §124, несовместимость доказывается структурно (обязанность воздержания против свободы на то же действие), явным
urn:law:std#incompatibleнад ШАБЛОНАМИ либо сертификатом в разрешимом фрагменте §45.1. До правки пункты 1–3 перечня не обнаруживались вовсе: две несовместимые нормы давали две позицииACTIVEбез ребра и без предупреждения, а differential был зелён — обе реализации не делали одного и того же. Разрешение — §106/§107 без нового механизма: приоритет разводит пару (DEFEATED+ узелdefeat), иначе обе позиции сохраняются и звучитUNRESOLVED_NORMATIVE_CONFLICT(случайный tie-break §106 запрещает дословно). Solver-assisted работает только приsolverProfile, закреплённом ДЕЛОМ и попадающем вsemanticHash; сертификат движок ПЕРЕПРОВЕРЯЕТ, а не принимает на веру, и живёт в графе при ребре либо вdetailsissue, когда ребра нет. Схема не менялась. Проза §105.2, результат запросаpositionsнесётevaluationStatus = UNRESOLVED_NORMATIVE_CONFLICT(иначе повторился бы E-0105: «право молчит» там, где право столкнулось),evaluator/normconflict.py+ портlaw-eval/src/normconflict.rs, девять векторовLAY-L2-CONFLICT-*(три из них отрицательные — без них утверждение пусто), differential 283/283. -
E-0107 / DECISION-0096: веха §105.1 закрыта в части defeat норм-правил (03.09.2026).
unlessпри НОРМ-голове §134 разворачивается в дефитер с той же норм-головой; побеждённое применение даёт позицию со статусомDEFEATED(§134.1) — видимую в ответе, но не публикующую ни статусных, ни связочных literals (§108). Соответствие «то жеq» — пара «шаблон + подстановка на переменных payload» (§107.1); приоритеты §106 читаются тем же замыканием, что у литеральной головы. Замер до правки:strengthна норм-пути не читался вовсе, и дефитер САМ создавал вторую позицию — обе реализации вели себя так согласованно, и differential этот класс не ловит. Пара векторовLAY-L2-NORM-DEFEAT-*(одна программа, один различающий факт), differential 274/274. Перечень §134 пополнен одним значением — это единственная неаддитивная часть, и цена записана в DECISION-0096 §3. Вторая половина вехи — семь образцов деонтического конфликта и solver-assisted incompatibility — остаётся НЕ сделанной и названа. -
Закон РК № 349-I «О государственных секретах»: степени, сроки, допуск и рассекречивание (03.09.2026). Закреплена консолидированная копия Әділет — 39 hash-адресуемых статей. Добавлены тотальное отображение трёх степеней в 30-летний предел, исполняемое окно защиты и исключительное продление, 83 открытые секретные категории, 11 строгих отрицательных голов статьи 17, замыкание 12 оснований отказа, прекращение допуска и компетенция по рассекречиванию. 73/73 сценария и 73/73 differential-вызова; полный аудит и воспроизводимые fetch/sync-генераторы.
-
Директива Совета 98/59/ЕС о коллективных увольнениях, статьи 1–7 (03.09.2026). Две шкалы статьи 1 реализованы непересекающимися A3-таблицами
uniqueи выборомexactly_one; процент сравнивается как точный Rational. Закреплены английская и французская равно аутентичные редакции с парными якорями и честным статусомPINNED_UNOFFICIAL_COPY. Добавлены процедуры консультации, уведомления и 30-дневного ожидания, 34 сценария на пороги и границы 20/21/99/100/299/300, 4 surface-теста и differential-контур. -
Новый пакет
intl.labour.c138— Конвенция МОТ № 138 о минимальном возрасте для приёма на работу (26.06.1973), все 18 статей (03.09.2026). ПЕРВЫЙ АКТ КОРПУСА, ГДЕ ОСЬ НОРМЫ — ДАТИРОВАННЫЙ ПАРАМЕТР §87 ПО ГОСУДАРСТВАМ, А НЕ ПО РЕДАКЦИЯМ: Конвенция минимального возраста не называет, она называет его нижнюю границу и обязывает участника объявить свой, поэтому объявленный возраст приходит семью датасетами*.lawparam.jsonсо значениями из закреплённой сноски тома UNTS (15, 18, 16, 15, 15, 15, 15). Закреплены байты ОФИЦИАЛЬНОГО опубликования — UNTS том 1015, № I-14862 — на ДВУХ равно аутентичных языках (ст. 18):PINNED_OFFICIAL_BYTESу обеих редакций, парный якорь §194 у каждой нормы, ноль долга. Заведены конвенции единицы деленияen_article_inlineиfr_article_inlineв ОБЕИХ копиях соглашения. Статьи 4 и 5 — группа толкований §155 сexactly_one: круг применения объявляет государство, и запрос без выбранного прочтения даётINTERPRETATION_REQUIRED, а не молчаливое «применяется ко всему». Статья 3 — канал суждения §47.3 с органом, названным самим текстом; ось статьи 2 судьи не спрашивает. Найдено исполнением:include§152 НЕ вносит в прочтение порождённыйunless-дефитер §149, и тот гасит ту же голову под любым прочтением — прочтения смешивались молча при зелёныхcheck,lowerи differential; эффект полномочия §127 материализуется после поражаемой неподвижной точки, и дефитер над ним мёртв; голое имя A3-параметра в аргументе головы остаётся позицией идентичности; значение Integer-параметра обязано быть JSON-числом, а не строкой. Мера §33.1: EXECUTABLE 17, ANCHORED 1 (ст. 18 — правило о самом инструменте; тавтологичный констрейнт «каждая аутентичная версия закреплена» убран), учёт статей 18 из 18 в обоих документах, покрытие байтов 99,9 %. Регрессия 59/59, differential 109/109 байтово, эмиссия §267 — 81 тест, 81/81. -
Новый пакет
de.hilbert.grundlagen— «Основания геометрии» Гильберта (Festschrift 1899), группы аксиом I и II (03.09.2026). ПЕРВЫЙ АКТ КОРПУСА, ГДЕ ПРЕДМЕТ ЕСТЬ АКСИОМАТИКА, А ВОПРОС — «модель ли предъявленная конечная конфигурация точек, прямых и плоскостей». Закреплена глава I целиком (§§ 1—8, пять групп аксиом, 21 фрагмент); формализованы двенадцать аксиом групп I (Verknüpfung, I 1—7) и II (Anordnung, II 1—5, включая аксиому Паша), восемь аксиом групп III—V объявлены границами с причиной, проверенной по тексту каждой. Аксиома записана ИНВАРИАНТОМ §93.1, а не правилом: правило породило бы прямую, которой в чертеже нет, а инвариант отсекает и называет подстановку — ответ «на какой тройке точек». Единственность (I 2, I 4) записана И правилом с совпадением в голове — это третий вопрос пакета. Конечность модели вводит семнадцать замыканий §70 с ВЫВОДИМЫМИ областями той же арности (E-0087); без них «прямая не проходит через точку» не выводится (§93.2). Найдено исполнением: аксиома II 2 нарушена на КАЖДОЙ конечной конфигурации (тетраэдр удовлетворяет всей группе I и четырём аксиомам группы II — единственное нарушение названо с точной парой точек); закрывать §70 можно только предикат, выводимый чисто позитивно (замыкание над предикатом, читающим чужой негатив, далоBOTHиCONFLICTEDпри выполненной аксиоме — два требования I 7 оставлены без замыканий, ихUNDETERMINEDстерегут ПАДАЮЩИЕ сценарии); различие сущностей выражено буквами чертежа, потому что неравенство сущностей даёт TYPE_ERROR. Закреплён авторизованный перевод Таунсенда (набор Project Gutenberg), а не немецкий подлинник, — измерено: вычитанного немецкого набора нет, а все три распознавания первого издания портят аксиомы групп I—II, каждое по-своему (--collateвоспроизводит замер); немецкое издание объявлено редакцией без байтов. Перевод несёт добавленную во французском переводе «Axiom of Completeness» — единица исключена из измеряемой редакции. Мера §33.1: EXECUTABLE 12, SOURCE_ONLY 8, EXCLUDED 1, UNEXPLAINED 0; закрепление 33,2 %; 25 сценариев (одиннадцать пар порогов, свидетель по подстановке proof-графа), differential 31 вызов байтово,.lawtest3/3, разметка 52/0 и 66/0, doctor чист. Полный отчёт —corpus/laws/de/hilbert-grundlagen/audit.ru.md. -
Регламент (ЕС) № 576/2013 о некоммерческом перемещении домашних животных (03.09.2026): закреплён английский аутентичный текст EUR-Lex, 45 статей и пять приложений — 91 фрагмент, покрывающий срез целиком; EXECUTABLE 45/45. Формализована КАЛЕНДАРНАЯ МАШИНА акта: возраст не менее 12 недель на дату вакцинации, запрет вакцинации ранее мечения, 21 день до защитного иммунитета, 30 дней до отбора пробы и три месяца от пробы до перемещения. Порядок событий выражен процедурой §160 — попытка привить непомеченное животное остаётся попыткой без правового эффекта §164. Изъятия статей 5, 7, 8, 11, 12, 16 и 32 — дефитеры по литеральной голове (
unlessпри норм-голове §134 молча отбрасывается по вехе §105.1); статья 44 записана фикциейdeem; «полнота перечня» шести условий выражена семнадцатью замыканиями §70 с явным негативом; оценочные понятия статей 32 и 35 отданы каналу суждения §47.3; спор о завершении многодозового протокола —interpretation§152 со статусом disputed, базой взято узкое прочтение. Власть §127 государства назначения (ст. 32) с раздельнымиexerciseиeffect. Полный аудит нашёл две НЕМЫЕ нормы — записаны и не действовали. Изъятие ст. 16, записанное дефитером по общему условию, не снимало строго выводимых оснований (перемещение Сан-Марино ↔ Италия оставалось запрещённым при действующем изъятии) — переписано ВЫТЕСНЕНИЕМ статьи 10. Один дефитер прощал ЧУЖОЕ основание: невакцинированный щенок 16 недель проходил по изъятию из титрования, потому что четыре изъятия атаковали общую голову, — разведено по основаниям, и каждое основание сделано поражаемым. Оба отказа были немы дляcheck,lower, differential и обоих ворот молчания; нашла их секция достижимости, назвавшая правило, которого не касался ни один сценарий. Добавлены 49 сценариев, шесть.lawtest, байтовый differential (117 вызовов), воспроизводимые fetch/sync и полныйaudit.ru.md. Найдена и обойдена законно несовместимость политики сроков §86:month_endобязателен приcalendar_monthи ЗАПРЕЩЁН приcalendar_week, а политика одна на дело — акт, которому нужны и недели, и месяцы, был бы неисполним целиком. Возраст выражен сутками (12 недель есть ровно 84 суток, и у возраста нет конвенцииstart_count), календарный шаг оставлен месяцам. -
Фома Аквинский, Summa theologiae I-II, qq. 90–97 (03.09.2026): закреплена латинская передача Corpus Thomisticum четырьмя публикациями и 319 фрагментами; 38/38 артикулов имеют полные графы §274 с неатакуемым
sed contra. Формализованы точное определение закона, четыре вида и четыре эффекта, предел запрета пороков, defeater q.96 a.4 и коллизия обычая с писаным законом по §116. Добавлены 54 сценария, байтовый differential, воспроизводимый fetch/sync и полныйaudit.ru.md. -
Венская конвенция о правопреемстве государств в отношении договоров (1978) (03.09.2026): полный русский текст, статьи 1–50 и Приложение, закреплён 66 фрагментами; EXECUTABLE 50/50. Четыре классификации режимов, строгий чистый лист статьи 16, власть статьи 17, презумпция статьи 34, территориальные и согласительные исключения, календарные окна и процедура Приложения. Спор
continuity/successionоставлен внешнему судье сREQUIRES_JUDGMENT. Добавлены 18 сценариев, 28.lawtest, побайтовый differential, генератор источника и полные отчёты верификации/аудита. -
Пять стоических индемонстраблей (03.09.2026): закреплены Диоген Лаэртский VII.79—81 и Секст Эмпирик PH II.156—162 (3/3 + 7/7 секций); реляционная модель
Proposition/Inference, четыре общих strict-схемы и двеexactly_one-ориентации пятой, отрицательные головы II—IV и исчерпывающий constraint. Неверные большая и малая посылки различимы вwhy_not, темата не достраиваются. Добавлены 14 сценариев, 8.lawtest, байтовый differential, воспроизводимые fetch/sync и полныйaudit.ru.md. -
Венские конвенции о дипломатических (1961) и консульских (1963) сношениях (03.09.2026): закреплены полные русская и английская аутентичные редакции, 53 и 79 постатейных пары §194. ВКДС — ровно 30 EXECUTABLE статей, личный иммунитет статьи 31 с тремя дефитерами, раздельные отказы статьи 32, категории и вычисляемые окна статей 37–39, обязанность статьи 41. Парный срез ВККС — 8 EXECUTABLE статей и функциональный иммунитет статьи 43. Добавлены 25 сценариев и
.lawtest, воспроизводимые fetch/sync-генераторы и полныеaudit.ru.md. -
E-0105: ошибка терма правила-кандидата доезжает до ответа (03.09.2026).
truth/why_notприNEITHERнесут статус §175 (MISSING_POLICY,MISSING_INPUT,TYPE_ERROR, …) по ошибкам терма правил, которые могли бы вывести цель, иmissingInputsс адресом правила;why_not— списокtermErrors;law_askпечатает «Право не посчитано» первой строкой. До правки причина жила только в issues документа, и без политики §86 ответ читался как «право молчит». ВекторыERR-E0105-*(4) иPAR-011(граница A3.2: разрыв датасета через правило — молчание права, не отказ), прежние голдены не сдвинулись. -
Оборванные цепочки корпуса, фаза 0 и первый акт (03.09.2026): закреплены байты шести актов РК, названных основанием в корпусе, но не формализованных (референдум, бухучёт, банкротство граждан, МФЦА, Алатау, разрешения) — один фетчер и один генератор фрагментов на все шесть, состав статей сверяется СПИСКОМ (акты консолидированные, нумерация не сплошная). Заведён ключ манифеста
[[extra_unit]]— зеркалоnot_unit: две опечатки портала («Статья 26 .», «Статья 2 Законодательство») молча стоили бы по статье каждая. Пакетkz-referendumформализован целиком: EXECUTABLE 39/39, UNEXPLAINED 0, 77 сценариев, байтовый differential, четыре цели §270 на 76 мирах при падающей канарейке. -
kz-accountingцеликом (03.09.2026): второй акт волны — EXECUTABLE 29/29, UNEXPLAINED 0, 74 сценария, байтовый differential, три цели §270 на 73 мирах. Опечатка портала «Статья 26 .» объявленаirregular_headingsакта: общая конвенцияact_splitне ослаблена, обе меры §33.1 видят 29 единиц. Цель §270 нашла пробел нормы, невидимый воротам: девять правил стандарта не читали круг действия Закона. -
kz-personal-bankruptcyцеликом (03.09.2026): третий акт — EXECUTABLE 53/53 (статей у акта 53, а не 52), UNEXPLAINED 0, 96 сценариев, байтовый differential, три цели §270 на 94 мирах. Семь изъятий статьи 45 выражены дефитерами ПОСЛЕДСТВИЯ, а не условиями перехода §160. Названа граница среза:calendar_monthтребуетmonth_end,business_dayего запрещает, и норма, цепляющая одно к другому, не исполняется ни при какой политике §86. -
vat-electionesцеликом (03.09.2026): канонические выборы Кодекса 1983 года — c. 119, cann. 164–183 и титул о времени cann. 200–203, EXECUTABLE 25/25, UNEXPLAINED 0, 33 сценария, 30.lawtest, байтовый differential, три цели §270 на 33 мирах. Титул о времени взят не для полноты: без него «trimestre utile» c. 165 (девяносто текущих дней) и «intra mensem» c. 177 §2 (календарный месяц) выглядят одним сроком. Цель §270 нашла лестницу c. 119 1°, запускавшуюся БЕЗ КВОРУМА при полностью зелёных воротах. Записан класс: замыкания §70 в v1 одноуровневы, и производитель закрытого предиката, читающий негатив другого замыкания, даёт BOTH — десять гардов «nisi aliud» переведены на счёт по эмпирическому отношению. Записан и второй класс: факт, материализованный эффектом власти §127.2, невидим поражаемому слою вместе со всем, что из него выведено, — весь строгий путь TRUE_ONLY при NEITHER у поражаемого потребителя. -
kz-aifcцеликом (03.09.2026): четвёртый акт — EXECUTABLE 25/25, UNEXPLAINED 0, 70 сценариев, байтовый differential, три цели §270 на 68 мирах. Специальный правовой режим выражен презумпцией с барьером по решению владельца; лестница субсидиарности статьи 4 разведена четырьмя мирами. Записаны две ошибки моделирования: дефитер над эмпирическим фактом дела мёртв, и цель §270 через две сущности была тавтологией. -
kz-alatauцеликом (03.09.2026): пятый акт волны и самый большой из шести — EXECUTABLE 90/90, UNEXPLAINED 0, разметка 509/0 и 293/0, 256 сценариев, байтовый differential, три цели §270 на 250 мирах при падающей канарейке. Пять модулей зеркалят пять глав источника. Специальный правовой режим выражен ПРЕЗУМПЦИЕЙ С ДЕВЯТЬЮ БАРЬЕРАМИ (пункт 3 статьи 4, по правилу на изъятие), оговорка «если иное не предусмотрено» — установленным отрицанием в теле каждого; правило телеологического толкования статьи 3 объявлено границей с причиной. Ступенчатое введение в действие (статья 90) выражено нормами: даты трёх ступеней объявлены актом, роспись положений по ступеням подаётся делом — окно редакции статьи не различает. Цель §270 нашла свёртку трёх последствий трёх статей в одну голову «акт незаконен и подлежит отмене», из-за которой «исключительно по иску Генерального Прокурора» распространялось и на ненормативные, и на административные акты; головы разделены. Попутно измерена латентная ловушка компилятора: повторwhenграмматика разрешает, а парсерlawcприсваивает — второйwhenмолча затирает первый, и зелёное правило шире написанного (в дереве экземпляров нет; дефектlawcпротив грамматики, differential его не видит по построению). -
kz-permitsцеликом — волна шести актов закрыта (03.09.2026): шестой акт — EXECUTABLE 53/54 при UNEXPLAINED 0 (статья 19 ИСКЛЮЧЕНА из действующего текста и объявлена границей с причиной: от неё остался заголовок без тела), разметка 269/0 и 161/0, 146 сценариев, байтовый differential (153 вызова), три цели §270 на 141 мире при падающей канарейке. Одиннадцать модулей зеркалят одиннадцать глав. Вычислительное ядро — МОЛЧАНИЕ СОГЛАСИЕМ, стоящее дважды с одним барьером: молчание согласующего органа есть согласование выдачи (ст. 25 п. 3), молчание разрешительного органа есть выдача, а по истечении ещё пяти рабочих дней — получение (ст. 26 пп. 1 и 2); оба снимает примечание приложений 1 и 2. Три приложения (2 240 строк табличного перечня) единицами §194 не режутся и отрезаны срезом статьи 53 на подписи — отдельного стопа не заводилось. Цель §270 нашла, что правило лицензирования (ст. 28) не читало круг действия Закона, и одиннадцать изъятий пункта 2 статьи 3 проходили мимо; правило починено. Вакуумная цель починена пересмотром утверждения с записанной причиной: голова «считается полученным» считается рабочими днями и требует снимка §85, которого миры целей не несут. Линт нашёл семь сплющенных обязанностей — все выпрямлены деонтическими головами §134. Измерена граница errata E-0029: «тридцать календарных дней» считаетadd_business_daysс единицейcalendar_day, аadd_calendar_period(…, 30 calendar_day)даёт TYPE_ERROR. -
Шаблоны формализации: ревью и правка (03.09.2026): якорь на строке объявления (
@source(…) rule …, 6 394 правила корпуса) разбирается общим заголовкомruleform.ANCHORS— до этого он молча выпадал из манифеста при зелёном круге (250 экземпляров сanchors = []); полеanchor_seps.deadlineвладеет правилом по форме головы; диспозиция находокcovered(правило взято другим шаблоном,--scaffoldставит сам);--registerнаходок снимает нулевую строку; битый манифест — FAIL-строка ворот; ворота экземпляров 9,8 → 1,8 с; генератор рецептов рабочего стола отказывает на совпадении имён прочтений (NameClash). -
Шаблоны формализации, четвёртый круг (03.09.2026):
deadlineна общем парсере формыruleform.pyс переменной длительностью — 823 экземпляра в 40 пакетах (было 747 в 29); манифесты перегенерированы,deadline-exceptionпереведён вместе с ним; находки пересчитаны (228 строк, 27 открытых). -
Шаблоны формализации, третий круг (03.09.2026):
closure(замыкания §70, 334 экземпляра в 52 пакетах) иpresumption(презумпции с опровержением, 226 в 18) — контракты с примерами, самотесты трёх родов, строки вcheck_template_instances. Всего под шаблонами 4 419 экземпляров восьми видов. -
Шаблоны формализации, второй круг (03.09.2026): общий разбор формы правила
ruleform.py(44 615 из 47 077 правил корпуса кругом) и три движка на нём —deadline-comparison(срок сравнением дат, 195 экземпляров в 24 пакетах),obligation-window(обязанность с окном четырёх видов, 2035 в 121 пакете),priority-pair(538 в 45 пакетах); доборclosed-listдо 339 пунктов в 11 пакетах. Каждый — контракт с примерами и разделом отказов, самотест трёх родов, строка вcheck_template_instances; индекс шаблоновcorpus/templates/README.ru.md. -
WP-42 / DECISION-0095 — шаблоны формализации: экземпляры на месте, находки под храповиком (03.09.2026). Ворота
verify/ci/gates/compiler/check_template_instances.py(шаг 6: самотесты четырёх движков, сверка каждого манифеста корпуса байт в байт, храповикcorpus/ratchets/template-instances.jsonтолько вверх) иverify/ci/gates/sources/check_template_findings.py(шаг 18: аномалии текста и отказы формы вanalysis/template-findings.jsonпакета, незарегистрированная — красный, закрытие только диспозицией, храповик строк/открытых). Пилот на Таможенном кодексе и охват 29 пакетов: 747 экземпляровdeadlineв манифестах<модуль>.lawdeadline.tomlрядом с модулями,.lawи CLIR не тронуты; две раскладки по обмеру (константа в посылке, однострочная запись) — 597 → 767 экземпляров кругом. Новый шаблонdeadline-exception(тройка «умолчание + особый случай + исключение», 5 экземпляров, контракт с разделом отказов). Находок 134, открытых 25 — диспозиции формализатора в фазе аудитаformalize-act. Рабочий стол: рецепты порождают экземпляры с тремя состояниями поля (stated | absent | disputed), исходok | partial_match | error, дымовые и верностные дела,dated_valueснят в пользу A3-параметра,closed_list→enumerated_grounds, подпись сверки честная; проба живымlawc(LAWC_PROBE=1) — 8 экземпляров,expandвидит группы толкований. Этап 7 (сахар языка) не открыт. -
kz.corpus.forest_code— Лесной кодекс РК № 477-II, закреплённая русская редакция (03.09.2026). ПубликацияK030000477_(398 608 байт): 133 статьи, 21 глава, 9 разделов, все 133 адресованы фрагментами §194, text coverage 98,2 %. Одиннадцать нормативных модулей по разделам (два крупных разбиты по главам), CLIR — 840 узлов и 271 правило; глубина EXECUTABLE 60, UNEXPLAINED 0, разметка словаря 380/380 и норм 302/302. Семействоforest_code— 275/275 сценариев, differential — 275 байтово идентичных вызовов; в регрессии срабатывают ВСЕ правила пакета. Четыре упорядоченные цели §270 (срок ст. 31 → воспроизводство ст. 3 и ст. 38 → действие обязанностей ст. 38 → закрытость перечня видов ст. 88) HELD на 249 мирах регрессии, канарейка FAILED; одна цель по ходу работы оказалась ШИРЕ ТЕКСТА (утверждала, что обязанность воспроизводства действует у всякой рубки, тогда как подпункт 12 статьи 38 даёт три года) и была сужена — правился не мир, а цель. Вычислимое ядро: шесть строк «цель → диапазон» пункта 2 статьи 31 и седьмая строка части второй (пожар свыше 100 га — до 10 лет), ценз участника тендера со стажем не менее двух лет, крупный проект от 250 000 м³/год, двукратный и однократный размеры воспроизводства по группам пород с трёхлетним сроком, систематичность «два и более раза в календарный год», три месяца невнесения платы, порог ста МРП статьи 19-1, сроки проверок 10+5 и 5+3 рабочих дня, надбавка не менее 25 процентов, кратности компенсационной посадки 2/6/3, охранная зона 20 метров, колочный лес 0,1–30 га. -
E-0106: отброс исключения при норм-голове виден
lawc check(03.09.2026). Правило с норм-головой §134 и клаузойunlessкомпилируется с ОТБРОШЕННЫМ исключением — это определённое поведение (развёртка §149/§150 требует defeat позиции, §105.1 — веха L2+), давно замороженное векторомLAY-L2-NORM-EXCEPTION-DROPPEDи сопровождаемое предупреждениемLDC-E1302. Дефект был в СТАДИИ: предупреждение звучало только уlower, аlawc checkдавалcheck OKи ноль диагностик — у автора акта, MCPlaw_draft_checkи рабочего стола признака не было. Найдено при формализации Лесного кодекса: три изъятия акта были записаны и не действовали, обязанность оставалась ACTIVE в исключённом мире, и differential этого не ловит по построению — оба движка получают один CLIR без оговорки. Закрыто по §210.1 одной функцией на обе стадии (law_hir::norms::dropped_exception_diagnostics); байты понижения не сдвинулись. ВекторLAY-L2-NORM-EXCEPTION-DROPPED-CHECK(static,command: check, файл принимается) плюс канарейка у литеральной головы. Сама веха §105.1 — defeat позиции — остаётся не сделанной и названа. -
Профиль
kz-adilet-articleполучил стопsection-numbered(03.09.2026). Разделы Лесного кодекса набраны строчными с номером и точкой («Раздел 1. Общие положения»), и существующий стоп^РАЗДЕЛздесь не срабатывает ни разу: без нового ключа статья 10 утянула бы заголовок раздела 2, и так девять раз. Ключ опционален и включается только строкой манифеста — существующие экземпляры байтово те же. -
kz.corpus.digital_code— Цифровой кодекс РК № 255-VIII, полная русская редакция (03.09.2026). Закреплены 106 статей и 106 фрагментов, 19 модулей глав и 632 строгих правила; глубина EXECUTABLE 106, UNEXPLAINED 0, разметка словаря 679/679 и норм 650/650. Семействоdigital_code— 118/118 сценариев, differential — 127 идентичных вызовов. Три цели §270 по статьям 41, 43 и 60 HELD на мирах регрессии, отрицательная канарейка FAILED. Вычислимые границы включают 90 дней, возраст 16 лет, пятилетнее хранение по статье 55(7) и шестимесячное введение по статье 106. -
kz.corpus.construction_code— Строительный кодекс РК № 253-VIII целиком как закреплённый L0-пакет (03.09.2026). Русская публикацияK2600000253, 148 статей и фрагментов, 20 модулей, 96 правил; ступени введения 2027/2028 моделируются окнамиeffective, для рабочих сроков добавлены воспроизводимые календарные снимки этих лет. Глубина: EXECUTABLE 72 + 76 объявленных границ, UNEXPLAINED 0; разметка 246/246. Семейство регрессии — 141 сценарий с 19 парами сроковых границ, differential — 143 байтово идентичных вызова. Четыре цели §270 HELD на мирах семейства, канарейка статьи 133 падает; четыре трудных места закрыты исполнимыми capability-пробами. -
E-0104: обязательные поля замыкания §70 видит
lawc check(03.09.2026). Замыкание безsnapshot/complete_as_ofили с датой вместо момента отвергаетсяLDC-E1307на стадии check, а не только на lowering-е: одна функцияclosure_diagnosticsна обе стадии (law-hir/src/closures.rs), по образцу норм иmap. До правкиcheckпечаталcheck OK,lowerотказывал, и закрытие оставалось объявленным, но не действующим. ВекторыERR-E0104-*(2, static). Остальные коды lowering-а наcheckпо-прежнему не звучат — названо в errata. -
Канал суждения §47.3: errata E-0101/E-0102/E-0103 (02–03.09.2026). Судья называется только там, где его ответ решает: правило с опровергнутым соседним конъюнктом (E-0101) и поражаемое правило, чей вывод поразил бы уже сработавший дефитер §107.3 без приоритета §106 (E-0103),
JudgmentRequestбольше не выставляют; поражение читается по применениям дефитеров в proof-графе и замыканию приоритетов без копии §106–§108. Входevaluateполучил нормативную схемуspec/schema/query.schema.json, невалидный вопрос отвергается error-объектомQUERY_INVALID(E-0102). ВекторыERR-E0101-*(4),ERR-E0102-*(2),ERR-E0103-*(4); открыты условные приоритеты §117/§118 и §107.2 у поражённого старшего противника. -
kz.corpus.penal_execution— Уголовно-исполнительный кодекс РК № 234-V ЗРК целиком (03.09.2026). 178 заголовков статей и Приложение закреплены фрагментами; EXECUTABLE 167 + 11 объявленных границ = 178, UNEXPLAINED ноль. 363 сценария, differential 365 вызовов байтово, семь целей §270 (DECISION-0089) HELD на мирах регрессии, канарейка падает. Автомат отбывания §160 — шесть стадий и шесть переходов без структурных дефектов, живой журнал даёт две попытки перехода без правового эффекта §164. Датированный параметр §87 — МРП, читаемый нормами голым именем в семи местах Кодекса. Разбор семи дефектов, найденных исполнением при зелёной статике, и трёх пробелов самого Кодекса —corpus/laws/kz/penal-execution/verification.ru.md.
Изменено
- Каталог
law_packagesпод query-фильтром печатает каталожную строку, а не карточку акта (03.09.2026). Карточка детали — полный титул (у актов корпуса это эссе до 3 КБ), издатель, аннотация и счётчики акта — печаталась на КАЖДЫЙ совпавший акт, и потому две трети ответа на вопрос «в каких актах про это говорят» росли с числом совпавших актов, то есть с составом корпуса, а не с числом совпадений. Замер наquery="препятствие"(15 актов, 30 совпавших строк): 20 413 Б при 6 642 Б самих совпадений; после сжатия рамки — 13 022 Б при тех же 6 642 Б, рамка акта 300 Б против 860 Б. Структура аннотацию под фильтром уже не несла — расхождение с текстом снято в пользу структуры. Деталь одного акта и обзор не изменились. Порог контракта переписан тем, что он утверждает: прежние «< 20 000 Б» покраснели от роста корпуса при неизменившемся ответе, теперь сверяется РАМКА — фиксированная преамбула плюс каталожная строка на совпавший акт (2 500 + 400 × актов); такой порог не переезжает от роста корпуса, а возврат карточки ловит сразу. - Голден «не формализованная область» выбирается по отсутствию нормативного
текста, а не по далёкости темы (03.09.2026). Запрос про промысловую квоту
в Беринговом море упал на
kz-permits— тем же порядком, каким до него упал «уволить беременную» на ТК РК: оба выбирались как далёкая ТЕМА и оба назвали занятие, которое кто-то РЕГУЛИРУЕТ, так что приезд акта был вопросом времени. Новый признак отбора отсеивает и соседние соблазны: игры и спорт лежат в корпусе сводами правил, еда и одежда — предписаниями, техника — стандартами. - Корпус: десять пробелов формализации в срочных правилах пяти актов РК закрыты гейтами (03.09.2026). Разбор 27 открытых аномалий шаблона
deadline: точки отсчёта ст. 13, 14-1, 26-1 антикоррупционного закона, п. 17 ст. 19 и п. 9 ст. 53 закона о банках, ст. 19–20 закона о правовых актах (рекомендации ст. 20 — свой предикат, семь исключенийthen not), п. 20 реестра недобросовестных, п. 569 правил закупок (тройкаdeadline-exception). Все правила остались экземплярами шаблона; открытых строк по пяти пакетам 0, регрессия и KZ-differential семейств зелёные. - Корпус: группы прочтений §152 для ГПК ст. 150 ч. 1 и УИК ст. 171 (03.09.2026). Совпадение примирения и досудебного протокола и совокупность преступлений разных категорий — два места, где текст не упорядочивает сроки; прочтения выбираются делом, второе прочтение УИК — канал суждения §47.3. Строки находок закрыты
disputed_reading. - Корпус: пятнадцать аномалий сроков шести актов РК закрыты диспозицией «законная структура» (03.09.2026). Пояснение к каждой строке называет, чем посылки взаимно исключают; правила не менялись.
- Корпус: четырнадцать строк
split_deadlinesпо актам РК закрыты «законной структурой» (03.09.2026). Под особой головой везде другая обязанность, другой путь или служебная дата; правила не менялись. - Корпус: ст. 53 закона о Конституционном Суде — специальные сроки вытесняют общий (03.09.2026). Четыре исключения с приоритетом; до этого обращение гражданина получало месяц и три месяца разом. Строка ст. 14 закона о правовых актах закрыта «законной структурой».
- Корпус: восемнадцать отказов формы шаблона
deadlineпо актам РК закрыты диспозициями (03.09.2026). Одиннадцать — законная структура (отрицание, поражение,unless, граница интервала), семь — пробел формы: длительность именованной константой пакета. Открытых строк по актам РК нет. - Форма
deadline: именованная константа пакета типаQuantityпринимается как длительность (03.09.2026). Разрешение по объявлению из CLIR, канарейка на обе стороны; +8 экземпляров в 4 пакетах, четыре новые строки находок закрыты законной структурой. - zan.arxo.io: страница «Правовой мониторинг», партия 1 из трёх разобранных строк (03.09.2026). Генератор
build_monitoring.pyиз реестров находок и живого оракула, словарь ru/kk, ворота свежести и состава; перегнаны «Государству» и демоmarriage. - Витрины на главной arxo.io (03.09.2026): секция «06 · In public» —
состав читается из реестра
apps/demos/manifest.json(живой домен → карточка) плюс zan; тексты — словарьshowcase.cards; живой домен без карточки или карточка без витрины роняют сборку, отложенная витрина называется вSHOWCASE_HOLDс причиной (Fannie Mae — решение владельца). Карточка «For lawyers and developers» ведёт на MCP, страница MCP и «О проекте» ссылаются на zan.arxo.io и fiqh.arxo.io. - Голос лендинга arxo.io (03.09.2026, решение владельца): механизм не называется — со всех четырёх страниц сняты две реализации, доказательства, хэши, «байт в байт», векторы, errata и заморозка семантики; остались эффекты: «те же факты — тот же ответ», статьи рядом с ответом, честная остановка у судьи. Переписаны главная, «О проекте» (блок самоуправления с числами журнала заменён принципами), MCP (перечень 21 инструмента свёрнут до трёх вызовов), Calculemus, подписи живого прогона и кейсов. Второе мнение — Codex; сборка зелёная, запрещённых слов в видимом тексте нет.
Удалено
- Русская версия лендинга arxo.io (
apps/landing, решение владельца 03.09.2026: документация переходит на английский). Снятыsrc/pages/ru/, русские словари (i18n/ui.ts,i18n/home.ts), русские данные кейсов и корпуса, переключатель языка,hreflang-альтернативы иog-ru.png;/ru/*перенаправляется на английские страницы (vercel.json). Русскоязычный вход проекта — витрина zan.arxo.io (ru/kk). - Страница
/product/лендинга (03.09.2026): снята вместе со стилями и ссылками в шапке и подвале;/product/перенаправляется на главную, ссылка из FAQ страницы MCP ведёт в документацию. - Ссылки на атлас и документацию с лендинга (03.09.2026): сняты из шапки,
подвала, ленты корпуса, страниц «About», «Calculemus» и MCP; событие
аналитики
outboundи экспортыatlasUrl/docsUrlвsites.tsудалены. Единственная внешняя ссылка лендинга — zan.arxo.io.
Исправлено
- Демо «Океания» после E-0095: правила руководства заякорены в обеих
редакциях. С проекцией §92.3 внутри
evaluateправила, заякоренные только на апрельскую редакцию (окно до 01.06.1984), исключались из дел, датированных 15.06, и три сценария из двенадцати давали NEITHER/FALSE_ONLY вместо BOTH при байтовом differential 77/77. Июньская редакция переиздаёт параграфы руководства без изменений (те же хэши), добавлен параграф об архиве в обеих редакциях, шесть правил несут парный якорь §194. Узлов 51 → 56, ожидания сценариев не тронуты; демо 12/12,check_demoиcheck_demo_differentialOK.
Добавлено
-
Трассировка вызова MCP (DECISION-0094): в записи журнала — профиль, id вызова (
$request_idedge →MCP_CALL_ID→X-Law-Call-Id), ожидание лока, стадииevaluate/whynot/verbalize, снимок каталога и источник индекса, движок, нейронный лег, трейсбек внутренней ошибки (law_mcp/trace.py); Grafana над VictoriaLogs с провиженным дашбордом (deploy/grafana/), nginx пишет$request_idв access-log и бэкенду. Фаза 2: спаны OTLP тех же стадий в VictoriaTraces (law_mcp/otel.py, stdlib, фоновая очередь, тел нет;traceparentклиента — родитель;LAW_MCP_OTLP_URLdrop-in-ом юнита), Jaeger-источник в Grafana. -
Конституционная реформа 05.06.2026: пять актов № 296–300-VIII (02.09.2026). Пять самостоятельных пакетов одной публикации —
kz.corpus.president,kz.corpus.kurultai,kz.corpus.halyq_kenesi,kz.corpus.capital_status,kz.corpus.administrative_territorial; 166 статей, закреплена русская ветвь ИПС «Әділет» (97,1–98,3 % байтов). Глубина §33.1: EXECUTABLE 50/37/21/16/21, UNEXPLAINED 0 у всех пяти; 294 сценария, differential 300 вызовов байтово; цели §270 — пятнадцать целей HELD на мирах регрессии, пять канареек падают. Один фетчер и один генератор фрагментов на весь пакет реформы, оба впаяны вrun_all.sh; числа статей сверяются двумя независимыми счётчиками. Измерено: константа безassertроняет восемь порогов молча;notнад поражённой презумпцией не срабатывает никогда; ЭФФЕКТ ВЛАСТИ §127 не читается телом правила; два поражаемых производителя одной головы дают NEITHER; обобщение перечня оставляет статьи SOURCE_ONLY при зелёномcheck. Поправка к постановке задачи из текста: направлений формирования Қазақстан Халық Кеңесі три по сорок два, а не четыре. -
aba/pecs— автомат PECS I–VI, четвёртое звено и замок стекаaba/(02.09.2026). Новый пакетaba.pecs: авторское изложение структуры последовательности в двух редакциях-языках (15 разделов) при ЛИЦЕНЗИОННОЙ границе — руководство Bondy и Frost в пакет не входит ни байтами, ни формулировками; онтология PecsProgression/Trainer/PhaseAttempt, шесть этапов с порядком по номеру, замыкание §70 над ПОПЫТКОЙ (унарный предмет), потолок поддержки через барьер §111 с мостом обоснованности, автоматPecsSequenceиз шести стадий и пяти переходов, две achievement-обязанности, два прочтения §152. Семейство 46/46,.lawtest46/46, differential 46 байтово, цели §270 4/4 HELD на 26 мирах с падающей канарейкой, журналprocess-runс §164 и §140, полный оверлей §218 kk (86 ключей). Измерено: §160 порождает стадию с тем же StableId, что у одноимённой словарной константы, —A3 StableId collisionна lowering при зелёномcheck; цель о потолке переписана на обратное включение вместе с прозой раздела 10. Разбор — STATUS.md пакета. Вертикальный стек семьиaba/из четырёх пакетов закрыт целиком. -
aba/program-evidence— доказательность программы обучения, третье звено стекаaba/(02.09.2026). Новый пакетaba.program_evidence: авторское изложение в двух редакциях-языках (16 разделов), онтология Program/ ProgramLead/ProgramGoal, два собственных перечня (качество доказательства и вердикт покрытия) какpub entity+pub const, закрытость операционального критерия из трёх частей первой посылкой всех вердиктов, четыре счёта по эмпирике, три замыкания §70 (одно — прямо над эмпирическим предикатом),key(g, s)§45.1 уobservation_quality, три A3-параметра, две achievement-обязанности, два прочтения §152. Семейство 59/59,.lawtest60/60, differential 60 байтово, цели §270 3/3 HELD на 30 мирах с падающей канарейкой, полный оверлей §218 kk (94 ключа). Измерено: надgoal_novelзамыкания §70 НЕТ намеренно, и цель о новизне на мире без дат введения даёт VACUOUS, а не FAILED — пустота домена есть точное отражение изложения; статический аудит между фазами 3 и 4 нашёл два мёртвых символа, оба оживлены правкой нормы. Разбор — STATUS.md пакета. -
aba/repertoire— репертуар карточек и навыков, второе звено стекаaba/(02.09.2026). Новый пакетaba.repertoire: авторское изложение в двух редакциях-языках (14 разделов), онтология Repertoire/RepertoireKeeper/ Combination, собственный перечень категорий (pub entity+pub const), импорт типовaba.skill_vocabularyпоpkg::Tпри собственных входах дела,key(c)§45.1 уcard_category, замыкание §70 над построимостью, два A3-параметра, две achievement-обязанности, два прочтения §152. Семействоaba_repertoire52/52,.lawtest52/52, differential 52 байтово, цели §270 4/4 HELD на 29 мирах с падающей канарейкой, полный оверлей §218 kk (80 ключей). Измерено: счёт по выводимому предикату прошёл дверью барьера §111 (monotone(P)) — материализованных журналом чисел у пакета нет ни одного; цель о разделе 7 переписана с равенства на покрытие после падения на мире конфликта ключа — правила не тронуты, разбор в STATUS.md пакета. -
kz.corpus.fno: формы налоговой отчётности и Правила их представления (приказ Минфина РК от 12.11.2025 № 695, в силе с 01.01.2026; 02.09.2026). Подзаконный уровень Налогового кодекса, на который тот ссылается дважды — п. 2 ст. 113 (формы) и часть третья п. 3 ст. 115 (порядок представления). Тридцать приложений, 937 фрагментов §194, 289 правил, 46 сценариев, differential байтовый (118 вызовов). Мера §33.1: EXECUTABLE 29 из 30, SOURCE_ONLY 1, UNEXPLAINED 0.- Новая единица деления — ПРИЛОЖЕНИЕ (конвенция
prilozhenieв обоих реестрах меры плюс две таблицы имёнboundaries.pyи ветвьLOCATOR_RE): собственных статей у приказа ноль, а нумерация глав и пунктов перезапускается в каждом приложении — пункт «1.» есть у двадцати девяти из тридцати, и конвенцияpointсвела бы их в один. - Срок каждой из двадцати восьми ФНО ВЫЧИСЛЯЕТСЯ из дня окончания
налогового периода, а не приходит делом. Наивная запись невозможна:
policy.month_endобязателен календарным единицам §86 и запрещён дневным (E-0029), политика одна на дело, — обе половины отказа воспроизведены пробой. Месяц шагается дневным термом через границу месяца, число месяца — тем же термом от последнего дня предыдущего. - Шага НАЗАД по датам §84.2 нет вовсе, и это найдено исполнением: ось «20 апреля ОТЧЁТНОГО года» сначала отсчитывалась от дня перед периодом и не сработала на пяти сроках. Пункт 36 приложения 29 («не позднее 31 декабря года, предшествующего году представления») объявлен границей ЯЗЫКА — та же граница, которую за собой записал Бюджетный кодекс РК.
- Арифметика форм выведена целиком, включая приложения 7 (150.00),
13 (400.00) и 17 (590.00): 474 правила, из них 312 считают строку или
графу. Три нормы оказались ОБЩИМИ для нескольких приложений (фиксированные
активы по четырём группам — 2, 7 и 9; графы J и K о контролируемых
иностранных компаниях — 2, 6 и 9; расчётный показатель графы F — 2 и 7) и
записаны по одному разу с якорями на все повторы. Контракт «формула читает ЗАПОЛНЕННОЕ и пишет ВЫЧИСЛЕННОЕ» —
не стиль, а условие стратифицируемости (LDC-E4102 §110/§191);
«если разница отрицательна — ноль» записано вторым правилом с гардом,
а не свёрнуто в
max; формулы со скобками не раскрываются, потому что считают две разные ставки. - Ворота
check_fno_xml(рендер формы 910.00 не вычисляет значений; адреса отображения сверены с нормами пакета) и подкаталогxml-map/в закрытом списке конвенции раскладки.
- Новая единица деления — ПРИЛОЖЕНИЕ (конвенция
-
Анкета нормы в рабочем столе (
apps/constructor, перспектива «Текст», 02.09.2026). Ответы юриста на вопросы о статье — что делает фраза, о ком, при каком условии, кто решает, что факт установлен, можно ли отменить вывод, считать ли отсутствие в деле отсутствием, с какой даты — порождают текст.lawгенератором@law/forms(generateNorm, чистая функция, 17 тестов); порождённое проходитcheck,lowerи сверку байтов §208 с оракулом до добавления в пакет и показывается словами вербализатором. Каждая порождаемая форма проверена компилятором на копииpinning-example: деонтической голове обязательно имя, закрытию §70 —snapshot, якорь —@source(…), фрагмент —in <редакция>. Заготовка из спана переписана на ту же форму (прежняя писалаanchors […]иin_edition, которых в языке нет). -
Подготовленная программа: анализы только по IR считаются один раз на объект (DECISION-0093, 02.09.2026). Профиль оракула на
kz-income-tax(18,8 МБ, 9790 узлов) показал 2,94 с процессорного времени на ПУСТОЕ дело, из них ~90 % — разыменование констант §54 обходом всего IR, ранги и страты строгого слоя, анализ агрегатов, установка замыканий §70, хвосты proof-id, хэши 1657 фрагментов §194 — величины, не зависящие ни от дела, ни от запроса и пересчитывавшиеся на каждом вызове (тот же класс, что закрыл DECISION-0054 дляprogramHash). Заведёнengines/lawref/lawref/evaluator/prepared.py: вид программы (ProgramView) по ключу «дата права × прочтения как поданы × константы дела» в записиprogram_derived, LRU на 16, плановая сверка мутации на степенях двойки; установка слоёв вынесена вprepare_strict,prepare_defeasible,prepare_closures, таблицыTermEnvи индекс сигнатур — в производные вида; issues проходов записаны и воспроизводятся в прежнем порядке и числе. Разыменование §54 стало copy-on-write (вид держит ссылки на узлы IR, а не вторую программу), свободные переменные конъюнктов кэшируются по объекту (solver.free_vars). Замер после: пустое дело 2,94 → 0,13 с, дело регрессииkz-vve-pravila3,10 → 1,28 с, синтетическая таблица 1000 строк 0,154 → 0,096 с. Зеркало дляlawc—PreparedProgram,PreparedView,ViewCacheвlaw-eval::engineс кэшем в хэндлеliblaw_ffi(хэндл: 0,54–0,85 → 0,06–0,07 с на то же дело); параллельная сессия дописала поверх Ф5 типизированного IR (скомпилированные строгие правила в виде,eval-serveна кэше). Канарейки вselftest.py: байты при непустой таблице констант, copy-on-write, мутация копии узла падает сверкой вида. Полная регрессия и полный differential не гонялись по решению владельца: selftest, векторы 482, ворота FFI-differential, регрессия и KZ-differential--onlyincome_tax/vve_pravila/osms/ terminkom_zantanu. Не ускорилось намеренно: дело со 100 кодами на таблице в 1000 строк — цена «строки × входы» гарда равенства, следующий шаг — проталкивание гарда в индексby_arg. -
Полная исполнимая цепочка континуитета РФ 1922–2020 (02.09.2026). Все 13 пакетов плана получили
articles.json, пакетные runners, парные сценарии, lawtest, храповики глубины/разметки и отчёты аудита. Финальныйsu.constitution_1977_secession: 174/174EXECUTABLE, 100 % из 150 179 байт публикации, 347 правил, 93 norm-template, 10 constraint, 714/714 сценариев (включая парыCLEAN/VIOLATED) и 714 байтовых differential-вызовов; закрытые перечни и компетенции разложены по членам, сроки и пороги сохранены числами. Audit-world пересобран до 2 674 узлов и остаётся 19/19, lawtest 5/5; главный ответ неизменен —NEITHER / REQUIRES_JUDGMENTс единственнымduma_resolution_has_legal_force.chain.lawread.mdперевербализован детерминированно. По решению владельца полный текст Конституции РФ не включался: её пакет остаётся согласованной исполнимой выдержкой. -
Профили корпуса MCP (DECISION-0092):
LAW_MCP_PROFILE=kz|islamрежетcorpus/clirна процесс — селектор по префиксам ключей каталога плюс автоматическое замыкание по импортам §23 (apps/mcp/law_mcp/profile.py,apps/mcp/profiles/*.json); пинятся только заимствования через границу (borrowed), запись —check_mcp_profiles.py --register. Имя сервера, юрисдикция ответов, шапка инструкций и календарьdeadline— у профиля; умолчаниеallбайтово равно прежнему серверу. Воротаverify/ci/gates/hosts/check_mcp_profiles.py(шаг 15/52): замкнутость, граница, живость селекторов, непересечение; канарейка 12 подделок. Публикация — путями/mcp/kz,/mcp/islamнаmcp.arxo.io: экземпляры по спискуINSTANCESвdeploy.sh, профиль — drop-in юнита, свой upstream в nginx, нейроиндекс на профиль, смок джобы по трём путям. Требует разовогоdeploy.sh installот root на хосте. Грани инструментов (03.09.2026): полеfacetу инструментов реестра, словарьprofile.FACETS, секцияfacetsпрофиля (allow/denyс причиной, полнота держится парсером и воротами); публичные срезыkzиislamотвергаютdraftingиadversarial— 11 инструментов из 21, отвергнутый вызов отвечает отказом с причиной. -
**Закон РК «О языках в Республике Казахстан» № 151-I — оборванная цепь
-
Таблица расхождений сравнительной цепи опубликована (Ф8 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026) — план DECISION-0091 реализован целиком. Инструментverify/ci/tools/casus_matrix.pyзаписывает ответы оракула на реестр казусов вapps/registry/index/casus/(зал + файл на казус: вердикт, статус,resultHash/programHash, ожидание реестра с якорем,semanticHashкаждого пакета мира звена); воротаverify/ci/gates/release/check_casus_index.py(--canary) держат свежесть якорями противcorpus/clir/и состав против реестра иLINK_ORDER; атлас получил страницуcasus/«Один казус, шесть эпох» (оба языка, таблица 31 × 6 с якорями на фрагменты, заметки по звеньям), публикуемую из закоммиченного индекса.basis → powerтерминологической комиссии связана носителем (02.09.2026).** Новый пакетkz.corpus.languages: 6 глав, 38 статей, обе языковые ветви «Әділет» закреплены (Z970000151_; казахская — как опора меток §218 для 58 казахских пакетов корпуса, фрагментов не несёт, решение записано строкой в09-sources.law). Мера §33.1 — EXECUTABLE 34 / SOURCE_ONLY 1 (граница с причиной) / EXCLUDED 3, UNEXPLAINED 0; текстовое покрытие 98,9 %. Семействоlanguages78/78, differential 79 вызовов байтово,.lawtest§267 45 из 79, цели §270 8/8 HELD на 65 мирах регрессии при TELEOLOGICAL-UNIQUE и канарейке, падающей 37 контрпримерами. Скриптыfetch_languages_text.py/sync_languages_fragments.pyс--check. Ради чего заведён:corpus/laws/kz/terminkom/01-sources.lawцитирует «подпункт 5-1) статьи 25 Закона “О языках”» как основание Положения о Республиканской терминологической комиссии, а носителя власти в корпусе не было — цепочка обрывалась на ссылке; теперь второй её конец есть (PolnomochieObespechitTerminologicheskuyuKomissiyu, сцены 31 и 32). Измерено четыре класса молчания: (а) портал размечает исключение статьи ДВУМЯ способами — из трёх исключённых статей (24-1, 25-4, 26) сноска уцелела в закреплённых байтах ровно у одной, у двух ушла вместе с аппаратом публикации, и «исключена» стало неотличимо от «извлечение потеряло текст»; различие взято из сырого html и закрыто счётчикомEXCLUDED_EMPTY/EXCLUDED_INLINEв фетчере; (б) власть §127, чейexerciseназывает собственныйeffect, мертва — эффект материализуется от осуществления, а осуществлением объявлялся сам эффект: при зелёномcheckпятнадцать полномочий не давали НИЧЕГО ни на одном деле (сцены 31, 33, 34 показывали NEITHER), лечится разделением на эмпирическое действие органа и институциональное последствие; (в) эмиссия.lawtest§267 давала ноль из 77 сцен тремя причинами подряд — снимок календаря в options §168.2 у всех дел, осьextendsпрофиля §89.1 у 50 дел без сроков, слияние узлов календаря в мир КАЖДОЙ сцены у 43; после трёх сужений 43 теста, ответы не изменились; (г) цель шире собственного домена — свойство «активна обязанность ответить» над доменом «ответ уже отвечает требованию» дало FAILED на двух мирах регрессии и было право: обязанность там SATISFIED. Ошибка в цели, не в праве. Границы, названные вслух: фиксированные календарные даты пункта 2 статьи 25-6 (терма конструирования даты из года, месяца и числа в §57–§58 нет) и запрет §130, не получающий VIOLATED в v1 (сцена 67 записана падающей при отступлении границы). -
aba/skill-vocabulary— базовый словарь навыков и записей, первое звено вертикального стека семьиaba/(02.09.2026). Новый пакетaba.skill_vocabulary: авторское изложение в двух редакциях-языках (14 разделов, 28 фрагментов), онтология Learner/Recorder/Skill/SkillTarget/Card/ Session/Record, семантика записи из пяти членов (pub entity+pub const, чтобы СЛОВА пересекали границу пакета), четыре замыкания §70, три A3-параметра, две achievement-обязанности, два прочтения §152 без группы §155,key(r)§45.1 уrecord_semantics. Семействоaba_skill_vocabulary53/53,.lawtest53/53, differential 53 байтово, цели §270 4/4 HELD на 31 мире с падающей канарейкой, полный оверлей §218 kk (112 ключей). Измерено: замыкания §70 одноуровневы в v1 — производитель закрытого предиката, читающий негатив ДРУГОГО замыкания, даёт BOTH (18 строк воспроизведения); квалифицировано как граница v1 (§191 отложена в WP-11/WP-16) и обойдено перестройкой, разбор в STATUS.md пакета. -
**Налоговый кодекс РК, Очередь 4 содержательной формализации
-
BGB 1896 — шестое звено сравнительной цепи (Ф7 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026). Новый пакетde.bgb_1896(первая редакция, четыре книги немецкой Викитеки закреплены, 1760 параграфовde_paragraph, охват — 37 параграфов восьми блоков спискомSCOPE, 73 нормы, мост в словарьdoctrine.ius_privatumв обе стороны); скриптыfetch_bgb_1896_text.py/sync_bgb_1896_fragments.pyи их--checkвrun_all.sh; звеноbgbв раннереius_privatum_casusи 31 клетка матрицы (29 с исходом, 2 skipped — res iudicata в ZPO). Семейство 204/204, матрица 12 × 6: 173 клетки с исходом, 13 skipped. Измерено: § 932 переворачивает казус 1 (четвёртое звено против Рима); 7г — FALSE давностью ПРИТЯЗАНИЯ (§§ 194, 195, 198, 222), а не приобретением; § 222 Abs. 2 даёт голое право словаря буквально; деликты — полная тройка (§§ 831–833) на поражаемых презумпциях с освобождением.(
kz.corpus.incometax, 02.09.2026).** Восемь разделов Кодексов 2025 и 2017 годов углублены симметричными формулами, порогами, ставками, закрытыми перечнями и сроками с явными окнами редакций. Стабовая доля пакета снижена с 98 % до 75 % (1606/2124), отдельно по каждому Кодексу — также 75 %; новый Кодекс остаётся 848/848EXECUTABLE, старый — 799/809. Семь целей принципов статей 25–32HELDна двух невакуозных мирах, канарейка даёт контрпримеры,impact --goals—GOALS-PRESERVED. Десять датированных A3-наборов задают общие окна деклараций и платежей; они выводятся нормами и проверяются внутри деонтических позиций. Полное Учебныйkz.corpus.statedutyснят решением владельца, его шесть сценариев перенесены вincome_tax; при переносе льгота статьи 669 сужена до приобретения гражданства. Буквальная коллизия двух строк статьи 331 при десяти работниках сохранена без приоритета. Core 0.1 не изменялся. -
Исполнимая конституционная выдержка РФ для цепочки континуитета (
ru.constitution_continuity, 02.09.2026). По прямому исключению владельца полный текст Конституции не закреплялся: охват ограничен статьями 15, 67.1, 105, 106 и 125. Все пять статейEXECUTABLE, обе публикации покрыты на 100 %, 21 правило и два norm-template имеют 44/44 сценария и 44 байтово тождественных differential-вызова,.lawtest1/1. Публичные source-assertions сохранены для совместимости: audit-world 19/19 и главныйNEITHER / REQUIRES_JUDGMENTне изменились. Отчёт —corpus/laws/ru/constitution-continuity/audit.ru.md. -
**Полная исполнимая формализация Закона СССР от 03.04.1990 о порядке
-
Code civil 1804 — пятое звено сравнительной цепи (Ф6 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026). Новый пакетfr.code_civil_1804(первое издание, десять титулов Викитеки закреплены, 869 статейfr_article, охват 43 статьи, 65 правил, мост в обе стороны); семействоius_privatum_casus175/175. Измерено: «possession vaut titre» переворачивает казус 1 и снимает срок с движимых вещей, полная тройка ответственности за других (1384–1385), заём реален (1892), натуральное обязательство после давности (1235). -
Маджалла — четвёртое звено сравнительной цепи (Ф5 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026). Срезosm.mejelleрасширен до 191 статьи (продажа чужого, вадиа, гасб и итлаф, дееспособность, ибра, дава и давность, сила решения), семь модулей и мост в обе стороны; семействоmejelle60/60,ius_privatum_casus144/144. Измерено: добросовестность покупателя своду неизвестна, приобретательной давности нет — только процессуальная (ст. 1660) при неугасающем праве (ст. 1674), ибра гасит право вместе с иском. -
Институции Юстиниана — третье звено сравнительной цепи (Ф4 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026). Новый пакетrom.corpus.institutiones_iustiniani(акт с силой,historical_monument; четыре книги издания Крюгера закреплены по Roman Law Library, 824 единицы новой конвенцииinst_paragraphв трёх реестрах, охват списком 34 параграфов, 80 правил, мост в обе стороны); ось «370 лет внутри Рима» измерена казусами: res mancipi исчезли, usucapio удлинена, ноксальные иски только за рабов, pauperies названа, срок цивильных исков — граница (число вне акта, пять клеток skipped). Семействоius_privatum_casus117/117.выхода союзной республики (
su.secession_law_1990, 02.09.2026).** Все 20 статей имеют исполнимые правила: референдум и его пороги, автономии, комиссии и наблюдение, календарные окна, переходный период, урегулирование имущества и обязательств, права граждан, передача дел и заключённых, подтверждение результата и итоговое решение Съезда. Закрепление — 35 167 из 35 167 байт и 21 фрагмент; глубинаEXECUTABLE 20,UNEXPLAINED 0; 84 правила покрыты парами применения/неприменения, регрессия 186/186 и differential 186 вызовов байтово,.lawtest1/1. Отчёт —corpus/laws/su/secession-law-1990/audit.ru.md. -
foss.debian_constitution: приложение A.5 конституции Debian (02.09.2026). Шестой носитель словаряdoctrine.vote_methodsи первый без правопорядка (jurisdiction "none"). Бриф разошёлся с текстом дважды: приложения A.6 нет вовсе (подсчёт — A.5), а метод — Schwartz Sequential Dropping, не «Шульце». Нумерация пунктов восстановлена при извлечении собственным инструментом (номер печатает браузер, а конституция ссылается на него сама); единица §33.1 — заголовок раздела, конвенцияdebian_constitutionв обоих реестрах, 38 единиц, охват — список из одной. ФАЗА 1 НАШЛА БЛОКЕР ЯДРА: шаги A.5.5–A.5.8 не выразимы — плоская положительная рекурсия запрещена (LDC-E4102), значит замыкание попадает в monotone-цикл, а всякий агрегат над предикатом такого цикла срабатывает до насыщения и обратно не берётся; гард полноты требует эмпирического знаменателя, которого у замыкания нет. Взятое кончается A.5.4 и даёт полный вход кондорсетовского подсчёта: V(A,B), оба отсева (включая сверхбольшинство S:1) и таблица попарных поражений. Регрессия 13/13, differential 44 вызова байтово, цели 3/3 HELD на 12 мирах при падающей канарейке, UNEXPLAINED 0;loophole— FOUND за один шаг на ИСЧЕРПАННОМ обходе: назначить вариант вариантом по умолчанию значит сделать его неуязвимым для обоих отсевов. -
us.me.ranked_choice: 21-A M.R.S. § 723-A (02.09.2026). Пятый носитель словаряdoctrine.vote_methods— instant-runoff. Три отказа одного класса: агрегат в голове считается при первом срабатывании подстановки, и счёты раунда, состав продолжающих и ветвь исчерпания выходили нулями при верных посылках; ноль в числе продолжающих держался особенно тихо — сверка «ноль сравнений равен нулю продолжающих» проходила, и удаление последнего места не происходило вовсе. Лекарство переносимо: гард полноты есть равенство двух счётов в ТЕЛЕ правила. Определение 1(D) взято целиком: овервот — счёт кандидатов на ранге, пропущенный ранг сам ограничен сверху отметкой; обе ветви привязаны к номеру ранга, а не к раунду, и потому остаются в нулевой страте. Жребий пункта 3 — канал суждения §47.3.LOCATOR_REнаучен читатьsection/723-A(только верхний регистр:article-6-cУстава МВТ — подпункт, а не единица). Регрессия 16/16, differential 41 вызов байтово, цели 3/3 HELD на 11 мирах при падающей канарейке, UNEXPLAINED 0;loophole— FOUND за один шаг в знаменателе правила пятидесяти процентов. -
us.code.apportionment: 2 U.S.C. § 2a (02.09.2026). Третий носитель словаряdoctrine.vote_methods. Метод равных пропорций НАЗВАН, но не определён: формулы в секции нет, а свидетеля с ней закрепить не удалось — census.gov, crsreports.congress.gov и gao.gov отвечают 403 и вне браузера, и в нём, а официальный скан U.S. Reports разрушает знак корня и номера сносок в текстовом слое. Поэтому числа приходят ведомостью Президента как ВХОД, а секция их проверяет двумя ограничениями §93.1 (ни одному штату менее одного члена; сумма равна тогда существующему числу — числа 435 в секции нет ни разу). Сумма ведомости — свёртка по её строкам черезsupported. Взято также: пятнадцатидневная обязанность Клерка, её переход к Сержанту замыканием §70 и пять ветвей пункта (c). Заведена единица деленияus_code_sectionв обоих реестрах; локатор с буквенным суффиксом читается теперь в любом регистре. Регрессия 15/15, differential 24 вызова байтово, цели HELD на 12 мирах при падающей канарейке, UNEXPLAINED 0. -
Полная формализация международных правил қазақ күресі UWW в двух датированных редакциях (
kz.corpus.qazaq_kuresi, 02.09.2026). Редакции 2023 (43 статьи) и 2026 (42) закреплены извлечением из PDF издателя, байтовое покрытие 99,4 % и 99,5 %,EXECUTABLE 42/43и41/42,UNEXPLAINED 0; 288 правил, 245 фактов весовых полос с якорями на редакцию, 8 каналов суждения, 7 прочтений в 3 группах; 123 сценария и differential 123/123,.lawtest12/12. Расхождения редакций (ничья по очкам, БЕЛДЕСУ, допуск 500 г, сетка весов, пороги пассивности, порог лицензии) выводятся проекцией §31 на дату дела; противоречия внутри редакций (очки за БЕЛДЕСУ и за три замечания в ст. 7.1, превосходство разницей против суммы, подиум) — группами прочтений. Заведены конвенция единицыen_article_dotted(act_split + check_source_pinning, с приведением в uncovered.py) и правопорядокUWW. Отчёт —corpus/laws/kz/qazaq-kuresi/audit.ru.md. -
Национальный стандарт финансовой отчетности РК (
kz.corpus.nsfo, 02.09.2026). Приказ Министра финансов от 31.01.2013 № 50 — национальная альтернатива МСФО для субъектов малого предпринимательства; четвёртый бухгалтерский акт корпуса и первый из них НЕ международный. Закреплён сам Стандарт без утвердившего его приказа: пункты 1—4 есть у обоих документов, и конвенцияpoint(первое вхождение номера) адресовала быarticle/1пункту приказа — тот же довод, что уkz/srednyaya-zarplata. Живая сверка байтов ВЫПОЛНЕНА (скачанная заново страница «Әділет» байтово равна закреплённой копии), в отличие от трёх соседей по своду за AWS WAF; отсюдаverifiedAgainstSource = true— единственный среди четырёх. Новой единицы деления не заведено впервые за четыре акта:pointпереиспользована и даёт ряд 1…88 без пропусков и дублей. Фрагменты порождает ДВИЖОК ШАБЛОНАpinning(профильkz-adilet-point, дополнен двумя опциональными стопами —paragraphиappendix-numbered; существующий экземпляр байтово тот же), а не рукописная таблица срезов. Охват объявлен по ВСЕМ 88 пунктам: EXECUTABLE 48, SOURCE_ONLY 40 — каждый с собственной причиной по своему тексту, UNEXPLAINED 0. Девять каналов суждения §47.3 с полномочиемRukovodstvo, взятым из пункта 76 самого акта; порогов не записано ни одного. Двадцать один констрейнт §93.3, семь дефитеров §116, процедура §160 с журналом и попыткой без правового эффекта §164. Регрессия 126/126, KZ-differential 133 вызова байтово, §267 13/13 тестов и 6/6 свойств §270,lawref goals6 целей на 111 мирах — HELD. Новые генераторы:fetch_nsfo_text.py(впаян вrun_all.sh) иsync_nsfo_fragments.py(сверяется общим шагомlawgen.py pinning --all --check). Замерено и записано: ОТСУТСТВИЕ ФАКТА НЕ ЕСТЬ ЕГО ОТРИЦАНИЕ — положительное требование констрейнта над незаявленным фактом даётUNDETERMINED§93.2, а неVIOLATED, иnot P§68 в теле правила молчанием не открывается; двадцать сцен первого прогона были красны по этой одной причине, и констрейнты теперь проверяются тройками «налицо / не сказано / показано обратное». -
Корпус:
kz.corpus.terminkom(Положение о Республиканской терминологической комиссии, приказ МНВО РК № 116: кворум, голосование с прочтением равенства голосов, сроки в рабочих днях, шесть заседаний в год, канал суждения экспертизы) иkz.corpus.terminkom_zantanu(2180 утверждённых терминов отрасли «Заңтану» 1971–2025 как датированный словарь с осью вытеснения и инвариантом «один термин — один действующий эквивалент»); раннерcorpus/kz/acts/terminkom.py(35 + 7 сценариев), 11.lawtest, скриптыfetch_terminkom_texts.pyиsync_terminkom_zantanu.pyвrun_all.sh. -
Рабочий стол: оракул поднимается сам, ворота говорят словами, «Проверка» ведёт шагами (02.09.2026). Второй движок грузится при открытии пакета с прогрессом «стадия k из 4» (
OracleGate, одна стена вместо четырёх копий; выключается?oracle=manualи переключателем в статусе движков); подписи полосы ворот человеческие, техническая строка ушла вGate.technical(тултип иdata-technical); перспектива «Проверка» получила три шага со счётом ролей и фактов, причину у каждой серой кнопки, «заполнить примером» и список.lawtestпакета. e2e: состояния «до оракула» открывают пакет с{ oracle: 'manual' }, ожидания ворот — по новым подписям. -
Рабочий стол, вторая порция (02.09.2026): навигатор подписан задачами (ru/kk), перспективы переключаются
Alt+1…6,aria-currentиrole=status; первая сборка документа показывает скелет (BuildingSkeleton) вместо «CLIR не собран»; границы E-0013 правятся формой поверхarticles.json(BoundariesForm, неизвестные поля файла проходят без изменений, вкладка JSON сохранена); минимальные кегли подняты с 7–9 до 8–11 px. -
**Полная исполнимая формализация Белавежского соглашения 1991 года
-
ГК РК — второе звено сравнительной цепи, первая таблица 12 × 2 (Ф3 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, 02.09.2026). Мост Общей части в словарь одной переменной через алиасы E-0098 (kz.corpus.civilcode/60-ius-privatum.law); новый пакетkz.corpus.civilcode_special(409-I: заём, хранение, вред, наследование по закону — охват списком из 22 статей, закрепление целиком, шесть тестов §267); раннер казусов умеет звено из двух пакетов; семействоius_privatum_casus91/91. Расхождения Гай ↔ ГК РК измерены по казусам 1, 4, 6б, 7, 9, 10, 11; по казусу 5 сходятся. Таблица — в STATUS.md.(
intl.belovezha_1991, 02.09.2026).** Закреплены официальный PDF ООН и сверенная транскрипция Заявления, преамбулы и статей 1–14: 16 фрагментов, 15 614/15 614 байт (100 %), 14/14 статей,EXECUTABLE 14, остальные уровни глубины иUNEXPLAINED— ноль. 104 strict-правила, 20 duty, 5 power, constraint статьи 11, closure трёх равноаутентичных текстов; 217/217 сценариев и differential,.lawtest1/1, audit-world 19/19 и связанные тесты 5/5 без изменения главного judgment-вердикта. Отчёт:corpus/laws/intl/belovezha-1991/audit.ru.md. -
Функциональный анализ поведения (
aba.functional_analysis, 02.09.2026): девятый пакет доктринальной семьиaba/— полный анализ Iwata и др. (1982/1994) и краткий анализ Northup и др. (1991) авторским изложением ru+en (13 разделов, 26 фрагментов, библиография из 11 работ сверена по Crossref). Уровни условий кросс-умножением без деления, дифференциация тестовых условий и её ОТСУТСТВИЕ замыканием §70 над закрытыми сериями (первое применениеclosureв волнеaba/), обращение контингенции, автоматFunctionalAnalysis(FaAssessment)из 6 стадий и 9 переходов, три обязанности аналитика §134, спор о недифференцированном высоком уровне двумя прочтениями §152 без группы §155. Девять A3-параметров. 67/67 сценариев, 67/67.lawtest, differential 67 вызовов байтово; глубина EXECUTABLE 12 / SOURCE_ONLY 1; оверлей kk 90/60. -
Женевские конвенции от 12 августа 1949 года (I–IV) формализованы целиком (
intl.ihl.geneva_1949, 02.09.2026): 429 статей из 429, UNEXPLAINED 0. Четыре договора одним пакетом (64 + 63 + 143 + 159 статей), восемь закреплённых документов — четыре аутентичных английских текста и четыре русских перевода МККК. Официальное опубликование UNTS (том 75, № 970–973) отвергнуто ЗАМЕРОМ: распознавание тома читает четыре из 64 заголовков первой Конвенции неверно («ARTICLE I», «II», «20», «00»), и эти статьи выпали бы из меры §33.1 молча. Заведён третий контракт извлечения (corpus/tools/lib/extract_pdf_side_note_text.py): у издания МККК название статьи набрано боковой заметкой, и оба прежних контракта на нём ломаются. Общие статьи 1–3 выражены ОДНИМ правилом с четырьмя якорями §33; четыре РАЗНЫХ замыкания §70 над серьёзными нарушениями (перечни статей 50/51/130/147 не совпадают); презумпция статуса военнопленного (ст. 5 III) — поражаемое правило, снимаемое решением компетентного суда каналом §47.3; два автомата §160. 75 сценариев, 75/75 PASS, differential 75 вызовов байтово, семь порогов парами по обе стороны; шестнадцать целей DECISION-0089 с канарейкой. Замерена граница языка: неравенство сущностей (p != q) в теле правила проходитcheckиlower, а на исполнении даёт TYPE_ERROR. ПОЛНЫЙ АУДИТ (audit.ru.md) дочитал двенадцать статей, у которых бралось одно предложение — конферирующее статус, — а второе, связывающее державу, не читалось ни одним правилом: стаб-доля 17 из 605 правил (2 %) → 5 из 616 (0 %) при неподвижной мере §33.1, потому что EXECUTABLE стаб-мост удовлетворяет полностью. Тем же заходом вписано потерянное условие статьи 66 IV («on condition that the said courts sit in the occupied country»), лежавшее в метке. Ход дела по журналу (lawref process-run) нашёл дефект автомата §160: изъятие статьи 119 абзаца 5 стояло у одного перехода из четырёх, а состояния §160 накапливаются — репатриация состоялась через соседний переход при незаконченном производстве. -
Полная исполнимая формализация закреплённого текста Договора об образовании СССР 1922 года (
su.union_treaty_1922, 02.09.2026). Три lifecycle-публикации по 29 108 байт покрыты на 100%, 26/26 пунктов каждой учтены;EXECUTABLE 26,UNEXPLAINED = SOURCE_ONLY = ANCHORED = 0. 153 strict-правила и 44 norm-template выражают состав Союза и органов, 24 предмета ведения, созывы, бюджет, обязательности, исключительное ведение пункта 25 и право выхода пункта 26. Один judgment пункта 17 остаётся открытым до adjudication. Регрессия 314/314, differential 314/314 байтово,.lawtest1/1, orphan/one-way/dead 0, doctor без пробелов; полный отчёт —corpus/laws/su/union-treaty-1922/audit.ru.md. Официальные байты и отдельный текст Декларации не найдены и не восстановлены по памяти; послероспускная сила Договора не выводится. -
**Декрет ВЦИК и СНК РСФСР от 26.08.1920 «Об образовании Автономной
-
Реестр казусов сравнительной цепи частного права — Ф2 плана
docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md(02.09.2026).doctrine.ius_privatum: модульfacta.law(34 факта казуса, ни одного правила),casus/— 31.lawtestпо двенадцати казусам DECISION-0091 §4 иmatrix.jsonс ожиданием по звену и якорем на фрагмент; раннерcorpus/kz/acts/ius_privatum_casus.py(факты черезlawc lower-test, нулевое звено — голый словарь, 62/62); воротаcheck_casus_matrix.py(реестр полон, якоря разрешены, клетка не уходит молча, слово — только под казус); подкаталогcasus/в закрытом списке раскладки. Гай: закреплены книги II и III (охват списком параграфов,fetch_gai_institutiones_libri.py --check), модули 15–17 (мост от фактов казуса, traditio и usucapio, sui heredes); все 31 клетка Гая с исходом по тексту.Киргизской Социалистической Советской Республики» (
ru.rsfsr.kirgizskaya_assr_1920, 02.09.2026).** Все 11 пунктов из 11 выражены правилами: глубина §33.1 — EXECUTABLE 11/11 при нуле SOURCE_ONLY, байтовое покрытие 99,8 % и 99,6 % двух закреплённых документов, стабовая доля 0 % (0 мостов из 35 правил). Первый акт корпуса с УСТАРЕВШЕЙ закреплённой ревизией источника, и причина в самом источнике: страница Викитеки 09.08.2026 была отредактирована так, что в пункт 1 вписан подпункт «ж) г. Оренбург…», внесённый на самом деле постановлением Президиума ВЦИК от 20.09.1920, — без всякой пометки. Закреплена ревизия 5213498 (редакция принятия), дополнение — отдельным документом, связь — ребромrevision§32.1; сводный текст не закрепляется (слияние сделал участник вики, а не государственный орган). Территория — БИНАРНОЕ замыкание §70 (E-0087) по паре «территория, дата»; две оси даты (аргумент головы против окнаeffective§87) разведены тремя делами об Оренбурге. Цели §270 (DECISION-0089): три HELD, канарейка FAILED на Семиречье и Сыр-Дарье и проверена негативным контролем. 45 сценариев, differential 45/45 байтово, 44 эмитированных теста §267 проходят 44/44. Вторая находка того же дня: посылка единственногоconstraintстояла на одном из перечней и связывалась шестью органами в любом мире — документ всякого запроса нёс семь результатов вместо одного, иemit_lawtestsотвергал ВСЕ сценарии акта как невыразимые на §267 (§174) при зелёныхcheck, регрессии и differential. Посылка переписана конъюнкцией (связывается ровно на столкновении), заведена канарейка ограничения по кодуCONSTRAINT_VIOLATED, а мир файла целей доведён до полного: канарейка цели «держалась» ВАКУУМНО на домене 0. Замер, стоивший 28 красных сценариев из 43: незакреплённое событиеin_forceу редакции гасило все заякоренные правила через проекцию применимости §92.3 (E-0095), а диагностикаEDITION_NOT_APPLICABLEимеет severityinfo— сценарии краснели статусом, ни один кодом, и ответ приходил не «не знаю», а FALSE_ONLY из замыкания. События применимости у редакций сняты: акт о своём вступлении в силу не говорит ни слова. -
Казахстанская audit-only связка прекращения СССР (
kz.continuity_consent_linked, 02.09.2026). Пять закреплённых публикаций, 8 фрагментов и 93 узла CLIR выражают окно членства до независимости, вычисленные 94,1 % поддержки на референдуме против 76,4 % по Союзу, отсутствие Казахстана среди трёх сторон Беловежья и два документированных носителя согласия. Человек выбрал исполнительную подпись 21.12.1991 как юридически достаточный носитель; выбор закреплён отдельным adjudicated-делом, а ратификация 23.12.1991 сохранена как документированная контрфактическая альтернатива. Вintl.alma_ata_1991изменена только visibility трёх готовых отношений. Удалена локальная параллельная головаlegal_continuator: в связанном audit-мире единственным производителем остаётся импортированноеru.continuity_linked::ContinuationThroughAlmaAta. Регрессия 13/13, differential 14/14; цели даютTELEOLOGICAL-UNIQUE AlmaAtaAndCouncilFoundation, канарейка FAILED; глубина EXECUTABLE 2 / EXCLUDED 4 / UNEXPLAINED 0, метки 33/0 и 14/0; снижение 15 → 14 — удаление недопустимого обходного правила, а не потеря разметки. -
Семейство
vote.methods: словарь способов подсчёта и статья 163 LOREG (02.09.2026).doctrine.vote_methods— вход и выход подсчёта, общие шести нормодателям семейства; выход порядковый (holds_seat_number), а не значением.es.loreg— правило д’Ондта, трёхпроцентный барьер, разрешение совпавших частных и жребий буквы d) каналом суждения §47.3, пункт 2 о Сеуте и Мелилье. Деления в акте нет: сравнение частных — перекрёстное произведение. Заведена единица деления §33.1es_article_word(в 234 заголовках LOREG нет ни одной цифры) в обоих реестрах плюс испанские наборы признаков; срез извлечения--boe-consolidated-body; правопорядокESвJURISDICTIONS. Регрессия 13/13, цели DECISION-0089 HELD на 8 мирах при падающей канарейке, UNEXPLAINED 0. -
kz.orvi_deti(02.09.2026). Клинический протокол ОКК МЗ РК «Грипп и острые респираторные инфекции дыхательных путей у детей» (№ 242 от 05.12.2025) — третий пакет связки над листками парацетамола и ибупрофена: степень тяжести с именованными зазорами, строгий порог жаропонижающего, режимы парацетамола/ибупрофена пятью границами, запреты аспирина и антибиотиков, госпитализация и визит «до 5 лет», ДН по SpO₂ и ЧДД, сроки календарём, осельтамивир по возрасту и массе. Байты с портала ННЦРЗ (fetch_orvi_deti_protocol.py,sync_orvi_deti_fragments.pyвrun_all.sh), 30 единиц, 19 границ по тексту. Регрессияorvi_deti69/69, 20 тестов §267, KZ-differential 70 вызовов байтово, Lean OK.kz.naznachenieчитает протокол третьим документом (02-protokol.law): показание, режим и расхождение листка с протоколом в обе стороны; семействоnaznachenie29 сцен. -
kz.ibuprofenиkz.naznachenie(02.09.2026). Листок-вкладыш детской суспензии ибупрофена (Ибуфен, держатель Химфарм; копия держателя с пустым грифом приказа — названо, а не додумано) как близнец парацетамола: полоса возраста A3 против ставки 20-30 мг/кг с именованным расхождением, десять противопоказаний, канал врача §47.3, дефитер аспирина, постпрививочный режим, передозировка ставкой; 70 сцен, 12 тестов, differential 75 вызовов. Пакет назначения над двумя листками: факты о ребёнке один раз, мосты в оба словаря, вердикт по каждому препарату и по назначению, совместное назначение названо вне обеих инструкций; 17 сцен на мире из трёх документов, differential 20 вызовов. В парацетамол вписанpubсловаря. -
Errata E-0098 — алиас типа через границу пакета (§40/§48, 02.09.2026).
type Persona = doctrine.ius_privatum::Persona;принималсяlowerи отвергалсяcheck(LDC-E2101 на каждом употреблении); совместимость §48 с чужим типом была односторонней; оба движка читали алиас номинально при исполнении.lawc check—ResolvedType::Foreign, симметричная непрозрачность чужого типа против своих сущностей; оба движка — индекс алиасов в сверке сигнатур §189. Шесть векторовERR-E0098-*(два вSUPPORTED); проза §40; корпус байтово неизменен (36 пакетов с qualified-типами перепровереныcheck). Ф1 планаdocs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md. -
Errata E-0097 — id proof-узла в слитом мире (§180, 02.09.2026). Одноимённые правила двух пакетов давали один
urn:proof:apply:<имя>:<seq>и крах канонизации §187 при зелёной линковке. Аддитивно: хвост, который в мире носят декларации более одного пакета, заменяется хвостом namespace (<ns-tail>#<имя>, как уassertion); то же дляnorm,position,closure. Однопакетные миры байтово прежние (84 голдена не тронуты, differential 254/254). Три вектораERR-E0097-*. -
Перечни MCP по пакету постраничны, строки LawQL капаются на поверхности (02.09.2026).
law_query:rowLimit(500, не более 5000) иrowOffsetна стороне MCP — семантика LawQL и байтыlawref queryне тронуты; усечение названо предупреждениемROWS_TRUNCATEDвwarnings(кореньqueryResultзакрыт схемой) с полным числом строк и продолжением, документ валиден поquery-result.schema.json.law_sources/law_rulesпо пакету:offset/limit(50/200 и 200/500),total/truncated/nextв структуре и «ещё N — продолжение: …» в тексте; оглавление большого акта тоже постранично; смещение за концом иlimitсверх максимума — отказы с границей. Контрактtest_server.py(раздел 6д): крупнейшие акты выбираются из живого корпуса, порог 600 КБ на страницу источников, правил и LawQL без сужения, инвариант §194-хэшей сверяется по всем страницам с требованием «сумма страниц = total». Замер до: 9,7 МБ (kz-income-tax), 2,9 + 1,6 МБ (kz-administrative-code), 10 и 62 МБ (law_queryбез сужения); после: 142 КБ наselect n.idпри умолчаниях. -
МСФО (IAS) 37 «Резервы, условные обязательства и условные активы» (
eu.ias.provisions, 02.09.2026). Первый акт корпуса, чей источник есть СВОД: приложение Регламента (ЕС) № 1126/2008 несёт тридцать семь стандартов, каждый нумерует параграфы с единицы, и единица деления §33.1 по всему документу неразрешима — закреплён срез ОДНОГО стандарта, и граница среза найдена по разметке (IAS 37 есть ровно один верхнеуровневый блок приложения), а не выбрана. Отсюда третья за три акта одного свода конвенция §33.1 —ias2008_paragraph(голый номер БЕЗ ТОЧКИ):ifrs_paragraphпакетовeu/ifrs-16-leasesиeu/ifrs-15-revenueдаёт здесь ровно ноль единиц. Охват первого круга — ПРИЗНАНИЕ без ОЦЕНКИ (§§1—35, 61—65), ни одного термаMoney; раздел MEASUREMENT (§§36—52) вычеркнут осознанно. Восемь каналов суждения §47.3 с полномочиемManagement— больше, чем у любого другого акта корпуса, и порогов не записано ни одного. Мера §33.1: EXECUTABLE 35, ANCHORED 3, SOURCE_ONLY 2 с проверенной по тексту причиной, UNEXPLAINED 0. Регрессия 90/90, KZ-differential 104 вызова байтово, §267 11/11 рукописных тестов, 6/6 свойств §270 и 69/69 эмитированных,lawref goals6 целей на 74 мирах — HELD. Процедура §160ProvisionLifeCycleи журнал с попыткой без правового эффекта §164. Новые генераторы:fetch_ias37_text.py,sync_ias37_fragments.py(оба впаяны вrun_all.sh). Замерено и записано: положение канала суждения в правиле решает, чем является молчание (посылка —REQUIRES_JUDGMENT, дефитер —COMPUTED); констрейнт с положительным требованием над выводимым предикатом никогда не даётVIOLATED§93.2 и потому §14 разложен на три проверки. Найдено и НЕ закрыто (ядро в этой сессии не правится): реализации публикуют один и тот же запрос суждения §47.3 с разной ПОЛЯРНОСТЬЮ, когда канал читается и положительно, и под отрицанием, — вторая находка того же контура послеeu/ifrs-16-leasesи у́же первой; воспроизведение 19 строк лежит вcorpus/laws/eu/ias-37-provisions/analysis/. -
Институции Гая, книга IV (
rom.corpus.gai_institutiones) и мостовой словарьdoctrine.ius_privatum(02.09.2026). Классическое частное право как машина исков: 184 единицыla_paragraphиздания Секкеля–Кюблера (PINNED_UNOFFICIAL_COPY, конъектуры и лакуны сохранены побайтово), 14 модулей по разрезу самого Гая, 383 правила, 41 приоритет, 7 групп прочтений (споры сабинианцев и прокулианцев), 5 каналов суждения §47.3 (Praetor, Iudex), замыкание §70 над спрошенной формулой, автомат тяжбы §160. Мера §33.1: EXECUTABLE 154, SOURCE_ONLY 29 с проверенной по тексту причиной, UNEXPLAINED 0. 36 тестов §267 парами на порогах, 41 сценарий на слитом мире, differential 41/41 байтово. Словарь записывает «ius есть actio» один раз (remedium_datur→remedium_competit→ius_efficax,ius_nudum,remedium_sine_iure) как общие головы сравнительной цепи Рим → Меджелле → Code civil → BGB → ГК РК. Новые генераторы:fetch_gai_institutiones_text.py,sync_gai_institutiones_fragments.py(впаян вrun_all.sh). Найдено и обойдено: одноимённые правила двух пакетов на слитом мире роняют канонизацию proof-графа оракула; коллизия StableId правила с членом перечня видна только наlower; строгие читатели поражаемой головы на слитом мире дают NEITHER без диагностикиcheck. -
МСФО (IFRS) 15 «Выручка по договорам с покупателями» (02.09.2026). Пакет
eu.ifrs.revenueнад Регламентом Комиссии (ЕС) 2016/1905; охват первого круга — §§1—17 и 22—38 (опознание договора, обособленные обязанности к исполнению, момент их исполнения). Четыре канала суждения §47.3 с полномочиемManagement, два дефитера с отрицательной головой, единственное в корпусе правило над ПАРОЙ договоров (§17, симметрия не выводится), три констрейнта §93.3, одна процедура §160 с журналом §164, шесть целей DECISION-0089. 70 сцен регрессии, 88 байтово идентичных evaluate-вызовов, 9 рукописных и 56 эмитированных тестов §267. Единица деленияifrs_paragraphпереиспользована уeu/ifrs-16-leasesбез правки реестров. Провенанс объявлен слабее соседей по своду: EUR-Lex за AWS WAF, байты закреплены браузерным каналом (сериализация DOM),--checkофлайн, живая сверка — открытое обязательство (fetch_ifrs15_text.py --refetch). -
Пять копий
DERIVING_KINDSвыровнены (02.09.2026). Соглашение «какой узел выражает единицу» жило пятью независимыми копиями:boundaries.py(ведущая),check_constitution_constants.py,check_quran_ayah_disposition.py,check_quran_norm_provenance.py,clause_ledger.py. Все четыре получилиconstraintс записанной причиной. Радиус нулевой: у актов Конституции и Корана/фикха констрейнтов нет вовсе, поведение ворот не изменилось — проверено прогонами всех четырёх (FAIL Корана идентичен до и после правки: 6236 аятов существующего долга). -
Мера §33.1 видит исполняемый констрейнт:
constraintвписан вDERIVING_KINDS(02.09.2026, решение владельца). До errata E-0086 констрейнт не исполнялся вовсе, и держать его вне выводящих видов было верно; после неё он даёт вердикт на каждом деле. Радиус измерен до правки: единицы под одними констрейнтами есть у четырёх актов —it-pacioli-computis(18 глав),eu-ifrs-16-leases(5),eu-ifrs-15-revenue(3),eo-fundamento(1), всего 27; у прочих мера не двинулась. У Пачоли EXECUTABLE 17 → 35, ANCHORED 18 → 0. База глубины перерегистрирована точечно по четырём актам (ANCHORED в храповике имеет направление 0 — любое движение роняет ворота). Внутри EXECUTABLE теперь два случая, «выводится» и «проверяется»; разница реальна (§93.1: констрейнт опоры не даёт) и называется в отчёте акта. -
it.pacioli.computis, последние девять глав — невыраженной осталась одна из тридцати шести (02.09.2026, шестой проход аудита). Взяты реквизиты и однодневный срок описи, порядок «движимое прежде недвижимого», три способа счёта, состояние и природа вещи (гл. 2—4); свобода мелкого торговца вести только две книги, которая ограничивает норму гл. 9 без правки — констрейнт не triggered, потому что связывает мемориал (гл. 5); та же марка у журнала, что у мемориала, и дата в начале страницы (гл. 10); год в поле (гл. 29); запрет записей во время сверки (гл. 33); реквизиты письма, отметка об ответе и список важных писем слово в слово (гл. 35). Глава 25 оставлена вердиктом: описывает обычаи. Исправлены три собственных вердикта прошлых проходов — глава 4 казалась увещанием по заголовку, а начинается нормой. Побочно измерено свойство меры §33.1: акт, выраженный КОНСТРЕЙНТАМИ, даёт ANCHORED вместо EXECUTABLE, потому что констрейнт по §93.1 не выводит. EXECUTABLE 16 → 17, ANCHORED 11 → 18, SOURCE_ONLY 9 → 1, констрейнтов 64 → 76, сценариев 142 → 166 (differential 166/166 байтово). -
it.pacioli.computis, главы 16—27 — «образцы проводок» оказались нормами в рамке из образцов (02.09.2026, пятый проход аудита). Взяты реквизиты товарной записи (гл. 16); свидетельство рукой клерка учреждения и норма венецианского права о маклере с санкцией «fined and dismissed» (гл. 17); порядок смешанного платежа «сперва вексель, потом банк» (гл. 19); денежная оценка мены и мост между свободой мемориала в монете и одной монетой книги (гл. 20); именование счетов товарищества (гл. 21); шесть норм банка и тратт, включая две расписки с заменой для не умеющего писать и возврат бумаг при закрытии счёта (гл. 24); две книги поездки, которые НЕ есть запрещённые главой 7 двойные книги — различие в предмете, а не в числе (гл. 26); единственный в трактате запрет записи в журнал (гл. 27). Глава 25 оставлена вердиктом: она описывает обычаи, а не устанавливает нормы. Поправка к прежней записи: замыкание §70 над БИНАРНЫМ предикатом работает — сцена после окна даёт VIOLATED. EXECUTABLE 14 → 16, SOURCE_ONLY 17 → 9, констрейнтов 47 → 64, правил 38 → 43, сценариев 106 → 142 (differential 142/142 байтово). -
it.pacioli.computis, главы 6—8 — мемориал, марка и нумерация книг, заверение у должностного лица (02.09.2026, четвёртый проход аудита). Полнота записи мемориала перечислением («who, what, when, where» — четыре счётные посылки, а не один признак) и условное «stating the time» гл. 8 отдельным констрейнтом; две свободы §123, вторая из которых прямо ограничивает норму гл. 36 «одна монета в книге» (к мемориалу она не относится — «naming simply the money and weights which they know»); марка на обложке, отличная марка второй книги и нумерация каждой страницы с основанием, названным самим Пачоли (вырванную страницу иначе не обнаружить); предъявление книг должностному лицу с объявлением писца и монеты, отдельная обязанность записать смену писца, печать делает книги подлинными в суде; запрет двойных книг с выводом о клятвопреступлении. Ловушка, записанная сценой:x != yнад сущностями даёт NON_EXECUTABLE_CONSTRAINT — проверка молча выпадает при зелёном check; различие пишущих выражено предметно, дизъюнкция вrequireисполняется. EXECUTABLE 11 → 14, SOURCE_ONLY 20 → 17, констрейнтов 39 → 47, правил 33 → 38, сценариев 81 → 106 (differential 106/106 байтово). -
it.pacioli.computis, глава 22 — обязательный состав книги, первая свобода пакета и «расходный счёт не бывает в кредите» (02.09.2026, третий проход аудита). Пять обязательных счетов (торговые, обычные домашние и чрезвычайные расходы, приход-расход, прибыли и убытки) — пятью отдельными констрейнтами, потому что перечень закрыт словами Пачоли «what the merchant can not do without»;liberty§123 на любые счета сверх них — записать это обязанностью значило бы вменить купцу то, чего источник не требует; счёт чрезвычайных расходов обязателен, пока дело не скажет, что они ведутся в обычных, — дозволение гасит сам antecedent, и сцена показывает отсутствие результата CONSTRAINT, а не SATISFIED; инвариант «всегда в дебете» с парой по обе стороны границы; мешочек на мелкие платежи — один или два дуката, порог названный источником и потому литеральный. С главой 22 каждая учебная книга прежних сцен стала неполной (пять VIOLATED в сорока сценах) — верный ответ права, ожидания обновлены явно. EXECUTABLE 10 → 11, SOURCE_ONLY 21 → 20, констрейнтов 31 → 39, правил 27 → 33, сценариев 65 → 81 (differential 81/81 байтово),.lawtest8 → 9. -
it.pacioli.computis, глава 18 — единственная арифметика трактата (02.09.2026, второй проход аудита). Контора Мессетарии: причитается = цена × ставка, с продавца удерживается половина, конторе кредитуется вдвое против удержанного («for the commission due by the seller and by you»), продавцу платится цена минус удержанное; на примере Пачоли (100 дукатов, 4 %) — 4, 2, 4, 98. Третье равенство не тождество: книга, где контору кредитовали одной половиной, арифметически цела и нормативно неверна. Ставка приходит ДЕЛОМ, а не A3-параметром: трактат называет её чужой («as per public decrees of the Republic»), и параметр приписал бы Пачоли то, чего он не устанавливает. Половина берётся от ставки (r / 2.0), потому чтоMoney / IntegerиDecimal / Integer§58 отвергаются статически. Взяты также предел вывоза со склада с оговоркой о доплаченной сенсарии и полная вера записи маклера. EXECUTABLE 9 → 10, SOURCE_ONLY 22 → 21, констрейнтов 27 → 31, правил 22 → 27, сценариев 52 → 65 (differential 65/65 байтово),.lawtest6 → 8. -
Аудит
it.pacioli.computis(audit-formalization, 02.09.2026): семь глав, объявленных границей без чтения текста, оказались нормами. Взяты модулем04-cap-09-32-tenuta-del-quaderno.law: порядок трёх книг (гл. 9), касса-должник и прямо названное последствие «в книге ошибка» (гл. 12), согласие лица на запись его КРЕДИТОРОМ — половина нормы, пропущенная первым кругом (гл. 23), перенос заполненного счёта без пропуска страницы, «otherwise it would be considered a fraud», и остаток как разница сторон (гл. 28), выписка, в которой нельзя отказать, и её сверка с книгами до выдачи (гл. 30), исключение исправленных пост из выписки (гл. 31), неотмеченная при сверке поста как признак ошибки (гл. 32). EXECUTABLE 4 → 9, SOURCE_ONLY 29 → 22, констрейнтов 19 → 27, правил 13 → 22, сценариев 33 → 52 (differential 52/52 байтово), разметка 67/0 и 26/0. Границ по-прежнему не объявлено ни одной — измерено: ворота отвергают границу даже на главе-увещании с цитатами из Данте, потому что «you shall» стои́т в каждой главе трактата. Отчёт —corpus/laws/it/pacioli-computis/audit.ru.md. Побочно исправлена строкаconstraint_declв справочнике аудита: «не исполняется вовсе» устарело с errata E-0086, вместо вердикта «ложное усиление» названы три живые ловушки. -
Новый пакет
it.pacioli.computis— двойная запись по Пачоли (1494), ПЕРВЫЙ АКТ КОРПУСА, ЧЕЙ НЕСУЩИЙ ИНВАРИАНТ ЕСТЬ CONSTRAINT §93.1 НАД АГРЕГАТАМИ (02.09.2026, «Particularis de computis et scripturis», Summa de arithmetica, Distinctio IX Tractatus XI, все 36 глав закреплены). Баланс книги — «summa del dare» равна «summa del avere» — у Пачоли не вывод, а ПРОВЕРКА готового состояния: «if these two grand totals are equal … your Ledger was very well kept … But if one of the grand totals is bigger than the other, that would indicate a mistake in your Ledger» (гл. 34). В языке этоconstraint … require sum(collect all …) == sum(collect all …)над Money, и до errata E-0086 такой инвариант был МОЛЧАЛИВ: объявление стояло, документ ответа его не считал вовсе. Здесь он исполняется обоими движками — результатCONSTRAINTсо статусом SATISFIED/VIOLATED, узелconstraint_check, issueCONSTRAINT_VIOLATED; differential 33/33 байтово. Всего 19 constraint-ов: баланс, две посты на статью (гл. 14), сумма посты равна сумме статьи, должник слева и кредитор справа, одна сторона у посты, «per» и «a» у статьи (гл. 11), касса на первой странице (гл. 13), первая пара «касса per капитал» (гл. 12, 15), три вещи в посте и исключение для кассы, один день, касса должник или равна, одна монета в книге, три инварианта исправления встречной постой (гл. 36). Своды пишутсяcollect all, и это проверяется сценой, а не обещанием: книга, где статья на 1000 проведена по обеим сторонам, а вторая на ТЕ ЖЕ 1000 — только в дебет, по списку даёт 2000 против 1000 (VIOLATED), по множеству {1000} против {1000} — «в порядке»; errata E-0012 на живом акте, потому что правильная книга даёт равные мультимножества, и Set-форма расходится с List-формой ровно там, где инвариант нужен (KZ-PACIOLI-02). Пустая сторона обойдена не молчанием:sumнад пустой коллекцией — issue §59, а empty-политику поверхность .law не выражает, поэтому баланс спрашивается у книги с ОБЕИМИ сторонами, а книга с постами на одной стороне нарушает собственный constraint (гл. 14: «whenever there is a debit item there must exist at the same time a credit item»). Деньги: суммы — одно Money в одной монете; «одна монета в книге» (гл. 36) — ТЕКСТОВЫЕ факты, потому что Money двух валют не складываются, и нарушение стало бы отказом исполнителя вместо вердикта. Деонтика: обязанность провести статью (гл. 14) — позиция §123 с закрытым замыканием §70 над эмпирической отметкой «две косые черты в журнале» (после окна без отметки — VIOLATED, внутри — ACTIVE); запрет делать должником без согласия (гл. 36) — prohibition, а «счёт ложен» — отдельное правило, потому что VIOLATED для prohibition движок 0.1 не выводит (граница среза записана ПАДАЮЩЕЙ сценой KZ-PACIOLI-16B). Источник выбран ПОПЫТКОЙ ЗАКРЕПЛЕНИЯ: вычитанного набора подлинника 1494 года нет ни в одной Викитеке, а текстовый слой факсимильных страниц того же издания негоден до нечитаемости — доля словарных слов 0,00 против 0,18—0,40 на страницах перевода (замер по всем 196 страницам PDF); закреплён перевод Гейсбека (1914), подлинник объявлен редакциейUNAVAILABLE,verifiedAgainstSource = falseс записанной причиной. Правило, годное не только здесь: у инкунабул текстовый слой разрушает всё, а не только формулы (у сканов XIX века — формулы раньше прозы,la.gauss.theorema_fermatianum). Заведена конвенция единицыen_chapterв оба реестра §33.1 и в таблицу русских имёнboundaries.py. Измерено:lawc checkчист, закрепление 99,6 % (36 фрагментов, 147 180 из 147 747 байт), §33.1 — EXECUTABLE 4, ANCHORED 3, SOURCE_ONLY 29 (главы об инвентаре, мемориале, образцах проводок и хранении бумаг — наставления о ФОРМЕ записи, названы границей охвата); регрессия 33/33, differential 33/33 байтово,.lawtest6/6, разметка 47/0 и 15/0, мёртвых символов и правил 0, doctor — «пробелов нет». -
Новый пакет
go-tromp-taylor— Правила Го Тромпа–Тейлора, десять правил из десяти (02.09.2026). Новая группаgo; источник — страница авторов,kind doctrine,jurisdiction "none"; собственный извлекательextract_tromp_taylor_text.pyвосстанавливает нумерацию правил (единицаpoint). Достижимость (правило 3) — рекурсия черезsupported; «не достигает пустого» —not_knownв поражаемом слое:forallв строгом правиле над рекурсивным доменом срабатывает на частичном домене, а в поражаемом роняетlawref(defeasible.stratify, KeyErrorpredicate;lawcисполняет — дефект оракула, не чинился). Захват по цепи, порядок захват → самоубийство, позиционное суперко по всей истории черезsupported, счётcountпоmonotone(counts_for)с ожиданием ранга. Измерено: EXECUTABLE 10/10, разметка 46/0 и 42/0, сцен 38/38, differential 38 вызовов байтово, Lean OK,.lawtest3/3,doctor.pyбез пробелов. Самоубийство одного камня нелегально повтором раскраски (правило 6), не запретом. -
Справочник Сыздық закрыт целиком: глава ІІІ «ТЫНЫС БЕЛГІЛЕРІ», 87 из 87 единиц (02.09.2026). Глава описывает те же знаки СО СТОРОНЫ ЗНАКА, и раздачу вело не сходство формулировок, а сам справочник: 48 её единиц несут ссылку «II тараудағы § N-ты қараңыз». 51 единица разошлась вторыми якорями по девяти пакетам главы ІІ, не породив ни одного нового правила. Остальные 36 взял новый пакет
kz.grammar.tynys_belgileri(реестровый №64, 51 правило, EXECUTABLE 36 из 36): точка в особых положениях, где половина клеток отвечает «точка НЕ ставится»; многоточие при обрыве, ставящееся ВНУТРЬ словоформы (§21); кавычки и скобки не при прямой речи; и раздел совмещения знаков, которого у главы ІІ нет по построению — §78 и §79 разводят одно место на два ответа по признаку «к чему относится знак». Поражаемый слой дважды пришёл из источника: §81 отменяет §4 при ремарке за именем персонажа, ескерту §63 — кавычки у наименования со словом атындағы. 5/5 сценариев, differential байтовый. Итог по справочнику: «Емле ережелері» 129/129, «Пунктуация ережелері» 126/126, «Сөз сазы» 36/36, «Тыныс белгілері» 87/87. -
МСФО (IFRS) 16 «Аренда» — первый бухгалтерский стандарт корпуса (02.09.2026). Пакет
eu.ifrs.leasesнад Регламентом Комиссии (ЕС) 2017/1986: охват первого круга — §§1—11, 18—21, 61—66 (квалификация без оценки). Одиннадцать оценочных терминов выражены каналом суждения §47.3 с полномочиемManagement; порогов ASC 842 («75 %», «90 %») в пакете нет — их нет в закреплённых байтах. Разная сила §63 («would normally lead») и §64 («could also lead») выражена разной силой правила §100 —defeasibleпротивdefault, обе поражаются §65 приоритетами §116. Пять норм выражены констрейнтами §93.3, две процедуры §160 с журналами §164, шесть целей DECISION-0089 наbasis§1. Новая конвенция единиц §33.1ifrs_paragraphв обоих реестрах. 75 сцен регрессии, 86 байтово идентичных evaluate-вызовов differential, 10 тестов §267. -
Проба скилла
formalize-actснова работает (02.09.2026). Таблицаsurface_checks.TOP_LEVEL_PATTERNSне зналаfactors_declиprecedent_decl, введённых профилем прецедента §276 вspec/grammar.ebnf;probe.pyотказывался работать вовсе вердиктом «КОНТРАКТ SKILL УСТАРЕЛ». -
Профиль прецедента §276 —
law.precedent/0.2(02.09.2026, DECISION-0090). Prose §276.1–§276.10; объявленияfactors(словарь факторов: сигнатура,domain, стороны, предпорядок судов) иprecedent(факторные множества, исход,ratio,prefer over,overruled … by) — контекстные слова, ни одного нового hard keyword; узлы CLIRfactor_vocabularyиprecedent_declпод хэшем §209,originу порождённых узлов; lowering §276.10 вlaw-hir/src/lower/precedent.rs(holding сnot_known- дополнением и окномeffective, приоритеты поprefer overи по рангу, ratio под прочтением<V>/reason_model), статикаLDC-E2701…E2704,LDC-W2705. Вид запросаprecedentв обеих реализациях (evaluator/precedent.py,law-eval/src/precedent.rs): статусы прецедентов,constraint, непротиворечивость базы,agreesWithRules. LeanLawCore/Precedent.lean+ счётчикPREC §276и две подделки вcheck_proof_certificates. Тринадцать векторовLAY-L3-PREC-*(SUPPORTED +12, LOWER-SHAPE под G-M1b). Пилотus.caselaw.advertisement_offersпереведён на поверхность (23/23, differential байтовый). Типы протокола, парсер редактора и бандл оракула перегенерированы;law.precedent/0.2активен в реестре фич. -
Контрпример о признании Украины — полный formalize-act 0–5м (02.09.2026). Добавлены пять пакетов: Брестский договор с ратификацией и аннулированием, договор РСФСР—УССР 1920 года, ненормативная карта P1–P3, переименование РСФСР и audit-only связка. Две доктрины признания оформлены
exactly_one, постаннулированный исход — типизированным judgment-запросом; P1/P2 отвергнуты, P3 скептически принят. Собственный генератор даёт 6 идемпотентных CLIR, профильный раннер — 44/44 байтовых differential- совпадения; добавлены scenario manifest, полный audit-отчёт, protocol- журнал и память решений моделирования. -
Договор под Кодексом: законные пункты и границы (02.09.2026). П. 4.1 (ст. 84), 6.1 (ст. 103 с МЗП из
kz.corpus.budget, второй импорт) и 6.2 (ст. 113, срок считает договор термом §86 со снимком §85) проверены парой «молчит на договоре / краснеет на мутации»; девять пунктов вне среза объявлены границами с причиной; оверлейi18n/kk.json. Регрессия 9/9, 11 новыхpubу Кодекса. -
E-0092
pub ruleэкспортируется, E-0093 повторныйimportотвергается иlower-ом (02.09.2026).ruleвнесён в оба реестра экспортируемых видов (helpers.rs,resolver.py), узел правила несётvisibility,pkg::Ruleпонижается в const_ref на StableId правила — старшинство чужой нормы §118 объявляется по имени. Проверка §23 (LDC-E1102/E1103) вынесена вresolve::import_diagnosticsи звучит на обоих путях компилятора. Три errata-вектора, селфтест, модульные тесты; байты корпуса не двигаются. Договор под Кодексом переведён на форму по имени (pubуUnilateralChangeIsUnlawful). -
Ф1 профиля прецедента §276 — база дел
us.caselaw.advertisement_offers(02.09.2026). Три мнения линии «реклама как оферта» (Lefkowitz 1957, Carlill 1892, Leonard 1999) закреплены байтами и записаны факторными множествами по Хорти; holding — поражаемое правило сnot_known-дополнением по замкнутому словарю факторов (ручной lowering §2.1docs/plans/engine/PRECEDENT-PLAN.ru.md), окноeffectiveс даты решения, приоритет §116 над общим правилом Restatement § 26; reason model — прочтением §152. Семействоcaselaw_advertisement_offers18/18, KZ-differential байтовый. Измерено: связанность воспроизводит все три исхода (исход Leonard выведен), различение видно какundermineв карте §274, стратная ловушка не воспроизведена,not_knownнад суждением §47.3 удовлетворяется молча (закреплено границей), result/reason model расходятся на одном деле. Новые генераторыfetch_/sync_caselaw_advertisement_offers_*, sync вrun_all.sh; итоги — §9 плана. -
Errata E-0090 — граница окна §135 вычисляется (02.09.2026). Обе реализации читали границу окна позиции только как литерал; вызов терма, константа и несвязанная переменная молча давали «границы нет», и обязанность со сроком не истекала никогда. Теперь граница-терм вычисляется под подстановкой правила, ошибка — громкий
TYPE_ERRORс адресом правила и стороной окна. Пять векторовERR-E0090-WINDOW-TERM-*исходником; радиус в корпусе измерен:labour_code,constitutional_court,environmental_codeзелены, четыре семейства (un_charter,csto_treaty,qantar,qantar_amnesty) красны одной причиной — необъявленное имяmomentвwindow [moment, infinity); акты перечислены владельцу, не правлены. -
Errata E-0091 —
weekday_of(d)(02.09.2026). День недели даты какInteger1..7 по ISO 8601; свидетель — 5 U.S.C. §6103 («third Monday in January», «holiday that occurs on a Saturday»). Пять реестров синхронно, семь векторовERR-E0091-WEEKDAY-*; голденERR-E0076-STD-SLICE-ORDERсдвинут точечно (перечень термов вырос на имя). -
Договор под статутом:
kz.private.employment_contract(02.09.2026). Вымышленный трудовой договор импортирует Трудовой кодекс РК и подаёт свои условия в его предикаты; превышения (ст. 36, 68, 88) и недействительность (ст. 10 п. 2) выводит Кодекс, вердикт по пункту называет договор, конфликт п. 7.1 против ст. 10 п. 3 снимает политика §118 со старшинством из п. 8.1. Семействоemployment_contract— 5 сценариев, differential 14 вызовов байтово; у Кодекса 15pub. Записано:pub ruleв exports не попадает; повторныйimportв модуле — LDC-E1103 уcheckпри молчащемlower. -
Закрыт корпусный остаток оживления
constraint§93.1 (02.09.2026).YieldingIsNotMutualсужен до положительно определимого покрытия на перекрёстке: KZ-PDD-16/17 сохраняют дословную презумпцию пункта 105 без находок, а новый KZ-PDD-18A доказывает, что инвариант не снят, — искусственная взаимность даёт два точныхCONSTRAINT_VIOLATED. Это исправление дефекта инварианта, не ожиданий: широкая формула ошибочно объявляла законное право нарушением. Цена покрытия записана явно:surface_determinableимели 20 из 33 прежних проверок; обязанности вне такого перекрёстка и дела без положительного признака больше не охвачены. GRC-LOT-09 требует ровноCONSTRAINT_CONFLICTED, а два запроса сцены Паули — ровно по одномуCONSTRAINT_VIOLATED. Устаревшие шапки §93.1 и абзац CLAUDE.md о якобы нетипизированном payload судьи обновлены по E-0086/E-0089; комментарии.lawбайты CLIR не меняют. Исторически продублированные громкие правила сохранены и прямо помечены кандидатом отдельной корпусной работы. -
Новый пакет
gb-age-attainment— момент достижения возраста в трёх правопорядках (01.09.2026). Один вопрос («когда исполнилось N лет»), три закреплённых ответа: общее право Англии по Блэкстону (Comm. I.17, Гутенберг #30802) — накануне годовщины; Family Law Reform Act 1969 s. 9 (CLML legislation.gov.uk) — с началом годовщины, и только для годовщин после 1 января 1970 года, дату которого несёт закреплённый отдельно S.I. 1969/1140; п. 2 НП Верховного Суда РК от 11.04.2002 № 6 («Әділет») — со следующих суток. s. 1 акта — полный возраст в 18 вместо 21 с переходным членом;attained_age_englandпроводит границу редакций по s. 9(2). Годовщина — календарный шаг §86 с литеральным числом лет (граница языка названа),policy.month_endдля 29 февраля — вход дела: без неё MISSING_POLICY, сreject_nonexistent— блокер. Приёмка:lawc checkчист, 4 публикации / 9 фрагментов закреплены, 10/10 сценариевage_attainment, differential 52/52 байтово, разметка 13/0 и 14/0, doctor — пробелов нет. Не вошло и записано: Пленум ВС РФ 2011 № 1 (источник из среды сборки не получен), второй член s. 9(2). -
ERRATA E-0089: ответ судьи типизирован (§47.3.1, 02.09.2026). Утверждение с origin
adjudicatedможет нестиjudgment {authority, request?, payload?}; орган сверяется с декларацией, payload — сrequest_schema, несовпадение — issue иREQUIRES_JUDGMENT; ответ без объекта принимается как прежде. Три вектораLAY-L2-JUDGMENT-ANSWER-*вSUPPORTED; Lean сверяет орган листа. -
ERRATA E-0087: замыкание §70 любой арности и с окном
effective(02.09.2026). Закрытый предикат — любой арности, домен — предикат той же арности; closure принимаетeffective§87 (грамматика, схема CLIR, понижение), и замыкание отменённого акта вне окна не порождает негативов. Четыре вектораLAY-L0-CLOSURE-*вSUPPORTED; унарные замыкания корпуса байтово целы. -
ERRATA E-0088: рекурсия доводов §274.2 — вне v1 (02.09.2026). Prose сужена по решению владельца, ноль байтов; вектор
LAY-L3-ARG-RECURSION-REFUSEDпиннит отказ §110 у обеих реализаций. -
DECISION-0088 / WP-41: барьеры §111 в строгом слое (02.09.2026). Негативная голова §99,
not_known§113 в строгом теле и агрегат или домен квантора по выводимому предикату безmonotoneисполняются стратами строгого слоя в обоих движках, а не отвергаютсяNON_EXECUTABLE_RULE; 23 правила четырёх пакетов ожили, реестрdead-rules.json/skippedпуст. Путь позитивной программы сохранён байтово. Граница: строгий читатель над поражаемыми производителями отказывается точной причиной иLDC-E4103. Lean допускает негативные головы и побеждения по их оппозиции. Шесть векторов вSUPPORTED;LAY-L0-QUANTIFIER-BARRIERиLAY-L1-PROPERTY-BARRIER-SKIPPEDпересмотрены точечно с записью. -
ERRATA E-0086: constraint §93.1 исполняется — §93.3 называет момент и место результата (01.09.2026). До errata ни один движок не вычислял constraint (172 узла в 21 пакете), prose не говорила, где живёт результат. Теперь при каждом evaluation после strata: результаты
CONSTRAINTвresults[](вердикт —normativeStatus), узлыconstraint_check, issuesCONSTRAINT_VIOLATED/CONSTRAINT_CONFLICTEDс объявленной severity; четырёхзначное чтениеwhen/requireсквозь обёрткуestablished§204. Схема и TS-типы протокола расширены аддитивно, Lean сверяет структуру узла. Девять векторовLAY-L0-CONSTRAINT-*вSUPPORTED, differential 206/206. РеестрconstraintOnlyснят. Байты документов пакетов с constraint-ами сдвинулись; четыре сценария корпуса разошлись с ожиданиями и по решению владельца перечислены в STATUS.md, а не починены. -
ERRATA E-0085: деньги на долю —
Money * Rational(§58/§50, 01.09.2026). Ст. 78 Социального кодекса РК считаетincome * (days / 30.0); при числе дней, не кратном трём, частное есть точныйRational, и произведение былоTYPE_ERROR— норма молчала на 134 входах из 200 при зелёных воротах. Таблица множимых §58 получила строкуMoney * Rational(и обратный порядок): произведение точное по правилуMoney / Decimal— 10-гладкий итог даётMoney, иначеINEXACT_DIVISION; §50 округления не подразумевает и здесь.Decimal * RationalостаётсяTYPE_ERROR(T163 цел),Quantity * Rationalне названо до акта-свидетеля (DECISION-0068). Пять векторовERR-E0085-*вSUPPORTED, differential 197/197 байтово, статикаlaw-hirзнает вид пары. Байты корпуса не сдвинулись: пары не существовало. -
Новый срез kz.grammar.punktuacia_qurmalas (реестровый №62) — знаки в сложном предложении (02.09.2026). §§97—112 главы ІІ целиком: 25 862 / 167 499 байт (15,4 %), 16 правил. Знак выбирается отношением между частями; опущенный союз оставляет знак, зависящий от того, какой союз опущен; повтор союза здесь не решает ничего — противоположно разделу 7 той же главы. §§110—111 говорят о границе самого понятия. Приёмка: 4/4 сценария, 13/13 differential байтово, §33.1 EXECUTABLE 16 из 16.
-
Новый срез kz.grammar.punktuacia_tol_soz (реестровый №63) — знаки при прямой речи; глава ІІ закрыта, 126 из 126 единиц (02.09.2026). §§113—126 целиком: 27 534 / 167 499 байт (16,4 %), 25 правил. Знак выбирается порядком прямой речи и слов автора и типом предложения; место знака относительно кавычек — самостоятельная норма; пять клеток говорят «это не прямая речь». Глава взята восемью пакетами за один день. Приёмка: 4/4 сценария, 18/18 differential байтово, §33.1 EXECUTABLE 14 из 14.
-
Новый срез kz.grammar.punktuacia_birynggai (реестровый №61) — знаки при однородных членах (02.09.2026). §§75—96 главы ІІ целиком, самый большой раздел: 25 696 / 167 499 байт (15,3 %), 23 правила. Повтор союза решает запятую; один и тот же да даёт два ответа по части речи членов; место обобщающего слова решает знак. Шесть клеток говорят «знака нет», и каждая объяснена источником. Приёмка: 6/6 сценариев, 16/16 differential байтово, §33.1 EXECUTABLE 22 из 22 при нуле UNEXPLAINED.
-
Раздел 6 главы ІІ (§§69—74) взят расширением kz.grammar.punktuacia_ongashalangan_aiqyndauysh (02.09.2026). Пакет заводился на вводном очерке, потому что глава не была закреплена; три его клетки оказались её пересказом и получили второй якорь. Сверх них глава даёт тире вместо запятой и разрешение §69, согласование как признак §74, омонимию оборота §71 и два новых основания §§72—73. Порядок редакций изменён, чтобы мера глубины читала измеримый документ. Приёмка: 8/8 сценариев, 20/20 differential байтово, §33.1 EXECUTABLE 6 из 6.
-
Новый срез kz.grammar.punktuacia_odagai (реестровый №60) — знаки при междометии (02.09.2026). §§61—68 главы ІІ целиком: 7 113 / 167 499 байт (4,2 %), 10 правил. Третье место корпуса о междометии: письмо (№43), звучание (№52) и знаки (здесь) не пересекаются ни одной клеткой. Два параграфа говорят о различении, а не о знаке, и требование различать выражено выводом; §64 знака не называет, и пакет его не выдумывает. Приёмка: 3/3 сценария, 9/9 differential байтово, §33.1 EXECUTABLE 8 из 8.
-
Новый срез kz.grammar.punktuacia_qystyrma (реестровый №59) — знаки при вводном слове (02.09.2026). §§50—60 главы ІІ целиком: 16 013 / 167 499 байт (9,6 %), 15 правил. Раздел даёт три ответа — запятая, скобки и ничего; третий выражен выводом, потому что §57 назван источником как предупреждение об ошибке. §51 описывает состав и даёт цепь до знака, а §56 снимает запятую по окружению. Приёмка: 3/3 сценария, 9/9 differential байтово, §33.1 EXECUTABLE 11 из 11 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.punktuacia_qaratpa (реестровый №58) — знаки при обращении (02.09.2026). §§43—49 главы ІІ целиком: 5 870 / 167 499 байт (3,5 %), 14 правил. Раздел отвечает на два вопроса разом: обращение отделяется запятой снаружи и не отделяется знаком внутри; место запятой — часть нормы, а подъём голоса меняет сам знак. Приёмка: 3/3 сценария, 10/10 differential байтово, §33.1 EXECUTABLE 7 из 7 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.punktuacia_syzyqsha (реестровый №57) — тире между подлежащим и сказуемым (02.09.2026). §§20—42 главы ІІ целиком: 24 959 / 167 499 байт (14,9 %), 25 правил. У раздела два рода оснований — по частям речи и по опасности спутать, где часть речи роли не играет; четыре клетки снимают тире самостоятельными основаниями, а не поражением; §28 даёт одной форме два ответа по значению причастия. Приёмка: 7/7 сценариев, 16/16 differential байтово, §33.1 EXECUTABLE 23 из 23 при нуле UNEXPLAINED.
-
Пунктуация справочника закреплена байтами; новый срез kz.grammar.punktuacia_soilem_sony (реестровый №56) — знаки в конце предложения (02.09.2026). Фетчер извлекал три части книги из пяти и объяснял отказ тем, что «из разделов о знаках препинания не выводится ничего»; с 31.08.2026 это неверно — срезы №37—39 выводят правила, беря фрагменты из вводного очерка. Закреплены обе главы (§§1—126 и §§1—87, нумерация сплошная), и на первой заведён срез: §§1—19, 23 032 / 167 499 байт (13,8 %), 31 правило. Содержание раздела — расхождение формы и знака; ключа у результата нет, потому что §13 оставляет выбор автору, а §§18—19 ставят два знака подряд. Приёмка: 4/4 сценария, 19/19 differential байтово, §33.1 EXECUTABLE 19 из 19 при нуле UNEXPLAINED.
-
Срезы kz.grammar.duryz_aitu (№54, §§35—36) и kz.grammar.aituda_tolyq (№55, §§27—28) — раздел «Сөз сазы» закрыт, 36 из 36 единиц (02.09.2026). №54: 11 112 / 109 265 байт (10,2 %), 15 правил — язык-источник есть основание нормы, и одно положение «это заимствование» даёт три разных ответа; §35 требует произносить иначе, чем написано, в обе стороны; вердикт «противоречит норме» имеет своё основание. №55: 5 094 / 109 265 байт (4,7 %), 5 правил — сокращение меры читается полным словом, а -сың против -сын решает местоимение. Приёмка: 4/4 и 2/2 сценария, 14/14 и 6/6 differential байтово, §33.1 EXECUTABLE 2 из 2 у каждого при нуле UNEXPLAINED.
-
Новый срез kz.grammar.yqsham_tulgalar (реестровый №53) — полная и сокращённая формы глагола (02.09.2026). §§33—34 раздела «Сөз сазы»: 6 227 / 109 265 байт (5,7 %), 6 правил. Запрет §33 двусторонний, и обе половины выражены раздельно; §34 даёт разрешение, а не обязанность, и вне стиха его выводы молчат. Приёмка: 2/2 сценария, 9/9 differential байтово, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED.
-
kz.grammar.yrgaq расширен на §29 — тот же стык со стороны частицы (02.09.2026). Начальный звук частицы становится звонким либо глухим по концу предыдущего слова, и это отражается в письме; обратное источник называет прямо недопустимым, и запрет выражен отдельным выводом. Приёмка: 7/7 сценариев, 24/24 differential байтово, §33.1 EXECUTABLE 7 из 7 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.dybystyq_varianttar (реестровый №52) — когда два звучания одного слова оба допустимы (02.09.2026). §§30—32 раздела «Сөз сазы»: 8 468 / 109 265 байт (7,7 %), 8 правил. Три группы вариантов дают три разных ответа, и сценарий проверяет молчание по чужим выводам; намеренность автора поражает исправление при чтении. §32 есть зеркало среза №43: там междометие пишется как слышится, здесь — произносится как написано. Приёмка: 3/3 сценария, 11/11 differential байтово, §33.1 EXECUTABLE 3 из 3 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.qosymsha_dybysy (реестровый №51) и §21 вторым якорем в kz.grammar.kirme_sozder (02.09.2026). §§22—23 раздела «Сөз сазы»: 3 254 / 109 265 байт (3,0 %), 9 правил. §22 даёт два противоположных ответа по признаку «чей мягкий знак», §23 меняет и звучание, и письмо, а его исключение названо поимённо и поражает общее правило. §21 повторяет §33 главы орфографии и получил второй якорь, ради чего kirme_sozder стал двухдокументным. Класс LDC-E4103 поймал компилятор, а не прогон. Приёмка: 3/3 сценария, 12/12 и 52/52 differential байтово.
-
§§24—26 раздела «Сөз сазы» взяты в kz.grammar.singarmonizm — первый повтор нормы между ДОКУМЕНТАМИ справочника (02.09.2026). §24 и §26 повторяют клетки §§29 и 26 главы орфографии и получили вторые якоря, а не новые правила. Две клетки шире главы и выражены отдельно: «е в последнем слоге» (§25 против §30) и фамилии на -ин, о которых глава молчит вовсе. Обе проверены на слове с жуан собственным рядом, иначе ответ совпал бы с общим законом. Приёмка: 14/14 сценариев, 63/63 differential байтово, разметка 40/0 и 47/0.
-
Новый срез kz.grammar.aralas_buyn (реестровый №50) — почти не слышные звуки и слоги разного ряда (02.09.2026). §§14 и 18 раздела «Сөз сазы»: 3 862 / 109 265 байт (3,5 %), 8 правил. §14 даёт норму и разрешение в одном параграфе, и они не отменяют друг друга; §18 называет обе группы поимённо и не даёт критерия между ними, поэтому общее правило поражаемо названным рядом слов, а не выдуманным признаком. Приёмка: 3/3 сценария, 12/12 differential байтово, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.i_u_dybystaluy (реестровый №49) — одна буква за два звука (02.09.2026). §§16—17 раздела «Сөз сазы»: 11 755 / 109 265 байт (10,8 %), 13 правил. Источник даёт три разных способа узнать ряд буквы, которая ряда не несёт, и третий — «по смыслу предложения» — есть граница движка: у односложных выводится обязанность различать, а не ряд. Соблазн канала суждения §47.3 отклонён явно: §17 не называет органа, решающего вопрос. Исключение сый, тый выражено дефитером с причиной, названной источником. Приёмка: 4/4 сценария, 13/13 differential байтово, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.kirme_dybystaluy (реестровый №48) — звучание конца заимствования (02.09.2026). §§9 и 19 раздела «Сөз сазы»: 2 200 / 109 265 байт (2,0 %), 6 правил. Источник сам строит цепь вывода («болғандықтан»), и правило об аффиксе читает вывод первого правила, а не факт дела. §19 отличает должное от наблюдаемого, и это выражено силой правил: строгая норма о притяжательном III лица против поражаемого наблюдения о склонности. Приёмка: 5/5 сценариев, 14/14 differential байтово, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED.
-
kz.grammar.yrgaq расширен на §15 — третий исход того же стыка (02.09.2026). §§1—5 меняют согласный, §15 говорит о встрече двух гласных: один «проглатывается» (торы ат → торат). Источник сам перечисляет, что закону подчиняются все виды стыка, что подтвердило выбранную форму носителя. Приёмка: 6/6 сценариев, 19/19 differential байтово, §33.1 EXECUTABLE 6 из 6 при нуле UNEXPLAINED.
-
Сквозные сценарии доведены до всех пар документов семьи (02.09.2026). Добавлены три пары: приказ № 468 × справочник (единственная пара разных источников — НПА против доктрины, шов проходит по адресату запроса суждения §47.3), один стык с двумя влияниями §6 в двух пакетах, глава орфографии × раздел о знаках препинания. Находка: один ритмический стык §6 живёт в корпусе как две несовместимые сущности —
assimilation_regressiveпереехал на общую ось стыкаphon,assimilation_progressiveдержит собственный носитель, и дело приходится писать дважды разными словами; ни одни ворота этого не видят. Приёмка: 7/7 сценариев, 23/23 differential байтово. -
Сквозные сценарии через два документа справочника — семейство
grammar_cross_document(02.09.2026). Срезы казахской грамматики проверялись в изоляции, а справочник состоит из двух документов — о письме и о звучании, — и об одном слове они говорят с двух сторон. Четыре сценария закрывают два невидимых класса: полный ответ, которого нет ни у одного пакета в одиночку (жайлау), и одна норма, напечатанная в обоих документах и выводимая двумя пакетами порознь (жуан-аффикс при ә). Мир не склеивается: пакеты друг друга не импортируют, сквозным является ожидание, а не исполнение. Детектор проверен мутацией IR в памяти, без правки дерева. Приёмка: 4/4 сценария, 12/12 KZ-differential байтово. -
Словарь kz.grammar.lexicon расширен втрое — с 11 слов до 40, без единого нового источника (02.09.2026). Оба закреплённых фрагмента те же; выросло прочтение: § 31 называет свои перечни примерами каждого подпункта и трёх ескерту, а очерк — сериями тәуелдік и жіктік. Каждое слово оговорено строкой источника, и оговорка сверена машинно с байтами до записи. Проверка отвергла шесть слов по четырём разным причинам: класс звука не назван буквой; аффикс примера не показывает ряда (-у и -қой § 26); байты несут слово искажённым распознаванием («прин-ңип» вместо «принцип»); какой звук конечный у удвоения, § 31 не решает. Рост словаря пересобрал пять потребителей; у koptik словарная таблица выросла с 10 слов до 32, а канал суждения §47.3 перестал держаться на одном примере — сонорных основ стало восемь. Приёмка: 7/7 и 7/7 сценариев, differential 115 вызовов байтово (было 34).
-
Ось СТЫКА вынесена в каркасный kz.grammar.phon (02.09.2026). Раздел «Сөз сазы» говорит о стыке двух членов в §§1—8, и каждый срез держал собственный носитель — из-за чего §6, прямо называющий случай с двумя правилами разных пакетов на одном стыке, требовал пяти фактов в двух несовместимых формах. Теперь phon держит носитель, обе позиции (включая начало второго члена, которого не было ни у кого) и вывод класса той же классификацией §31. Сверка семи перечней §§1—5 с классами дала совпадение ровно одно: §31 делит звуки для выбора аффикса, «Сөз сазы» — для озвончения, и чтение класса вместо перечня расширило бы норму. yrgaq и assimilation_regressive переведены, следом — assimilation_progressive (с каналом суждения §47.3), k_g_alternation и qosymsha_dybysy: собственных носителей стыка в разделе о звучании не осталось, пять срезов читают один. Приёмка: 15/15, 8/8, 8/8, 5/5, 8/8 и 3/3 сценариев, зелёная регрессия всех восьми зависимых от phon, 494 evaluate-вызова differential байтово по четырнадцати семействам.
-
Новый срез kz.grammar.a_dybystaluy (реестровый №47) — где пишется а, а слышится ә (02.09.2026). §§11—12 раздела «Сөз сазы»: 4 837 / 109 265 байт (4,4 %), 9 правил. Расхождение письма и звучания составляет саму норму, поэтому у слова два вывода разом; перечень §11 поражает ровно вывод о письме, а мягкое звучание остаётся. Главная клетка — аффикс идёт жуан вопреки мягкому корню. Границу с §26 ескерту 2 главы орфографии (та же норма со стороны письма, выраженная singarmonizm) проведена явно, чтобы один вывод не делали два пакета. Приёмка: 4/4 сценария, 10/10 differential байтово, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.erin_undestigi (реестровый №46) — губная гармония и первый прямой вердикт об ошибке (02.09.2026). §10 раздела «Сөз сазы»: 4 954 / 109 265 байт (4,5 %), 7 правил. Источник впервые в семье называет чтение по написанию ошибкой, и это самостоятельный вывод со своим основанием. Гармония идёт по двум независимым осям, убывание её силы выражено собственным отношением, а закрытый первый слог — вторым основанием, а не исключением. Приёмка: 4/4 сценария, 12/12 differential байтово, разметка 15/0 и 7/0, §33.1 EXECUTABLE 1 из 1 при нуле UNEXPLAINED.
-
Новый срез kz.grammar.yrgaq (реестровый №45) — открыт документ о ЗВУЧАНИИ слова (02.09.2026). §§1—5 раздела «Сөз сазы»: 12 363 / 109 265 байт (11,3 %), 6 правил. Первый пакет семьи, чей результат — не письмо, а звучание: источник печатает две колонки, «Жазылуы» и «Айтылуы». Предмет нормы — стык двух членов одной ритмической группы, а не слово. Озвончение идёт в обе стороны (§§1—2 меняют начало второго члена, §3 — конец первого), §§4—5 дают три непересекающихся удвоения, а §5 сам распространяет закон на стык корня с аффиксом. Приёмка: 5/5 сценариев, 16/16 differential байтово, разметка 16/0 и 6/0, §33.1 EXECUTABLE 5 из 5 при нуле UNEXPLAINED, doctor «пробелов нет».
-
§117 взят вторым якорем в kz.grammar.qysqartu — глава заявлена целиком, 129 из 129 (01.09.2026). Последняя незаявленная единица нашлась СЧЁТОМ, а не чтением: объединение scope всех articles.json семьи против §§1—129. Право §117 давно выражено §79, но сама единица не принадлежала никому — а незаявленную единицу не видит ни одна мера: она не бывает ни SOURCE_ONLY, ни UNEXPLAINED, её просто нет в знаменателе. Взята вторым якорем на существующее правило, а не своим: одна норма — одно правило, сколько бы мест источника её ни печатали.
-
Новый срез kz.grammar.nusqa (реестровый №44) — вариантность написания корня; глава «Орфография ережелері» закрыта (01.09.2026). §24, последняя свободная единица подраздела о письме корней: 2 102 / 176 968 байт (1,2 %), 7 правил. Второе место справочника, где несколько написаний одного слова допущены прямо, и допущены иначе, чем у междометий: источник делит корни на две группы и требует их различать — у одной оба варианта законны параллельно, у другой принят один, он входит в словарь, а прочие помечаются «емес». Дефитер взят у самого источника: устоявшееся написание снимает помету, и поражена ровно она — словарь остаётся. Приёмка: 3/3 сценария, 16/16 differential байтово, разметка 11/0 и 7/0, §33.1 EXECUTABLE 1 из 1 при нуле UNEXPLAINED, doctor «пробелов нет».
-
kz.grammar.kirme_sozder расширен на §33, kz.grammar.shylau — на §40 (01.09.2026). §33 — первое место среза кірме сөздер, где письмо слова зависит от присоединяемого аффикса («класс», но «класқа»), и два класса имён дают противоположные ответы: у нарицательных конечный согласный выпадает, у собственных двойная буква сохраняется. Правило о трёх одинаковых буквах не отменяет сохранения — в «Гриммен» ушёл согласный аффикса, а не корня. §40 — пятый за день повтор нормы под другим номером: его середина равна §87, и двум правилам ма-семьи он дал лишь второй якорь; собственная клетка одна и шире §87 (остальные частицы форму не меняют). Приёмка: 9/9 и 15/15 сценариев, 52/52 и 74/74 differential байтово, §33.1 EXECUTABLE 6 из 6 и 7 из 7 при нуле UNEXPLAINED, doctor «пробелов нет» у обоих.
-
kz.grammar.singarmonizm расширен на §§20 и 26 — ряд КОРНЯ и фамильные аффиксы (01.09.2026). §20 отвечает на вопрос, предшествующий всему пакету: какими буквами пишется сам корень, а не каким рядом присоединяется аффикс; «көбінесе» источника выражено презумпцией, опровергаемой фактом смешанного слога. §26 — единственное место пакета, где гармония не решает ничего: выбор между -ев, -ов и -ин решает конечный звук имени, ключа у выбора нет (имя на гласный получает и -ин «әдетте», и -ев «мүмкін»), а гармония возвращается один раз — от ИСХОДНОГО корня (Аймановқа жуан по Ай-ман). Ескерту 2 добавляет отступление с обратным знаком: ә тянет жуан аффикс. Приёмка: 13/13 сценариев, 59/59 KZ-differential байтово, разметка 38/0 и 43/0, §33.1 EXECUTABLE 8 из 8 при нуле UNEXPLAINED, doctor «пробелов нет».
-
Новый срез kz.grammar.odagai (реестровый №43) — письмо междометий; раздел взят ЦЕЛИКОМ (01.09.2026). Раздел 10 главы, обе его единицы §§89—90, 1 049 / 176 968 байт (0,6 %), 4 правила. Единственное место главы, где источник допускает несколько написаний одного слова, и это содержание нормы, а не пробел: §89 даёт два разных вывода из одного основания — письмо по слуху и допустимость двух-трёх написаний, — и второе источник выводит сам, словом «сондықтан». «Көбінесе» есть хедж самого справочника, поэтому обе нормы §89 поражаемы БЕЗ дефитера: чем они поражаются, §89 не говорит. §90 даёт единственную клетку со знаком на двух основаниях — повтор слова и повтор отдельных звуков, — то есть двумя правилами (§206). Приёмка: 3/3 сценария, 7/7 KZ-differential байтово, разметка 7/0 и 4/0, §33.1 EXECUTABLE 2 из 2 при нуле UNEXPLAINED, doctor «пробелов нет».
-
Новый срез kz.grammar.dauyssyz_arip (реестровый №42) — письмо согласных букв; волна 7 заведена целиком (01.09.2026). Раздел 2 главы, шесть свободных единиц из восьми, 4 168 / 176 968 байт (2,4 %), 19 правил. У согласных ответ чаще всего есть происхождение слова, а не позиция: одно объявление «слово пришло через русский» даёт шесть букв разом. Раздел говорит и о том, где буква НЕ пишется (й после полного и, щ на стыке ш с ш), и это отдельный вывод собственным отношением, а не NEITHER: «не пишется» есть утверждение источника, а NEITHER — молчание пакета. Ескерту §14 не только запрещает щ, но и поражает его вывод, поэтому норма о щ поражаема — класс мёртвого дефитера учтён заранее, по опыту №41. Приёмка: 6/6 сценариев, 32/32 KZ-differential байтово, разметка 17/0 и 19/0, §33.1 EXECUTABLE 6 из 6 при нуле UNEXPLAINED, doctor.py без пробелов.
-
ERRATA E-0084: границы месяца термами —
month_start_ofиmonth_end_of(§84.2/§258, 01.09.2026). Срок «не позднее N-го числа месяца, следующего за отчётным» ядром не выводился: шаг «первое число следующего месяца плюс N дней» требует в одном деле календарной и дневной единицы, аpolicy.month_endобязателен у первых и запрещён у вторых (E-0029) при одной политике §86 на дело. Два одноместных терма надDateдают границы месяца без политики и без снимка §85: форма нормы —add_business_days(month_end_of(event), N calendar_day)приstart_count = next_day, число N остаётся числом из текста. Конструкторdate_of(год, месяц, день)отвергнут — он принёс бы переполнение месяца и несуществующий день, а границам они не нужны. Пять реестров std правлены синхронно, семь векторовERR-E0084-*вSUPPORTED, differential 192/192 байтово. ГолденERR-E0076-STD-SLICE-ORDERсдвинут точечно (два пути: перечень в сообщении иresultHash) — вектор сам требует этого от нового имени в перечне. -
Новый срез kz.grammar.dauysty_arip (реестровый №41) — письмо гласных букв (01.09.2026). Раздел 1 главы «Орфография ережелері», восемь свободных единиц из одиннадцати, 12 888 / 176 968 байт (7,3 %), 28 правил. Выражены оба слоя раздела: позиция буквы и расхождение слышимого с письменным. Два дефекта модели поймало ИСПОЛНЕНИЕ, и оба невидимы статически: key(t) у результата утверждал «в месте ровно одна буква», чего источник не говорит (§1 и §9 оба верны об одном слоге — это утверждения о допустимости), и дефитер над строгой головой был мёртв (§111, LDC-E4103) при чистом lawc check. Ключ снят, пять правил стали поражаемыми. Приёмка: 6/6 сценариев, 34/34 KZ-differential байтово, разметка 22/0 и 28/0, §33.1 EXECUTABLE 8 из 8 при нуле UNEXPLAINED, check_corpus_enrollment и doctor.py без пробелов.
-
scrum.guide: The 2020 Scrum Guide заведён пакетом (01.09.2026). Первый акт из мира системной и бизнес-аналитики: HTML scrumguides.org закреплён основной колонкой с sha256 в получателе, 28 именованных разделов по дереву заголовков издателя, §33.1 EXECUTABLE 25 / SOURCE_ONLY 3 при нуле UNEXPLAINED, 92,6 % байтов. Состав команды — агрегат §59 по трём эмпирическим отношениям, таймбоксы — термы
minutes_betweenпротив потолка, длина спринта — календарный месяц с политикой §86 из профиля контекста, отмена спринта — полномочие §127 с единственным носителем, запреты «во время спринта» — обязанности поддержания с презумпцией, Definition of Done — замыкание §70, автомат спринта §160. НАХОДКА ЗАХОДА: обязанность достижения после окна без замыкания над ЭМПИРИЧЕСКИМ условием остаётся UNDETERMINED, а не VIOLATED. Приёмка: 43/43 сценария парами, 43 вызова KZ-differential байтово, 6/6.lawtest, разметка 130/6 (остаток — профиль процедуры) и 130/0, doctor.py без пробелов. -
kz.grammar.singarmonizm: отступлений стало одиннадцать вместо двух — взят подраздел «Қосымшалардың жазылуы» §§25, 27—29 (01.09.2026). Правил 23 вместо 5, фрагментов 8 (19 678 / 357 263 байта, 5,5 %). Первые предложения §25, §27 и §29 повторяют общий закон и правила не получают — у существующего прибавились якоря. Восемь отступлений из девяти дают жіңішке и только одно — жуан: у в последнем слоге заимствования есть единственная причина заднего ряда. НАХОДКА ЗАХОДА: §25 и §28 сталкиваются на слове пункт (пу + нкт), оба дефитера срабатывают, каждый гасит вывод другого — ответ NEITHER по обоим рядам (KZ-SING-09). Источник не называет ни приоритета, ни органа, и молчание честнее выбора; заметить это можно было только исполнением — статически обе нормы выглядят независимыми. Приёмка: 9/9 сценариев, 41/41 KZ-differential байтово, разметка 12/0 и 23/0, §33.1 EXECUTABLE 6 при нуле UNEXPLAINED, doctor.py без пробелов.
-
kz.grammar.birge_bolek: подраздел дефиса §§69—78 — глава о письме сочетания закрыта целиком (01.09.2026). Все три подраздела: бөлек (§§49—57), бірге (§§58—65, §67) и дефис (§§69—78) — 28 единиц, 53 029 / 176 968 байт (30,0 %), 67 правил, четырнадцать результатов письма. У дефиса источник говорит разными словами, и «дефис САҚТАЛАДЫ» отделено: оно о сохранении уже стоящего дефиса при переносе имени из другого письма, а не о постановке нового (сторож KZ-BIB-13). Заход нашёл ЧЕТВЁРТУЮ копию конвенции kk_paragraph_sign, сломанную иначе: шаблон после утренней правки находит «§ 6 4 .», но отдаёт номер сырым захватом «6 4 », и locator article/64 такую единицу не находит. У ворот закрепления нормализатор есть, у act_split.py поля для него нет вовсе — нормализация добавлена в boundaries.py, где мера превращает совпадение в номер. После правки EXECUTABLE 28 из 28, а у kz.corpus.emle UNEXPLAINED честно вырос 125 → 126. Приёмка: 13/13 сценариев, 91/91 KZ-differential байтово, разметка 84/0 и 67/0, doctor без пробелов.
-
Лендинг: живой движок в браузере и «Скотный двор» в демо (01.09.2026). Дело о рейсе на главной больше не только записанный прогон:
apps/landing/public/engine/live-worker.jsисполняет копиюlaw_wasm.wasmрабочего стола на копии CLIR Регламента 261/2004, посетитель меняет дистанцию, срок уведомления, признаки «внутри Союза» и «перевозчик доказал уведомление», а страница пересказывает evaluation-документ — статус, сумму, применённые правила с метками §218 и статьями,programHash; в трассу идёт ОПОРА ответа (узлы, достижимые от узла запроса поpremisesproof-графа), а не весь фикспойнт с отменой Регламента 295/91 и строками таблиц о задержке. Семантики в JS нет (инвариант 5): генераторtools/gen_live_bridge.pyстроит четыре шаблона дела функциямиcorpus/kz/acts/air_passenger_rights.pyс сентинелями (дистанция — целое, момент извещения — URN; таблица «дни → момент» считается генератором, браузер лишь выбирает строку) и записывает реперную сетку ответов оракулаlawrefна 40 точках (границы полос 1500/3500 км, рубеж двух недель) — на них страница делает live-differential и называет расхождение словами; замер в панели браузера: 70–110 мс на прогон после загрузки 1,2 МБ wasm. Мост КОММИТИТСЯ (Vercel собирает лендинг без корпуса), его отставание ловят новые воротаverify/ci/gates/release/check_landing_live_bridge.pyв шаге 51: байты wasm против рабочего стола, байты и semanticHash IR против corpus/clir/, состав моста, канарейка. Вторая вкладка демо — «Скотный двор»: четыре поправки стены как записанные прогоны проекции редакций §31 (lawref impact-editionsнаimpact-scenarios/пакета): кровати, казни, виски и переписанная стена — одни факты, две даты права, исход TRUE_ONLY → NEITHER, поправка восстановлена семантическим diff §215 (added/removed названы в трассе). Демо-дело фараида получило вариант «минбария» из казусаc-minbariyya. -
corpus/laws/: черновик DECISION-0084 и его фаза 0 (01.09.2026). Черновик решения об одной оси дерева и о[metadata] actвместо имени акта из пути; инструментverify/ci/tools/plan_laws_tree.pyпорождает таблицу переносов из метаданных. Фаза 0 исполнена: ворота Торы переехали изcorpus/laws/he/в классsources(check_torah_thematic_packages.py, профильgate, строгий argv); сводка волны А — вcorpus/review/, четыре BLOCKED-заявки без.law— вcorpus/drafts/kz-<акт>/;check_declared_layerобходит вложенные пакеты (rglob); подкаталоги пакета — закрытый список вdocs/PACKAGE-LAYOUT.ru.mdи проверка 6 линта formalize-act; таблица классовverify/ci/README.mdпересчитана. Фаза 1 подготовлена: развилки §7 решены (Алаш и tuystyq → KZ, три правки †, CLIR перегенерированы), пять сканеров читают[metadata].actс откатом к пути, воротаcheck_laws_tree.py(plan-фаза, канарейка на шести мутациях), инструментwrite_act_fields.pyдля тихого окна. -
quran.maidaв базе глубины §33.1 (01.09.2026). EXECUTABLE 42, SOURCE_ONLY 78, UNEXPLAINED 0: генератор фазы A объявляет границы по аятам из контракта (11 аятов чужого QCR-владения, 67 аятов сплошных границ),despiteназывает признаки тем же набором маркеров, что и ворота закрепления. Первый Tanzil-пакет группыquranв базе. -
kz.corpus.srednyaya_zarplata— коэффициент повышения пункта 13 выводится делениемMoney / Money(01.09.2026, первый потребитель E-0083 в корпусе послеzhss_premiya). Факт делаkoeffitsient_povysheniyaснят, отношение стало institutional: правилоKoeffitsientPovysheniyaделит ставку, установленную в последнем месяце повышения, на каждую ставку до повышения — с осью МЕСЯЦА (Date), потому что «каждую» и «каждого соответствующего месяца» иначе не сшиваются. Точность негладкого частного (7/6) акт не называет, и пакет её не выбирает:Rationalв слотеDecimalдаёт ровноTYPE_ERROR(E-0077), прочтения §152 нет намеренно, граница записана. Сценарии SZP-09/10 (пара по обе стороны гладкости) и SZP-11 (ось месяца),.lawtest12; регрессия 11/11, differential 16 вызовов байтово, разметка §218 затянута 57/0 и 35/0. -
quran.maida— фаза C: QCR-зачисление (01.09.2026). Ledgerqcr_enrolled, пакет вSOURCESреестра: первичный владелец 109 аятов, в 11 аятах с точными потребителямиatima/hajj/salat— вторичное свидетельство. Реестр:CLAUSE_REVIEWED908 → 1 016, клауз 1 899 → 2 298, прогресс затянут. Вchoose_canonical_claimявно заданный владелец теперь побеждает предпочтение Tanzil-точного разбора (иначе зачисление целой суры переписало бы владение уже пройденных аятов); генератор сверяет таблицу владельцев с составом единиц. -
Реестровый №35 сведён в №31 (01.09.2026). kz.grammar.sheteldik_ataular выражал ровно один §107, а его подочередь (§§94, 99, 100, 104) оказалась выражена в kz.grammar.bas_arip. Срез снят: §107 переехал в №31 со своим фрагментом, основанием, правилом и сценарием; удалены каталог, CLIR, раннер, строка LOWERED_ACTS и записи в четырёх реестрах. Переезд вскрыл ошибку предыдущего захода: §107 говорит «бірінші сөзі», а §§101, 108, 109, 112 — «бірінші сөзі ҒАНА», и первый заход слил обе формулировки в одно отношение, заявив исключительность там, где источник её не пишет (пять норм из девяти). Ошибка была невидима линту: отношение одно, дублирующихся меток нет. Заведено второе отношение, шесть правил переведены, сторож KZ-BAR-17 проверяет, что «ғана» и «без ғана» не подменяют друг друга. Долг назван: индекс витрины остался при снятом пакете — ручная правка генерируемого запрещена инвариантом 2, а перегенерация втянула бы в коммит десять чужих незакоммиченных CLIR. Приёмка №31: 17/17 сценариев, 107/107 KZ-differential байтово, разметка 91/0 и 79/0, §33.1 EXECUTABLE 26 из 26 при нуле UNEXPLAINED.
-
quran.maida— фаза B: proof-матрица 104 сценария (01.09.2026). Раннерcorpus/kz/acts/quran_maida.pyна общей матрицеexact_quran_proof_matrix: 92 прямых правила и 6 прочтений парой «база/выбор»; контракт фазы B пиннит полный кортеж якорей прочтения (хираба 5:33 — четыре клаузы). Регрессия 104/104, differential 104/104 байтово, исполненные выводы 163/163,.lawtest104/104. Семейство вписано вcheck_executed_derivations, храповик и манифест; тест ворот приведён к их же константе (краснел сan_nisa). -
Конвенция счёта единиц
kk_paragraph_signвидела 127 из 129 — исправлена во всех трёх местах (01.09.2026). Слепое пятно перестало быть тихим: ворота закрепления ОТКАЗАЛИ пакету, объявившему scope на §63 и §64, чьи байты закреплены и сверены. Выражение теперь допускает пробелы и перед номером (включая перенос строки), и внутри него; исправлены check_source_pinning.py, corpus/tools/lib/act_split.py и генератор sync_emle_fragments.py. Замер после правки: 129 + 36 единиц, пропусков в рядах нет; полный прогон закрепления — 0 нарушений по корпусу. Следствия названы: у kz.corpus.emle стало 172 фрагмента вместо 170 и UNEXPLAINED вырос 124 → 125 (две единицы стали видимы, одна честно не объяснена — исправление занижения, а не регресс); генератору понадобилась нормализация номера, иначе имя фрагмента получало пробел внутри. Ошибочный вывод «§63 и §64 отсутствуют» был записан в шапке самого генератора и закреплён числом 127 — он держался на измерении сломанным инструментом. -
kz.grammar.birge_bolek: подраздел слитного письма §§58—65 и §67 — предмет среза закрыт (01.09.2026). Восемнадцать единиц, 42 631 / 176 968 байт (24,1 %), правил 42. У слитности две независимые характеристики, и §58 называет их одной фразой: как пишется и что происходит с корнем; §59 и §61 отменяют вторую, слитность остаётся. Четыре слова источника для слитности не слиты — что это одна графика, текст нигде не утверждает; неразличимость меток поймал lint.py. Приёмка: 11/11 сценариев, 61/61 KZ-differential байтово, разметка 51/0 и 42/0, §33.1 EXECUTABLE 17 из 18 при нуле UNEXPLAINED, doctor.py без пробелов.
-
quran.maida— фаза A закрыта, CLIR заведён (01.09.2026). Пакет стоял без CLIR: порождённые файлы не проходилиlawc check(две головы в одном правиле §206, повтор объявлений §24, носитель чужого типа §48 в прочтениях). Починен генератор фазы A, правила получили метки §218 арабской клаузой (NFC — сырые байты Tanzil ронялиlawc lowerпри зелёномcheck), пакет вписан вLOWERED_ACTS, ворота мёртвого словаря и провенанса Quran, храповик разметки и витринуislam. 98 правил, 65 норм, 613 фрагментов. QCR и сценарии — фазы B/C. Общая матрицаexact_quran_proof_matrixпереименована без префиксаrun_: ворота полноты корпуса считали её раннером без строки в таблицах. -
kz.grammar.birge_bolek расширен на оба примечания §49 и §§50—57 — раздел противоречит своему заголовку (01.09.2026). Девять единиц, 12 057 / 176 968 байт (6,8 %), правил 19 вместо 1. Раздел называется «раздельно пишущиеся слова», но внутри него источник четырежды называет обратный результат со своим основанием: слитно и с прописной, через запятую, через дефис, слитно, объединённо. Поэтому у пакета семь результатов письма, а не один. §§51—54 дают одну раздельность из семи разных оснований — §206 требует по правилу на каждое, иначе whynot не назвал бы, какое сработало. §55 взят наполовину: его капитализация эпитета по позиции дословно повторяет §94, уже выраженный kz.grammar.bas_arip, — третий за день повтор нормы между разделами справочника. Поражаемых норм нет: ни один из девяти параграфов себя не хеджирует. Заход попутно нашёл слепое пятно у счётчика единиц: §§63—64 сперва были сочтены отсутствующими, но они есть — у них искажены OCR-ом заголовки («§\n63.» разорван переносом, «§ 6 4 .» набран с пробелами между цифрами; тем же страдает §47). Конвенция kk_paragraph_sign видит 127 единиц там, где документ содержит 129, а невидимая единица не может стать ни SOURCE_ONLY, ни UNEXPLAINED — она выпадает из учёта целиком. Правка выражения сдвинула бы знаменатель §33.1 у всех 33 пакетов на этом документе и оставлена решением реестра. Приёмка: 8/8 сценариев (было 2), 34/34 KZ-differential байтово, разметка 27/0 и 19/0, §33.1 EXECUTABLE 9 из 9 при нуле UNEXPLAINED, doctor.py без пробелов; храповик сценариев 2 → 8.
-
kz.grammar.kirme_sozder расширен на §§15—16 и §§22—23 — подочередь закрыта, и акт перестал быть набором островов (01.09.2026). Пять фрагментов, 4 928 / 176 968 байт (2,8 %), правил 11 вместо 1. Главное здесь не объём, а починенная связность: §21 брал происхождение слова одним слитным фактом дела, тогда как текст говорит конъюнкцией. Посылка разделена, происхождение выводится §15 из конечного звука. Три хеджа источника («негізінен» §15, «басым көпшілігі» §21, «негізінен» §22) стали тремя поражаемыми нормами, и все три дефитера названы тем же текстом. Отдельно записана граница ЯДРА, а не нормы: первое правило §16 источник не хеджирует, но оно читает выведенное происхождение, а строгое правило не вправе читать вывод поражаемого (LDC-E4103). «Ғана» §16 даёт два результата, и отрицательная сторона выражена положительным фактом дела, а не not P. Носитель переименован: прежнее имя называло результат §21, а не предмет. Приёмка: 7/7 сценариев (было 2), 45/45 KZ-differential байтово, разметка 19/0 и 11/0, §33.1 EXECUTABLE 5 из 5 при нуле UNEXPLAINED, doctor.py без пробелов; храповик сценариев 2 → 7.
-
kz.grammar.bas_arip расширен на §§92—99: правил 40 вместо 4 (01.09.2026). Взят цельный блок о начале отрезка речи и об именах — восемь параграфов, 12 021 новый байт (вместе с §91 — 13 026 / 176 968, 7,4 %, scope 9 из 127 единиц). Пакет перестал быть односторонним: §92 и §93 дают на одном носителе прописную и строчную, и ни один результат не подменяет другого. У постоянного эпитета §94 результат решает только позиция относительно имени собственного. «Негізінен» §94 и «кейбір» §99 сделали русское написание поражаемым, а устоявшуюся казахскую форму — дефитером: без них Шыңғыс хан и Қытай получали бы оба результата разом и молча. Результатов письма девять, а не один. Записан принцип аттестации, отличающий орфографический срез от парадигмы: там клетку опознаёт пример, здесь условие и результат напечатаны словами. Статический аудит до дорогих прогонов нашёл три несплетённые дизъюнкции — расщеплены по §206 до differential. Приёмка: 13/13 сценариев (было 5), 59/59 KZ-differential байтово, разметка 50/0 и 40/0, §33.1 EXECUTABLE 9 из 9 при нуле UNEXPLAINED, doctor.py без пробелов. ТРЕТЬИМ заходом того же дня взяты §§100—106 и §§108—116: раздел «Бас әріптің қолданылуы» выражен на 25 единиц из 27 — 27 232 / 176 968 байт (15,4 %), правил 78. ДВЕ единицы не взяты намеренно, и обе — находки одного класса: сам справочник повторяет норму в разных разделах. §107 уже выражает kz.grammar.sheteldik_ataular (№35); §117 повторяет клетку §79, которую уже выражает kz.grammar.qysqartu (№33) — и тот пакет записал повтор в своей шапке заранее. Ни одни ворота корпуса такого дубля не видят: мера §33.1 считает EXECUTABLE поакт-но, а сверка охватов ловит лишь пересечение НОМЕРОВ единиц. Строка храповика меток ослаблена осознанно дважды. У прописной обнаружился ОБЪЁМ: «әрбір сөзі» против «бірінші сөзі ғана» — два разных результата, а не оттенок одного (KZ-BAR-17 сторожит, что они не подменяют друг друга); всего результатов письма стало четырнадцать. Ещё два поражаемых слоя хеджировал сам источник (§110 ескерту 2 и §116 «көбінесе»). §111 «у некоторых и второе слово» и §112 «осы тәртіппен» правил не получили и названы границами. Сценарий поймал реальный дефект: §115 имел голову bas_arippen_zhazylady при тексте «әрбір сөзі бас әріппен жазылады» — красный KZ-BAR-15 показал это до differential. Итог: 17/17 сценариев (было 5), 103/103 KZ-differential байтово, разметка 89/0 и 78/0, §33.1 EXECUTABLE 25 из 25 при нуле UNEXPLAINED; храповик сценариев 5 → 17.
-
Казахская грамматика: отчёты аудита есть у всех 35 пакетов семьи (01.09.2026). Семь пакетов волн 0—1 (phon, lexicon, koptik, septik, taueldik, zhiktik, singarmonizm) были заведены до конвенции audit.ru.md и оставались без вердиктов по неиспользованным конструкциям и без записанной стабовой доли. Разбор добавил измерения: у zhiktik множественное число — ноль вхождений четырёх форм в 247 998 байтах (очередь откроет другой источник, а не следующий заход); у singarmonizm единственный «мост в один конец» получил вердикт «общий закон без внутреннего потребителя по построению»; у phon названы 16 «мёртвых символов» как варианты enum (DECISION-0047), а не пробел; у lexicon записано, почему §33.1 даёт ANCHORED, а не EXECUTABLE. Числа отчётов сверены с составом CLIR.
-
kz.grammar.septik: очередь падежей заменена на причину (01.09.2026). Взята единственная аттестованная клетка көмектес (қаз+бен, § 31 а), а по табыс, шығыс и жатыс измерено, чего не хватает, — у каждого своё. Табыс: клетки есть графически (шам+ды, хат+ты), но § 31 — параграф о қосымша вообще, рядом стоит жұрнақ мұқтаж+дық, и падежом источник эти формы не называет. Шығыс: отнесение однозначно, но ось группы не решает — терезе+ден и шам+нан в одной группе, § 31 а) называет начало аффикса дизъюнктивно («үнді не ұяң»). Жатыс: ни одной клетки в закреплённых байтах. Заведён audit.ru.md — второй из семи пакетов семьи без отчёта закрыт. Приёмка: 8/8 сценариев (было 6), 44/44 KZ-differential байтово, разметка 4/0 и 11/0, §33.1 EXECUTABLE 2 при нуле UNEXPLAINED, doctor.py без пробелов; храповик сценариев 6 → 8.
-
kz.grammar.taueldik расширен на II лицо анайы и I лицо множественного числа (01.09.2026). Из записанной очереди пакета взято ровно то, что §13 «Сөз сазы» печатает буквальным примером: халқың и кәркің (II лицо анайы), халқымыз (I лицо множественного). Правил 9 вместо 6, выходов по лицам 4 вместо 2. Клетка -іміз в закреплённых документах не показана ни разу и осталась NEITHER, гласные основы II лица тоже — сторож KZ-TAU-10 по образцу KZ-TAU-04. §13 печатает клетку -ің как «кәркің» рядом с «көркім, көркі»: байты сохранены неиспорченными, аттестована клетка, а не слово. Заведён audit.ru.md — один из семи пакетов семьи без отчёта закрыт. Приёмка: 10/10 сценариев (было 7), 47/47 KZ-differential байтово, разметка 5/0 и 9/0, §33.1 EXECUTABLE 3 при нуле UNEXPLAINED, doctor.py без пробелов; храповик сценариев 7 → 10.
-
kz.corpus.pravovaya_statistika — Указ Президента РК № 1050 и Положение о Комитете по правовой статистике и специальным учетам (01.09.2026). Страница ИПС «Әділет» U030001050_ несёт ДВА документа подряд, каждый со своей нумерацией пунктов с единицы, поэтому закреплены два файла и объявлены две
source-декларации: слить их было нельзя — локаторarticle/1адресовал бы два разных текста, а генератор фрагментов отказал бы громко. Соседи разводят этот случай исключением утверждающего акта из среза (stazh-gossluzhby,gosstipendii,traffic-rules); здесь исключать нечего — нормативны оба. Закреплено 45 249 байт (Указ 3 246, Положение 42 003), 34 фрагмента §194; учёт статей 6 из 6 и 24 из 24, неучтённых 0. Мера §33.1 по тридцати пунктам обоих документов: EXECUTABLE 22, SOURCE_ONLY 8, и все восемь объявлены границей с причиной, UNEXPLAINED 0 (в базе глубины стоит Положение, 19/5 — она считает первый объявленный документ, и Указ мерится явной парой аргументов; учёт статей этой слепоты не имеет). 85 правил (75 строгих, 10 поражаемых) и 40 норм-шаблонов — 26 обязанностей, 11 свобод, 3 власти §127; 50 сценариев регрессии и 6 авторских.lawtest§267. Три исключения перечней (оперативные и ведомственные учёты и учёт конфидентов; одиннадцать адресатов обращений; формы проверок органов государственных доходов) построены каноном «строгие основания → строгий барьер → презумпция сunless»; внутренняя цепь акта замкнута — регистрация акта государственного контроля по подпункту 10 пункта 15 отменяется отказом по пункту 14, и отказ есть ДЕЙСТВИЕ Комитета, а не следствие самих нарушений. Приложение «Структура» к Указу опубликовано пустым (гриф и заголовок есть, содержания ни строки) — свойство публикации, названное вarticles.json, а не потеря среза. -
kz.grammar.shylau расширен на всю свою source-first подочередь — §§83–85 и §§87–88 (01.09.2026). Закреплены 6 173 байта в пяти фрагментах той же публикации Сыздық (SHA-256 79042dc…f3753; вместе с §86 — 6 696 / 176 968, 3,8 %, scope 6 из 127 единиц). Пакет вырос с 2 правил до 21 (17 strict, 2 defeasible, 2 defeater) и выражает четыре предмета: раздельное письмо частицы (§83 поражаемо — источник сам говорит «негізінен», §84 строго), её форму (§85 ше остаётся ше; §87 препозиция к жалғау даёт слитное письмо и меняет форму ма-семьи), дефис §86 и природу омонимичной формы (§88). §87 сделан дефитером §83: без него «бөлек жазылады» и «қосылып жазылады» стояли бы TRUE_ONLY разом и не столкнулись бы ни одним кодом — это разные атомы. Дефитеров два, а не три: перечень §83 (61 член) содержит ма и да и не содержит ақ, поэтому у ақ раздельность не выводится и поражать нечего — нашёл аудит, поставленный до дорогих прогонов. Вердикт §88 «это шылау» проведён в общую норму §83, иначе природа осталась бы островом внутри акта. §88 называет четыре омонимичные пары, а критерий даёт трём; четвёртая (ше против үстеу жұрнағы) осталась NEITHER, а не угадана. Природа выводится в отношение с key(t): противоречивые вердикты дают KEY_CONFLICT. «Басқа жағдайда» выражено положительным фактом отрицательного содержания, а не not P. Приёмка: 14/14 сценариев (было 3), 72/72 KZ-differential байтово, разметка 27/0 и 21/0, §33.1 EXECUTABLE 6 из 6 при нуле UNEXPLAINED, doctor.py без пробелов; храповик сценариев 3 → 14.
-
Коранические ворота: конвейер был красный, шесть проверок звал никто, а одна падала
TypeErrorвместо отказа (01.09.2026). Разбор состояния группыquran(девять пакетов, 6 236 аятов Tanzil Uthmani v1.1). Найдено и закрыто три класса.(1)
run_all.shне проходил. Коммит732013e1aпереписал уquran.maidaгенератор фазы A и агрегат (343 + 181 строки, разбор клауз стал другим), но оставил 13 порождённых артефактов от прежней модели, а замороженный знаменатель вtest_quran_maida_phase_a_sources.py— от ещё более старой. Три инструмента объявляли три разные модели одной суры: тест — 136 голов (E 51 / B 82), пакет — 998 (E 135 / B 860), генератор и агрегат — 493 (E 170 / B 323). Воротаmaidaподключены пятью строками и краснели 254 отказами. Арбитром взят агрегат: он переписан тем же коммитом, что и генератор, и оба независимо дают 493/170/323. Артефакты перегнаны генератором (инвариант 2), знаменатель теста подтянут к принятой модели; 254 → 0.(2) Итоговая строка тех же ворот печатала числа, которых не считала.
heads=136 E=51 (39 local, 12 external) I=2 R=1 B=82был литералом: зелёные ворота докладывали знаменатель модели, которой в пакете уже не было. Строка переведена на значения из проверенного контракта — устареть молча больше нечему.(3)
test_quran_baqarah_phase_a_sources.pyпадалTypeErrorдо первого вывода. После ветвиexternalOwnerне хваталоcontinue, и проверка шла в локальные поля головы с чужим владельцем, гдеpremisesестьNone(113 голов из 693 E). Переход добавлен — проверка впервые доработала до конца и назвала 28 отказов, ни один из которых правкой не создан. -
Шесть коранических проверок впаяны в
verify/ci/run_all.sh(01.09.2026). До этого существовали и не вызывались никем:sync_quran_fatiha_juz_amma_fragments --check,test_quran_fatiha_juz_amma_sources,sync_quran_an_nisa_materialization --check,test_quran_an_nisa_phase_a_sources(изнутри достаёт шесть партиционных проверок 4:1–176 и агрегат),check_quran_an_nisa_phase_b,check_quran_ali_imran_audit. Все с канарейками, где те есть; блок стоит около 61 с. -
Мета-ворота
check_gate_wiringбыли красные и назвали седьмую осиротевшую проверку (01.09.2026).check_quran_tanzil_dayn_clause_bridge— мост закреплённого Tanzil к поклаузному разрезуfiqh.dayn— существовал вместе со своим селфтестом и канарейкой 11/11 вне конвейера. Впаян тройкой строк по образцу соседей; мета-ворота снова зелёные: 116 проверокverify/ci/gates/**/check_*.py— 116 в конвейере, вне его 0. Итог по группе: 42 коранических ворот конвейера зелёные. -
M-CHAT-R/F полностью формализован в лицензионно безопасной границе v1 (01.09.2026). Пакет
aba.mchatзакрепляет PDF редакций 2018 и March 2025 и страницу скоринга, не воспроизводя текст двадцати пунктов: исходные единицы представлены номерами, PDF-якорями и авторскими русскими парафразами меток. Две A3-таблицы выражают рисковые ответы (реверс 2, 5, 12), общий счёт и универсальный Follow-Up; все пороги и возрастное окно 16–30 месяцев вынесены в параметры. Procedure реализуетScreened → Negative / FollowUp / Referred, включая прямое направление при счёте от 8, а process-journal хранит полный среднерисковый маршрут. Мера глубины — EXECUTABLE 22/22, остальные уровни 0; закрепление — 22/22 безопасных единицы. Проверено 16/16 сценариев, 4/4.lawtest, 14/14 differential-вызовов. Найдена особенность понижения: A3$collect: "count"имеет типInteger, поэтому пороги счёта нельзя объявлятьNatural. Порождённые строки A3/procedure не имеют label-точек; неизбежный остаток разметки перечислен в ratchet, а не скрыт регистрацией. -
Контракт MCP: гонка общего дерева перестала выглядеть недетерминизмом поиска (01.09.2026). Утверждение «повторный вызов
law_searchдаёт тот же структурный ответ» краснело на верной работе сервера: между двумя вызовами ОДНОГО прогона параллельные сессии дописывали корпус, и поиск честно сообщал об этом сменившимсяcorpusFingerprint(замер:indexUnits156 139 → 156 368 при доехавшем Земельном кодексе; во втором прогоне — тот же счёт 156 762 при ДРУГОМ отпечатке, то есть правили содержимое существующего акта). Красным при этом назывался поиск, а гонка дерева оставалась неназванной. Диагноз разделён: отпечаток тот же и ответы разошлись — дефект поиска; отпечаток другой — прогон шёл по движущемуся корпусу и для этого утверждения негоден, о чём отказ и говорит («повторите на тихом дереве»). Детерминизм по-прежнему утверждается, но при явно проверенном, а не предполагаемом условии неизменности корпуса. -
Журнал вызовов MCP доставлен и проверен на живой точке; названа его полнота (01.09.2026, DECISION-0082 §7). Деплой 33516851462 зелёный целиком — публичный вызов пишется полями:
http tools/call law_ask ok 2547msс кодом исхода, длительностью, размерами, адресом клиента, четырьмя хэшами воспроизводимости и обоими телами. Четыре класса исхода различены КОДОМ, а не текстом:OK,TOOL_ERROR(выдуманный предикат),BAD_REQUEST(неизвестный инструмент),REJECTEDсо статусом и причиной (чужой Origin); кап на тело сработал громко —law_packagesпри 531 КБ ответа несётMCP_TRUNCATED=response. Полнота названа явно, потому что пробел здесь молчалив — отсутствие записи неотличимо от отсутствия события. Главный пробел не в сервере: всё, что отсекает edge ДО бэкенда (429 от rate-limit, отказы TLS и маршрутизации), доhandle()не доходит и записи не оставляет — живёт вdocker logs law-mcp-edge(json-file), вне пространстваlaw-mcpи вне хранилища, поэтому по журналу нельзя судить о злоупотреблении. Не пишутся также stdio (намеренно),/healthzкак запись вызова и тела свыше капа (но с пометкой). Ловушка чтения:journalctl -o jsonотдаёт крупные поля какnullбез--all— тела каталога читались бы как «не пишутся», хотя их 32 768 символов. Первое, что журнал показал: холодныйlaw_searchзанимает 41–42 с, а не «~12 с», как записано вnginx.confи DECISION-0078 (тёплый — 356 мс); прогрев платит деплой, но запас доLAW_MCP_CALL_TIMEOUT=110сжался с десятикратного до менее чем трёхкратного при растущем корпусе. -
Земельный кодекс РК: завершена содержательная формализация действующего среза (01.09.2026). Пакет
kz.corpus.land_codeзакрепляет 186 заголовков консолидированной редакции ИПС «Әділет»: 183 статьи с действующим текстом формализованы содержательно, статьи 19-1, 45 и 170 объявлены проверенными границами источника. Удалены все прежние 141Article…Recognitionи общий мостarticle_conditions → article_effect_applies; CLIR содержит 1926 правил и 46 адресных приоритетов. В первую очередь разобраны статьи 43, 43-1, 44-1, 44-2, 12, 49-1, 14-1 и 122; статья 12 теперь выражает определения. Приёмка расширена до 148 сценариев: закрыты 23 остаточные строки A3, snapshot ПДК, все ранее непоставляемые enum-варианты, исключения и обе стороны значимых порогов; LAND-134…148 фиксируют вердикт по 15 прежним терминальным цепям. Пакетные.lawtestпроходят 6/6, differential — 148 байтово идентичных evaluate-вызовов, source-sync иdoctorзелёные. Полные измерения и окончательные вердикты записаны вcorpus/laws/kz/land-code/audit.ru.mdиSTATUS.md; КоАП и чужие пакеты не менялись в рамках этой формализации. -
Отчёт о воздействии перестал молчать в трёх местах (01.09.2026,
lawref.impact). Найдено проверкой направления нормотворчества на живом KZ-корпусе; все три — молчание ОТЧЁТА, движок не менялся ни строкой. (1) Ось параметров §87. Поправку можно закодировать новой редакцией источника (её меряет проекция D1) либо датированным значением параметра, иkz-osmsкодирует 206-VIII вторым способом: у акта ОДНА редакция, а предел взносов переключаетContributionBaseCap(legal_time)рубежом 2026-01-01.impact-editionsпечатал «изменений нет» на паре 2025-06-30 → 2026-06-30, где право отвечает 17 000 ₸ и 34 000 ₸ — отрицательное утверждение обо всём корпусе делалось там, где мерилась не та ось. Теперьparameter_cutoversназывает рубежи в интервале ВСЕГДА (а не только когда они определяют вердикт: на kz-osms вердикт занят NOT-DATED, и находка молчала бы), а когда блокировать отрицательное утверждение больше нечем — вердикт PARAM-AXIS с кодом выхода 4 по тому же доводу, что у NOT-DATED. Проекция намеренно НЕ трогает legalTime дела: смешение осей осталось запрещённым, отчёт лишь называет неизмеренную ось и говорит, чем её спросить. (2) Отвергнутый вход. Дело с утверждением безoriginисполняется до конца и даёт честное «не установлено», неотличимое на вид от молчания права; движок печатаетASSERTION_NOT_ACCEPTED(§73) всегда, но отчёт issues сценария не показывал вовсе — аналитик читал «поправка никого не задевает» там, где вход не разобрался. ТеперьrejectedInputsв строке сценария, счётчик в сводке и строка «ВХОД ОТВЕРГНУТ» до вердикта. (3) Слепой банк дел. Норма, ТРОНУТАЯ правкой, но не исполненная ни одним делом ни до, ни после, называется отдельно от общей непокрытости: «исход не изменился» про неё есть отсутствие наблюдения, а не вывод. Наблюдалось наkz-pd: снятие основания ст. 16 против банка из 16 собранных дел дало «исход изменился: 0», и лишь дело, построенное под снятую норму, показало TRUE_ONLY → NEITHER. Наблюдённость считается по ОБЕИМ сторонам — снятая норма после правки не применится никогда, и разность по одной стороне назвала бы слепым банк, который её как раз исполнял. Ворота расширены тремя нарушителями и тремя контролями на ложную тревогу (check_impact5–6,check_impact_editions— ось параметров с решающим случаем «редакции стоят, параметр двигается»); selftest оракула,check_amend,check_fuzz,check_loophole,check_liver_edition_impactзелёные, байты отчёта детерминированы. -
Журнал вызовов MCP — публичная точка перестала быть слепой (01.09.2026, DECISION-0082). Логирования запросов не существовало вовсе: stdio не писал ничего,
log_messageHTTP-обёртки писал строку запроса и тела не читал, у nginx-edge путь один на все 21 инструмент — то есть с 31.08 не было видно ни используемых инструментов, ни отказов, ни длительностей. Теперь HTTP-транспорт пишет нативными полями journald (apps/mcp/law_mcp/reqlog.py, чистый stdlib — ни одной новой зависимости): метод, инструмент, исход кодом (OK/STALE_PROCESS/TIMEOUT/TOOL_ERROR/REJECTED), длительность, размеры, адрес клиента, четыре хэша воспроизводимости и оба тела целиком; читается какjournalctl -u law-mcp@8722 MCP_TOOL=law_ask -o json. Границы — проверками, а не расположением кода: stdio не пишет ничего и часов не читает вовсе, ответ побайтово тот же при включённой и выключенной записи (ради чего отказ по лимиту не получил своего кода в ответе, а классифицируется по константеwatchdog.TIMEOUT_MARKER), а сам журнал проверяется НАСТОЯЩЕЙ датаграммой — тест поднимает приёмник AF_UNIX и разбирает native-протокол обратно в поля. Первый прогон поймал ловушку:SO_SNDBUFдейтаграммного AF_UNIX по умолчанию 2048 байт, без подъёма в датаграмму не влезал даже ответtools/list, и «полный журнал» тихо стал бы журналом заголовков (поднят до 8 МиБ, потолок измерен в 2 МиБ, кап 32 КиБ на сторону, срезанное названо полемMCP_TRUNCATED). Цена названа вслух: полная запись делаетmcp.arxo.ioсобирателем персональных данных — срок хранения 30 суток, хранилище (VictoriaLogs, выбрана как единственная не приносящая на хост вторую большую подсистему) слушает только127.0.0.1, рубильникLAW_MCP_LOG=0. Развёрнуто на hotsrv 01.09.2026 руками (не деплой-джобой): сбор персональных данных не включается доставкой. Осмотр хоста опроверг обоснование выбора хранилища: на машине уже работает полный стек Grafana соседнего продукта (obs-loki,obs-grafana,obs-prometheus,obs-tempo,/opt/mineflow-obs), следов которого в репозитории нет вовсе, — то есть вопрос стоял не «вторая подсистема или нет», а «в чужую наблюдаемость или рядом»; выбрано рядом, и причина изоляция, а не вес: в телах вызовов факты дел. Вторая находка на месте, без которой решение было бы вредным: уsystemd-journal-uploadНЕТ фильтра по юниту (-u— это URL), и как есть он залил бы в хранилище журнал всего хоста — GitLab, Keycloak, Traefik. Сужение — journal namespace (LogNamespace=law-mcpв юните,--namespaceв доставке), проверено запросом LogsQL: в хранилище приехали только юниты law-mcp. Побочное следствие названо в README:journalctl -u law-mcp@8722без--namespaceзаписей сервера больше не показывает. Кода на сервере пока нет —/opt/law-mcp/law-dslнаполняет только деплой-джоба (0064/0078), поэтому поляMCP_*появятся с первым зелёным деплоем master, без дополнительных действий. -
Витрина «Право Казахстана» — новое приложение
apps/kz-landing/(01.09.2026, DECISION-0081). Отдельный Astro-проект под казахстанскую часть корпуса: русская версия в корне, казахская под/kk/, в Pages-артефакте — под/kz/(jobkz-landingвdocs.yml, свой префиксKZ_LANDING_BASE). Ни одна цифра на странице не набрана руками (инвариант 5): четыре демо — ОСМС, сроки ГК ст. 172–176, брак и семья, праздники — порождаетtools/build_demos.py, зовущий тот жеtool_law_ask, что обслуживает агентов MCP; суммы, статусы, списки статей, разбор «чего не хватает» и хэши приходят из ответа оракула, а метрики покрытия (121 акт, 25 535 норм, 11 617 фрагментов, 3 248 тестов) — из снимка корпуса. Авторскими остаются только дела (scenarios/*.scenarios.json) и текст страницы. Заведён класс ворот, которого до сих пор не было: витрина отстала от корпуса. Страница статична и в байтовый контур не входит по построению, поэтому её устаревание невидимо и differential-у, и регрессии: акт правят, CLIR пересобирают, всё зелёное — а суммы прежней редакции остаются на экране. Якорь —semanticHashКАЖДОГО задействованного пакета (вопрос пересекает акты: у ОСМС в замыкании бюджетный закон, у брака — Конституция), сверка — шаг 51/51verify/ci/gates/release/check_kz_landing_data.pyс канарейкой; те же ворота держат состав (реестрDEMOS⇄scenarios/⇄demos.json) и пакеты раздела охвата. Класс сработал в первый же час: соседняя сессия правилаcorpus/laws/kz/marriage/, и ворота назвали расхождение. Два дефекта найдены при отборе демо: данные прототипаapps/site-prototype/по госпошлине устарели относительно пакета (там брак и развод, в корпусе — гражданство и визы; демо отвергнуто), аmarriage_allowedбез премиссы изkz-constitution-rightsмолча даётNEITHER— в итоге демо показывает вывод, пересекающий два акта. Своя визуальная система, а не перекраска лендинга: бирюза изразцов Туркестана, войлочные панели, марена, несущий мотив қошқар мүйіз на оси сравнения (техникақиып алу: рисунок и фон — один разрез), кириллические по происхождению гарнитуры ради казахских ә ғ қ ң ө ұ ү һ і. Структура и язык — по задачам читателя-юриста (вопрос → ответ → на каких статьях), внутренние слова проекта на странице не появляются. Опубликована наzan.arxo.io(проект Vercelarxo-zan, деплой готовым выводомnpm run deploy:vercel buildзвать нельзя — он пишет снимок метрик в общее дерево;vercel.jsonпри--prebuiltне читается, заголовок иммутабельного кэша_astro/**переложен вconfig.jsonмаршрутом сcontinue). Домен привязан и подтверждён по владению апексом, но DNS уarxo.ioсторонний — за владельцем одна запись CNAMEzan→0c462cba98c7f14e.vercel-dns-017.com.; до неё прод отвечает наarxo-zan.vercel.app(проверены обе версии, 200, и заголовок кэша ассетов). Предмет — только действующее право: историческая лента («Жеті жарғы», Алаш, декреты 1920-х) из витрины снята решением владельца (пакеты остались в корпусе и открываются в реестре, но уводили читателя от рабочего вопроса); карточка «Встроить в свой сервис» переведена в «скоро» — публичного доступа к движку для встраивания ещё нет; акты в разделе охвата перестали быть ссылками, но сверка их имён с корпусом воротами осталась. Навигация на узком экране больше не исчезает: разделы уезжают под кнопку (aria-expanded, закрытие по Esc, клику вне и расширению окна) — до этогоdisplay: noneоставлял телефон вовсе без меню. Границы записаны в решении: CI-пути к домену,og:imageи казахских меток §218 у актов KZ пока нет. -
Полная формализация Кодекса РК «О браке (супружестве) и семье» (01.09.2026). Один консолидированный срез на 26.08.2026, 286 статей: EXECUTABLE 281, EXCLUDED 5, SOURCE_ONLY/UNEXPLAINED 0, text coverage 98,9 %. Полные главы о браке, имуществе супругов, родительских мерах, усыновлении, опеке, устройстве детей, алиментах, актах гражданского состояния и коллизионных нормах дают 745 правил, 42 канала внешнего суждения и 215 сценариев. Ст. 139 хранит точные
Rational-доли 1/4, 1/3 и 1/2; денежное округление — только явно выбираемое спорное прочтение. ГК подключён квалифицированным импортомkz.corpus.civilcode. Аудит разбирает 273 односторонние цепи, 18 ограничений синтезатора и 33 неиспользованные продукции. Компиляция нашла в ст. 137-3 несуществующиеDateTimeиInstant + hour; норма переписана черезhours_betweenи закрыта парой 24/25 часов. Прогон с якорем LAB — 216/216 PASS; замыканиеexogamy + marriage + tuystyq— 287/287 PASS; differential — 465/465 байтово. Семь рукописных.lawtestпроходят 7/7 и держат точные доли, базовое/спорное округление и границу суток. Интеграционный потребитель теперь явно включает внешний профиль применимости абстрактной моделиhe.torah.arayot. -
Демо-поверхность
islam— витрина исламского кластера корпуса (01.09.2026). Четвёртый жилец семейства DECISION-0066:apps/demos/islam/, Astro, английская ветвь в корне и русская под/ru/. Показывает 28 пакетовfaraid.*/fiqh.*/quran.*(3 279 правил) и 12 дел, исполненных оракулом ПРИ СБОРКЕ: аул 6→7 и минбария, политика округления и шкала верблюдов закята, лестница каффары в обе стороны, поражаемый слой дозволенности пищи в три хода и акдария под тремя состояниями (база молчит, ханафитское прочтение, прочтение Зайда). Ни строчки семантики в приложении (инвариант 5): авторские тексты — только заголовок дела и вопрос своими словами; подписи фактов берутся из словаря §218, шаги — изproofGraph(правило → метка → якорь@source→ фрагмент сcontentHash), исходы и хэши — из evaluation-документа; 97 шагов из 97 несут якорь в источник. Состав каталога перечисляется, а не пиннится: кластер определён префиксами CLIR, новый пакет корпуса приезжает на страницу сам, а витринный список реестра обязан быть его подмножеством (иначеgen_catalog.pyотказывает).check_case_roundtrip.pyв сборке закрывает именной класс «замороженный ответ поверхности дрейфует молча»: утверждается не «генератор повторяет сам себя», а совпадение с ожиданиями регрессии — у фараида это ответы классической литературы, старше движка; проверка проверена мутацией. Два дефекта найдены и закрыты в браузере: у Amiri нет кириллицы (русские заголовки молча падали в Times — заголовки переведены на Alegreya, Amiri оставлен арабскому тексту источника), и арабские метки §218 рендерились в sans (правило по[lang="ar"], а не по месту в вёрстке); охра затемнена до 4,6:1 расчётом контраста. Редакционное решение записано в README: худуд (quran.nur) остаётся в карте корпуса без демо-дела. Оба ворот семейства зелёные,islam/gen_data.py— 5,1 с. Язык страницы затем переписан под аудиторию (шариатские советы, исламские финансы, преподаватели фикха): инженерных слов в интерфейсе нет вовсе — ни «формализованный», ни «детерминированный», ни «хэш», ни §-ссылок; машинные имена (GoldFortieth, полный sha256,article/4) уехали вtitle, а на странице стоят «Статья 4», «Коран 2:173» и названный отпечаток. Слова традиции — иснад, матн, ихтиляф, фард, нисаб, каффара — оставлены: читателю они родные и точнее пересказа. Третья ветвь — казахская (/kk/, всего en + ru + kk): переведена ТОЛЬКО обвязка, один словарь §218 показывается всем трём с пометкой языка, и почему подписи норм приходят по-русски, а у коранических актов по-арабски, сказано на самой странице, а не оставлено на догадку. Дела разведены по вкладкам на чистом CSS (:has()над radio, без скрипта), карта собрания переделана из сетки карточек-ссылок в текстовые блоки: страница 14 522 → 5 155 px. -
Устав Международного военного трибунала 1945 года формализован полностью — 30 из 30 статей (01.09.2026). Новый пакет
intl.imt_charter_1945закрепляет русский аутентичный текст (рабочая цифровая копия SHA-25616065daecd91a8ec067eaacedf9263ca0a11d4cb7010b687f306745616de7c30, сверка с официальным UNTS 82) и Берлинский протокол; 61 фрагмент, по 98,2 % байтов каждой русской редакции, неучтённых статей 0. Две edition D1 — 08.08.1945 и 06.10.1945 — дают машинный semantic change:impact-editionsснимает два и добавляет два правила статьи 6(c), а жестокость без nexus меняет ответTRUE_ONLY → NEITHER. Все статьиEXECUTABLE: пороги статьи 4 проверены тремя парами, ответственность общего плана замыкается черезsupported, статьи 8–10 используют judgment/power/external effect/immunity, статьи 24 и 29 понижены в две процедуры (16 состояний, 14 переходов). Приёмка:.lawtest15/15, регрессияimt18/18, differential 18/18 байтово, разметка 243/12 и 155/0, мёртвых символов и посылок в никуда нет, doctor чист; аудит конструкций записан в пакете. -
T164 и починка оракула: comparison в generator-е comprehension §52.1 (01.09.2026). Найдено проверкой собственного утверждения о границе языка. На одном CLIR
lawc evalотвечал верно, аlawrefпадал сKeyError: 'args': цикл сбора опор вmaterialize_comprehensionзвалsubstitute_literalна каждом конъюнкте генератора, включая comparison. Квалификация (инвариант 8) — дефект оракула, не lawc и не SPEC: §52.1 перечисляет запреты генератора поимённо (not_known,judgment,opaque, side effects), сравнения среди них нет, а докстрингflatten_bodyуже называл comparison guard-ом «без support-пары в store»; errata не нужна. Молчало потому, что формы не было ни в одном пакете корпуса (обход всех CLIR — ноль вхождений) и ни в одном векторе. Вектор T164 написан ДО починки и упал; после правки ответ верен по причине —exceeding_countразличает 1/2/3, а опоры содержат ровно прошедшие guard показания. Голден заморожен одноразовым--bootstrap-expected, ни один существующий не тронут. Приёмка: 399 векторов, differential 181/181 байтово, selftest и determinism-линты оракула зелёные, агрегатные семейства корпуса не пострадали. Следствие для ТК РК: три нормы (ст. 66, 90, 91), объявленные было границей языка, ВЫРАЖЕНЫ агрегатами —count×1 иsum×2, шесть новых сценариев парами, KZ-differential 40/40 байтовый. -
Полная формализация Трудового кодекса РК (414-V ЗРК, 01.09.2026). Заведён пакет
kz.corpus.labour_code: все пять разделов и все 23 главы закреплённой редакции, 223 статьи под фрагментами (байтовое покрытие 99,8 %), EXECUTABLE 201, ANCHORED 0, SOURCE_ONLY 22, UNEXPLAINED 0 по §33.1. 613 правил (486 strict, 82 defeasible, 45 defeater), 122 обязанности §123 с носителем и окном, 4 запрета §130, 4 канала суждения §47.3, разметка §218 — 1089/0 объявлений словаря и 739/0 норм. 34 сценария семействаlabour_code, все парами по обе стороны порога;doctor.pyсообщает «пробелов нет». Источник — подписанный реестр Парламента РК (zan.gov.kz/api/documents/95666/rus,ngr= K1500000414): хост «Әділет» 01.09.2026 не отвечал ни curl, ни браузеру. Три числа задания разошлись с закреплёнными байтами и решили байты: 223 статьи вместо 227, 23 главы вместо 24, Закона № 334-VIII в реестре нет вовсе — верхняя граница окнаin_forceпоэтому не объявлена. Четыре класса молчаливых отказов найдены и закрыты: частичная необъявленная переменная правила (детектор — вычитание объявлений CLIR изconst_refвнутри правил, четыре случая); единица §86 из переменной вместо литерала (статья 13, все четыре единицы стали висячими ссылками при чистомcheck); отрицательный шаг терма §86 (deadline: count < 0только на исполнении — обе нормы переписаны шагом вперёд); цикл предикатных зависимостей от defeater-а над собственной головой (два случая). Инструменты нашли то, чего не нашёл автор: линт — восемь находок (пять порогов прозой, два свёрнутых «либо», деонтика статьи 54, сплющенная в признание); мера §33.1 — 17 статей с пропущенным содержанием; ворота закрепления отвергли 4 объявленные границы из 25 и оказались правы на трёх (ст. 114, 153, 167 формализованы, у ст. 1 признаки названы полемdespite); аудит между фазами 3 и 4 — непрочитанную голову статьи 183, за которой стояли три нормы статей 69, 89 и 105; прогон сценариев — неверное ожидание автора на канале суждения §47.3. Названо словами то, что не сделано: агрегаты над интервалами (ст. 66, 90, 91) невыразимы поверхностью §86, расчёт средней заработной платы и календарь §85 — границы соседних актов, собственных.lawtest§267 у пакета нет. -
Полная формализация ПДД РК и исполнимый мост в дорожную главу КоАП (01.09.2026). Пакет
kz.corpus.traffic_rulesрасширен с 15 до всех 192 номерных пунктов: 190 EXECUTABLE и два обоснованных EXCLUDED (структурные пункты 167–168), плюс пять дефисных пунктов. Приложения 1–3 закреплены полными A3-каталогами: 295 кодов знаков, 30 кодов разметки и 18 подписей схем сигналов; общий source-sync проверяет одновременно 197 фрагментов и каталоги. Скорость выраженаQuantity[km_per_h], знак 3.24 вычисляет установленный предел, а КоАП классифицирует интервалы статьи 592 и через погодовой параметр МРП переводит взыскание в тенге. Сквозной сценарий «знак 60, фактическая скорость 85» выводит превышение 25 км/ч → часть 2 статьи 592 → 10 МРП → 43 250 KZT на 2026 год без ручного факта состава. Приёмка: 42/42 сценария и 42/42 differential-вызова байтово; шесть рукописных.lawtest; разметка ПДД 327/0 и 626/0, КоАП 4543/0 и 5822/0;doctorобоих пакетов сообщает «пробелов нет». -
Каналы доступа скилла
formalize-actк корпусу: запрос вместо просмотра (01.09.2026, DECISION-0080). Поверхность чтения по корпусу сужена до своего акта и структурных запросов LawQL/MCP; чужие исходники читаются только внутри замыкания импортов, которое печатает новыйverify.py --deps <акт>(принимает имя пакета, файл CLIR или путь). Измерено: 64 ребра импорта на 283 пакета, собственные[dependencies]у 9 пакетов из ~290. Паритет дробности переведён с чтения соседей на запрос —paritet.pyобнаруживает со-формализации по общемуdocumentHash(11 документов корпуса закреплены двумя и более пакетами) и советует, не блокируя. Добавленыreferences/lawql-recipes.md,references/scenario-harness.md(контракт модуля сценариев записан впервые) и порождаемыеreferences/genre-samples/; четыре проверки выделены в собственный шаг 44/50run_all.sh(свой предмет утверждения: отказ под чужим заголовком уводил бы читателя не туда), две дешёвые — ещё и в акт-локальный план подcorpus/. Тест рецептов сверяет граф--depsс отношениемimportsLawQL — одну вещь читают дважды. Исправлен дефект первой версииparitet.py: поединичное сравнение через границу документа ложно и теперь гасится. -
Пять source-first пакетов фикха с исполнимым разделением линий:
fiqh.tahara,fiqh.khums,fiqh.waqf,fiqh.qada,fiqh.usul(01.09.2026). Закреплены первичные арабские срезы, reading-варианты внутри линий не универсализированы, а расхождения выводятся на одинаковых фактах дела как line-, reading- либо position-scoped результаты с anti-leak guards. В корпус заведены пять детерминированных CLIR и 58 сценариев; разметка §218 — 231/0 словарных объявлений и 106/0 норм. Все пять source-sync--checkвпаяны вverify/ci/run_all.sh; targeted metadata, labels, scenario manifest и KZ-differential зелёные. -
Пять самостоятельных предметных срезов фикха:
fiqh.adhan,fiqh.buyu,fiqh.riba,fiqh.hadana,fiqh.zihar(01.09.2026). Добавлены закреплённые арабские источники, пять CLIR и точечная регистрация metadata/labels/сценариев; 63/63 KZ-сценария, разметка §218 — 296/0 словарных объявлений и 105/0 норм. Сравнительные ответы остаются line-, reading- либо position-scoped с обоими anti-leak guards; пять source-sync--checkдобавлены в общий прогон.fiqh.buyuнаправляет вопрос риба к уже имеющемусяfiqh.riba, не дублируя его правила. -
Третья форма барьера страт §110/§111 в
check_stratum_barrier— дефитер против рангов производителей своей цели (31.08.2026). К рёбрамpriorityчерез страту и полярностям одного предиката добавлена пара «ранг дефитера ↔ ранги производителей его цели»: §107.3 снимает КАНДИДАТА своей страты, поэтому дефитер над строгой головой не поражает ничего ни при каком ранге, а разошедшийся ранг проносит его мимо всех оснований либо мимо части. Ранги — та жеlawref.evaluator.defeasible.rule_ranks, что у двух прежних форм; долг — тем же реестромcorpus/slices/priority-strata.jsonтретьим видом ключа. Форма дала пять живых дефектов 31.08.2026 (Конституционный Суд — ст. 8 п. 4 и ст. 11 п. 4,anticorruption— промах по одному из трёх оснований, МЧП — инертная оговорка ст. 1108 п. 1,myco.opredelitel— обе формы сразу); четыре закрыла errata E-0080, пятую — правка акта, и до этих ворот сторожа у формы не было. Замер: сегодняшнее дерево — ноль находок за 1,3 с (262 CLIR, 257 дефитеров), оракул до E-0080 на корпусе до правок — все семь находок пяти пакетов. Канарейка--canaryдержит шесть ступеней на подопытномverify/ci/canaries/bad_defeater_strata.py, включая отрицательный контроль. -
Барьер полноты §111 снят там, где он давал неверное право (
sa.personal_status, 31.08.2026). Барьер не абсолютен, и дверь документирована самим кодом: перечисление выводимого предиката отвергается только приstatus != "monotone"—monotone(P)признан завершённым, потому что строгое замыкание добавляет положительную опору, а поздняя отрицательная опора этот тест ложным не делает; живой прецедент был в ст. 27 Устава ООН. Связывал при этом не §111, аLDC-E2114: условие «не отстранён» есть отрицание, установленное отрицание даёт только замыкание §70, а оно в v1 УНАРНО, тогда как отстранение двуместно. Принято каноническое лечение, названное самим сообщениемLDC-E2114, — предметом замыкания сделана СУЩНОСТЬ: заведёнHeirship(притязание лица на конкретную тереку), унарным закрывается свойство притязания. Дешёвая замена (унарноеperson_barred(p)) измерена, работает и ОТВЕРГНУТА: она молча вносит допущение «одна терека на дело» и соврала бы там, где делятся два наследства. Цепь: строгоеheirship_barred→ унарное замыкание с явным негативом → строгоеinheriting(e, p)→ 77 счётов по классам формойcount(collect x where <родство>(e, x) and monotone(inheriting(e, x))). Починилось больше ожидаемого: барьер портил не только делитель, но и КАРДИНАЛЬНОСТЬ — две дочери, одна отстранённая, давали живой треть вместо половины (ст. 215(1)). Цена названа: три замыкания сняты (их продюсеры стали зависеть от предиката за другим замыканием, ответ сталBOTH), отрицание у потребителей эпистемическое, явного негатива у трёх признаков больше нет; храповик разметки ослаблен руками на единицу с обоснованием — исчезли не метки, а три правила-сторожа вместе со снятой границей. Ошибку правки (снесённый заодно блок ст. 207) поймал храповик глубины:UNEXPLAINED0 → 1. -
fiqh.salat— полная реализация заявленного среза молитвы с нейтральным ядром и двумя школьными прочтениями рядом (31.08.2026). Закреплены три публикации, 54 фрагмента и 16 выравниваний; глубина §33.1 — EXECUTABLE 15/15, SOURCE_ONLY 0. Пакет содержит 97 правил, две процедуры §160, A3-профили всех пяти молитв, 47 сценариев и 24.lawtest; differential дал 49/49 байтово идентичных ответов. Ханафитская и альтернативная линии Фатихи за имамом, совмещения, кунута, витра, прикосновения, кворума джума, порядка када и классификации элемента не получают искусственного приоритета. Полный аудит: стаб-цепей 0, мёртвых символов 0, все 35 неиспользованных конструкций разобраны; отчёт —corpus/laws/fiqh/salat/audit.ru.md. -
kz.corpus.mchpзакрыт целиком: раздел 7 ГК РК «Международное частное право», EXECUTABLE 41 из 41 статьи, SOURCE_ONLY 0, differential байтовый 111/111 (31.08.2026). Пятая очередь — внедоговорные обязательства (1116–1119), интеллектуальная собственность (1120), наследование (1121–1123), опека (1124), реторсии (1093). 111 сценариев, 20.lawtest, 177 правил, учёт статей полный. Три моста внутри пакета (исковая давность, договоры об интеллектуальной собственности, опека) читают собственный вывод раздела, поэтому поражения главы 61 доходят до дальних норм. Ст. 1093 выражена институциональным отношением, а не властью §127 — довод записан при норме. -
sa.civil_transactions— пилотный срез Закона о гражданских сделках Саудовской Аравии (М/191, 1444/2023): EXECUTABLE 22 из 23 статей охвата, 21 сценарий, differential байтовый 39/39 (31.08.2026). Первый акт корпуса, где ДЕЙСТВУЮЩИЙ кодекс объявляет лестницу применения САМ (ст. 1: текст акта по букве и по смыслу → 41 общее правило заключительных положений → шариат, наиболее совместимый с законом), и первый, где вытеснение общих правил наступает по ФАКТУ урегулированности вопроса, а не по противоположности вывода. Форма измерена пробой, а не выбрана: у формы «поражается сам вывод» вытесненная каваида выходит FALSE_ONLY, то есть пакет утверждает ложность её заключения, тогда как акт говорит лишь о неприменении; у формы «поражается ПРИМЕНИМОСТЬ» заключение честно молчит (NEITHER). Генеалогия с Маджаллой измерена по закреплённым байтам обоих актов: 28 каваид из 41 присутствуют в Маджалле дословно, ещё 9 — той же максимой в иной редакции, 4 собственные. Закреплены ДВА документа одной страницы издателя: акт и королевский указ М/191, чей بند (خامساً) несёт ретроактивность, которой в самом акте нет. -
Хиджра ст. 2 названа границей ЯЗЫКА и измерена, а не обойдена (31.08.2026). Шкала типа
Dateне названа ни в одном § prose (во всёмspec/SPEC.ruнет ни «ISO 8601», ни «григорианский»), а обе реализации считают по пролептическому григорианскому календарю. Цена молчания измерена на ст. 693: иск, поданный 30.08.2023 при последнем пользовании 17.12.2013, по хиджре не слышится, а правило со10 calendar_yearстановится TRUE_ONLY лишь 17.12.2023 — расхождение 109 дней без единого issue. Запись хиджры тройкой Г-М-Д тоже не спасает: 30 сафара — законная дата, потому что месяцы хиджры бывают тридцатидневными, — даёт TYPE_ERROR. Errata о шкале принята решением человека и ещё не проведена; до неё срок ст. 693 и второе исключение указа приходят фактами дела предикатами, несущими величину в ИМЕНИ, и это названо в шапках модулей как признак недоделки. -
kz.corpus.mchp, третья очередь: сделки, исковая давность и вещные права (ст. 1104–1111) — EXECUTABLE 31 из 41, differential байтовый 79/79 (31.08.2026). Пакет впервые читает собственный ответ: исковая давность (ст. 1106 п. 1) привязана кprimenimoe_pravo, и публичный порядок меняет срок давности, не упоминаясь в норме о ней. Заведена вторая сущностная ось — имущество (параграф 4 привязывает к месту вещи), с двумя фактами о ПРОШЛОМ положении вещи. Измерена новая грань класса «ранг дефитера — максимум по голове»: поражать вывод, у которого есть глубоко выводимый производитель, нельзя вовсе; п. 3 ст. 1108 разведён собственным выводом по прочтению источника, а невыразимое вытеснение п. 1 пунктом 2 названо границей языка и застережено падающей парой сценариев. -
kz.corpus.mchp, вторая очередь: лица и личные неимущественные права (ст. 1094–1103) — обратная отсылка впервые выражена правилом (31.08.2026). EXECUTABLE 23 из 41 статьи (было 13), 51 сценарий, 12.lawtest, differential байтовый 51/51. Ст. 1087 п. 2 принимает обратную отсылку ровно для ст. 1094, пп. 2, 3, 5 ст. 1095 и ст. 1097 — все три пришли этой очередью; правило приёмки написано, посылка осталась фактом дела, и граница «пакет не исполняет пакет» названа тестом, а не подразумевается. Новый измеренный класс:unlessпоражает ГОЛОВУ, а не своё правило, — два состава п. 1 ст. 1094 убивали друг друга, пока не были разведены счётом гражданств (count(collect all …), с обязательным связывающим конъюнктом §190). -
Первый акт Саудовской Аравии и первое ГОСУДАРСТВЕННОЕ право на предмете доктринального фараида:
sa.personal_status(Закон о личном статусе, королевский указ М/73 от 6/8/1443 = 09.03.2022, наследственный блок — 31.08.2026). Баб 6 «الوصية» (ст. 169-196) и Баб 7 «التركة والإرث» (ст. 197-245) целиком, Баб 8 (ст. 246-252) контекстом; новая группаsaи новый правопорядокSA. Где доктрина спорит, закон ВЫБИРАЕТ, и три выбора выражены правилами: дед наследует «как отец» и хаджбит братьев (ст. 212(3), против мукасамы); муштарака решена ПРОТИВ полнородного брата — ст. 227 называет состав поимённо и роняетعاصب بالنفس; возврат достаётся супругу при полном отсутствии прочих (ст. 231(2)). Отчётreport_sa_vs_faraid.pyгоняет семь общих масаил через ОБА пакета их собственными запросами (пакеты не связаны —LDC-E2101): исходы совпали на пяти, разошлись на двух, а на муштарака совпали ДОЛИ при разошедшихся ПОЗИЦИЯХ —excluded(brother)даёт TRUE_ONLY у закона и NEITHER у доктрины, чей спор живёт прочтением §152. Источник — официальные байты через архивный канал, и недоступность издателя измерена, а не предположена:laws.boe.gov.saразрешается, но TCP 443 молча фильтруется, независимый второй путь даётECONNREFUSED, а соседние узлы (включая саудовскийqadha.org.sa) отвечают; закреплён сырой ответ издателя из Web Archive (id_),PINNED_OFFICIAL_BYTES. Два воспроизводимых свидетеля: захват той же страницы 15.02.2026 (252 статьи и 29 заголовков посимвольно — акт не правился) и печатное издание قضاء (84 статьи блока сплошным отрезком в порядке следования). Сверка с печатью построена ПОД дефект её текстового слоя: лигатуры с «لام» переставляют буквы (المحامين→املحام ين), а буквы вдобавок ТЕРЯЮТСЯ (у ст. 169 пропала «ص» в «تصرف»), поэтому сравнение идёт по мультимножеству букв в окне, предел объявлен числом (6,9 %), и отчёт прямо говорит, что дословности это не доказывает. Пять молчаливых отказов, найденных пробой при зелёныхcheck,lowerи пустых issues: (1) замыкание §70 над предикатом БЕЗ строгих производителей выводит явный негатив ВСЕГДА —descendant_heirотвечал FALSE_ONLY при живом призванном сыне, и жена получала четверть вместо восьмой; поймано ДВУСТОРОННЕЙ пробой, односторонняя показывала ожидаемое и молчала; лечение — эпистемическоеnot_known, потому что строгими эти правила быть не могут (LDC-E4103портит ОТНОШЕНИЕ ЦЕЛИКОМ); (2)not_knownв СТРОГОМ теле проходитcheckи не исполняется — ст. 231(2) была мертва при NEITHER без диагностик; (3) перечисление по эмпирическому домену с ВЫВОДИМЫМ гардом внутри даётNON_EXECUTABLE_RULEи ПУСТОЙ ответ (§111) — сперва объявленная граница деления общей доли класса, СНЯТАЯ в тот же день (см. отдельную запись); (4) счёт по эмпирическим фактам родства не знает ст. 222(1) — сын, умерший одновременно с отцом, счётом виден, и дочь не получала половины по ст. 215; заведены 14 предикатов присутствия ПРИЗВАННОГО родственника, а счёт оставлен там, где норма считает ЧИСЛО, включая ст. 213(1)(б), которая считает братьев «وارثين أو محجوبين», то есть вместе с махджубом; (5) фрагменты на все 252 статьи превратили невзятое в долг — мера записалаUNEXPLAINED= 167, и фрагменты сужены до блока плюс один внешний якорь (ст. 161),UNEXPLAINED167 → 0. Носители: поражаемая цепь призвания (ст. 199 презюмирует, ст. 200-203 поражают одним дефитером по строгомуbarred), из чего ст. 222(1) получилась бесплатно — структурные признаки ст. 205-206 выводятся правилами существования из ПРИЗВАННЫХ; канал суждения §47.3 на двух отношениях, названных самим текстом («تجهيز الميت بالمعروف» ст. 198(1) и пробельная формула ст. 251); три обязанности с ОТКРЫТЫМ окном (ст. 243(2), 246, 250), где VIOLATED не наступит никогда и это сказано словами; две массы ст. 200(3) выражены отдельным отстранением от дийи, а не пересчётом долей. Хиджра не обещана: ст. 247 велит считать сроки по хиджре, календаря §85 для неё нет, и единственный срок блока (тридцать дней ст. 183(2)) выражен фактом наступления, а не вычисленной датой. Измерено: §33.1 — охват 85 из 252, EXECUTABLE 70, ANCHORED 13, SOURCE_ONLY 2 (ст. 230 и 252, обе с причиной, проверенной по тексту), UNEXPLAINED 0; закрепление — 85 фрагментов, text coverage 31,7 % (30 243 из 95 354 байт), неучтённых 0; 45 казусов (часть парами, различающимися одним фактом; двенадцать заведены по отчёту достижимости правил — дефитеры читают выводимую посылку, и синтезатор дела до них не доходит), differential байтовый на каждом запросе распределения,.lawtest18/18, разметка §218 202/0 и 190/0, оверлеиruиenпо 202 метки, doctor чист, аудит — посылок в никуда нет, мёртвых символов нет, стаб-цепей 4 из 187 правил (2 %). -
Старшинство авторитетов заработало В ВЫВОДЕ на двух живых актах Казахстана (31.08.2026). Обе нормы стояли в корпусе половиной — выводили факт о паре актов и ничего не делали с выводами, которые из этих актов следуют. Ст. 4 п. 3 Конституции (ред. 1995): пара поражаемых норм противоположной полярности плюс политика §118
RatifiedTreatyOverStatuteInInference1995, спрашивающая уже выведенныйtreaty_prevails_over_statute— числовой шкалы старшинства рядом нет намеренно, приоритет стоит на самой статье со всеми её условиями. Шесть проверокKZ-CON-TREATY: при объявленном расхождении — TRUE_ONLY при НУЛЕ конфликтов, без расхождения — BOTH при одном; байтовое согласие реализаций измерено отдельно (раннер Конституции вcheck_kz_differentialне входит), 8402 байта совпали. Находка из закреплённых байтов: в редакции 2026 года этой доктрины НЕТ — слово «приоритет» встречается там ровно один раз и про очерёдность законопроектов, а ст. 5 п. 3 сохранила лишь вторую фразу прежней нормы. Ст. 5 п. 1 Закона «О правовых актах» — прецедент как источник, работающий в выводе: политикаConstitutionalCourtResolutionPrevailsPolicyспрашивает выведенныйmay_not_contradict, и вывод из нормативного постановления Конституционного Суда побеждает вывод из акта, который не вправе ему противоречить; числовой ступени тут быть не может — п. 5 ст. 10 выводит постановления высших судов ЗА иерархию. Парная находка LEG-35: на постановления ВЕРХОВНОГО Суда защита НЕ распространяется (п. 1 называет только Конституционный Суд, а п. 3 говорит о ВС иначе — «содержатся разъяснения»), и ответ остаётся BOTH при сообщённом конфликте. Измерено: конституционная регрессия 154/154, differentiallegal_acts63 вызова байтово, разметка 433/0 и 241/0, глубина не сдвинулась, снимок границ Конституции тот же. Попутно починены воротаcheck_constitution_review.py, падавшиеModuleNotFoundErrorдо первой проверки (генераторы переехали вcorpus/tools/gen/) — после починки они назвали прежнее расхождение пинаBOUNDARY_SNAPSHOT_SHA256(шапка говорит 85/11, машина мерит 86/10); пин не двигался, эта ступень — юридическая. -
Первый акт корпуса, чей предмет — КАНОНЫ ТОЛКОВАНИЯ:
intl.vienna.vclt(Венская конвенция о праве международных договоров, 23.05.1969, срез из пяти статей — 30, 31, 32, 33, 53; 31.08.2026). Пять статей выбраны не по теме, а по роду: они не регулируют поведение государств, а говорят, как читать и как соотносить сами договорные нормы. До него правила обращения с правилами жили в корпусе позитивным правом одной юрисдикции (kz.corpus.legal_acts— иерархия, коллизии, аналогия), максимами (osm.mejelle) и порядком норм вымышленного акта (us.asimov.three_laws); здесь — единственная действующая многосторонняя КОДИФИКАЦИЯ канонов. Оценочное отделено от предъявляемого ПО ПРАВИЛУ, а не по вкусу: признак, который стороны спора предъявляют или не предъявляют (есть ли последующее соглашение, расходятся ли аутентичные тексты), — факт дела; признак, о котором спор и есть спор (обычное значение, объект и цели, абсурдность результата, императивность нормы), — канал суждения §47.3, и орган назван самой Конвенцией (ст. 66 «a» — Международный Суд), а не выбран формализатором. Отсюда главная пара сцен: одни и те же факты дают TRUE_ONLY с ответом органа иREQUIRES_JUDGMENTбез него — статья 31 не вычисляет значение, она связывает того, кто его устанавливает. ЗАКРЕПЛЁННАЯ ПУБЛИКАЦИЯ ООН ПОВРЕЖДЕНА В СТАТЬЕ 30, и повреждение меняет НОРМУ, а не написание: русская страница un.org переставила условия пунктов 3 и 4 местами («Если НЕ ВСЕ участники предыдущего договора…» там, где подлинник говорит «When ALL the parties») и сослалась на статью 50 вместо 59. Найдено сверкой с английским подлинником при заведении; остальные четыре статьи среза сверены с ним же и совпали дословно. Байты закреплены КАК ЕСТЬ, вместе с дефектом, а статья 30 взята из ВТОРОЙ редакции — английского аутентичного текста (legal.un.org,en_article_plain), право на что даёт статья 85 (пять равно аутентичных текстов). Первый пакет корпуса, где выбор редакции продиктован не языком автора, а измеренным дефектом публикации. Измерена граница видимости канала суждения: вопрос «императивна ли норма» при молчании суда даётREQUIRES_JUDGMENTи один запрос, а вопрос «ничтожен ли договор» на том же деле — NEITHER при COMPUTED и ноль запросов: цель не называет норму, та остаётся экзистенциальной переменной, и разбор блокеров §185 до канала не доходит («переменные не связаны целью: v1» — дословный ответlawc why-not). Это граница АНАЛИЗА, а не дефект нормы; обе стороны стережёт пара сцен, обход через второй аргумент головы отвергнут как правка нормы под инструмент. Носители: презумпция §133 (п. 3 ст. 33 — опровержение расхождением даёт FALSE_ONLY, а не NEITHER), объявленныйpriorityсreason explicit_exception(изъятие п. 4 ст. 33 — единственное место среза, где Конвенция сама упорядочивает два своих положения), дефитеры (п. 4 ст. 31, изъятие п. 3 ст. 30, затвор ст. 103 Устава), канал §47.3 на девяти отношениях. Расщепление §206 доведено до оценочных оснований: «двусмысленным или неясным» и «абсурдными или неразумными» — четыре канала и четыре правила, иначеwhy-notназвал бы один блокер вместо названного. Измерено: §33.1 — 5 EXECUTABLE из 5 статей охвата, 0 UNEXPLAINED, 80 статей вне охвата объявленыscope; закрепление — 2 публикации, 0 нарушений, учёт статей 4 из 85 и 1 из 85 по двум документам; регрессия 30/30, differential 30 вызовов байтово,.lawtest30/30 эмитированных, разметка §218 75/0 и 35/0, doctor чист. -
Акт, чей предмет — КЛАССИФИКАЦИЯ, и точка усмотрения, названная самим источником:
iau.planet_definition(резолюции МАС B5/B6, 26-я ГА, Прага, 24.08.2006 — 31.08.2026). Определение планеты в Солнечной системе и статус Плутона: две страницы, покрытые целиком (38 фрагментов, 99 % байтов, 14 сценариев, 10.lawtest, differential байтовый 36/36). Новая группа корпусаiau. Второй носительclassification§148 послеkz.legal-actsи первый, где эта форма несёт весь предмет: деонтики нет ни одной головы, правилаstrict×9, поражаемых нет. Канал §47.3 из текста, а не от формализатора: сноска 2 отдаёт пограничные объекты процессу МАС, и любой NEITHER наcategory_ofнесёт REQUIRES_JUDGMENT — голова правила покрывает всё отношение; отказ органа (adjudicated negative §73) канал закрывает. Акт дважды называет собственный экстенсионал (восемь планет сноской 1, Плутон резолюцией B6) без единого признака, которого требует определение, — и пакет держит два основания порознь, так что расхождение перечня и определения видно сценарием. Замеры: дословное «все прочие» через отрицание выводимых предикатов не исполняется (NEITHER против TRUE_ONLY через отрицание эмпирического критерия) — пункт (3) записан прочтением с доводом; спутник выведен из деления вовсе, и вывод об этом свой, а не молчание; мера §33.1 неприменима (три несводимые нумерации в одном документе), записи в базе глубины нет. Две официальные редакции расходятся по существу — французская не несёт ни одной оговорки «except satellites» и не имеет сноски B6 об имени новой категории ТНО; расхождение зафиксировано составом фрагментов и отсутствием одной парыalign. -
Первый акт корпуса, чей ответ — УКАЗАТЕЛЬ НА ДРУГОЙ ПРАВОПОРЯДОК:
kz.corpus.mchp(раздел 7 ГК РК «Международное частное право», ст. 1084–1124, срез первой очереди — 31.08.2026). Глава 61 (ст. 1084–1092) и параграф 5 главы 62 (ст. 1112–1115): 13 EXECUTABLE из 41 статьи, 24 сценария, 8.lawtest, differential байтовый 24/24. Акт отвечает на вопрос, стоящий ПЕРЕД обычным вопросом корпуса: право какой страны применяется. Диспетчеризации в нём нет и быть не может — выход есть ЗНАЧЕНИЕ (primenimoe_pravo), потому что правила соседнего пакета не исполняются никогда; на статье 1087 (обратная отсылка) эта граница названа прямо. Два класса, воспроизведённые на живом акте: приоритет §116 не разделяет две привязки к разным правопорядкам (разные атомы, не атом и его отрицание) — порядок пунктов выражен гардами; ранг дефитера §110 берётся максимумом по голове, и поражаемо производимый барьер молча отключил все три дефитера передаточной нормы. Носители:map§46.1 (пятнадцать видов договора ст. 1113 п. 1, тотальность доказывает компилятор) и таблица A3 ст. 1115 — единственная в корпусе с доменными ОБЕИМИ колонками. Названо, но не проведено:record_literalобъявлен грамматикой и не разбирается ни одной реализацией — канонический пример §54 (const KZ: Jurisdiction = Jurisdiction { code: "KZ" };) не компилируется; девятая форма того же класса, что вымела E-0070. -
Первый акт ОАЭ и первая юрисдикция Залива в корпусе:
ae.corpus.gratuity(выходное пособие — федеральный декрет-закон 33/2021 ст. 1, 3, 33, 51, 52, 53; Постановление Кабинета 1/2022 ст. 1, 29, 30; Постановление Кабинета 96/2023 ст. 1, 3, 5, 9, 10; 31.08.2026). Предмет собран из ТРЁХ актов, у каждого закреплены ДВЕ редакции — арабский подлинник (преобладает при расхождении по оговорке издателя) и официальный английский перевод, — и соответствие статей объявленоalign … with …§29 поштучно, а не выведено из совпадения номеров. Байты добыты с портала издателя, отдающего текст машинно, но стоящего за WAF: закреплены сами ответы, sha256 сверены с digest’ом на стороне страницы. PDF издателя для подлинника непригоден — в текстовом слое арабского PDF лигатуры распадаются в визуальном порядке («المادة» → «املادة»), и дефект принадлежит публикации: pdftotext 25.06.0 и pymupdf 1.28.0 дают одно и то же, а подстановкой это не чинится («امل» законна сама по себе). Что портал и PDF несут один текст, проверено мультимножеством символов ст. 51; английская ст. 51 портала совпала с официальным PDF слово в слово. Заведены единицы деленияen_article_parenиar_article_parenв оба реестра меры §33.1. Пять границ языка измерены и изменили запись: (1) у A3-таблицыmode: rulesмоста в.lawнет — полосы 21/30 дней молчали при зелёномcheck, и переписаны правилами, а ставки остались A3-параметрами с временной осью, открывающейся 02.02.2022 (запрос на более ранний день даётMISSING_PARAMETER_VALUE, а не сегодняшнюю ставку); (2) строгое правило не читает поражаемый вывод (LDC-E4103) — изъятия ст. 3(2) записаны отрицательными посылками, иначе whyNot §185 перестал бы называть невыполненную посылку на деле без права; (3)includeв прочтении ВЫКЛЮЧАЕТ правило из базовой теории — счёт по тридцатидневному месяцу пришлось оставить базой, а прочтение MOHRE именует конвенцию, не меняя суммы; (4)selection exactly_oneзаменён наany_of: тотальность группы глобальна по документу и обнулила бы всю батарею сцен §267; (5)add_business_daysтребует снимок календаря §85 даже для календарных дней — отсюда модельный календарь пакета и ДВЕ формы срока ст. 53 (дата термом §86 и сравнение с A3-параметром), чьё согласие сторожит отдельная сцена. Ответ пакета на молчание акта: дневная ставка не определена ни законом, ни регламентом, и две живые конвенции дают 60 013,70 против 59 191,59 AED на одном деле — расхождение ровно 365 ÷ 360 = 1,3889 %. Измерено: §33.1 — 6/6, 3/3 и 5/5 EXECUTABLE по трём срезам, 0 UNEXPLAINED; регрессия 14/14, differential 27 evaluate-вызовов байтово,.lawtest18/18, разметка §218 72/0 и 40/0, английский оверлей §218 (68 + 40) в i18n-храповике. -
Первый акт корпуса, чей ПРЕДМЕТ — старшинство авторитетов, и первый живой свидетель политики §118 в исполнении:
de.bverfgg.bindungswirkung(BVerfGG, срез из восьми параграфов — 2, 15a, 16, 31, 93a—93d; 31.08.2026). Формализуется не исход конституционной жалобы, а то, ЧЕЙ вывод старше: связывающая сила решений (§ 31 абз. 1 — конституционные органы Федерации и земель, все суды и ведомства), сила закона (§ 31 абз. 2) и внутрисудебная иерархия — пленум над сенатом (§ 16 абз. 1), сенат над палатой (§ 93c абз. 1). Нумерованной иерархии закон не печатает: ступениrangсуть ПРОЧТЕНИЕ двух этих норм, и каждая заякорена в свою. Политика §118 впервые проверена исполнением на живом акте (прежние свидетели — объявленная и никем не исполняемая политикаkz.corpus.legal_acts, демоlilliputи векторLAY-L1-PRIORITY-POLICY): BVG-14 — палата объявила закон несовместимым, сенат тем же вопросом совместимым, ответ FALSE_ONLY при нуле сообщённых конфликтов; пара BVG-15 (сенат молчит) даёт TRUE_ONLY, и различие «перебито» / «перебивать нечем» видно числом конфликтов. Мост от применения к спрушкёрперу идёт черезrule_of§180: имя правила в аргументе факта понижается вconst_refна его StableId, и старшинство объявляется фактом о НОРМЕ, а не о деле; контрфакт без факта старшинства — BOTH и один неснятый конфликт. Второй свидетель четырёх свежих поверхностей:map§46.1 («der andere Senat» — тотальное отображение двухчленного словаря на себя, тотальность доказывает компилятор), экспорт членовpub enum(E-0065), член перечисления значением (E-0067) и наблюдениеposition(Шаблон, Статус)§267.4. Три находки из закреплённых байтов: перечень адресатов § 31 абз. 1 исчерпывающ и САМ СУД в него не входит; § 16 абз. 1 знает только отступление от позиции ДРУГОГО сената (BVG-08 стережёт NEITHER для собственной прежней позиции); обязанность опубликовать резолютивную часть срока не имеет — окно открыто сверху, позиция остаётся ACTIVE и VIOLATED не станет никогда. Кворум и порог взяты из текста (восемь судей § 2 абз. 2 → «две трети» § 16 абз. 2 целочисленно, пара 6/5; принятие сенатом — пара 3/2). Заведена единица деленияde_paragraph(«§ N» с буквенным суффиксом) в четыре места обеих мер §33.1 плюс ветвьparagraph/NвLOCATOR_RE, и срез--gii-bodyизвлекателя, снимающий ссылку-метку портала из шапки каждого параграфа. Измерено: §33.1 — параграфов 139, EXECUTABLE 6, ANCHORED 2, вне охвата 131; регрессия 17/17, differential 25 вызовов байтово,.lawtest24 эмитированных и 2 рукописных, разметка §218 54/0 и 26/0,check_lowerбайтово, doctor чист. -
Первый акт корпуса, чей ПРЕДМЕТ — бремя доказывания:
eu.equality.burden_of_proof(Директива 2006/54/ЕС, ст. 19, срез из семи статей; 31.08.2026). Формализуется не истина факта, а НОСИТЕЛЬ обязанности его установить: бремя записано нормативной позицией §134 над эпистемической целью (duty { bearer; goal achievement { condition issue_established(pr, i) } }), и переход виден запросомpositions— до prima facie обязанность у истца, после ответа органа у ответчика, первая при этом исчезает (BOP-01/BOP-16). У соседей бремя встречалось клаузой внутри чужого предмета (ст. 5 п. 4 Регламента 261/2004, максима Меджеллы, состав четырёх свидетелейquran.nur); здесь распределение и есть норма. Четыре вещи измерены, а не предположены. (1) «Facts from which it may be presumed» — канал суждения §47.3: без ответа органаburden_shiftedесть NEITHER приREQUIRES_JUDGMENTи типизированном запросе, а не «нет» (BOP-03); ответ приходит adjudicated assertion §73 и закрывает вопрос в обе стороны (BOP-02/04). (2) Изъятия п. 3 и п. 5 записаны ГАРДОМ, а не дефитером с приоритетом: первая, каноническая запись давалаburden_shiftedBOTH при НУЛЕ сообщённых конфликтов — посылка переноса приходит поражаемой цепью (ст. 2 п. 1 (b) → ст. 4/14 → мост prima facie), и приоритет §116 её не упорядочивает; лечение — прописанное для классаdefeater-over-defeasible-chain, и оно вернее по тексту («need not apply», «shall not apply» ограничивают сферу, а не опровергают вывод). (3) Оговорка п. 5 («unless otherwise provided by the Member States») — установленное ОТРИЦАНИЕ §67 в строгом теле, а неnot_known: умолчание дела о чужом правопорядке не читается как «государство не предусмотрело». (4) Канал суждения §47.3 виден сквозь тело поражаемого ПРАВИЛА (E-0066), но НЕ сквозь тело дефитера, порождённогоunless: косвенная дискриминация при незаданном вопросе об оправданности выводится TRUE_ONLY/COMPUTED без единого запроса, а ответ органа её переворачивает (BOP-09/10) — замер записан сценарием, поведение не менялось, вопрос владельцу. Границы объявлены: недоказанное не становится проигранным (§136 п. 3 — мост «молчание → правовой исход» в источнике отсутствует, BOP-17 стережёт его отсутствие); окна обязанностей доказывания открыты сверху, и VIOLATED у них не бывает; шкалы стандартов доказывания нет вовсе — Директива отсылает к национальным системам. Измерено: §33.1 — 7 EXECUTABLE из 7 статей охвата, 0 UNEXPLAINED, 29 статей вне охвата объявленыscope; регрессия 17/17, differential 23 вызова байтово,.lawtest21/21, разметка §218 31/0 и 28/0, doctor «пробелов нет». -
Ось «суннизм — шиизм»:
fiqh.madhahib, два классических сочинения по одному на сторону (31.08.2026). Вторая ось разногласия в корпусе (первая, мазхабов внутри суннитской линии, живёт вfiqh.taqlid) и первая, чьи стороны приходят из ДВУХ разных закреплённых источников:شرائع الإسلامаль-Мухаккика аль-Хилли (ar.lib.eshia.ir/71613) иبداية المجتهدИбн Рушда (арабская Викитека). До него ось присутствовала ровно одним ОТРИЦАНИЕМ —fiqh.taqlidст. 8 описывает джафаритский счёт талака, не называя его, и отказывает в нём лицу; производящего правила не было ни одного. Ось называет сам источник: «و لو كان المطلق مخالفا يعتقد الثلاث لزمته» (Шараи’ ج3 ص9) — ответ зависит от того, к какой линии принадлежит лицо. Три вопроса (счёт объявления, талак в хайде, временный союз), 25 правил, 17 фрагментов, две РАЗНЫЕ конвенции нарезки в одном генераторе (печатная страница у Шараи’, баб у Бидаи — у первого в разметке нет бабов, у второго нет страниц). Суннитский счёт трёх стоит на якоре ДЖАФАРИТСКОГО источника, потому что Бидая его не говорит: еёالباب الثانيспорит о суннности произнесения, не о счёте, — и якорь называет тот текст, который утверждение несёт. Меньшинство внутри линии (Ибн Аббас о мут’е, «فرقة» о хайде) записано отдельной головой, которую не читает ни одно правило ответа. Пять вопросов, 37 строгих правил, 22 фрагмента пяти срезов, две РАЗНЫЕ конвенции нарезки в одном генераторе (печатная страница у Шараи’, баб у Бидаи). Пакет умеет три вещи, которых в корпусе не было. (1) Ответ ЛИЦУ по принадлежности к линии: на байтово одном объявлении двое получают разный счёт. (2)ground_of_divergence— ПОЧЕМУ линии расходятся, а не только что: жанр Бидаи устроен вокруг «و سبب اختلافهم», и три основания названы дословно (условия действительности против условий совершенства, обычай выражения против намерения, расхождение преданий о дате запрета); о счёте объявления основание не названо никем, и это выведено головойground_not_stated, а не молчанием. (3) Вопрос, на котором граница ОТВЕТОВ идёт ПОПЕРЁК границы линий: три курʼ иддата суть очищения у джафаритов, у Малика и у аш-Шафи’и — и месячные у Абу Ханифы. Отсюда первое выведениеlines_agree_onи парнаяanswer_splits_within_line. Джафаритский счёт талака стоит ДВУМЯ прочтениями §152, а не базой: источник даёт две ривая и называет одну более распространённой, не выбирая; гейт содержателен — база отвечает о суннитском счёте и молчит о джафаритском. Две находки инструментария: граница баба у Викитеки обязана знать уровень разметки (иначе 192 байта вместо главы — срез непуст, фрагмент валиден, check зелен, нормы нет), и правило расхождения обязано читать ПРИЧИНУ, а не только исходы (иначе одна пара исходов, возникшая по двум разным причинам, объявляется расхождением не о том вопросе). Измерено: 41/41 сценарий, differential 86 evaluate-вызовов байтово идентичны, 85/85.lawtest, разметка 83/0 и 39/0, ворота закрепления 0 нарушений. Мера §33.1 неприменима (у обоих сочинений нет единицы «Статья N»), в базу глубины пакет не вписан осознанно. -
Первый акт корпуса, чей ПРЕДМЕТ — агрегат:
kz.corpus.srednyaya_zarplata(Единые правила исчисления средней заработной платы, приказ МЗСР РК от 30.11.2015 № 908; 31.08.2026). Инвентарь конструкций по всему корпусу (221 пакет, 222 CLIR) дал ноль употреблений уaverage,minиmaxи два уsumпри 241 уcount; акт заведён свидетелем этого дна — здесь свод начисленного за расчётный период есть сама норма пункта 8, а не приём записи. Пять вещей измерены, а не предположены. (1)Money / Decimal— единственная денежная пара таблицы §58:Money / Integer,Money / Money,Decimal / Integer,Decimal / Rationalотвергаются статически (LDC-E2108), и потому счёт дней и часов объявленDecimal, а КОЭФФИЦИЕНТ ПОВЫШЕНИЯ пункта 13 (отношение двух окладов) в языке невыразим — он входит делом, и это записано в модуле, а не умолчано (третий свидетель границы послеus.fnma-incomeиkz.tarify). (2) Неточное деление даётINEXACT_DIVISIONи вывода не даёт вовсе: Правила об округлении молчат, и молчание сохранено — политика вынесена в прочтение §152OkruglenieDoTiyna(div_round(…, 2, "HALF_UP"), которое включается делом. Пара SZP-02/03: акт молчит, прочтение отвечает 28 571,43. (3) Comprehension, читающий выводимое (monotone) либо отрицание (not), заставляет ОБЕ реализации приложить к документу ошибкуEMPTY_AGGREGATEпри ВЕРНОМ итоге — в раннем проходе неподвижной точки коллекция ещё пуста, а политику пустой коллекции §59 поверхность.lawвыразить не может (арность агрегата 1 либо 3, тройка несёт precision/mode дляaverage). Свод поэтому считается двумя агрегатами по БАЗОВЫМ фактам и вычитанием, а роль empty-политики играет расщепление §206 «исключаемое есть / исключаемого нет». (4)priority§116 НЕ развёл четыре производителя одной величины: на деле, подпадающем под пункты 8 и 12 сразу, оба ответа остались TRUE_ONLY (20 000 и 30 000) при зелёных check/lower/differential — §107 поражает противоречащие выводы, а два значения одного отношения суть два разных атома (второй свидетель класса послеsu.decree.semidnevka_1940). Рабочая форма — барьер плюс ЯВНЫЙ дефитер §95.3:unlessздесь роняет оракулаKeyError, потому что наследует голову с вычисляемым третьим аргументом. (5) Выбор прочтения кладётся В ОБА МЕСТА (case.optionsи четвёртый аргументevaluate): без этого differential молча пропускал две сцены из восьми (6 сверенных вызовов вместо 8). Заведена конвенция единицыpoint_amended— пункт, включая добавленный поправкой («7-1», «7-2»), — в ОБА реестра меры §33.1, в таблицу имёнboundaries.pyи профилемkz-adilet-pointшаблонаpinning: голаяpointотдала бы оба добавленных пункта соседу, и локаторarticle/7адресовал бы ещё две нормы при верных байтах. Измерено: §33.1 — 14 EXECUTABLE, 3 SOURCE_ONLY (все три объявлены границей с причиной), 0 UNEXPLAINED; закрепление 99,9 % (24 887 из 24 908 байт), учёт пунктов 17 из 17, неучтённых 0; регрессия 8/8, differential 8 вызовов байтово,.lawtest11/11, разметка §218 55/0 и 34/0. -
Акт-таран №4 unit-package — СОСТАВНОЙ ТЕГ:
ru.esbe.mekhanika, пять статей Энциклопедического словаря Брокгауза и Ефрона (DECISION-0068 §5, 31.08.2026). Пункт 3 очереди («умножение размерных пар и канон составного тега») был закрыт тем же днём тараном №3 с условием переоткрытия: акт с нормой о РАЗЛОЖЕНИИ составной единицы либо с произведением размерных пар, чей результат остаётся величиной. Условие выполнено — «эрг, т. е. работа, совершаемая силой равной одному дин на пути в один сантиметр» и «работа выразится просто произведением силы на пройденную длину» стоят в одной статье, и результат произведения — работа, а не деньги. Пакет заведён на закреплённых байтах викитеки (пять oldid,fetch_esbe_mekhanika_text.py, 24 021 байт), единица деления — статья словаря (ru_named_section, обе меры §33.1). 42 пробы обеими реализациями байтово (probe_esbe_mekhanika_units.py), 33 сценария семействаesbe, 20.lawtest, differential 52 вызова, Lean 52/52 обеими ногами. Найдено четыре вещи, которых прошлые тараны дать не могли: молчаливый вывод работы с тегом ДЛИНЫ при ПОЛОВИННОМ де-юните ((p / DinEtalon) * s→1962 cm, TRUE_ONLY, ноль диагностик); асимметрия громкости (умножение размерных пар — статическийLDC-E2108, кросс-юнитное деление — тишина до исполнения; попутно уточнена запись тарана №2 о «статически зелёном»v * t); расщеплённый алфавит тега (у литерала идентификатор §18, уwith_unit/convertлюбая строка —"m/s","s/m","m·s⁻¹"суть три разные размерности, аconst A: Quantity = 20 m/s;понижается в деление на необъявленное имя при зелёномcheck); опровергнутые пункты списка выразимого (powE-0075 неприменим к де-юниченномуDecimal;convertслеп к исходному тегу и на составных именах). Черновик формы составного тега приложен к audit и НЕ проведён — три варианта с последствиями для §208/§209, довод о входе, три строки таблицы видов, семь векторных обязательств; решение за владельцем. Замер вписан строкой в DECISION-0068 §5, рамки 1–4 не тронуты, семантика не менялась ни строчкой. -
reanchor --fuzzy: рычаг перевешивания заработал на переписке с перенумерацией (DECISION-0040 §6, 31.08.2026). Замер опроверг диагноз, записанный при заведении задачи. Считалось, что побайтовое сравнение текстов «слишком строгое» (§1: «4 статьи из 96»); на деле на Конституции 2026↔1995 совпало 0 локаторов из 104, у одноимённых статей медиана сходства 0,075 при максимуме 0,49, а номер сохранила ровно одна статья из 98 — остальные 97 переехали систематическим сдвигом на 1–3. То есть потеря была не в строгости сравнения ТЕКСТА, а в отсутствии сопоставления НОМЕРОВ:compare_editionsсверяетarticle/5сarticle/5и на перенумерации слеп по построению, никакой порог этого не лечит. Заведёнlocator_matches— кандидат ищется среди ВСЕХ локаторов цели, счёт целый в долях 10000 (арифметика целая: двоичный float вlawrefзапрещён §18, а счёт едет в отчёт, который сравнивают байтами; тождествоcos·S = √(S²·dot²/(‖a‖²‖b‖²))даёт точныйmath.isqrt). Спорные (отрыв от второго кандидата меньше запаса) и оспариваемые (одна цель выбрана несколькими статьями) в кандидаты не идут. Мера — мешок триграмм (вес 1) и слов (вес 2); триграммы здесь условие работы на казахском: целые слова дают 84/50 (ru/kk), триграммы 85/81 — агглютинативный язык приносит понятие разными словоформами, и для мешка слов это разные ключи. Формула совпала с эмбеддеромlaw_search, но найдена независимым замером — разделяемого кода быть не может,lawrefне вправе зависеть отapps/mcp. Итог на живом акте: сквозных кандидатов было 0, стало 17, причём обе языковые пары независимо дали одно отображение номеров. Режим включается явно, у fuzzy-кандидата вmovesстоитscore(побайтовое совпадение — факт, счёт — оценка, в одном списке без признака не смешиваются); ворота получили ВТОРУЮ фикстуру-перенумерацию и держат обе стороны — что строгий режим на ней даёт ноль и что fuzzy находит двойника, слушается порога и детерминирован. Нейронная модель этот класс не открывает и в §5 остаётся отложенной: переписка сохраняет словарь почти целиком. -
Публичный MCP на
mcp.arxo.io(DECISION-0078, 31.08.2026). Решение владельца «пусть каждый сможет установить»: транспорт 0065 получает явный публичный режимLAW_MCP_PUBLIC=1— единственный способ снять требованиеLAW_MCP_TOKENс не-loopback бинда (гвардия и была написана как требование явного решения, а не запрет; отказ теперь называет DECISION-0078, тест рубильника — вtest_http_server.py). OAuth 2.1 закрыт без исполнения: идентификация не нужна для «пусть ставит любой». Развёртывание —apps/mcp/deploy/(nginx-edge с rate-limit 3 r/s и лимитом тела 1 МБ за существующим Traefik, два systemd-экземпляраlaw-mcp@8722/8723на 172.17.0.1, недостижимых мимо edge) и джобаdeploy-mcp.yml(DECISION-0064: ворота доставки = оба контракт-теста, rsync чекаута раннера того же сервера, последовательный перезапуск с прогревом, смок настоящим edge-маршрутом через--resolveдо всякого DNS). Лэндинг/mcp/(en/ru) переписан: вместо «доступ по запросу» —claude mcp add --transport http law-dsl https://mcp.arxo.io/mcp. -
Акт-таран для
pow: новый пакетla.gauss.theorema_fermatianum(31.08.2026). «Disquisitiones arithmeticae» Гаусса, sectio tertia, артикулы 45—50 («Fermatii Theorema») — свидетель, которого требовала errata E-0062, оставившаяpowсмежным пробелом. Замер тарана: три записи степени дают три разных отказа, ни один не называет §58 (LDC-E2105/LDC-E0101/LDC-E0201); продукции вgrammar.ebnfуpowнет вовсе. Черновик errata приложен кaudit.ru.md, не проведён — решение владельца: закрытая таблицаInteger pow Integer -> Integer, отрицательный показатель — отказ,0 pow 0= 1 по конвенции пустого произведения, переполнение путёмmod, носитель — терм std §259, четыре векторных обязательства. Степень выражена ЦЕПЬЮ проверяемых звеньев (артикул 46 источника и есть правило шага; рекурсия §110 черезsupported), поражаемый слой несёт презумпцию простоты с дефитером-делителем, псевдопростое 341 и число Кармайкла 561 показаны делами. Заведена конвенция единицыarticulusв оба реестра §33.1. Измерено: §33.1 6/6, закрепление 96,2 %, регрессия 26/26, differential 26 вызовов байтово, Lean 26/0,.lawtest15/15 + 26/26, разметка 19/0 и 24/0. -
smt_witness.pyнаучился остатку:modвBINARY_OPS(31.08.2026). Первая проба атаки на инварианты пакета Ферма ответила «binary-операция ‘mod’ вне среза»; расширение заведено вместе с воротамиverify/ci/gates/layers/check_smt_mod.py(шаг 38/47). Евклидов остаток SMT-LIB совпадает с §58/E-0062 не случайно, но и не самоочевидно — ворота спрашивают о совпадении сам решатель; нулевой делитель кодировщик запрещает явным assert-ом (проверяется перехватом скриптов, а не чтением кода). Результат: три экземпляра малой теоремы Ферма (p = 3, 5, 7) — UNSAT на 3 из 3 комбинаций. Граница названа: без ограничения основания наименьшим положительным вычетом z3 не отвечает вовсе, то есть доказан экземпляр НА ВЫЧЕТАХ, а сведе́ние к вычету — работа права (артикул 46), не решателя. -
kz.grammar.punktuacia_qurmalas_soilem — реестровый №39, source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплены пять следующих абзацев раздела 3 вводного очерка Сыздық: публикация скопирована байт-в-байт (SHA-256
4f86533e…c72b64c5), пять фрагментов — 7 387 / 71 030 байт. Семь strict-норм выражают две клетки опущенного противительного союза (запятая сохраняется, тире ставится), двоеточие при опущенных өйткені/сондықтан/себебі, две клетки общего субъекта, отсутствие тире в названной казахской конструкции и запятую вместо тире в условном придаточном. Конструкция и буквальные примеры приходят фактами дела; parser, enum, map, phon/lexicon и закрытый словарь не добавлены. Общая фраза о синтаксическом строе оставлена границей: она не задаёт отдельного результата или органа суждения. Добавлены CLIR, раннер 6/6, manifest и одна точечная строка scenario-ratchet, разметка и аудит; KZ-differential 14/14 байтово, 7/7 норм достижимы, doctor.py без пробелов. §33.1 по единицам неприменима, потому что у очерка нет их серии; запись глубины не создаётся и UNEXPLAINED не возникает. -
kz.grammar.punktuacia_ongashalangan_aiqyndauysh — реестровый №38, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Повторная source-first сверка нашла уже закреплённый раздел 3 вводного очерка Сыздық; публикация скопирована байт-в-байт (SHA-256
4f86533e…c72b64c5), три фрагмента — 3 660 / 71 030 байт. Три strict-нормы выражают отсутствие знака между қосалқы айқындауыш и айқындалушы и два прямо названных способа выделить ряд запятыми с обеих сторон. Роль ряда и буквальные примеры приходят фактами дела; строковый парсер, enum, map, phon/lexicon и закрытый словарь не добавлены. Открытое «бірқатары» оставлено границей. Добавлены CLIR, раннер 4/4, manifest и одна точечная строка scenario-ratchet, разметка и аудит; KZ-differential 8/8 байтово, 3/3 нормы достижимы, doctor.py без пробелов. §33.1 по единицам неприменима, потому что у очерка нет их серии; запись глубины не создаётся и UNEXPLAINED не возникает. №39 о сложных предложениях остаётся следующим отдельным source-first пакетом. -
kz.grammar.emle_erezheler_common — реестровый №40, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплены приказ Министра науки и высшего образования РК №468 п. 1, Положение п. 2 и пп. 7.1 из извлечения Adilet (838 байт в 3 фрагментах; SHA-256 публикации e6d0b074…ce9ace02). Три strict-нормы выражают создание Республиканской орфографической комиссии, её консультативно-совещательный статус и подготовку предложения либо рекомендации по прямо предъявленному вопросу орфографии, произношения или пунктуации. Содержание рекомендации не домысливается:
external judgmentтребует adjudicated assertion §73, а без него ответ остаётся REQUIRES_JUDGMENT. Добавлены CLIR, раннер 3/3, manifest и одна точечная строка scenario-ratchet, разметка и аудит; KZ-differential 5/5 байтово, 3/3 нормы достижимы, doctor.py без пробелов. §33.1 по единицам неприменима из-за повторной нумерации НПА, поэтому запись глубины не создаётся; UNEXPLAINED не возникает. Административная процедура Комиссии, phon/lexicon и новая пунктуационная парадигма вне scope; №38–39 остаются source-first до самостоятельного источника. -
kz.grammar.punktuacia_zholda_qaldyru — реестровый №37, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплён §127 «Орфография ережелері» Сыздық (106 байтов; SHA-256 публикации 79042dc…f3753): знак препинания остаётся в текущей записываемой строке. Источник не называет графему и не показывает пример, поэтому общая категория и положение приходят фактами дела, а список символов, строковый распознаватель, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 3/3 байтово, UNEXPLAINED 0, doctor.py без пробелов. Следующие разделы пунктуации №38–39 оставлены source-first: самостоятельных нормативных фрагментов в закреплённом корпусе нет.
-
kz.grammar.tasymal — реестровый №36, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплены §§118–126, 128–129 «Орфография ережелері» Сыздық (4 602 байта в 11 фрагментах; SHA-256 публикации 79042dc…f3753): 21 strict-норма задаёт буквально названные границы переноса, положение у/й, запреты разрыва и две границы сокращений. Все 73 вхождения форм приходят фактами дела; раннер делает 79 проб, потому что §122 испытывает обе прямо разрешённые границы каждой из шести форм. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 81/81 байтово, UNEXPLAINED 0, doctor.py без пробелов. Примечание §118 с открытыми «кейде»/«мүмкіндігінше» и §127 о пунктуации оставлены source-first границами: первое не даёт клетки либо органа решения, второе передано следующему
punktuacia-*. -
kz.grammar.sheteldik_ataular — реестровый №35, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплён §107 «Орфография ережелері» Сыздық (512 байтов; SHA-256 публикации 79042dc…f3753): первое слово названий международных и зарубежных центральных организаций пишется с прописной буквы. Одна strict-норма охватывает все 3 дословных названия, которые приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 5/5 байтово, UNEXPLAINED 0, doctor.py без пробелов. §§94, 99, 100 и 104 оставлены source-first подочередью: §107 не даёт их отдельных носителей, условий или результатов.
-
kz.grammar.kirme_sozder — реестровый №34, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплён §21 «Орфография ережелері» Сыздық (644 байта; SHA-256 публикации 79042dc…f3753): большинство русских и пришедших через русский, преимущественно терминов, пишется по русской орфографии. Одна strict-норма охватывает все 22 дословные формы, которые приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 24/24 байтово, UNEXPLAINED 0, doctor.py без пробелов. §§15–16 и §§22–23 оставлены source-first подочередью: §21 не даёт их отдельных условий и клеток.
-
kz.grammar.qysqartu — реестровый №33, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплены §§79–82 «Орфография ережелері» Сыздық (1 512 байтов; SHA-256 публикации 79042dc…f3753): четыре strict-нормы задают написание инициального сокращения прописными без знаков, смешанного регистра, слитного строчного сокращения и точек после каждой буквы сокращённого имени. Все 11 дословных форм приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 5/5, храповики сценариев/разметки/глубины и аудит; KZ-differential 16/16 байтово, UNEXPLAINED 0, doctor.py без пробелов. §§34–37 уже заведены в defis, §117 повторяет §79, §§128–129 оставлены source-first для tasymal.
-
kz.grammar.birge_bolek — реестровый №32, следующий source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплён §49 «Орфография ережелері» Сыздық (343 байта; SHA-256 публикации 79042dc…f3753): сочетания прилагательного с төбел, қасқа, шолақ и подобными словами при описании животного пишутся раздельно. Одна strict-норма охватывает все 4 дословные формы, которые приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 6/6 байтово, UNEXPLAINED 0, doctor.py без пробелов. Примечания §49 и §§50–67 оставлены source-first подочередью: их отдельные условия и клетки не содержатся в главной фразе §49.
-
kz.grammar.bas_arip — реестровый №31, первый source-ready срез волны 6 казахской грамматики (31.08.2026). Source-first закреплён §91 «Орфография ережелері» Сыздық (1 005 байтов; SHA-256 публикации 79042dc…f3753): первое слово следующего предложения после точки, многоточия, вопросительного или восклицательного знака начинается с прописной буквы. Четыре strict-нормы охватывают все 8 дословных первых слов, которые приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 5/5, храповики сценариев/разметки/глубины и аудит; KZ-differential 10/10 байтово, UNEXPLAINED 0, doctor.py без пробелов. §92–117 оставлены source-first подочередью: их отдельные условия и клетки не содержатся в §91.
-
kz.grammar.shylau — реестровый №30, следующий source-ready срез волны 5 казахской грамматики (31.08.2026). Source-first закреплён §86 «Орфография ережелері» Сыздық (523 байта; SHA-256 публикации 79042dc…f3753): семь названных частиц с предшествующим словом пишутся через дефис, а ай/ау внутри пяти прямо названных одағай — слитно. Две strict-нормы охватывают все 12 дословных форм, которые приходят фактами дела; строки, phon/lexicon, enum и map не добавлены. Добавлены CLIR, раннер 3/3, храповики сценариев/разметки/глубины и аудит; KZ-differential 16/16 байтово, UNEXPLAINED 0, doctor.py без пробелов. §§83–85 и §§87–88 оставлены source-first подочередью: их отдельные условия и клетки не содержатся в §86.
-
kz.grammar.eliktew— реестровый №29, следующий source-ready срез волны 5 казахской грамматики (31.08.2026). Source-first закреплены два фрагмента §68 «Орфография ережелері» Сыздық (1 009 байтов; SHA-256 публикации79042dc…f3753): общее дефисное правило для қос сөз и совместно названные повторные одағайлар/еліктеуіш/бейнелеуіш слова. Одна strict-норма охватывает все 10 дословных форм, которые приходят фактами дела; совместное основание не делится на угаданные классы, phon/lexicon, строковый разбор, enum и map не добавлены. Добавлены CLIR, раннер 2/2, храповики сценариев/разметки/глубины и аудит; KZ-differential 12/12 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. №28ustauотложен: источники дают лишь уже использованную координацию §66 и диагностическую ссылку §88, не самостоятельную клетку; порядок не менялся. -
kz.grammar.esimdik— реестровый №27, следующий source-ready срез волны 5 казахской грамматики (31.08.2026). Source-first закреплён §66 «Орфография ережелері» Сыздық (1 610 байтов; SHA-256 публикации79042dc…f3753): три strict-нормы выражают три буквальные клетки — слитное написание с есімдіктермен/үстеулермен, раздельное с существительными и раздельное неопределительногобірв пяти прямо названных сочетаниях. Все 55 дословных форм — факты дела; координация первой клетки, phon/lexicon, строковый разбор, enum и map не добавлены. Добавлены CLIR, раннер 4/4, храповики сценариев/разметки/глубины и аудит; KZ-differential 58/58 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. №25syn-esim-shyraiотложен: источники не содержат клетки «шырай»; №26san-esimне дублируется, потому что прямые клетки §§35 и 47 уже заведены вdefisиkurdeli-san-esim-bolek; порядок не менялся. -
kz.grammar.kosemshe— реестровый №24, следующий source-ready срез волны 4 казахской грамматики (31.08.2026). Source-first закреплены §§10–11 «Орфография ережелері» Сыздық (1 463 байта; SHA-256 публикации79042dc…f3753): три strict-нормы выражают буквально названные клетки көсемше — -й после ы/і даёт один и, -а после и пишется -я, -й после йы/йі даёт один и. Все 20 дословных форм — факты дела; строки §10 о тұйық рай -у/-ю, phon/lexicon, строковый разбор, enum и map не добавлены. Добавлены CLIR, раннер 4/4, храповики сценариев/разметки/глубины и аудит; KZ-differential 25/25 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. №18shaq-osy, №19shaq-otken, №20shaq-kelerи №23esimsheостаются отложены source-first: нет закреплённого фрагмента с их клетками; порядок не менялся. -
kz.grammar.etis— реестровый №22, следующий заведённый срез волны 4 казахской грамматики (31.08.2026). Source-first закреплено примечание 1 §5 «Орфография ережелері» Сыздық (441 байт; SHA-256 публикации79042dc…f3753): одна strict-норма сохраняет ы/і после й при етіс жұрнақтары. Все шесть дословных форм — факты дела; открытые «сияқты» и «т.б.» не превращены в phon/lexicon, строковый разбор, enum или map. Добавлены CLIR, раннер 3/3, храповики сценариев/разметки/глубины и аудит; KZ-differential 8/8 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. №18shaq-osy, №19shaq-otken, №20shaq-kelerостаются отложены source-first: нет закреплённого фрагмента с их клетками и нужными осями; порядок не менялся. -
kz.grammar.rai— реестровый №21, первый заведённый срез волны 4 казахской грамматики (31.08.2026). Source-first закреплён §41 «Орфография ережелері» Сыздық (419 байтов; SHA-256 публикации79042dc…f3753): вторая часть абзаца даёт две strict-нормы III лица повелительного наклонения-сыни-сін. Все четыре дословные формы — факты дела; первая часть §41 о II лице остаётся уzhiktikс отдельным основанием §31. phon/lexicon, строковый разбор, закрытая ось и map не добавлены. Добавлены CLIR, раннер 3/3, храповики сценариев/разметки/глубины и аудит; KZ-differential 10/10 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. №18shaq-osy, №19shaq-otken, №20shaq-kelerотложены source-first: нет закреплённого фрагмента с их клетками и нужными осями; порядок не менялся. -
kz.grammar.tus_atauy_bolek— №17, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §48 «Орфография ережелері» Сыздық (860 байтов; SHA-256 публикации79042dc…f3753): две strict-нормы дают раздельное написание двух, иногда трёх прилагательных, называющих третий цвет, и цветовых сочетаний сал,құба,кер,құла,шабдар. Все 21 дословная форма — факты дела; phon/lexicon, строковый разбор, закрытая ось цветов и map не добавлены. §49 о признаках масти скота не смешан с пакетом и остаётся отдельным source-кандидатом вне реестра. Добавлены CLIR, раннер 3/3, храповики сценариев/разметки/глубины и аудит; KZ-differential 22/22 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.kurdeli_san_esim_bolek— №16, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплены §47 «Орфография ережелері» Сыздық (1 017 байтов; SHA-256 публикации79042dc…f3753) и п. 7 приказа №468 Adilet о мандате Республиканской орфографической комиссии (1 624 байта;e6d0b0…ce02). Шесть strict-норм дают раздельность всех 20 непротиворечивых буквальных форм сложного и приблизительного числительного. Две слитно напечатанные формыекірет/бесретназваны той же строкой раздельными: пакет не изобретает дефитер или исключение, а оставляет оба результатаNEITHER / REQUIRES_JUDGMENTдо adjudicated решения §73; отдельные строгие мосты поддерживают каждый из двух возможных ответов Комиссии. Все 22 примера — факты дела; phon/lexicon и строковый разбор не добавлены. Добавлены CLIR, раннер 10/10, храповики сценариев/разметки/глубины и аудит; KZ-differential 28/28 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.jurnaq_zhalganda_bolek— №15, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §46 «Орфография ережелері» Сыздық (2 578 байтов; SHA-256 публикации79042dc…f3753): две defeasible-нормы сохраняют раздельность после глагольного и именного суффикса, а конкретный defeater гасит ровно раздельный вывод на трёх терминологических примерах; отдельная strict-норма даёт их слитность. Ещё три strict-нормы удерживают два традиционно слитных слова и два производных от раздельного и дефисного собственного имени. Все 19 дословных примеров проверяются фактами дела; строки не разбираются, а неназванные «бес-алты сөз» не превращены в lexicon, enum или map. Добавлены CLIR, раннер 8/8, храповики сценариев/разметки/глубины и аудит; KZ-differential 25/25 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.ush_zat_esim_bolek— №14, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §45 «Орфография ережелері» Сыздық (349 байтов; SHA-256 публикации79042dc…f3753): одна strict-норма пишет отдельно три идущих подряд существительных, когда первые два различают вид предмета, выраженного последним словом. Все 4 дословных примера проверяются фактами дела; строки не разбираются, а примеры не превращены в lexicon, enum или map. Добавлены CLIR, раннер 5/5, храповики сценариев/разметки/глубины и аудит; KZ-differential 5/5 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.dene_mushe_bolek— №13, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §44 «Орфография ережелері» Сыздық (1 130 байтов; SHA-256 публикации79042dc…f3753): одна strict-норма пишет отдельно оба компонента названия органа из двух существительных. Все 30 дословных примеров проверяются фактами дела; «көбінесе … т.б.» в перечне вторых компонентов не превращено в ложные enum/map и не даёт правил для непоказанных пар. Добавлены CLIR, раннер 10/10, храповики сценариев/разметки/глубины и аудит; KZ-differential 31/31 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.kurdeli_soz_bolek— №12, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §43 «Орфография ережелері» Сыздық (4 765 байтов; SHA-256 публикации79042dc…f3753): общее defeasible-правило даёт раздельность на 30 буквальных сложных словах, отдельная strict-норма — слитность прямо описанных сросшихсяшашбау/белбеу.қарақағазтолько исключён из общей нормы: конкретный defeater гасит раздельный вывод и не угадывает взамен слитный. Добавлены CLIR, раннер 8/8, храповики сценариев/разметки/глубины и аудит; KZ-differential 38/38 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. Заведением измерена неверная strict-сила общего правила: она не давала исключению сработать; исправленная defeasible-норма даёт NEITHER в обоих движках. -
kz.grammar.jurnaq_symaq_dagy— №11, следующий заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §42 «Орфография ережелері» Сыздық (1 090 байтов; SHA-256 публикации79042dc…f3753); три самостоятельные клетки пишут-сымақи показанный глагольный-тағыслитно, а частицудағыотдельно. Шесть дословных примеров стоят фактами дела; названные §42, но не показанные примером суффикс-дағыи частицатағынамеренно не угаданы и остаются NEITHER-границами. Добавлены CLIR, раннер 10/10, храповики сценариев/разметки/глубины и аудит; KZ-differential 12/12 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. Прямое одно-посылочное правило-сымақпроверено аудитом как законченное следствие, не стаб. -
kz.grammar.jurnaq_sha_la— №10, первый заведённый срез волны 3 казахской грамматики (31.08.2026). Source-first закреплён §39 «Орфография ережелері» Сыздық (392 байта; SHA-256 публикации79042dc…f3753); две самостоятельные клетки-ша+-ла → -шы-лаи-ше+-ле → -ші-лене угадывают класс основы, cross-пары или дополнительные суффиксы. Добавлены CLIR, раннер 7/7, храповики сценариев/разметки/глубины и аудит; KZ-differential 9/9 байтово, UNEXPLAINED 0,doctor.pyбез пробелов. -
kz.grammar.defis— №9, следующий заведённый срез волны 2 казахской грамматики (31.08.2026). Source-first закреплены §§34–38 «Орфография ережелері» Сыздық: пять strict-правил дают одно узкое следствие — аффикс пишется через дефис после буквенной аббревиатуры, цифрой написанного числа, процентного/градусного знака, сокращённого условного обозначения и буквы либо слова как объекта. Форма аффикса не угадывается по строке и остаётся фактом дела. В закреплённом §37 прямое правило о дефисе соседствует с буквальной строкой «20 кмден» без видимого дефиса; строка сохранена в источнике и отдельном сценарии как измеренная аномалия, не превращённая в выдуманное исключение. Приёмка: 9/9 сценариев, 19 evaluate-вызовов KZ-differential байтово, разметка 8/0 и 5/0, §33.1 EXECUTABLE 5 / UNEXPLAINED 0,doctor.py— «пробелов нет», все 5 правил достижимы, orphan/stub/мёртвых символов пакета 0. CLIR, manifest и точечный ratchet зарегистрированы. §9 «Сөз сазы» об оглушении финалей заимствований не подменён и оставлен отдельным source-кандидатом; следующий реестровый №10 — первый раздел словообразовательных аффиксов. -
kz.grammar.k_g_alternation— №8, следующий заведённый срез волны 2 казахской грамматики (31.08.2026). Реестровое имя сохранено, но source-first §8 «Сөз сазы» формализован ровно по тексту: в одном ырғақтық блоке начальныйбвторого компонента после с/т/қ/к/п/ш произносится приближённо какп. Перечень шести букв не переобъявляетphon: S/T/SH не принадлежат честному закрытому enum §31, а §8 не даёт разного результата внутри перечня, поэтому он подаётся одним эмпирическим фактом дела и не обобщается на всякий глухой. Все пять примеров §8, включая дословное «айтын берді», стоят отдельными сценариями без исправления исходника парсером строк. Приёмка: 8/8 сценариев, 8 evaluate-вызовов KZ-differential байтово, разметка 5/0 и 1/0, §33.1 EXECUTABLE 1 / UNEXPLAINED 0,doctor.py— «пробелов нет», единственное правило достижимо; CLIR, manifest и точечный ratchet зарегистрированы. Граница §9 об оглушении заимствований не смешана с пакетом; следующий реестровый №9 —defis. -
kz.grammar.assimilation_regressive— № 7, следующий заведённый срез волны 2 казахской грамматики (31.08.2026). Источник-первым байтово закреплены §6–7 «Сөз сазы» из той же публикации (SHA-2569a5c6abb…da4248f3; scope ровно 2 из 36 единиц). Два строгих правила выражают закрытые клетки одного ырғақтық блока:н → ңперед қ/к/ғ/г ин → мперед б/п. Условия не переобъявляют ось phon: отсутствие отдельного члена ғ в закрытом enum заменять новой ложной классификацией нельзя, поэтому состав §6 подаётся одним эмпирическим фактом дела. Сценарии включают написанноезиянкес,Боранғали → Бораңғали,Құрманбек → Құрмамбек,Жанпейіс → Жампейіси буквальную границуқызын / күң; лексикон намеренно не подключён, поскольку этих слов в v0 нет. Приёмка: 8/8 сценариев, 10 evaluate-вызовов KZ-differential байтово, разметка 7/0 и 2/0, §33.1 EXECUTABLE 2 / UNEXPLAINED 0,doctor.py— «пробелов нет», orphan/stub/мёртвых символов пакета 0; CLIR, manifest и точечный ratchet зарегистрированы. Следующий № 8 —k-g-alternation(§8 b→p и оставшиеся чередования). -
kz.grammar.assimilation_progressive— № 6, первый заведённый срез волны 2 казахской грамматики (31.08.2026). Источник-первым: байтово закреплены §6 «Ілгерінді ықпал» «Сөз сазы» и мандат комиссии из приказа № 468. Дословные клеткиАман+келді → Амаңгелдіи написанноезиянкес(зиян+кес) противоречат общему выбору формы следующегок: первая объяснена переходом вг, вторая оставляетк. Норма не выдумывает общий фонетический закон: два строгих правила требуютadjudicated-решения Республиканской орфографической комиссии §47.3 (GлибоK), без него ответREQUIRES_JUDGMENT. Переходн → ң, чередования и дефис оставлены № 7–9 с причинами в шапке. Приёмка: 5/5 сценариев, 6 вызовов KZ-differential байтово, разметка 7/0 и 2/0, §33.1 EXECUTABLE 1 / UNEXPLAINED 0,doctor.py— «пробелов нет»; CLIR, manifest и точечный ratchet зарегистрированы. -
Лицензия проекта решена, ядро упаковано в npm (DECISION-0076, 31.08.2026). Плейсхолдер WP-01 закрыт решением владельца: Apache-2.0 на код, CC-BY-4.0 на
spec/— корневойLICENSE,spec/LICENSE,NOTICE,license = "Apache-2.0"в Cargo workspace иpyproject.tomlоракула;publish = falseкрейтов сохранён (crates.io не в объёме),LICENSE-PLACEHOLDER.mdудалён. Первая внешняя публикация — пакет@arxo/law-engine(apps/npm/law-engine/): wasm-сборка ядра, палитра операций §225, типы из нормативных схем. «Закрытое ядро» уточнено владельцем как «только без исходников»: в tarball ни одного.rs/.py(25 файлов, 1,2 МБ), при этом сам пакет под Apache-2.0 — закрытость есть свойство СОСТАВА, а не прав использования.dist/порождаетсяtools/build.mjsи не коммитится: wasm собирается изengines/lawc/(пин тулчейна действует по cwd), типы схем — переименование чистыхprotocol/src/generated/*.tsв.d.tsс проверкой, что рантайм-кода в них нет. Состав держат воротаcheck_npm_package(шаг 26/47, канарейка на подложном экспорте): список экспортов загрузчика против#[no_mangle]крейтаlaw-wasm, союзLawOpтипов против армmatch opвops.rs,LICENSE/NOTICEпакета байтово против корневых — три копии, каждая сверяется с первоисточником. Публикация — только джобойpublish-npm.yml(ворота → сборка пин-тулчейном → смок →npm publish --provenance), принцип DECISION-0064: паблиш есть доставка коммита master через ворота, publish с рабочей машины запрещён. Смок собранного пакета нашёл первое расхождение сразу: конвертfeaturesНЕ несёт поляok(ответ и есть реестр §266.3), хотя рукописный протокол рабочего стола объявляетokобязательным — в типах пакета поле опционально. -
Ось
deadline_policy§168.2 — политика сроков §86 записью инлайн-контекста (DECISION-0077, 31.08.2026). Пятая ось закрытого словаря, единственная блочная:deadline_policy { start_count same_day; include_end true; roll no_roll; month_end last_day_of_month; }. Понижается в полеdeadlinePolicyтранспортного контекста — то же, которое несёт профиль §89.1, — и сливается по §89.1 с победой уровня дела. Семантики не добавлено ни строки: замер показал, что JSON-дело с инлайновой политикой исполнялось идентично делу с профилем ЕЩЁ ДО правки, менялась только запись; вся работа — парсер (блок живёт в грамматике контекста, а не в языке выражений) и понижение. Закрывает класс, который был написан, исполняем и не подтверждён ни одним юрист-читаемым тестом: 48 пакетов корпуса содержатadd_business_days/add_calendar_period, 31 раннер подавал политику профилем, и дела таких пакетов эмиттер пропускал целиком. Запись проверяется СТАТИЧЕСКИ по шести ветвям (значение вне перечня, значение не того вида —include_end "true", неполная политика, чужое поле, поле дважды, блок под скалярной осью), потому что на исполнении часть из них неотличима от ОТСУТСТВИЯ политики: движки отвечаютMISSING_POLICY— «политики нет», хотя она есть, — и автор идёт добавлять уже написанное. Рукописный словарь неизбежен (нормативной схемы дела в 0.1 нет и быть не может, E-0046) и потому сторожится:check_case_shapeсверяет перечни понижения с_START_COUNT/_ROLL/_MONTH_ENDоракула, канарейка на мутации проверена. ВекторLAY-L0-DEADLINE-INLINE-POLICY— та же норма и срок, что уERR-E0029(равносильность транспортов), плюс круг «поверхность → JSON» байтово черезcase.lawcase, которого у близнеца с профилем нет и быть не может. Живой акт:npt-1968переведён на ось — эмиссия даёт 13 тестов из 13 сценариев против прежних 0, два сторожа молчания (ст. X — три месяца, ст. III — восемнадцать месяцев) стали проверками самой даты, добавлен точный сторож отсутствующей политикиexpect issue(MISSING_POLICY)§267.4. Расхождение с типизацией §13 (DeadlinePolicyRef) названо в решении и оставлено 0.2: объявления именованной политики язык не имеет, ссылаться не на что. Замеры: law-hir 183 теста, вектора 375/375,check_test_run121/121 с совпавшими вердиктами, KZ-регрессия и differential по семейству npt 13/13 байтово. -
kz.tarify— акт-таран №3 unit-package, и его вердикт: пункт 3 очереди DECISION-0068 §5 ЗАКРЫТЬ (31.08.2026). Правила дифференциации энергоснабжающими организациями тарифов на электрическую энергию по зонам суток и (или) в зависимости от объёмов её потребления физическими лицами (Казахстан, редакция приказа № 394 от 02.09.2016; действующая редакция НЕ материализуема — все двенадцать её формул растровые, и портал отдаёт одну из двенадцати, остальные 404). Пятьдесят пунктов: EXECUTABLE 46, SOURCE_ONLY 4 объявленными границами, UNEXPLAINED 0; байтовое покрытие 99,9 % (61 фрагмент); 55 сценариев, 18 рукописных.lawtest, differential 71 вызов байтово; три полосные таблицы A3 (часы зон суток двух систем учёта и коэффициенты уровней 1,2/1,5). Замер тарана — 45 проб обеими реализациями, расхождений ноль (corpus/tools/checks/probe_tarify_units.py); разбор и вердикт —corpus/laws/kz/tarify/audit.ru.md§3. Направленный поиск свидетеля умножения размерных пар СВИДЕТЕЛЯ НЕ НАШЁЛ: произведений двух размерных величин в акте-максимуме ровно ОДНО на 102 правила (среднесуточный расход × число дней, пункт 3 подпункты 19 и 4), и оно исполняется четырьмя операциями существующих форм E-0068 + E-0074. Главный результат, которого DECISION-0068 предсказать не мог: самый сильный кандидат предметом пункта 3 не является — формула платыП = Wо*Tоумножает киловатт-часы на тенге за киловатт-час и даёт ДЕНЬГИ, то есть требует мостаQuantity§49 →Money§50, а не операции внутри алгебры величин, и рамка 1 называет прецедент §50 нормативным. Побочный замер, обязательством не оформленный: границаMoney/Quantityмолчалива в обе стороны («плата минус тариф» вычисляется без диагностики; объявленныйMoney-слот принимает величину чужого тега со статусом TRUE_ONLY). Черновик записи в DECISION-0068 §5 приложен к audit текстом и в решение НЕ внесён — за владельцем. -
Наблюдение
position(Шаблон, Статус)§267.4 — адресный статус конкретной нормы в.lawtest(DECISION-0075, 31.08.2026). Третий предикат словаря наблюдений DECISION-0036 над evaluation-документом: истинен, когдаpositions[]несёт позицию названного норм-шаблона в названном статусе §134; отрицаетсяnot. Закрывает замер 30.08: агрегатныйnormative_status§174 при второй норме на деле отвечаетUNDETERMINED, и конкретную обязанность поверхность §267 проверить не могла — умел только Python-раннер фильтром поtemplate, а соблазн «подогнать дело под одну позицию» превращал дело об акте в дело об одном правиле. Оба имени проверяются по роду: статус — статически по перечню нормативной схемы (LDC-E1319), шаблон — раннером с причиной «такого норм-шаблона в программе нет» (симметрияapplied, программа при lowering не предъявлена §169). Сопоставление — независимые половины обеих реализаций, формулировки причин байтово совпадают; воротаcheck_expectationsвыросли с 5 до 9 ветвей (зелёная ветвьposition— две нормы одного носителя в статусах VIOLATED/ACTIVE, различимые только адресно; фикстураact.lawполучила пару норм maintenance/achievement). Prose-долг DECISION-0036 закрыт тем же изменением: новый §267.4 описывает все три наблюдения и объявляет словарь закрытым с аддитивным расширением. Замеры: law-hir 181 тест,check_test_run125/125 с совпавшими вердиктами, вектора 374/374. -
Новый пакет
la.newton.principia— «Principia» Ньютона (первое издание, 1687): Definitiones + Axiomata как исполняемая система (31.08.2026). ПЕРВЫЙ АКТ ИСТОРИИ НАУКИ. Закреплён аксиоматический каркас первоиздания целиком — 19 единиц (Def. I–VIII, схолия, Lex. I–III, Corol. I–VI, схолия к законам) из постраничной транскрипции факсимиле по приколоченным ревизиям каждой страницы; сквозная нумерация единиц приложена закрепляющим скриптом (прецедент Велльхаузена), подлинные заголовки — в байтах, включая «Corol. IIII.» первоиздания. Закон I записан презумпцией с барьером («nisi quatenus … cogitur» — буквально unless), поражаемой цепью строгих правил определений (тяжесть → центростремительная → приложенная); закон II — арифметика «частей» по букве текста (additur / subducitur / «fiet motus … in plagam contrariam» при f > p); закон III — правило реакции с громким сторожем неравных взаимных действий. Фикция относительного покоя на корабле НЕСУЩАЯ (deem истинной скорости читается мостом к Def. II), рекурсия участия — черезmonotone(...); знаковое сохранение Corol. III без энумов и без!=над сущностями. Величины — в «частях» самого текста (СИ в первоиздании нет), эталонная запись E-0068 +with_unitE-0074, ноль де-юнита; тегов силы нет намеренно — Def. VII–VIII меряют силу порождаемыми частями скорости/движения. Дела — числа самого текста: 2×2=4 (Def. I), 10010−10+1=10001 (схолия), 6+10=9+7 и 12−6=−2+8 (Corol. III), 16→15 (стекло 15/16; шерсть 5/9 не 10-гладка и названа невзятой), рычаг «pondera reciproce ut radii», Галилей крест-накрест без деления. Контрфактуал «sublata aeris resistentia» на снаряде из примера самого закона. Мера §33.1: EXECUTABLE 16/19, UNEXPLAINED 0 (Corol. I/V/VI — объявленные границы с despite: геометрия направлений; сравнение двух исполнений); закрепление 99,2 %; 37 сценариев с порогами парами и падающим сторожем границы единиц (TYPE_ERROR), differential 63 вызова байтово,.lawtest5/5, разметка 83/1 (остаток — измеренный пробел шаблона §218 у function_decl, причина в $comment храповика), doctor чист. Границы: книги I–III (непрерывная динамика) и векторная композиция — вне поверхности по построению. Полный отчёт —corpus/laws/la/principia-1687/audit.ru.md. -
Новый пакет
kz.corpus.ogpovts— ОГПО ВТС, Закон РК от 01.07.2003 № 446-II (31.08.2026). ПЕРВЫЙ АКТ КОРПУСА, ГДЕ СУММА ПОЛУЧАЕТСЯ ПРОИЗВЕДЕНИЕМ КОЭФФИЦИЕНТОВ: базовая страховая премия в 1,9 МРП (ст. 19 п. 2) умножается на пять множителей — территорию регистрации, тип транспортного средства, возраст со стажем, срок эксплуатации и бонус-малус, — и годовая премия выводится end-to-end на деле с посчитанным руками ответом (OGPO-01: 4325 × 1,9 × 2,96 × 2,09 = 50 836,742 ₸; МРП читается изkz.corpus.budget, а не вшит константой). ДВЕ ОСИ ИЗ ПЯТИ — A3-ТАБЛИЦЫ, И РОВНО ТЕ, ЧЬИ ВХОДЫ ЧИСЛОВЫЕ: возраст/стаж (п. 7) и срок эксплуатации (п. 9); территория, тип ТС и вид страхователя остались правилами, потому что схема A3 знает в ячейке только литерал, а доменная константа в текстовой колонке перенесла бы тождество значения со символа на строку. ДЫРА САМОГО ЗАКОНА ВЫРАЖЕНА КАК ОТСУТСТВИЕ ОТВЕТА: пункт 7 знает «стаж менее 2 лет» и «стаж более 2 лет», стажа ровно в два года нет ни в одной строке — таблица объявленаtotal: false, премия на таком деле не выводится вовсе, и сценарий OGPO-08 покраснеет, если дыру закроют догадкой. ПРОЦЕДУРЫ §160 В ПАКЕТЕ НЕТ, И ЭТО НАХОДКА, А НЕ ПРОПУСК: приложения с классами бонус-малус у закона не существует — статья 19 пункт 10 целиком поручает расчёт подзаконному акту уполномоченного органа, поэтому коэффициент (как и поправочный коэффициент пункта 3-1) входит ФАКТОМ ДЕЛА, а границу стерегут OGPO-19 и OGPO-20: дело без делегированного множителя не даёт премии НИКАКОЙ. Льгота статьи 20 записана двумя предикатами подряд (annual_premium_calculated→premium_payable) с дефитером §95.3, потому что часть первая считает пятьдесят процентов «от премии, рассчитанной в соответствии со статьей 19» — величина статьи 19 обязана оставаться выводимой и на льготном деле;priority§116 здесь неприменим по построению (он не разделяет два РАЗНЫХ ЗНАЧЕНИЯ одного отношения), а часть вторая выражена строгим встречным барьером с замыканием §70. Шесть льготных категорий — шесть правил (§206). Срез первой очереди: EXECUTABLE 2 из 46 статей, фрагменты §194 на все 46, покрытие текста 98,9 %, 9 исключённых статей объявлены границей с номерами отменяющих законов; 21 сценарий регрессии, 3.lawtest, differential байтовый на 34 evaluate-вызовах. Границы, очередь и вердикты по 37 неиспользованным конструкциям —corpus/laws/kz/ogpo-vts/README.ru.md. -
Новый пакет
us.cfr.vin— контрольный знак VIN, 49 CFR Part 565 (31.08.2026). ЧЕТВЁРТЫЙ ЧЛЕН ЛИНИИ ИДЕНТИФИКАТОРОВ И ЕДИНСТВЕННЫЙ, ЧЬЯ АРИФМЕТИКА ПРЕДПИСАНА НОРМАТИВНЫМ АКТОМ, А НЕ ПЛАТНЫМ СТАНДАРТОМ: уiso.check_charactersподлинник ISO/IEC 7064 заперт и закреплён через свидетелей (ORCID, Swift), здесь же таблицы значений знаков (III), весов позиций (IV) и остатков (V) напечатаны в тексте самих правил, а § 565.15(c)(5) приводит ЭТАЛОННЫЙ РАСЧЁТ с числами (Табл. VI: сумма 411, остаток 4, знак «4»). Норма и её проверочный вектор закреплены ОДНИМИ байтами, и сцены VIN-01…VIN-03 сверяют реализацию с самим актом, а не с сочинённым вектором. Три замыкания §70: набор знаков § 565.13(g) закрыт перечнем, а отсутствие I, O и Q ВЫВОДИТСЯ (утверждать их списком значило бы добавить к акту знание об алфавите, которого он не выражает); неоднозначность кода года выводится из самой Табл. VII; область примечания исчерпана тремя классами машин. НЕОПРЕДЕЛЁННОСТЬ, ОСТАВЛЕННАЯ АКТОМ, ВЫРАЖЕНА КАК РЕЗУЛЬТАТ: код года «5» — это и 2005, и 2035, примечание снимает неоднозначность позицией 7 лишь для легковых, лёгких многоцелевых и лёгких грузовиков, а для автобуса, прицепа и тяжёлого грузовика различителя НЕТ — пакет выводитmodel_year_undeterminedи называет причину вместо молчаливого выбора (VIN-24…VIN-26, включая лёгкий автобус: оговорка о массе ему не помогает). Побочное свойство: у буквы I нет строки в Табл. III, поэтому контрольный знак номера с ней не вычисляется вовсе, но нарушение § 565.13(g) при этом не молчит. Таблицы положеныassert-фактами, НЕ A3, и решение измерено:mode: rulesтребует факта<id таблицы>/input, не адресуемого с поверхности.lawtest, а значение нужно КАЖДОЙ из семнадцати позиций — таблицей всякий тест пакета стал бы невыразим. Меры §33.1: охват 16 из 16 секций, EXECUTABLE 2 (§ 565.13, § 565.15), четырнадцать границ объявлены с причиной и сdespiteтам, где в тексте есть «shall» (UNEXPLAINED 0, text coverage 14,7 %). Заголовок «полная формализация» НЕ заявлен: подчасть C (арифметика тождественна, расхождения ровно два — Табл. XIII и § 565.25(b)) и отчётность перед NHTSA названы ДОЛГОМ, а физические требования и отсылки к незакреплённым актам — невычислимой границей. 25 правил, 13.lawtest, 27 сцен регрессии, differential 26/26 байтово. -
Новый пакет
w3c.css_cascade— каскад и умолчания CSS, W3C CSS Cascading and Inheritance Level 5 (31.08.2026). ПЕРВЫЙ АКТ КОРПУСА, ЧЕЙ ПРЕДМЕТ ЕСТЬ РАЗРЕШЕНИЕ КОЛЛИЗИЙ КАК ТАКОВОЕ: всюду ещё приоритет норм — механизм, применяемый к предмету, здесь он и есть предмет. Шесть критериев раздела 6.1 (происхождение и важность, контекст инкапсуляции, element-attached, слои, специфичность, порядок появления) записаны ЦЕПЬЮ «решает / равно» — по два правила на критерий, очередь несёт собственноеtied_after_…, — а не механизмомpriority§116: тот упорядочивает ПРАВИЛА внутри страты, здесь же упорядочиваются ДАННЫЕ дела, и порядок обязан быть выводом, доступнымwhy-notи карте спора. Восемь ступеней перечня 6.1 закодированы рангом «позиция × 10» — множитель нужен ровно затем, чтобы ступень подсказок разметки раздела 6.5 («between the regular user origin and the author origin») встала на 65, не перенумеровывая список, которого в документе нет в числах. «Обычное» объявление выводится ЗАМЫКАНИЕМ §70 («All other declarations are normal» есть утверждение о закрытости перечня): заявленное фактом, оно у забывчивого дела не получило бы НИ ОДНОЙ ступени и молча выпало бы из каскада при зелёномcheckи зелёном differential. Ни одного!=над сущностями — каждый критерий решает СТРОГИМ сравнением, поэтому объявление не побеждает само себя, и молчаливый класс «посылки TRUE_ONLY, голова NEITHER» к пакету не подступает по построению (сторож CSS-CASCADE-35). Глубина §33.1: EXECUTABLE 22 из 56 разделов, остальные 34 — объявленные границы с причиной ПО ТЕКСТУ статьи, 21 из них с полемdespite; главная граница названа документом дословно — раздел 4.4 требует «values with relative units … must be made absolute by multiplying», то есть умножения величин длины, которого замкнутая поверхность вычислимого не содержит. Куда попадает ВАЖНАЯ подсказка разметки, документ не говорит нигде: правила нет, ответNEITHER, молчание сторожится ПАДАЮЩИМ ожиданием CSS-CASCADE-34. 36 сценариев (ступени 6.1 проверяются СОСЕДНИМИ парами — порядок, проверенный на далёких, не проверен), differential 70 вызовов байтово, 3 теста §267 через Rust-движок, метки §218 103/0 и 69/0. -
Конвенция единицы
spec_sectionи правопорядокW3C(31.08.2026). Раздел спецификации («6.4.3. Layer Ordering») заведён отдельным именем, а не алиасомrfc_subsection, и развёл их ТЕРМИНАТОР — то самое, чем конвенции различаются: у RFC после последнего раздела нет ничего, у спецификации W3C идут ненумерованные приложения, и раздел 9.8 забирал их себе вместе с 16 % байтов документа и чужим «MUST» из формулы RFC 2119 в разделе Conformance — объявленная граница отвергалась ссылкой на деонтику, которой в самом разделе нет ни одной.W3Cвписан в перечень §27.1 отдельно от IETF по признаку, которым та запись себя от прочих и отличает: у IETF нет ни членства, ни учредительного акта, а у Консорциума есть уставный Процесс — и именно он объявляет неизменяемость датированной публикации, на которой стоит закрепление источника. -
Трихотомия Евклида: последний долг
grc.eukleides.pythagorasзакрыт — два новых закреплённых документа, доктринальный шаг с машинным основанием и режимsmt_witness --totality(31.08.2026). Закреплены II.12 и II.13 («Στοιχεία/β»,oldid=92614) и определение I.21 (Ὅρος κα΄) — пакет несёт теперь ТРИ документа и ДВА источника (книги I и II — разные единицы издания §26; определения — третья edition при источнике книги I, документ свой, сочинение то же). Байты книги I не тронуты:sha256:6a3addea…тот же. Сверка с Гейбергом пофразная по всем трём — девять опорных фраз, длины 0,97—1,03; найден второй квирк сверочного издания: в perseus-grc2 пропущено предложение n=7 книги II (13 див на 14), того же рода, что известный пропуск n=30 книги I. Спорный выбор по определению I.21 разрешён третьим путём и записан в журнал: ни расширение срезаgrc.txt, ни ссылка локатором, а СВОЙ документ со своей единицей — довод измеренный,articles.jsonнесёт одну единицу на документ, а «Ὅρος» не есть «Πρότασις», и влитое определение пришлось бы либо назвать предложением (ложь о структуре сочинения), либо оставить вне всякой единицы, уронив закрепление с 96,2 %. Оснастка: конвенция единицыhorosв ОБА реестра §33.1 плюс имя единицы в таблицыboundaries.py,articles.jsonв форме{"editions": [...]}(DECISION-0026), многодокументные fetch и sync. Формализация — четыре правила и названный вслух доктринальный шаг. II.12/II.13 суть РАВЕНСТВА с членом-прямоугольником («μεῖζόν ἐστι … τῷ δὶς ὑπὸ τῶν ΓΑ, ΑΔ περιεχομένῳ ὀρθογωνίῳ»), исполнимо из них НАПРАВЛЕНИЕ неравенства — проекция делом не дана и в целых невыразима, остаток объявлен остатком единицы рядом с доказательствами. Обратных к II.12/II.13 у Евклида НЕТ (в отличие от пары I.47→I.48), и правила распознавания родов стоят на ПОЛНОТЕ трихотомии; шаг записан в шапке модуля 04 и — гвоздь работы — получил машинное основание. Асимметрия голов (три правила по позиции у тупоугольности против ОДНОГО с тремя гардами у остроугольности) — буква определения I.21, ради которой оно и закреплено; каждое правило несёт ДВА@source(гард из предложения, голова из определения), без чего определение числилось бы «адресуемым, но ничего не выводящим» при четырёх правилах, чьи головы им и определены. Инварианты: четыре попарных UNSAT и один о полноте.--invariantдаёт UNSAT по всем комбинациям продюсеров §206 у всех четырёх пар (3, 3, 3 и 9 — последняя после починки капа). Попутно закрыт молчаливый кап: у пары «прямоугольный ⊥ тупоугольный» комбинаций 3×3=9, а перебор обрывался наMAX_BRANCH_COMBOS=6и печатал «UNSAT на 6 из 6», читаясь как исчерпывающий; заведёнATTACK_BRANCH_COMBOS=64(у свидетеля комбинации взаимозаменимы, у атаки конъюнктивны), усечение теперь ОТМЕНЯЕТ вердикт и печатается словами. Заведён режимsmt_witness.py --totality— третья цель того же кодировщика: требование-дизъюнкция («всякий треугольник одного из трёх родов»), отрицаются гарды ВСЕХ продюсеров каждого рода сразу, а гарды домена I.20 внутри тех же продюсеров остаются утверждёнными (иначе решатель уходит от противоречия, перестав быть треугольником); доля гардов остаётся СВОБОДНОЙ — отрицание конъюнкции есть дизъюнкция отрицаний. Ответ — UNSAT на 3 из 3 комбинаций отрицания: вне трёх родов треугольника не бывает, без перебора троек и без капа на стороны. Граница среза--invariantпри этом не задевается, и это ПРОВЕРЕНО: отрицание сравнения снова сравнение (¬(x == y)естьx != y), негации выводимых предикатов в скрипте нет ни одной. Канарейки в обе стороны у каждого инварианта: снятый гард контрапозиции I.47 → SAT ровно на своей ветви, контрпример 4-3-5, движок подтвердил; снятый продюсер тупоугольности → SAT, контрпримерpleurai(t, 2, 3, 2), движок подтвердил (антецедент TRUE_ONLY, ни один род не TRUE_ONLY); мета-канарейка обезвреженной кодировки (mul→+) — ОБЕ стороны отвечают UNSAT; мета-канарейка опущенного капа — вердикт отменяется. Все четыре заморожены воротамиcheck_smt_invariant.py. Измерено: мера §33.1 — EXECUTABLE 6 из 6 по трём документам (3+2+1) при UNEXPLAINED 0; учёт единиц 3/3, 2/2, 1/1, неучтённых 0;lawc checkчист; регрессия семейства 27/27 (было 17); KZ-differential 35 вызовов байтово идентичны; Lean-зонд 35 сертификатов приняты, 0 отвергнуто;.lawtest18/18 (8 рукописных + 10 перенесённых из моделей z3); свидетели покрытия 13 из 13, контроль чист у 13 — z3 вышел на края существования сам (тупоугольные 2-6-7, 5-4-2, 4-7-4 — два последних треугольники с запасом в единицу — и остроугольный 3-3-1); разметка §218 словарь 10/0, нормы 13/0;doctor.py— «пробелов нет»; fetch и sync--checkидемпотентны. A/B по байтам ДОсессионных сцен: results идентичны 20/20, issues идентичны 20/20, proof-граф вырос ровно на один узел у семи вызовов — на делах 2-3-4, 4-5-6, 3-4-6 и 1-1-1, где новые правила рода действительно применяются; движение шире трёх хэш-путей и названо этим, ни один ответ не сдвинулся. Обратные II.12/II.13 нигде не выдаются за предложения Евклида. -
Новый пакет
grc.euclid.angles— «Начала» Евклида, десять предложений об углах (31.08.2026). ПЕРВЫЙ АКТ КОРПУСА, ГДЕ ДВИЖОК ВЫВОДИТ ЧИСЛА ЦЕПОЧКОЙ ПРАВИЛ, а не проверяет статусы: школьная задача есть дело, теоремы I.13/I.15/I.27—I.29/I.32 и III.20—III.22/III.31 — strict-правила с вычисляемым аргументом головы, ответ — вывод, а proof-граф и есть решение с именем предложения на каждом шаге (сцена цепи глубины четыре: I.13 → I.29 → I.32 → I.15, ни одного промежуточного числа в условии). Рекурсия по ЗНАЧЕНИЮ черезsupported(...)§65/§103 — голое чтение выводимого предиката отвергается стратификацией §110 (LDC-E4102). Мера углаDecimal, а неInteger: III.20 делит пополам, аInteger / IntegerдаётRational, не смешиваемый с целым ничем (§48/§58), — приIntegerобратное направление III.20 невыразимо вовсе, а не «выразимо только для чётных».key(a)§45.1 на мере делает противоречивое условие громкимKEY_CONFLICT§196, а переопределённое согласованное — не роняет вовсе.why-not§185 на недоопределённой задаче называет НЕДОСТАЮЩУЮ ПОСЫЛКУ — «почему не решается» как подсказка ученику. Два закреплённых документа по числу книг (номер предложения принадлежит книге: «Πρότασις 20.» книги I и книги III — разные предложения), греческие байты Викитеки по приколоченным ревизиям, сверка с Гейбергом (Perseus) по двадцати опорным фразам. Глубина 6/6 и 4/4 EXECUTABLE при UNEXPLAINED 0, стабовых мостов 0, покрытие правил ПРОГОНОМ 25/25 (синтез дела бессилен: фаззер не порождает скаляров, единственный числовой гард вне среза SMT), 23 сценария + 14 рукописных.lawtest-задач с разбором, differential 22 вызова байтово, Lean 22/0, разметка 23/0 и 25/0, doctor чист. -
Расходящееся замыкание при противоречивом числовом условии — измерено и закрыто сценой (31.08.2026). Школьное «в треугольнике 40°, 60° и 90°» НЕ даёт
KEY_CONFLICT: три правила суммы I.32 кормят друг друга, каждая новая пара мер даёт новую третью, множество значений растёт без границы (1978 фактов и 350 тыс. приложений за две минуты), аcheck_keys§45.1 исполняется ПОСЛЕ замыкания и не наступает никогда — прогон не краснеет, а виснет. Класс шире пакета: он возникает всюду, где числовые правила взаимно выводимы и условие противоречиво. Ловится только семантическим лимитом §238;grc.euclid.anglesдержит пару сцен — противоречие на смежных углах (замыкание сходится,KEY_CONFLICTгромкий) и то самое «40/60/90» сmaxGroundedApplications(фатальныйRESOURCE_LIMITбез частичного результата). Разбор —corpus/laws/grc/euclid-angles/audit.ru.md, раздел «Расходящееся замыкание». -
Конвенция единицы
protasisдоведена до всех ЧЕТЫРЁХ реестров (31.08.2026). Предложение «Начал» стояло вDECLARED_CONVENTIONSворот закрепления иact_split.py, но не в двух таблицах имёнboundaries.py, и мера печатала «статей: 6» о книге Евклида — верное число при неверном слове. Вписаны «предложение» и «предложений»; проба после правки —boundaries.py <grc-i.txt> <clir>называет единицу своим словом. -
Новый пакет
us.cfr.maritime_distress— процедуры бедствия морского радиообмена, 47 CFR §§ 80.311–80.335 (31.08.2026). Первый акт о протоколе речевого радиообмена: замкнутый словарь сигналов (MAYDAY, PAN PAN, SECURITE, SEELONCE MAYDAY/FEENEE), деонтика услышавших станций, составы передач строгими классификациями, ретрансляция MAYDAY RELAY тремя основаниями §206, радиомолчание § 80.326(b) тремя носителями (maintenance-duty с VIOLATED от отрицательного факта §67, институциональная голова нарушения, автомат §160 с ветвью ложного оповещения и сторожем §164). Заведена конвенция единицыcfr_sectionв обе меры §33.1 — глубина 21/21 EXECUTABLE при UNEXPLAINED 0. Сценарии 105/105 со стражем покрытия правил (107/107 по двум видам proof-узлов), differential 104 вызова байтово,.lawtest3/3, разметка 214/6 (E-0044) и 120/0, doctor чист. -
Новый пакет
iczn.code.priority— ICZN, статья 23 «Принцип приоритета» (31.08.2026). Первый пакет номенклатурного кодекса: прецеденция имён ПАРНАЯ (has_precedence), не тотальныйvalid_name— презумпция валидности с unless по поражаемомуhas_precedenceизмерена пробой мёртвой (unless уезжает стратой выше presume, §116), и сам Кодекс говорит парами («the younger name has precedence over the older», 23.9.2). Ядро: старшинство по дате (23.1), презумпция прецеденции старшего с четырьмя поражениями из текста (невалидность, реверс 23.9, решение Комиссии, отвергнутость по бывшей ст. 23b — 23.12), реверс 23.9 с порогами-константами 25 работ / 10 авторов, границей 1899 года и окном 50/10 лет календарным шагом §84.2, nomen protectum / nomen oblitum, обязанности передачи дела Комиссии (23.9.3, 23.11 — duty §134) и интерим ст. 82. Канал Комиссии — external judgment §47.3: открытая клетка несёт REQUIRES_JUDGMENT, отказ судьи закрывает канал (сторож KZ-ICZN-18), строгое решение пробивает поражённую презумпцию — ровно оговорка 23.12 «unless the Commission rules» (KZ-ICZN-20). Источник — официальное онлайн-издание code.iczn.org (CC BY), извлечениеextract_iczn_text.pyдетерминировано, фрагменты 23.1–23.12 нарезаетsync_iczn_priority_fragments.py(строка в run_all.sh). Сценарии: 27, каждый порог парой по обе стороны границы; KZ-differential 42 вызова байтово;.lawtest3/3 (третий — сторож молчания политики §86 по образцу id.halal); разметка §218 44/0 и 31/0; doctor чист. -
Порядок rule_item свободен, как и обещала грамматика (E-0073, 31.08.2026). Заведение
kz.id-number-2007вскрыло:grammar.ebnfдержит тело правила неупорядоченным множеством, а парсер принимал биндерыforтолько ПРЕФИКСОМ —effective …; for …;падал с двумя ложными LDC-E0201, при том что presumption/fiction/constraint ту же перестановку принимали всегда. Квалификация — дефект lawc (три соседних парсера семьи уже исполняли грамматику как написано); правка аддитивна — цикл itemsrule_declполучил ветвьfor, биндер законен в любом месте тела, включая позицию после читающего егоwhen; канонический порядок разбирается прежним путём, ни один CLIR не сдвинулся. Пины: векторERR-E0073-RULE-ITEM-ORDER(hash-compare: канон против перестановки — равный semantic hash §209; IR порождает lawc, хэш считает lawref) и unit-тест law-hir (документы равны как значения). Прогон: векторы 377 (368 runnable зелёные), cargo workspace зелёный, clippy чист. -
kz.id-number-2007— исторический срез пост. № 406 с окном действия [13.08.2007, 01.09.2023): право, которое отвечает по legal_time (31.08.2026). Заведёнcorpus/laws/kz/id-number-2007— третий пакет линии идентификаторов: УТРАТИВШИЙ СИЛУ акт, закреплённый последней консолидированной редакцией, где КАЖДОЕ правило несётeffective-окно. Левая граница — В ЗАКРЕПЛЁННЫХ БАЙТАХ («вводится в действие с 13 августа 2007 года», п. 2); правая — дата акта отмены (№ 758) с ЗАПИСАННОЙ погрешностью до ~двух недель (день опубликования № 758 в байтах отсутствует); внутренние даты редакций пунктов не моделируются осознанно — срез отвечает «что говорила последняя редакция и когда акт действовал». Обе стороны окна пинуются: до ввода в действие акт принят-но-молчит, после отмены — те же цифры дают NEITHER. Ключевая находка уточнила соседний пакет: даже № 406 даёт алгоритм словами «в составе ИИН» (п. 3), а контрольную цифру БИН называет «определяемой автоматически» (п. 5 ч. 5) — алгоритм для БИН не был установлен буквой НИ В ОДНОЙ редакции; формулировки kz.bin поправлены тем же днём (CLIR не сдвинулся — правка комментариев). Исторические отличия от 2023 выражены правилами и пинами: КФХ(С) в а6 — значение 3 (в 2023 — 4), исключений 0-3 и резерва 7-9 НЕТ (молчание пинуется), порог серии МФЦА 90001-99999 — парой сценариев по обе стороны нижней границы. Попутно измерено: rule_item в реализации порядко-чувствителен —effectiveПОСЛЕ биндеровforразбирается, ДО них — LDC-E0201 (грамматика объявляет items неупорядоченными; кандидат в errata). Измерено:lawc checkчист; 6/6.lawtest; регрессия семействаid_number_20078/8; differential 8/8 байтово; разметка 27/0 + 23/0; doctor — «пробелов нет»; стаб-цепь 1/23 (4 %) — объявленный в шапке п. 4. Границы: «Правила обращения» и формы — вне среза (закреплены, не фрагментированы); их процедурные сроки — кандидат отдельного захода. -
Инструменты корпуса впервые АТАКУЮТ математическую теорему: z3 переоткрыл пифагорову тройку 3-4-5, взаимоисключение I.47/I.48 доказано UNSAT, а слепое покрытие и SMT-ветвь измеримо отвечают на РАЗНЫЕ вопросы (31.08.2026,
grc.eukleides.pythagoras). Закрыт долг §4 аудита пакета; разбор — раздел 6corpus/laws/grc/euclid-pythagoras/audit.ru.md. Носитель инварианта выбран пробой, а не вкусом:property§270 мёртв обеими дорогами (expect not ouk_orthogonion(t)→LDC-E1316; обходcount(collect … where <выводимое>) == 0→ барьер §111, вердикт «НЕ ПРОВЕРЕНО» при непустом домене), аconstraint§93.1 выразим и — главное — ЧИТАЕМ: он узел программы, его называет отчёт фаззера, по его гардам работает атака. Третий кандидат отвергнут по месту:definition … necessaryдаёт единственную форму с голым литералом в антецеденте (ту, что охота §93.1 действительно берёт), ноdefinitionОБЪЯВЛЯЕТ имя, аorthogonionуже объявлено (LDC-E1201), и заводить ради инструмента третий предикат значило бы вписать в право мёртвый символ. Байты после заведения инварианта разобраны, а не приняты: регрессия 17/17, differential 20/20 байтово, а A/B до/после показал расхождение РОВНО трёх путей —manifest.programHash,manifest.semanticHashи производный от нихresultHash; со снятыми тремя хэшами 20 из 20 документов байтово идентичны (результаты, proof-графы, issues не тронуты), потребителей у сдвига нет — импортирующих пакет ноль. Замер фаззера — точка отсчёта, а не провал: 0 из 9 правил и у слепого, и у--targeted 30/60, и при--max-assertions 200; причина названа манифестом, а не догадкой — пулаIntegerНЕТ ВООБЩЕ (scalarPools={Text: 1},constPoolsпуст), потому что чисел в документе нет ни одного: они приходят делом. Ни одна из трёх известных ловушек фаззера (MAX_GROUNDINGS,WORLD_CAP,interpretation) здесь не при чём — случай четвёртый и чистый. SMT-ветвь пути 3 закрыла 9 из 9 за 0,3 с, и расширятьsmt_witnessпод нелинейный гард НЕ ПОНАДОБИЛОСЬ (находка сессии:mulстоит вBINARY_OPSс заведения инструмента,(set-logic …)скрипт не объявляет, z3 выбирает NIA сам;unknownне возвращён ни разу, кап на стороны не потребовался). Модели поимённо:OrthogonionProsTritei— 4, 3, 5;OrthogonionProsProtei— 5, 4, 3;OrthogonionProsDeuterai— 3, 5, 4 (одна и та же египетская тройка во всех трёх перестановках — решатель вышел на неё, не зная ни о Пифагоре, ни о том, что конвенции «гипотенуза последняя» у пакета нет);OukOrthogonionKataPythagoran— 7, 1, 7;TrigononEstin— 1, 1, 1; три правилаOudeTrigonon— 0, 0, 0. Покрытие засчитано только поrule_application§180 в proof-графе исполненного дела, контроль чист у 9 из 9, а девять выгруженных сценариев О-1 реплеены НЕЗАВИСИМЫМ путём (lawc evalвместоliblaw_ffi) — 9/9TRUE_ONLYс тем же применением. Заведён режимsmt_witness.py --invariant— вторая цель того же кодировщика: конъюнкция гардов антецедента и НАРУШЕНИЯ требования по всем комбинациям продюсеров §206 (тождество сторон обеспеченоkey(t)§196, а не допущением). Инвариант «не бывает треугольника и прямоугольного, и не прямоугольного» — UNSAT на 3 из 3 ветвей, 10 гардов каждая: взаимоисключение доказано без перебора троек и без ограничения на величину сторон. Канарейка обязательна и не декоративна: из контрапозиции I.47 снят ОДИН гард (a*a + b*b != c*c) — красной стала РОВНО та ветвь, чей продюсер ему противоречит (OrthogonionProsTritei), две другие остались UNSAT, контрпример — снова 4, 3, 5, и он подтверждён ДВИЖКОМ (TRUE_ONLYна обоих предикатах сразу), exit 0/1. Мета-канарейка измерена тут же: при обезвреженной кодировке произведения (mul→+) обе стороны отвечают UNSAT — разучившийся кодировщик выглядит доказателем, и без второй стороны это UNSAT не значит ничего. Обе стороны плюс граница среза (требование-позитив отвергается поимённо: его нарушение есть ОТСУТСТВИЕ вывода, а не гард) заморожены воротамиverify/ci/gates/layers/check_smt_invariant.py, шаг 38/47run_all.sh— 91 → 92 проверки в конвейере. Атака нашла и в самом пакете: свидетелем сторожа заявленного угла z3 выдал стороны 5, −1, −5 — отрицательные длины, треугольника не составляющие; вердикт «это область нормы, а не дефект» (сторож говорит о противоречии ВХОДА, и гейт существования заставил бы его молчать ровно о делах, невозможных дважды), граница закреплена тестом, а не спрятана. Порождённые тесты:--emitдаёт сценарии О-1, а не.lawtest(генератора О-1 →.lawtestв репозитории нет), поэтому шесть моделей z3 перенесены в.lawtest§267 рядом с пятью рукописными, не заменяя их, —lawc test5/5 → 11/11; машинные тесты добавили две оставшиеся позиции прямого угла, не-тройку 7-1-7, полное вырождение 0-0-0, минимальный равносторонний 1-1-1 и границу с отрицательными сторонами, которых рукописная батарея не держала. Итог, ради которого замер и делался: фаззер спрашивает «встретится ли такое дело, если брать значения ИЗ ДОКУМЕНТА» (0 из 9 — в документе чисел нет), SMT-свидетели — «СУЩЕСТВУЕТ ли значение, при котором правило применяется» (9 из 9), атака — «существует ли значение, при котором ДВА правила применяются вместе» (UNSAT 3 из 3). Все три меряются «в правилах» и оттого выглядят одной шкалой; пакет без единого числа в документе разводит их до предела на одном и том же CLIR. Практическое следствие: «фаззер ничего не нашёл» никогда не является утверждением о праве — ни о покрытии, ни об инварианте (написанные руками констрейнты охота §93.1 пропускает по построению, и её молчание означает «не смотрел»). -
kz.bin— Правила формирования БИН (приказ Минюста РК от 27.06.2023 № 423): пять фасетов структуры выражены правилами, а алгоритм контрольного разряда ОСИРОТЕЛ — записанная граница (31.08.2026). Заведёнcorpus/laws/kz/bin— второй пакет линии идентификаторов KZ (первый —kz.iinтем же днём). Содержательное ядро — п. 3: проекции первого и четвёртого фасетов (год/месяц регистрации, порядковый номер — арифметика цифр в голове), семантика а5 (типы 4/5/6 — по правилу на значение §206; исключённые 0-3 — одно основание одной строкой текста, с названной актом целью «исключение возможности совпадения БИН с ИИН»; резерв 7-9) и а6 (признаки 0/1/2/4). Главная находка — про действующее право: алгоритм контрольного разряда для БИН не установлен НИ ОДНИМ живым закреплённым актом — пп. 5) п. 3 называет только назначение разряда, предшественник (пост. № 406, утратил силу 01.09.2023) давал алгоритм словами «в составе ИИН», называя контрольную цифру БИН «определяемой автоматически» — без алгоритма (уточнено закреплённым срезом kz.id-number-2007 тем же днём), а живой приказ МВД № 521 писан для ИИН; поиск по ИПС другого носителя не дал. Валидация а12 поэтому не формализована, и отношения bin_check_digit_valid в пакете НЕТ ВОВСЕ (объявленное-но-невыводимое было бы мёртвым символом) — выражена только проекция «а12 является контрольным разрядом»; закрыть границу прочтением «алгоритм тот же, что у ИИН» нельзя — у прочтения нет несущего текста (§152). Вторая граница — молчание перечня а6 о значениях 3 и 5-9 — пинуется NEITHER-тестом, обязанным упасть при дописывании перечня за акт. Измерено:lawc checkчист; 6/6.lawtest(пары а5 = 3/4, резерв 7, молчание а6 = 3, проекция месяца); регрессия семействаbin8/8 (пара а5 = 6/7, нерезидент, признаки, проекции, «назначение без расчёта» у а12); KZ-differential — 9 evaluate-вызовов байтово идентичны; разметка §218 — словарь 15/0, нормы 13/0;doctor.py kz/bin— «пробелов нет»; аудит чист; мера §33.1 по статьям неприменима. Очередь в README: валидация а12 — только вместе с актом, который её установит, либо исторический срез № 406 с окном до 01.09.2023. -
kz.iin— Правила формирования ИИН (приказ МВД РК от 29.06.2023 № 521): контрольный разряд в два цикла mod 11, два подлинных умолчания текста записаны границами (31.08.2026). Заведёнcorpus/laws/kz/iin— первый пакет линии идентификаторов в правопорядке KZ (механика — по образцуiso.check_characters: рекурсивная свёртка черезmonotone(...)§110, арифметика в голове §190). Разведка источника дала два подлинных умолчания, и оба старше 2023 года (пункт 3 прежних Правил — пост. № 406 в ред. 2013 г. — формулирует теми же словами, сверено без закрепления): (1) ПЕРВАЯ последовательность весов нигде не выписана — только «bi - вес і-го разряда», явной таблицей дан лишь второй цикл; прочтение «вес = номер разряда» записано в шапке и выражено арифметикой позиции, а не выдуманной таблицей — чисел 1..11 в закреплённом тексте нет; (2) исход «во втором цикле снова 10» текстом не описан —expected_check_digitу такого префикса не выводится ни для одного значения, правила нет НАМЕРЕННО, и молчание пинуют четыре сценария (обе витрины valid/invalid — tests/04-05, промежуточное отношение — IIN-04/05), обязанные упасть, если кто-то допишет исход за акт. Единственная явная таблица акта (веса второго цикла) — 11 ассертов с якорями на свой фрагмент; вся синтетика дел вычислена при подготовке и сверена обеими реализациями (990101500006 — первый цикл, 990101500708 — ровно 10 и второй цикл, 99010150071 — оба цикла 10). Измерено:lawc checkчист; 6/6 рукописных.lawtest§267 (пороговая пара «остаток ≤9 / ровно 10», обе половины границы, соседняя транспозиция); регрессия семействаiin6/6 (одиночная ошибка ввода, молчание границы, невалидность второго цикла); KZ-differential — 6 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref); разметка §218 — словарь 10/0, нормы 10/0, вписана--register;doctor.py kz/iin— «пробелов нет»; аудит — посылок в никуда 0, стаб-цепей 0, мёртвых символов 0; мера §33.1 по статьям неприменима (единиц «Статья N» у акта нет). Вердикты по всем 38 неиспользованным видам деклараций — группами в README.ru.md пакета. Очередь записана там же: БИН (соседний приказ V2300032918), семантика разрядов — только вместе с источником, который её устанавливает. -
phys.zadachnik— акт-таран №2 unit-package: школьная физика опровергла гипотезу «нужен полный пакет» и упорядочила решения DECISION-0068 §5 (31.08.2026). Заведёнcorpus/laws/phys/zadachnik— авторское изложение школьной традиции решения задач (14 статей, 28 задач, все числа 10-гладкие сознательно — задача 10.2 выходит из гладкости нарочно и пинует Rational-половину E-0068). Устройство пакета и есть замер: энергия и КПД (ст. 9–10) — РАЗМЕРНО без эталонов (сложение/сравнение/делениеQuantity[J], первый физический потребитель строки E-0068 после парацетамола), вычислительные формулы (ст. 4–8, 11) — эталонной записью ст. 2 («численно равен»: входы-Quantity де-юничатся делением на эталон громко, ответ пришивается умножением), таблицы плотностей и теплоёмкостей — шесть A3-параметров со скалярными ячейками, округление — толькоdiv_round(..., "HALF_UP"). Замер (25 проб обеими реализациями,probe_zadachnik_units.py): 28/28 задач исполнены сегодняшним ядром, де-юниченных ФАКТОВ — ноль (де-юнит выжил в именах ставок, ячейках A3 и именах отношений дела — правило не может спросить единицу, диспетчеризация систем ложится на имена); эталонный налог — 15 эталонов, 29 делений и 16 пришивок на 46 правил. Две молчаливые дыры класса «масштабирование читается как пересчёт»: школьное «переведи делением на 3,6» —72 km_per_h / 3.6законно по §58 и возвращает20 km_per_hМОЛЧА (число верное, тег прежний, следующее сложение глотает бессмыслицу); пришивка эталоном НЕ ТОЙ единицы — правило с опечаткой выводит путь300 sсо статусом TRUE_ONLY без единой диагностики (эталонная запись громка на входе и слепа на выходе — новая, тараном №1 не замеренная). Differential-находка: параDecimal * Rationalотвергается обеими реализациями РАЗНЫМИ формулировками TYPE_ERROR (оракул — §48, lawc — §49) при дословном контракте на issue-тексты; вектора нет — черновик обязательства в заявке. Вывод тарана: полный пакет школе не нужен; порядок решений §5 по цене отказа — (1) конверсионный терм с точным фактором парой целых (гипотеза «конверсия раньше умножения» подтверждена с уточнением «раньше — да, чаще — нет»; фактор 18/5 сегодня неисполним ни Rational-формой, ни парой целых — только* 5 / 18.0), (2) проверяемая пришивка, (3) умножение размерных пар и канон составного тега — без свидетеля; черновик-заявка в audit §3 НЕ проведена, решение за владельцем. Приёмка: сценарии 38/38 (пары по обе стороны каждого порога; границы — падающими сторожами с кодом issue), KZ-differential 47 вызовов байтово, решебник.lawtest20/20 (задача/ответ той же единицей), Lean-зонд 47/0, мера §33.1 — EXECUTABLE 12/12 при UNEXPLAINED 0 (ст. 1 и 14 — границы с причиной, у ст. 14despite), разметка §218 — 80/0 + 46/0,doctor— «пробелов нет»; строка замера — DECISION-0068 §5. -
Однопроходный канонический эмиттер §208/§209 —
semantic_hashдешевеет 2,3–2,9×, байты и тексты ошибок тождественны (DECISION-0074, 31.08.2026). Конвейер хэша строил четыре промежуточных дерева на вызов (клон + strip-пересборка + decimal-пересборка + пересортировка узлов с двойным клоном), аemitсобирал строку путиformat!-ом на каждый элемент, нужную только в ошибках. НовыйWalkделает всё одним проходом по исходному дереву: semantic-фильтр §209, нормализация Decimal E-0052 и сортировка top-levelnodesперестановкой индексов — на лету, пути диагностик — лениво (сегменты ссылками, строка — только в момент отказа), пред-скан id узлов до первого байта сохраняет ПОРЯДОК ошибок старого конвейера. Старый конвейер сохранён дословно в тестовом модулеreference; тождество держат тест-батарея (успехи и отказы, включая тексты путей), свип 205/205 корпусных CLIR (новый хэш == записанному старым кодом, 2,2 с на весь корпус),cross_canon --n 100000против lawref и вся дифференциальная батарея (ffi 157/157 обоими путями, differential 157/157, векторы, wasm 24/24, kz 187 вызовов). Тихий A/B (release): semhash 97 КБ 3,2 → 1,1 мс, 632 КБ 17,3 → 7,2 мс, 5,6 МБ 168 → 74 мс;law_loadхэндла на кодексе 173 → 80 мс. В сложении с DECISION-0071: хэш на 5,6-МБ пакете — с ~168 мс на каждый вызов до 74 мс один раз при загрузке. Смежно установлено: красныйcheck_lower(4 LAY-L0 + 2 демо) воспроизводится ДО правки и байтово от неё не зависит — квалификация за линией E-0068, заведена отдельной задачей. Дополнение той же датой: оба названных хвоста закрыты —semantic_hash/node_semantic_hashстримят канон прямо в SHA-256 через обобщённый приёмник (без промежуточной строки размером с документ; по скорости нейтрально — 0,95–1,03× чередующимся парным замером, выигрыш — память, 5–8 МБ на кодексах, что существенно wasm-хосту и параллельным хэндлам),hex— таблица нибблов с тестом на все 256 байтов; подтверждение — law-canon 11/11, свип 208/208 CLIR,cross_canon --n 100000, ffi 157/157 обоими путями. Отдельно: красныйcargo test -p law-hir(strata, вектор ERR-E0070-REMOVED-FORMS, LDC-E4101 против пусто) воспроизведён на чистом HEAD в worktree — сломан в истории после чистки поверхности, заведён второй задачей. -
kz.paracetamolмигрирован на размерную запись — первый акт, снявший де-юнит с норм дозирования (E-0068, 31.08.2026). Errata, которую этот акт мотивировал, снята с него же: единица переехала из ИМЕНИ предиката в ТИП. Десять отношений и константа порога перетипизированы (massa_kg: Decimal→massa: Quantity[kg], объём приёма →ml, доза и все пределы →mg), затронуто четырнадцать правил, добавлены три эталона (MilligrammEdinitsa,KilogrammEdinitsa,MillilitrEdinitsa), и ставка читается как в источнике:(w / KilogrammEdinitsa) * SutochnyyPredelMgNaKg * MilligrammEdinitsa. Замер того, что это купило: дело «масса 20,0», где число означает фунты, до миграции давалоTRUE_ONLYс пределом 1200 мг и НИ ОДНОЙ диагностики (действительный предел ≈ 544 мг), после —NEITHERплюс триTYPE_ERRORна делении разных тегов иDIMENSION_MISMATCHна сравнении с порогом. Сторожит это сценарий KZ-PARA-47 парой «фунты роняют ставку с названным правилом / килограммы считают», а не утверждение в аудите. Ответы на дела не изменились ни на одном сценарии: регрессия 46/46, differential 60 вызовов байтово, рукописные.lawtest15/15. Осталось де-юниченным с названной причиной: сами ставки (…MgNaKg,MgVMillilitre— производная величина в Core 0.1 не типизируется, её место в unit-package), ячейка A3 (razovaya_doza_ml— полеunitсхема допускает, но ни один из 22.lawtable.jsonкорпуса им не пользуется; долг общекорпусный) и абсолютные пороги раздела 7-3 (prinyato_vsego_g— ставки в них нет, следующий кандидат). Разбор —corpus/laws/kz/paracetamol/audit.ru.md§4а. -
Чистка поверхности грамматики: восемь мёртвых форм сняты, пять синонимов депрекированы, задел 0.2 назван явно (E-0070/E-0071, DECISION-0072, 31.08.2026). Инвентарь всего корпуса (200 CLIR-пакетов, 12 906 файлов
.law/.lawtest) против полной таблицы grammar.ebnf разделил неиспользуемое на три класса с тремя судьбами. Снято (E-0070, поведение реализаций не меняется ни на байт): дубль&&/||, унарный!, операторinв сравнении, хвостin expressionбиндера, условное заключениеp(x) if F, quoted identifier иlist_literal— последний был хуже, чем мёртв:[1, 2]молча разбирался ИНТЕРВАЛОМ, и снятие закрывает коллизию документально; текст LDC-E0203 перестал рекомендовать несуществующую форму. Депрекировано (E-0071, фаза W — предупреждениеLDC-E1328из парсера, первыйDiagnostic::warningсинтаксического слоя; ошибкой станет в 0.2):concept≡relation kind institutional,except_when≡unless(дефитер при обеих записях носит имя<rule>/unless/N),claim≡dutyсо сторонами крест-накрест §129,definition … sufficient≡ strict-правило модуло id;rule … defaultостаётся под прежним LDC-E1308. Эквивалентности доказаны равенством semantic hash §209 и закреплены исполняемым вектором. Рассмотрены и ОСТАВЛЕНЫ с записанной причиной:established(P)(§56 в data conditional делает явный статус-тест единственной законной записью) иprohibition(сахар, совпавший со словарём акта, — 238 употреблений против одногоclaim). Зарезервировано под 0.2 блоками RESERVED в grammar.ebnf: темпоральные предикаты,opposed/conflicted/no_evidence, Option (none/some/?),recurring every, селекция/алиас импорта. Prose амендирована синхронно (§15, §38-карта, §44, §129.1, §150, §151). Векторы:ERR-E0070-REMOVED-CHARS(LDC-E0101 ×5),ERR-E0070-REMOVED-FORMS(LDC-E0201 ×10),ERR-E0071-DEPRECATED-SYNONYMS(LDC-E1328 ×4, файл принят, LDC-E1308 в отсутствующих),ERR-E0071-SYNONYM-HASH(пара «синонимы против канона» — равный semantic hash; IR порождает lawc, хэш считает lawref — сверка кросс-реализационная). Прогон: векторы 371 (362 runnable исполнено), cargo test workspace зелёный, clippy чист,check_grammar_capabilities47/47. -
Кэш
programHashв хэндле liblaw_ffi и eval-serve — вызов на пинованном пакете дешевеет ~2×, байты не шевелятся (DECISION-0071, 31.08.2026). Стек-сэмпл горячего вызова показал: каждая оценка на хэндле DECISION-0057 пересчитывалаsemanticHashВСЕГО IR вbuild_manifest§170 — Rust-близнец класса DECISION-0054, налог линеен по пакету и на крупных превышает саму оценку. Хэш теперь считается ОДИН раз вlaw_load/загрузке eval-serve и едет полемEvaluationResources.program_hash(заполняется только хостом — из конверта запроса недостижим; ошибка хэша при загрузке кэш не заводит, отказ остаётся за evaluate-путём с тем же кодом). Тихий A/B (release, worktree-родитель против рабочего дерева, документы байт в байт на трёх пакетах): truth-вызов 97 КБ 4,4 → 2,6 мс, 632 КБ 21,6 → 10,4 мс, 5,6 МБ 249,9 → 140,3 мс; load дорожает ровно на один хэш. Ворота:check_ffi_differential157/157 обоими eval-путями (реестр вырос со 133 на E-0068 тем же днём), wasm 24/24, differential 157/157,check_kz_differential --only criminal_code187 вызовов байтово — 210,5 с wall / 254 с CPU → 139,8 / 121,9 (~2× по CPU; остаток пола — оракул Python). Попутно вскрыт артефакт замера этапа 2 BINDINGS-PLAN («тривиальный вызов ~0 мс» мерил error-конверт, минующий манифест) — приписка в плане; следствие для встраивания: точечный запрос на пакете агрегатного размера — миллисекунды, «секунды за eval» были ценой спавна+парса+хэша+debug на монолитных кодексах. Вне объёма названы: внутренние три проходаsemantic_hash, demand-driven оценка, кэш решений потребителя, wasm-хэндлы. -
kz.grammar.singarmonizm— пятый срез: слой эффективного ряда, волна 1 каркаса закрыта; форма дефитера исправлена против emle (31.08.2026). Заведёнcorpus/laws/kz/grammar/singarmonizm— продолжение миграции kz.corpus.emle: общий закон § 31 поражаемым правилом (аффикс по ряду последнего слога) и два отступления, действующие на ВХОД, а не на ответ: § 20 «Сөз сазы» (к/г среди двух-трёх конечных согласных → «тек қана жіңішке»: парктер, киоскілер, митингілер; граница названа самим § 20 — без к/г действует собственный ряд: лифтілер, штампылар) и § 30 (ю/ё/э в последнем слоге заимствования → жіңішке: полюс-ке, парашют-ке). Третий закреплённый документ каркаса — «Сөз сазы» (байты — копия закрепления emle). Найден и замерен латентный дефект emle: его дефитеры гасят вывод общего правила ПО СОБСТВЕННОМУ РЯДУ основы, и на слове, чей ряд уже жіңішке и есть к/г, гасят заодно перевыведенное отступлением жіңішке — та же голова-литерал; живая база emle на деле киоска отвечает qoldanylatyn_undestik(Kiosk, Zhinishke) = NEITHER при аттестованных § 20 киоскілер/киоскінің, и ни один сценарий emle угол не запрашивает (парк и пункт — оба жуан). Здесь дефитеры гасят РОВНО ЖУАН-ВЫВОД (defeat qoldanylatyn_undestik(w, Zhuan)): § 20 предписывает жіңішке — значит, снять надо именно жуан, а жіңішке-вывод общего правила отступлению не противоречит; попутно из головы дефитера уходит переменная ряда (исчезает unless-класс несвязанной головной переменной, разобранный emle). На починку самого emle поставлен чип задачи. Слой карантинирован от phon сознательно (записанное решение, не забывчивость): он поражаемый, а правила всех пяти срезов — СТРОГИЕ читатели осей phon, и поражаемая ось в phon отравила бы их разом (LDC-E4103 LATE_STATUS_PRODUCER); очередь записана — переезд потребителей (парадигмы становятся поражаемыми читателями эффективного ряда, как у emle) и вместе с ним перенос отношения в phon по правилу «общий предикат — в phon». Аудит честно называет слой стаб-цепью — вердикт «слой очереди, объявлен в шапке с перечнем невзятого». Приёмка: сценарии 6/6 (пасс-тру всех одиннадцати словарных слов; парк и полюс — жуан ПОРАЖЁН, ответ от правила отступления; свидетель исправления — киоск сохраняет жіңішке; § 20 отвечает и без собственного ряда основы; граница § 20 его же примерами), KZ-differential 21 вызов байтово (включая поражение §107 в обоих движках),doctor— «пробелов нет», мера §33.1 — EXECUTABLE 2 (§ 30, § 31; § 20 — вне первого юнит-носителя, тот же учёт у самого emle), UNEXPLAINED 0, разметка §218 — 3/0 словарь + 5/0 нормы. Волна 1 закрыта: два корня (phon — 3 оси, 2 тотальные map; lexicon — факт-группы §23.1) и пять срезов (taueldik, septik, zhiktik, koptik, singarmonizm), 48 сценариев, все differential байтово. -
kz.grammar.koptik— четвёртый срез волны 1: миграция kz.corpus.emle на оси phon, с двумя содержательными исправлениями (31.08.2026). Заведёнcorpus/laws/kz/grammar/koptik— көптік жалғау, обещанный KAZAKH-GRAMMAR §1 переезд первого жильца корпуса в каркас. Шесть клеток шестиклеточной строки очерка («қала+лар, көше+лер, ат+тар, ит+тер, қаз+дар, із+дер») выражены строгими правилами на осях phon: л-серия по классу «гласный» × ряд (группой её взять нельзя — группа дауысты-үнді включает сонорные, а у них көптік не аттестован), д-серия по ГРУППЕ ж-з, т-серия по группе қатаң+вбгд (§ 31 ә): кітап+тар, педагог+тер, араб+тар). Седьмая клетка — сонорная основа — унаследованным от emle каналом суждения §47.3: Республиканская орфографическая комиссия, мандат — подпункт 1 пункта 7 Положения (приказ № 468 закреплён третьим документом пакета, байты — копия закрепления emle). Разницы миграции, обе — оси, не клетки: (1) д-серия сужена с класса ұяң до группы ж-з: § 31 а) сам квалифицирует ұяң скобкой «(ж, з)», а в/б/г/д того же класса идут по т-серии — на честном деле «конец б, класс ұяң» шестиклеточная форма emle отвечала -дар, где справочник пишет араб+тар; свидетель — KZ-KOP-02 с минимальной парой ВНУТРИ класса ұяң (қаз→дар против араб→тар); (2) правило судьи читает ВЫВЕДЕННЫЙ класс (anyqtalgan_dybys_turi): мосты phon строгие, и запрет LATE_STATUS_PRODUCER, вынудивший emle читать эмпирический факт дела, здесь не действует — слово, чей класс выведен из буквы (шам ← М тотальной классификацией § 31), доходит до Комиссии при ПУСТОМ деле (KZ-KOP-03), а ответ кодификатора замыкает вывод adjudicated assertion §73 (KZ-KOP-04: шам+дар). Попутно ЗАМЕРЕНА семантика §47.3, которую emle не запрашивал ни разу: любой NEITHER на отношении, чью голову покрывает правило судьи, несёт evaluationStatus REQUIRES_JUDGMENT — blocker-разбор §185 считает судью блокером и при NEITHER-классе, потому что key(w) — детектор конфликта, не замыкание мира (замер тем же запросом на базе emle: қала→Dar при классе Dauysty — NEITHER REQUIRES_JUDGMENT; поведение давнее, не эффект поправки радиуса E-0066); разница «сонорный спрашивает» против «чужая серия» живёт в whynot.judgment_blockers — два вопроса E-0066. Сам kz.corpus.emle ОСТАЁТСЯ работать (19/19 после правки): его цепочка кірме § 32 → көптік интегрирована через qoldanylatyn_klas, и резать её до переезда слоёв эффективного ряда (§ 20/§ 30) и эффективной основы (§ 32 дәнекер) нельзя — запись о миграции добавлена в шапку его 04-koptik.law комментарием, CLIR перегенерирован и байтово не изменился. Приёмка: сценарии 6/6 (все три серии на словаре при пустом деле; свидетель вбгд; Комиссия и §73; дословные ат+тар/ит+тер фактами дела; граница ұяң-без-буквы — ни одной серии), KZ-differential 22 вызова байтово (включая REQUIRES_JUDGMENT и adjudicated-путь),doctor— «пробелов нет», мера §33.1 — EXECUTABLE 1/1 в объявленном охвате (§ 31; приказ № 468 — whole без единицы, довод emle), UNEXPLAINED 0, разметка §218 — 3/0 словарь + 7/0 нормы, аудит — ноль посылок в никуда и в один конец. -
kz.grammar.zhiktik— третий срез волны 1: две семьи с разными осями и первое изъятие из закона согласных (31.08.2026). Заведёнcorpus/laws/kz/grammar/zhiktik— жіктік жалғау, срез 1-жақ (-мын/-мін) и 2-жақ анайы (-сың/-сің). Содержание среза — в асимметрии осей: 1-жақ выводится по классу «гласный» × ряд (очерк аттестует клетки внутри перечня «жіктік жалғаулары … жалғанады»: әнші+мін, оқушы+мын — обе основы гласные, и объём правила ровно таков), а 2-жақ — по ОДНОМУ ряду, потому что ескерту § 31 ИЗЫМАЕТ с/ш-начальные аффиксы из закона согласных («… -сың, -сің … бағынбайды. Мысалы: бала+сың»; примеры того же изъятого списка стоят после гласной, қатаң, ұяң з и үнді р основ) — в телах правил 2-жақ нет ни класса, ни группы намеренно. Границы записаны, не обойдены: 3-жақ аффикса не имеет — пуст по построению, как атау у септіка; 1-жақ согласных основ (мал+мын, қазақ+пын) закреплённые фрагменты примером не дают — правила нет, дело о согласной основе честно NEITHER, сценарий-сторож обязан упасть при дописывании без источника; пара -сыз/-сіз стоит в том же ескерту ПЕРВЫМ примером (бала+сыз), но закреплённый текст не различает жіктік сыпайы и приватив — моделировать её значило бы выбрать прочтение без основания. Словарь — включением обеих факт-групп §23.1 (22 узла материализованы в CLIR среза); фрагменты — копии закрепления байт в байт. Приёмка: сценарии 6/6 — 2-жақ на всех одиннадцати словарных словах при пустом деле (включая Kitap, чей ілік идёт по т-серии: инвариантность начала -сың к группе видна прямо в паре с септіком), граница 1-жақ на четырёх согласных основах, дословные оқушы+мын/әнші+мін/бала+сың фактами дела, и ОСТРИЕ изъятия: слову с одним фактом ряда (ни класса, ни буквы) 2-жақ выводится, а 1-жақ нет, и слову ұяң-без-буквы — у септіка не имеющему ни одной клетки (KZ-SEP-05) — 2-жақ тоже выводится: изъятый аффикс границы группы § 31 не видит. KZ-differential 31 вызов байтово,doctor— «пробелов нет», мера §33.1 — EXECUTABLE 1/1 в объявленном охвате (§ 31), UNEXPLAINED 0, разметка §218 — 3/0 словарь + 4/0 нормы, аудит — ноль посылок в никуда и в один конец. Очередь записана в шапке пакета: множественное число (-мыз/-міз, -сыңдар/-сіңдер) и сыпайы-парадигма — своими заходами. -
kz.grammar.septik— второй срез волны 1; kz.grammar.phon получил третью ось — группу § 31 (31.08.2026). Заведёнcorpus/laws/kz/grammar/septik— ілік и барыс септіктер. Ілік замкнут закреплённым текстом целиком: все шесть клеток ОДНОЙ строкой вводного очерка («қала+ның, көше+нің, ат+тың, ит+тің, қаз+дың, із+дің» — тот же шестиклеточный приём, которым очерк демонстрирует көптік), плюс шам+ның и терезе+нің из § 31 а); барыс — четырьмя клетками § 31 (шам+ға, қаз+ға, терезе+ге, кітап+қа, клуб+қа) и § 30 (полюс-ке, парашют-ке). Парадигмам понадобилась ось, которой в phon не было: § 31 выбирает НАЧАЛЬНЫЙ согласный аффикса не по фонетическому классу, а по СВОИМ трём группам — дауысты-үнді (н-серия), ж-з (д-серия), қатаң+в/б/г/д (т/қ-серия), — и деление НЕ совпадает с классами (ұяң ж/з и ұяң в/б/г/д расходятся по группам). По правилу каркаса «общий предикат — в phon» базовый пакет расширен третьей осью:enum ZhalgauToby, ВТОРАЯ тотальная классификацияmap atalgan_dauyssyz_toby(§46.1 — компилятор доказывает, что ни один из шестнадцати названных согласных не остался без группы), мосты из буквы и провода из прямого класса — с записанной границей: класс ұяң БЕЗ буквы группе не относится, правила нет сознательно (KZ-PHON-12 сторожит отказ от догадки; KZ-SEP-05 — потребительскую сторону той же границы). Десять правил среза: шесть ілік по (группа × ряд) с членами в аргах и четыре барыс, где гард обеих а)-групп записан неравенствомg != QatanVBGDпо основанию самого подпункта а) («қосымша үнді не ұяң дауыссыздан басталады» — одно основание, одно правило §206). Словарь — включением обеих факт-групп §23.1; дело о словарном слове не несёт ни одного факта. Приёмка: phon расширен до 12/12 сценариев и перерегистрирован (разметка затянута 12/0 + 10/0), lexicon и taueldik перегенерены под новый пин phon и зелены (5/5, 7/7); septik — сценарии 6/6 (обе парадигмы на всех одиннадцати словарных словах при пустом деле; минимальные пары серий — қаз+дың против ат+тың, шам→дың обязан молчать; дословные ат+тың, ит+тің, полюс-ке фактами дела), KZ-differential 36 вызовов байтово,doctor— «пробелов нет», мера §33.1 — EXECUTABLE 2/2 в объявленном охвате (§ 30, § 31), UNEXPLAINED 0, аудит — ноль посылок в никуда и в один конец. Очередь записана в шапке пакета: табыс/жатыс/шығыс/көмектес — своими заходами с полными клетками; атау аффикса не имеет по построению; дәнекер-слой § 32 — после появления фактов об эффективной основе. -
kz.grammar.taueldik— первый пакет-срез каркаса грамматики: волна 1 начата (31.08.2026). Заведёнcorpus/laws/kz/grammar/taueldik— тәуелдік жалғау, срез I/III лица единственного числа, живой образец анатомии среза (docs/KAZAKH-GRAMMAR.ru.md§4). Первая боевая связка всей волны 0: дело о словарном слове НЕ НЕСЁТ НИ ОДНОГО ФАКТА — классификацию поставляют материализованные факт-группыkz.grammar.lexicon(обе включены явными строками §23.1, их 22 узла — в CLIR среза с провенансом словаря), класс конечного звука выводят мостыkz.grammar.phon(map §46.1 + значения-идентичности E-0067), алломорф — шесть правил парадигмы, где гард «конец — согласный» записан неравенствомt != Dauystyпо основанию самого источника (§ 13 «жалпы заңдылық»). Каждая клетка выраженного стоит в пяти закреплённых фрагментах примером с аффиксом: қалам+ым и дәптер+ім (очерк), ойын+ым/ойын+ы и көрік+і (§ 5), блок+ы (§ 31 г), фонд+ы+сы и факт+і+сі (§ 32 — гласные клетки III лица), халқы/халқым/бөркі/көркі (Сөз сазы § 13); у правил множественные@source-якоря, и мера §33.1 отвечает EXECUTABLE 3/3 главы «Емле» + § 13 «Сөз сазы» в объявленном охвате, UNEXPLAINED 0. Границы записаны, не обойдены: I лицо гласных основ (бала+м) закреплённые фрагменты примером не дают — правила нет, NEITHER, и сценарий-сторож KZ-TAU-04 обязан упасть, если правило допишут без источника; II лицо, множественное число и сусыпание ы/і — очередь; дәнекер-слой § 32 — очередь с ТРИПВАЙРОМ KZ-TAU-07 (дело о фонде пиннит нынешний общий закон и упадёт при появлении слоя — приём FIA-SC-15/KZ-JS-07). Отступление от эскиза каркаса записано в §4: парадигма правилами, а не таблицей A3 — enum-колонки таблиц берут состав перечислений изtype_declсвоего пакета, межпакетный состав в контексте импорта — записанная очередь DECISION-0069 §5а. Приёмка: сценарии семействаgrammar_taueldik7/7 (все 11 словарных слов III лица при пустом деле; клетки парами через границы; слово из дела — «дәптер+ім» дословно), KZ-differential 29 вызовов байтово,doctor— «пробелов нет»; строка оси ряда снята из dead-symbols по записанному в ней обещанию — первый срез её читает. -
kz.grammar.lexicon— словарь каркаса грамматики и ПЕРВЫЙ носитель факт-групп §23.1 в корпусе (волна 0 закрыта; 31.08.2026). Заведёнcorpus/laws/kz/grammar/lexicon: 11 слов-примеров закреплённых фрагментов справочника двумяpub facts-группами по фрагменту-источнику (KirispeMysaldary — 8 assertion-узлов, Emle31Mysaldary — 14), классификация — фактами по ЧУЖИМ осямkz.grammar.phon(решение каркаса № 3: словарь своих осей не заводит), и каждое слово стоит в тексте фрагмента с аффиксом, из которого его оси читаются (қаз+дар, терезе+ге, педагог+тер, …). Полный конвейер §23.1 прошёл боевым:gen_kz_clirвывел порядок сборки изimport-декларации и предъявил контекст сfactGroupsсам; узлы групп несут группо-локальные id, якоря@sourceна свой фрагмент, метки иvisibilityв provenance. Приёмка: сценарии семействаgrammar_lexicon5/5 — состав групп глазами резолвера (тот самый канал предъявленияresolver.fact_groups), каждое слово парами по обеим осям (чужая ось — NEITHER), линкованный мир словарь+phon выводит установленный класс мостами со сверкой закреплённого contentHash §11, честное молчание об отсутствующем слове; KZ-differential 34 вызова байтово;doctor— «пробелов нет»; мера §33.1 — ANCHORED 1/1 в объявленном охвате. Границы записаны, не обойдены: ат/ит вне словаря (их конечный т § 31 буквой не называет — придут со словарём-источником своей группой),.lawtestу пакета нет — lowering тестов не получает--imports, и чужой предикат в тесте не лоуверится (граница конвейера, записана в шапке; кандидат в будущую правкуlawc test). -
kz.grammar.phon— первый пакет каркаса казахской грамматики (волна 0, docs/KAZAKH-GRAMMAR.ru.md; 31.08.2026). Заведёнcorpus/laws/kz/grammar/phon— базовый словарь ОСЕЙ, который читают будущие ~40 пакетов-срезов:pub entity Soz, оси-перечисленияBuynUndestigi(жуан/жіңішке) иDybysTuri(дауысты/үнді/ұяң/қатаң), переченьAtalganDauyssyz— ровно шестнадцать согласных, которые § 31 справочника Сыздық называет буквой, — и тотальная классификацияmap atalgan_dauyssyz_turi(§46.1): компилятор ДОКАЗЫВАЕТ, что ни один названный согласный не оставлен без класса (LDC-E1326). Пакет — первый штатный потребитель всех трёх правок DECISION-0069 разом: члены перечислений экспортируются с типом (E-0065), гарды мостовatalgan_dauyssyz_turi(d) == Undiисполняются значением-идентичностью (E-0067), map — сахар над pure function без единого нового вида узла (§46.1). Правил письма пакет не содержит сознательно — выбор аффиксов остаётся срезам; выведенная осьanyqtalgan_dybys_turi(institutional,key(w)) устанавливается мостами из названного звука либо проводом из прямого факта, и противоречащие пути сталкиваются громко (KEY_CONFLICT§45.1, сценарий KZ-PHON-07). Байты источника закреплены байт в байт как уkz.corpus.emle(content_hash публикаций совпадают — источник один), фрагменты § 31 и очерка скопированы вместе с хэшами; мера §33.1 объявляет охват честно:articles.jsonscope["31"]— EXECUTABLE 1/1, остальные 126 § главы вне охвата пакета осей (их берут срезы под своим закреплением), долг UNEXPLAINED — ноль. Приёмка: 9 сценариев семействаgrammar_phon(все шестнадцать ветвей классификации исполнены; KZ-differential 41 вызов байтово), 3 теста §267,doctor— «пробелов нет», разметка §218 — 9/0 словарь и 4/0 нормы, ось ряда задокументирована в dead-symbols как вход волны 1 (первый срез, читающий её, снимает строку). -
mdn.sahifa— Сахифа, «Конституция Медины» (~622): акт, дошедший ДВУМЯ расходящимися рецензиями, и молчание о трёх непоименованных племенах как проверяемый результат (31.08.2026). Заведёнcorpus/laws/mdn/sahifa— новая группаmdnи новый правопорядок §27.1MedinanCommunity(ISO-кода нет и быть не может: сахифа учреждает не государство, а договорное сообщество «أهل هذه الصحيفة»). Подлинника не существует; закреплены байты ОБЕИХ линий передачи: Ибн Исхак в редакции Ибн Хишама (изд. ас-Сакка, т. 1, с. 501-504, БЕЗ иснада) — публикация редакции, и Абу Убайд, «Китаб аль-амваль» (изд. Харраса, с. 260-264, иснад через Зухри) — свидетель, объявленный СВОИМ источникомAMWALсо своей редакцией: у редакции §27 ровно одна публикация, а без закреплённого фрагмента второе прочтение §152 висело бы в пустоте молча.sourceFidelity = reconstruction(PINNED_EDITORIAL_RECONSTRUCTION, довод Ясы),verifiedAgainstSource = false— сверять не с чем и не с чем будет.Единица деления §33.1 — статья по нумерации Велльхаузена, и она НАУЧНАЯ КОНВЕНЦИЯ, а не свойство источника. Своего деления у грамоты нет вовсе: это сплошная цепь оговорок «وإن…». Конвенция
wellhausen_articleвписана в ОБА реестра меры (check_source_pinning.pyиcorpus/tools/lib/act_split.py) с маркером U+202F — тем же приёмом, что у Кодекса Хаммурапи, где номера законов тоже принадлежат новым издателям. Разрез задан 47 якорями и ДОКАЗЫВАЕТ себя: каждый якорь обязан найтись ровно один раз, порядок строго возрастать, а склейка сорока семи срезов — совпасть с очищенным документом побайтово. Оговорка нумерации записана вarticles.json: в издании ас-Сакка бану Саида стоят пятыми, а бану аль-Харис шестыми (у Абу Убайда наоборот), и наши ст. 5-6 меняются местами с классической росписью; остальные сорок пять совпадают.РАЗВИЛКА, РАДИ КОТОРОЙ ПАКЕТ ЗАВЕДЁН, — ОДИН ПРЕДЛОГ. Ибн Хишам: «وَإِنَّ يَهُودَ بَنِي عَوْفٍ أُمَّةٌ مَعَ الْمُؤْمِنِينَ» — умма ПОДЛЕ верующих, федерация общин. Абу Убайд: «أُمَّةٌ مِنَ الْمُؤْمِنِينَ» — умма ИЗ верующих, единая умма. Это не дефект оцифровки: Абу Убайд приводит своё чтение дважды — в тексте и в собственном комментарии, где тут же его ограничивает («имеется в виду только помощь на войне, а в вере они ни при чём»), то есть свидетель знает, что его предлог читается сильно, и заранее спорит с сильным чтением. Оба прочтения оформлены
interpretation§152 (any_of) и МЕНЯЮТ ОТВЕТ НА ДЕЛЕ: по Ибн Хишаму иудейская община распоряжается своим миром сама, по Абу Убайду связана единым миром верующих ст. 17 (SHF-45/46). Гейт содержательный, а не тотальный: «иудеям их вера» (ст. 25), положение прочих общин по бану Ауф (ст. 26-31, 33) и единая умма сторон (ст. 2) выводятся БЕЗ всякого выбора — SHF-47 и тесты 12/13 сторожат обе стороны этого.МОЛЧАНИЕ О НЕПОИМЕНОВАННЫХ ПЛЕМЕНАХ — ЦЕНТРАЛЬНЫЙ РЕЗУЛЬТАТ, А НЕ ПРОБЕЛ. Кайнука, Надир и Курайза в грамоте не названы ни разу, ни в одной рецензии. Молчание двухсоставно и проверяется с обеих сторон: «названа ли группа» даёт громкое
FALSE_ONLY(замыкание §70 —NEITHERздесь был бы неотличим от недоделки), «есть ли у неё права иудеев бану Ауф» —NEITHER(замыкание вниз по правилу не наследуется, и это здесь работает на нас). Сценарии SHF-40…SHF-42 и тесты 02/03 обязаны покраснеть, если кто-нибудь впишет эти имена в перечни (приём HAJJ-50…52).Власть §127 нижайшего и её единственный предел. «ذِمَّةَ اللَّهِ وَاحِدَةٌ، يُجِيرُ عَلَيْهِمْ أَدْنَاهُمْ» (ст. 15) — односторонний акт любого члена связывает коллектив; Курайш и его пособники изъяты (ст. 43) иммунитетом §128 с ЯВНЫМ приоритетом §116, потому что при равной силе иммунитет молчит. Ловушка доставки эффекта обойдена сознательно: строгого правила, выводящего
protection_binds_allрядом с властью, НЕТ — оно обошло бы §128 напрямую без единого issue. Сторож — КОД issueEFFECT_BLOCKED_BY_IMMUNITY(SHF-31), потому что у заблокированного эффекта и у ненаступившего ответ одинаков.Грамота противоречит себе об издержках войны, и пакет этого не чинит (SHF-21): ст. 24/38 велят нести издержки ВМЕСТЕ, ст. 37 — каждому СВОИ, и на военном деле выводится и то, и другое. Согласование даёт только комментарий Абу Убайда, вырезанный из закреплённых байтов правилом отсева, — внести его в норму значило бы выдать толкование IX века за слово VII-го.
Правило отсева с ДОКАЗАТЕЛЬСТВОМ (приём Маджаллы): комментарий Абу Убайда идёт за текстом грамоты без разрыва, и граница проведена не маркером, а падающей проверкой — каждая из восьми цитат «قوله: X» отброшенного хвоста обязана найтись в удержанном тексте (с объявленными поблажками на переставленный союз и на местоимение «فلان»). Расхождения рецензий тоже не пересказаны, а ПРОВЕРЯЮТСЯ: режим
--witnessтребует, чтобы каждая из ДВЕНАДЦАТИ оговорок таблицыABSENT_IN_WITNESSнашлась в публикации и не нашлась у свидетеля.Измерено: §33.1 — EXECUTABLE 47 из 47, SOURCE_ONLY 0, UNEXPLAINED 0; байты источника 12 690 из 13 010 (97,5 %; остаток — маркеры конвенции и переводы строк); 27/27 сценариев семейства
sahifa+ 16/16 рукописных.lawtest§267; differential--only sahifa— 87 из 87 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref); Lean-зонд по акту — 75 сертификатов принято, 0 отвергнуто; разметка §218 — словарь 141/0, нормы 92/0; посылок в никуда 0, стаб-цепь 1 из 79 правил (1 %) с записанным вердиктом, мёртвых правил 0, мёртвых символов 0 сверх 21 константы закрытых перечней (вписаны вdead-symbols.jsonразделомdocumented),doctor.py— «пробелов нет». Инвентарь: 17 видов деклараций из 44, вердикты по всем 27 неиспользованным — вaudit.ru.mdпакета.Найдено воротами по ходу и исправлено правкой нормы, а не реестра: (1) отношение
ally_ofобъявлялось, ассертилось делом и не читалось ни одним правилом — мёртвый символ указывал на ПОТЕРЯННУЮ норму: ст. 37 «لَمْ يَأْثَمْ امْرُؤٌ بِحَلِيفِهِ» была записана без союзника, которого она называет (переписано положительной головойnot_answerable_for_his_ally); (2) отсылка ст. 26-31, 33 стояла ПЕРЕСКАЗОМ, а не проводом — вера всех общин выводилась разом из «названа иудейской общиной», и внутренняя цепь акта была разрезана на острова (четыре правила по основаниям текста, сторож SHF-52). -
iso.check_characters— системы контрольных знаков ISO/IEC 7064 (MOD 11-2, MOD 97-10): первый акт линии стандартов идентификаторов, две находки инструментария (31.08.2026). Заведёнcorpus/laws/iso/7064-check-characters— новая группаiso(jurisdiction "none",instrument "standard", первое новое значениеlegalStatus = "in_force"для не-законодательного источника). Подлинник ISO платный,UNAVAILABLE; формализация — по свободным официальным свидетелям применения (§27.3): ORCID («Structure of the ORCID Identifier»,PINNED_OFFICIAL_BYTES) и Swift (IBAN Registry Release 87/май-2020,PINNED_OFFICIAL_BYTES, §2.40 — официальный пример реестраKZ86125KZT5004100100, Организация: Национальный Банк Республики Казахстан). Обе свёртки — положительная рекурсия по позициям черезmonotone(...)(§110), арифметика в ГОЛОВЕ правила (§190); A3-таблица A=10..Z=35 (letter-values.lawtable.json,mode: rules,total: false—total: trueотвергнут статикойLDC-E8302). Найдено и задокументировано в памяти: (1) вычисляемое выражение (n - 1) аргументом атома в теле правила молча читает несвязанную переменную, если компилятор переставляет тело правила, — ноль диагностик; лечится односвязным промежуточным отношением (last_position), вычисление переносится в ГОЛОВУ; (2) буква занимает ДВЕ позиции числового представления (A=10..Z=35 — двузначное число) — свёртка обязана сдвигать накопленный остаток на ×100, а не ×10, иначе официальный пример реестра давал бы остаток 40 вместо 1 (расщепление §206 по гардуd < 10/d >= 10). Измерено: 12/12 сценариев.lawtestпакета + 4/4 сценариевcorpus/kz/acts/iso_check_characters.py(буквенные IBAN-сценарии — внутреннее отношение<id>/inputA3mode: rulesне адресуемо ни.law, ни.lawtest, памятьa3-rules-table-input-unreachable), 2/2 свойства §270 (срез v1), differential 4 evaluate-вызова байтово идентичны (liblaw_ffi==lawref), Lean-зонд — 4 сертификата приняты, 0 отвергнуто,smt_witness.py— 3 скалярных гарда диапазона 02-98 закрыты свидетелями без контрпримера. Разметка §218: словарь 27/0, нормы 50/0. Мера §33.1 неприменима (источник без заголовков «Статья N»). Границы честно названы вpackage.law: гибридные MOD 11,10 системы вне среза, институты ORCID/ISNI/IBAN вне предмета. -
kz.paracetamol— инструкция по медицинскому применению парацетамола: акт-ТАРАН для unit-package, и молчаливая дыра, которую он нашёл (31.08.2026). Заведёнcorpus/laws/kz/paracetamol(namespaceurn:kz:clir:paracetamol) как мотивирующий свидетель п. 4 DECISION-0068 — утверждённая приказом Комитета медицинского и фармацевтического контроля МЗ РК от 25.06.2024 № N076102 инструкция к детской суспензии 120 мг/5 мл,PINNED_UNOFFICIAL_COPY(госреестрwww.ndda.kzзакрывает выдачу hCaptcha, закреплён PDF держателя регистрационного удостоверения; текстовый слой проверенpdffonts/pdfimages, извлечение layout — нормативное ядро документа есть ДВЕ многоколоночные таблицы). Из unit-package не реализовано ничего, семантика не тронута (инвариант 5). Новая единица деления §33.1 в ОБОИХ реестрах меры —ru_named_section, алиасnamed_sectionпод русским языком (от языка зависят признаки, которыми ворота проверяют объявленные границы; под английским набором любая граница по русскому документу штамповалась бы молча). Измерено: 45/45 сценариев семействаparacetamol, differential--only paracetamol— 58 из 58 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), 15 рукописных.lawtest(15/15), Lean-зонд по акту — 58 сертификатов принято, 0 отвергнуто, разметка §218 119/0 словаря и 97/0 норм, мёртвых символов 0, мёртвых правил 0, стаб-цепей 1 из 53 (сам дефитер),doctor.py— «пробелов нет». §33.1: разделов 26, EXECUTABLE 16, SOURCE_ONLY 10, UNEXPLAINED 0 — все десять объявлены границей с причиной, проверенной по тексту раздела.ЗАМЕР ТАРАНА (главный выход;
corpus/tools/checks/probe_paracetamol_units.py, 14 проб живыми вызовами ОБЕИХ реализаций, байты §208 сверены на каждой). Вывод 3 разведки DECISION-0068 §3 («молчаливых дыр на границе нет») требует уточнения:Quantity[u] * IntegerвозвращаетQuantity[u]— умножение сохраняет тег и никогда его не меняет, а ставка «мг на кг» требует ровно обратного. Громкость, принятая разведкой за свойство границы (DIMENSION_MISMATCHпробы C), есть следствие того, что теги ОКАЗАЛИСЬ разными. Запиши формализатор обе величины одним тегом —120 g <= 8 g * 15отвечает TRUE_ONLY молча, означая порог, отличающийся от установленного в тысячу раз; ни статика, ни исполнение не говорят ничего. Второй результат: кросс-юнитный компаратор НЕ нужен — сравнение внутри одной единицы работает уже сегодня (норма акта «хранить при температуре не выше 25 °С» исполняетсяQuantity[celsius]прямо), а между разными обязано отказывать по рамке 1. Третий: достаточное подмножество — одна строка таблицы делимых §58 (Quantity[u] / Quantity[u] → Decimalпри тождественном теге), то есть errata размером с E-0062, а не алгебра; черновик приложен текстом кaudit.ru.mdи НЕ проведён. Строка-ссылка на замер вписана в DECISION-0068 §5, рамки 1–4 не тронуты.Одна норма в ДВУХ записях, расходящихся на живом деле. Раздел 7-1 задаёт разовую дозу полосой возраста («8-10 лет — 15 мл») и ставкой от массы («по 10-15 мг/кг»); обе стоят в одной таблице, и источник нигде не говорит, какая уступает. Ребёнок восьми лет весом 20 кг получает по таблице 360 мг при верхней границе ставки 300 мг, ребёнок 23 месяцев весом 13 кг — 120 мг при нижней границе 130 мг. Расхождение ВЫВОДИТСЯ (KZ-PARA-19/21), обе стороны проверены парой дел, где его нет (26 кг и 11 кг); приоритет между записями сознательно НЕ установлен — это решило бы за нормодателя, какая из его формулировок сильнее.
Спрос на ставку оказался НЕ ТАМ, где ожидался. Раздел 7-3 задаёт пороги повреждения печени абсолютной массой («10 г и более» — и это у ВЗРОСЛЫХ пациентов, в инструкции к детской суспензии); порога, отнесённого к массе тела ребёнка, документ не устанавливает вовсе. Молчание выведено правилом
porog_povrezhdeniya_dlya_rebenka_ne_ustanovlen, а не оставлено пустым NEITHER. Токсикологии алгебра не нужна — весь спрос в дозировании.Три границы среза, найденные и засторожённые. (1) Запрет §130 не получает VIOLATED никогда (
forbearanceдаёт только ACTIVE/EXPIRED), и позиция одинакова на деле с превышением суточного предела и без него — KZ-PARA-38/39 покраснеют, когда граница отступит. (2) Дефитер поражает ВЫВОД, а не своё правило: две поражаемые ветки с одной головой не сосуществуют — дефитер первой побеждал вторую (два узлаdefeat, оба с premiseRazresheniyeBezKonsultatsii/unless/1); ветки разведены по головам, общий вывод собран строгими мостами. (3)not Pтребует установленного отрицания — три правила переписаны положительно либо на дефитеры.Попутно: выражение перекрёстных ссылок в
scripts/lint.py(проверка 4) требовало у слова «раздел» суффикса (раздел\w+) и потому видело «Разделы 9-4» и «раздела 7-1», но не «Раздел 6-1» — то есть ровно ту форму, которой ссылается акт, делённый на именованные разделы: 14 ложных находок «порог в метке» из 14. Починено. -
quran.nur— сура ан-Нур целиком: первый акт корпуса, где закреплён весь источник, а не срез по предмету (31.08.2026). Заведёнcorpus/laws/quran/nur: 11.law, 64 аята в двух редакциях (мединский мусхаф в передаче Хафса и перевод Саблукова 1894), 128 фрагментов, 66 декларацийalign§29, 90 правил (47 строгих, 40 поражаемых, 3 дефитера), 29 шаблонов норм, 12 замыканий §70, 2 прочтения §152 (any_of), 1 приоритет §116, 2 канала суждения §47.3 с органами, названными текстом, 1 процедура §160 (лиан). 45/45 сценариев семействаquran-nur, differential--only quran-nur— 62 из 62 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), 8 рукописных.lawtest(8/8); разметка §218 132/6 словаря (шесть — пол профиля процедур §159/§160) и 119/0 норм, мёртвых символов 0, посылок в никуда 0, цепь в один конец 1 из 90 с записанным вердиктом,doctor.py— «пробелов нет». §33.1 по ОБЕИМ редакциям: EXECUTABLE 34, SOURCE_ONLY 30, UNEXPLAINED 0 из 64 — все тридцать объявлены границей с причиной, прочитанной по тексту аята. Выравнивание §29 с равными итогами — самая опасная пара редакций корпуса. У обеих по 64 стиха, и совпадение обманчиво: Саблуков СЛИВАЕТ 24:14 с 24:15 и 24:44 с 24:45, а 24:19 и 24:61 РАСЩЕПЛЯЕТ; слияние отняло стих, расщепление вернуло. Сдвиг, выведенный из равенства 64 и 64, дал бы неверный адрес восемнадцати аятам подряд, включая весь блок испрашивания позволения (три поры дня 24:58 стоят у переводчика стихом 57). Там же закрыты два молчаливых дефекта страницы Викитеки: тринадцатый якорь размечен чужим номеромid="24:18", и словарь «номер → текст» терял норму о четырёх свидетелях; а блок сносок переводчика без обрезки дописывался прямо в 24:64, иcontent_hashзаверял бы искажённый аят. Статус, выведенный одной нормой и читаемый другой через границу дела: лишение клеветника права свидетельствовать (24:4) разваливает состав четырёх (24:13) в ЧУЖОМ обвинении. Агрегат считает эмпирический предикат, а дисквалификация приходит дефитером — обход барьера §111. Замерена ловушка страт: при поражаемой цепи дефитер состава уходит стратой выше §110 и не поражает ничего МОЛЧА (checkиlowerзелены, посылка истинна, состав остаётся собранным); починено правовым разбором — 24:6 открывается оборотом, грамматически параллельным началу 24:4, и сура сама разводит супружеский случай в отдельный состав, — а не подгонкой. База молчит там, где молчит сура: ни раджма, ни различения мухсан / не-мухсан (24:2 даёт сто ударов всем — сторож NUR-05/06 по приёму HAJJ-50), ни вечного запрета брака после лиана. Спор о границе изъятия 24:5 разложен на бесспорную часть в базе (приоритет §116 снимает клеймо нечестивца, ответ без options — FALSE_ONLY, а не молчание) и два прочтения §152 о том, достаёт ли изъятие до «أَبَدٗا». Задание уступило закреплённому тексту: в блоках, отнесённых брифом к повествованию, притчам и эсхатологии, прочтение нашло семь прямых повелений (24:21, 24:22, 24:53, 24:54, три в 24:56, 24:63) и две санкции с определимым составом (24:19, 24:23) — заведён модуль10-amr.law. Нарратив ифка (24:11-20) остался границей с причиной и приложен к пакету делом: сцена NUR-45 прогоняет его факты против нормы кадхфа этого же пакета. -
he.noahide— семь законов сынов Ноя: акт без единого текста, шесть закреплённых сочинений, и пять молчаливых отказов, найденных им (31.08.2026). Заведёнcorpus/laws/he/noahide(namespaceurn:he:noahide:clir:noahide) — перечень объявлен барайтой (Санхедрин 56a:24, Тосефта Авода Зара 9:4), выведен ПОСЛОВНО из Быт. 2:16 (Санхедрин 56b:5–56b:7), кодифицирован Мишне Тора Мелахим 8–10, оспорен Рамбаном на Быт. 34:13 и датирован по эпохам Раши на Быт. 1:29. Закреплены только свободно распространяемые редакции (Браунер CC-BY, Sefaria Community Translation CC0, Хавель CC-BY, KJV — общественное достояние); перевод Штейнзальца/Корен под условием NC не закрепляется, и отсюда граница среза Талмуда — свободного английского перевода Санхедрин 57a–60a не существует. Измерено: 32/32 сценария семействаnoahide, differential--only noahide— 58 из 58 evaluate-вызовов байтово идентичны, 20 рукописных.lawtest(20/20), разметка §218 91/6 (шесть — пол профиля процедур §159/§160), мёртвых символов 0, мёртвых правил 0, стаб-цепей 0,doctor.py— «пробелов нет». §33.1 по первичному документу (Мелахим 8–10): EXECUTABLE 19, SOURCE_ONLY 18, UNEXPLAINED 0 — все восемнадцать объявлены границей с причиной, проверенной по тексту статьи.Поправка Ноя — ось ЭПОХ фактом дела, а не машина редакций §31/D1. Решение человека (§47.3): проекция по редакциям требует дат и источника, чьи байты несут редакцию, а Мелахим 9:1 («шесть заповедей Адаму, седьмая добавлена Ною») даты не называет. Поправка делает два действия разом — снимает широкий запрет мясоедения (Раши на Быт. 1:29) и вводит узкий (Быт. 9:4) — и обе половины заякорены в разные тексты. Запрет Адаму взят из Раши, а НЕ выведен из умолчания Быт. 1:29: стих есть дарование трав, и запрет из умолчания был бы выводом формализатора.
Один плохо стратифицированный дефитер утащил за собой ОСТАЛЬНЫЕ ТРИ. Ранг правила растёт от каждого поражаемого производителя, которого читает его тело, а вычисляется по МАКСИМУМУ среди всех правил с той же головой. Пока
acted_accidentallyпроизводился поражаемым правилом, вместе с дефитером неумышленности молча перестали работать дефитеры принуждения, недееспособности и птицы: пять сценариев из тридцати двух отвечали TRUE_ONLY вместо NEITHER при зелёныхcheck,lowerи differential. Канон подтверждён: производители барьера, который читает дефитер, — только строгие правила.Эффект власти §127.2 нельзя класть на предикат, который снимает дефитер. Эффект попадает в базу установленным фактом, и пока
power AcceptSevenLawsсоздавал самger_toshav, оговорка Мелахим 8:11 не работала вовсе. Разведено наacceptance_effected(правовой акт состоялся) иger_toshav(лицо считается пришельцем) — 8:11 отрицает второе, не отрицая первого.Пара порогов нашла ПОГЛОЩЁННОЕ правило. Двенадцать месяцев уговоров пленницы (Мелахим 8:7) взяты термом
add_calendar_period; пара сцен по обе стороны срока показала, что накануне ответ всё равно TRUE_ONLY — условия статьи уже достаточны по общему 8:10. Собственное действие 8:7 есть ОТПУЩЕНИЕ на волю, и срок гейтит его.Редакция без
in_forceдля проекции §31/D1 стоитnot_yetНА ЛЮБОЙ ДАТЕ — и нашёл это ЖУРНАЛ ДЕЛА.lawref process-runна первом же деле снял 89 правил из 96 и отвечал «переход недоступен» по пустому пакету. Обычное исполнение проекции не делает вовсе, поэтому 32 сценария, 20 тестов §267 и байтовый differential оставались зелёными; единственный вход, задействующий проекцию, — процессный слой О-5. Лечится окном применимостиin_force [@0001-01-01, infinity)у редакций (тот же технический пол, что у окон норм);adoptedне объявляется ни у одной — перевод Браунера 2012 года никем не принимался.Висячий якорь
@sourceмолчит у всех ворот, кроме меры §33.1. Семь правил были заякорены в несуществующийTOS_AZ_9_4при фрагментеTOS_9_4: check чист, differential сходится байтово, а барайта Тосефты стояла SOURCE_ONLY при семи выведенных из неё правилах.Новая единица деления §33.1 в обоих реестрах:
talmud_segment— сегмент стороны листа («56a:24» → номер учёта56a-24, буква стороны остаётся: 56a и 56b суть два разных места), с ветвьюdaf/вLOCATOR_REи русским именем единицы в обеих таблицахboundaries.py. Второй ветвью добавленword/2-16-N— семь подфрагментов Быт. 2:16 по слову на заповедь: локатор мельче стиха, а знаменателем мера оставляет СТИХ, потому что слово есть единица экзегезы, а не книги Берешит. Классическая ссылка «Тосефта, Авода Зара 8:4» соответствует 9:4 закреплённого текста — сверено по содержанию, как и требовал бриф.Попутно: выражение перекрёстных ссылок в
scripts/lint.py(проверка 4) не знало двух форм — сокращения с точкой («Быт. 34:13») и листа Талмуда с буквой стороны («Санхедрин 56b:20»), — и штамповало ложный «порог в метке» на каждой метке акта, цитирующего Талмуд. Починено; настоящую находку той же проверки (двенадцать месяцев прозой) видно в пункте выше. -
su.decree.semidnevka_1940— Указ ПВС СССР от 26.06.1940 о семидневной неделе: акт, чей предмет — сама неделя, и два молчаливых отказа приоритета §116, найденных им (31.08.2026). Заведёнcorpus/laws/su/semidnevka-1940(namespaceurn:su:decree:clir:semidnevka-1940) — все семь статей указа плюс вводная формула, единица §33.1 — существующая конвенцияpoint, закреплённая ревизия Викитеки oldid 3538591 (PINNED_UNOFFICIAL_COPY,legalStatus = repealed). Измерено: 34/34 сценария семействаsemidnevka, differential--only semidnevka— 58 из 58 evaluate-вызовов байтово идентичны, 3 рукописных.lawtest(3/3), разметка §218 67/0 словаря и 42/0 норм, мёртвых символов 0, посылок в никуда 0, стаб-цепей 0,doctor.py— «пробелов нет». §33.1: EXECUTABLE 7 из 7, ANCHORED 0, SOURCE_ONLY 0, UNEXPLAINED 0; учёт статей 7 из 7 при нуле неучтённых, байтовое покрытие 99,8 %; объявленных границ нет ни одной.priority§116 не разрешает наложение двух ЗНАЧЕНИЙ одного отношения — и не сообщает об этом. Три из четырёх строк статьи 1 начинаются с шести часов, и служащий учреждения семнадцати лет на шестичасовом дне подпадает под все три. Выбор «специальная норма по субъекту побеждает общую по виду работ» — решение человека, доведённое теневым протоколом до REQUIRES_JUDGMENT. Дословная форма решения (prefer … over …между головамиprodolzhitelnost(r, 7)иprodolzhitelnost(r, 8)) дала на спорном деле ОБА ответа TRUE_ONLY: §107 поражает противоречащие выводы, а два разных значения одного отношения противоречащими не являются. Рабочая форма — барьер плюсunless; сторожа — SEM-01/SEM-02.Второй случай того же класса стоил власти §127 места в модели. Изъятие «по спискам, утверждаемым СНК СССР» через эффект власти молча не срабатывало: эффект — поздний производитель статуса, барьер уезжает рангом выше поражаемого правила, ребро §116 между рангами не применяется. Со строгим правилом вместо власти ответ верный. Потеря названа в шапке модуля; власть §127 осталась у директора предприятия (статьи 3 и 4), где акт её действительно создаёт. Сторож — SEM-06.
Запрет с VIOLATED — две измеренные ловушки. Позиция
prohibition§130 в срезе 0.1 не получает VIOLATED никогда, поэтому статья 3 записанаdutyс цельюmaintenance. Замерено: (1) VIOLATED даёт только ЯВНЫЙ отрицательный факт условия — молчание открытого мира оставляет ACTIVE; (2) замыкание §70 уважает факты дела, но НЕ выводы правил — поставленное на выводимый предикат, оно даёт BOTH и позицию CONFLICTED. Отсюда: условие цели —not ushel_samovolno(r), замыкание на ЭМПИРИЧЕСКОМ предикате. Пары SEM-11/SEM-12 и SEM-08P/SEM-09P.Воскресенье не вычисляется, а называется. Терма «день недели по дате» в поверхности Core 0.1 нет; соответствие «дата → день недели» входит фактом дела, утверждение указа — отдельным
assert sedmoy_den_nedeli(Voskresene)с якорем §194. Библейский корень недели, планетарная арифметика mod-7 и ISO-нумерация недель объявлены записанными ожиданиями сессии — предмет отдельных пакетов. Приговор народного суда — канал суждения §47.3 (SEM-15, REQUIRES_JUDGMENT). Прогул указ не запрещает, а наказывает, и обязанности воздержания от него в пакете нет. -
Оверлеи меток §218 — дополнительные языки отображения вне CLIR (DECISION-0070, 31.08.2026). Файл
i18n/<lang>.jsonпри корне пакета (форматlaw.i18n/0.1: один язык на файл, ключи — локальные имена узлов) вливается в копию документа только презентационным слоем:lawref verbalize --labels …, MCP-ресурсlaw://<пакет>/verbalized[/<язык>], операцияverbalizeмоста рабочего стола (полеlabels, отказORACLE_LABELS). Реализация —engines/lawref/lawref/i18n.py(apply_overlaysидемпотентен, вход не мутирует, висячий ключ и чужой пакет — громкие отказы). Ссылки и невозвратность перевода держат воротаverify/ci/gates/coverage/check_i18n_overlays.py(шаг 41, канарейка) с храповикомcorpus/ratchets/i18n-ratchet.json;discover_resourcesпинует оверлеи вlaw.lock0.2 (label-overlay/presentation, аддитивное расширениеlockfile.schema.json, TS-типы перегенерированы). Пилот —de-vor-dem-gesetz/en(12 объявлений, 9 норм); ru-выдача вербализатора с en-оверлеем и без него байтово равна. Конвенция раскладки —docs/PACKAGE-LAYOUT.ru.md(«Граница inline-меток иi18n/»). -
grc.aristoteles.laws_of_thought— три закона мысли Аристотеля, акт, чьё главное утверждение ядро нарушает по построению (31.08.2026). Заведёнcorpus/laws/grc/laws-of-thought(namespaceurn:grc:aristoteles:clir:laws-of-thought) — «Метафизика», книга IV (Γ) целиком, все восемь глав, русский перевод А. В. Кубицкого, закреплённая ревизия Викитеки (oldid 5642950). Единица §33.1 — глава; конвенция существующая (named_section, локаторsection/N), новой заводить не понадобилось. Измерено: 18/18 сценариев семействаlaws_of_thought, differential--only laws_of_thought— 40 из 40 evaluate-вызовов байтово идентичны, 5 рукописных.lawtest(5/5), разметка §218 47/0 словаря и 32/0 норм, мёртвых символов 0, мёртвых правил 0, стаб-цепей 2 из 30 правил (обе — терминальные выводы главы 8, вердикт в шапке модуля),doctor.py— «пробелов нет». §33.1: EXECUTABLE 6, INTERPRETED 1, ANCHORED 1, SOURCE_ONLY 0, UNEXPLAINED 0 из восьми глав; объявленных границ нет ни одной.Исключённое третье — задокументированное расхождение акта с трёхзначной семантикой ядра. Глава 7 (1011b23—24) объявляет промежуточное невозможным и первой из следующих отсюда нелепостей называет «было бы возможно и то, что кто-то не будет говорить ни правду, ни неправду». На деле, где предикация не установлена, движок отвечает ровно так:
alethes_legei= NEITHER иpseudes_legei= NEITHER (§62, §65—§67 — объявленная семантика открытого мира). Вторая половина того же расхождения — ограничение §93.1OudenAnaMeson: объявлено, понижено в CLIR, на деле не исполняется, issue ноль. Семантика под акт НЕ подгонялась (инвариант 5): замыкание §70 надhyparcheiсделало бы закон исполнимым и стёрло бы факт, ради которого акт заведён — отказ от него записанное решение человека. Зеркало — лазейка Гёделя вus.constitution.Тождество якорено прочтением, а не выдумано нормой. Прямого фрагмента у закона тождества в книге Γ нет; пакет якорит его
interpretation LectioSemantikeк эленктическому доводу главы 4 (1006a28—b13, «не означать что-то одно — значит ничего не означать») с@sourceвнутри прочтения. Прочтение единственное поставляет посылкуsemainei_hen— отсюда тройка сцен на одних фактах: без прочтения обязанность воздержания ACTIVE, с прочтением VIOLATED, с прочтением и объявленной многозначностью слова снова ACTIVE («разве лишь при многозначности слова» — оговорка самой главы, отрицательный тест).Довод против Протагора вычислен. Учение «вещи будут для них такими, за какие они их примут» заведено прочтением
LectioProtagorae(база его отвергает): на показаниях двоих оно даётBOTHсunresolvedReason: INCOMPARABLE, пустымиdefeatedCandidatesиpriorityEdges— коллизия §115. Базовая теория на тех же фактах не порождает ни одной записиconflicts: глава 6 выводит «представляется ЭТОМУ», и показания перестают быть членами одного противоречия.Ограничение движка, найденное этим актом и НЕ являющееся расхождением differential. Строгое правило, читающее предикат, производимый только правилом внутри
interpretation, молча ломает свои ПОРАЖАЕМЫЕ потребители: при строгом посреднике потребитель даёт NEITHER, при поражаемом — FALSE_ONLY, при том что сам вывод в обоих случаях TRUE_ONLY и issue нет ни одного (минимальная пара probe.p6/p7). Причина — состав, запрещённый в базе LDC-E4103 (LATE_STATUS_PRODUCER §111): у отношения нет строгих производителей, а статический сторож не видит производителей внутриinterpretation. Обе реализации отвечают одинаково; правило пакета переписано поражаемым, семантика не менялась, находка записана в шапке04-elenchos.lawи вSTATUS.md.Провенанс объявлен вместе с неопределённостью. Викитека называет переводчиком Кубицкого и издание «Соцэкгиз, 1934», источником байтов — lib.ru, чьё печатное издание не назвал никто; греческие слова в байтах стоят латинской транслитерацией («(dianoeton)», «(logos)»), а перевод Кубицкого переиздавался в переработке 1976 года. Отсюда
PINNED_UNOFFICIAL_COPY,unofficial,verifiedAgainstSource = falseи записанная оговорка о правах. Закон достаточного основания (Лейбниц) вне скоупа: другой источник, другой акт. -
vat.computus— пасхалия: юлианское и григорианское вычисление дня Пасхи, первый потребитель остаткаmodв корпусе (31.08.2026). Заведёнcorpus/laws/vat/computus(namespaceurn:vat:clir:computus): булла «Inter gravissimas» Григория XIII (срез из пяти пунктов), авторское изложение арифметики обеих пасхалий в форме Гаусса и свидетельство Беды (HE III.25—26, подлинник и перевод). Весь счёт целочислен — четыре деления с остатком в одной цепи (mod 19,mod 4,mod 7,mod 30) плюс пятое в гарде второго исключения; Date-значений пакет не строит ни разу, календарь §85 и единицы срока §86 не нужны, потому что воскресность сидит внутри воскресной поправки. Заведена новая объявляемая единица §33.1unit: "la_paragraph"(латинский нумерованный пункт) в обоих реестрах: выражение то же, что уpointиen_point, объект отдельный — признаки исполнимого содержания берутся ПО ЯЗЫКУ конвенции, и объявив буллу английской, ворота искали бы в латыни «must» и штамповали бы любую границу молча.Поражаемый слой у самого вычисления, измеренный мутантом. Два исключения Гаусса — дефитеры над арифметической базой. Мутант со снятой оговоркой и без правил исключений даёт на 1981 годе 57 марта (26 апреля) и громкое
easter_outside_window, на 1954-м — 56 марта (25 апреля), которое окно НЕ ловит: 25 апреля есть законный предел статьи 12. То есть правило окна стережёт отсутствие первого исключения и не стережёт отсутствие второго — сторожем второго остаётся только пара сценVAT-COMP-14/15.LDC-E4103учтён разом: уeaster_march_dayесть поражаемый производитель, поэтому вся цепь ниже объявленаdefeasible.Две действующие пасхалии без приоритета §116. Юлианская не закрыта 1582 годом ни окном редакции, ни правилом: пункт 14 буллы обязывает перечисленный в нём круг лиц и о счёте тех, кто булле не подчинён, не говорит. Расхождение и совпадение выводятся на деле после приведения к общей оси (2025 — совпадение, 2026 — расхождение 5 против 12 апреля); данные несимметричны намеренно. Следствие расхождения — двор, празднующий Пасху дважды, — выводится правилом и подтверждается закреплённой главой Беды; дней 664 года пакет не называет и говорит об этом громко.
Найдено: у A3-таблицы нет моста в норму НИ В ОДНОМ режиме.
mode: rulesне даёт назвать<id таблицы>/input(известно с 29.08.2026),mode: functionотвергает вызов по голому имени статически —LDC-E2105«функция не объявлена», даже когда id таблицы задан какurn:<ns>#<Имя>(новое измерение). У A3 параметра мост есть, у таблицы нет ни одного; вход подаётся делом (приёмfiqh.hajj), и.lawtestдо таблицы не дотягивается — григорианские рукописные тесты подают вековые постоянные фактами дела, называя причину в шапке.Измерено: 38/38 сценариев семейства
computus, differential--only computus— 38 из 38 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), зонд Lean по акту 38 принято / 0 отвергнуто, 4/4 рукописных.lawtest; §33.1 EXECUTABLE 5 из 5 по булле и 13 из 14 по изложению приUNEXPLAINED 0у обоих (к Беде мера по единицам объявлена неприменимой); §218 — 41/0 словаря и 40/0 норм; стаб-цепей 0, мёртвых символов 1 (WhitbyYear, вdocumentedс причиной);doctor.py vat/computus— «пробелов нет». Разбор —corpus/laws/vat/computus/audit.ru.mdиREADME.ru.md. -
un.charter— Устав ООН, срез гл. I/V(голосование)/VII + ст. 4, 18, 92, 103, 108, 111 (31.08.2026). Новая группаunдополнена пакетомcorpus/laws/un/charter(urn:un:corpus:clir:charter), правопорядокInternational. Две закреплённые равно аутентичные редакции (ru/en, ст. 111), фрагменты по статье — генераторcorpus/tools/sources/sync/sync_un_charter_fragments.py. 26 из 111 статей в объявленном срезе; остальные закреплены байтами без фрагментов.Три несущие находки. (1) Статьи 43-47 формализованы буквально и мертвы по тексту: обязанность предоставить войска (ст. 43) обусловлена особым соглашением, которого не заключено НИ ОДНОГО за историю Устава, — обязанность недостижима на любом сценарии (не дефект пакета). (2) Буква против практики ДВАЖДЫ: континуитет России и передача места КНР (ст. 23) —
interpretationдобавляетpermanent_member_seat_held_byпреемникам поверх неотменённой буквы (пять постоянных членов названы поимённо статьёй 23 без поправки по статье 108); воздержание постоянного члена (ст. 27, п. 3) — буква блокирует решение, практика с 1946 года (Намибия, 1971) — нет, и ОБА предиката держатся одновременно на одних фактах. (3) Статья 103 (приоритет обязательств по Уставу) выражена обычным выводом, а неpriority_decl: приоритет между обязательствами по разным договорам не умещается в стратификацию одного пакета.Три оси статьи 51 (порог «вооружённого нападения», превентивная самооборона по стандарту Кэролайн, самооборона против негосударственных акторов после резолюций СБ 1368/1373) — каждая своя
interpretation, добавляющая путь к выводу поверх бесспорного ядра (тяжкая форма применения силы государством, Никарагуа п. 191).Ограничение движка, найденное этим актом.
unless-условие презумпции, читающее напрямую ДРУГУЮ презумпцию, резолвится вBOTHвместоFALSE_ONLY(нет чистого закрытия дефизибл-слоя внутри дефизибл-слоя);interpretation … { include PresumptionName; }не гейтитpresumption— она срабатывает независимо от выбора прочтения. Оба обойдены на месте (строгий мост; строгое правило вместо презумпции) и задокументированы в коде.Измерено: §33.1 EXECUTABLE 20, SOURCE_ONLY 6 (границы с причиной: ст. 1, 24, 26, 46, 92, 111), UNEXPLAINED 0, INTERPRETED 0 из 26 статей — доля буквы/прочтения точнее видна на уровне правил (6 из ~59 норм только под выбранной
interpretation). §218: 91/6 словаря (шесть неразмеченных — пол профиля процедурprocedure ChapterVIISequence, тот же остаток, что уfiqh-hajj/fiqh-sawm/kz-tuystyq), 65/0 норм. 30/30 сценариев семействаun_charter(corpus/kz/acts/un_charter.py) под differential--only un_charter(36 evaluate-вызовов,liblaw_ffi==lawrefбайтово) и под зондом Lean (36/36 сертификатов принято, 0 отвергнуто, 196 шагов правил доказано, граф движка замкнут §179). -
gb.declaration.balfour_1917— Декларация Бальфура (1917), новая единица §33.1 «оборот» без якоря строки (31.08.2026). Новая группаgb, пакетcorpus/laws/gb/balfour-1917(urn:gb:declaration:clir:balfour-1917), три закреплённых источника: письмо Бальфура (Викитека,Page:-ревизия), срез Мандата на Палестину 1922 года (преамбула, ст. 2, ст. 25 + резолюция о Трансиордании) и срез Белой книги Черчилля 1922 года (ООН, unispal). Письмо — одно 67-словное предложение без заголовков-статей, и для его четырёх ступеней и пяти рамочных оборотов заведена новая объявляемая конвенция §33.1unit: "turn"(turn_conventionвverify/ci/gates/sources/check_source_pinning.py,turn_headsвcorpus/tools/lib/act_split.py, новая веткаLOCATOR_RE) — первая в корпусе единица деления, чей маркер не занимает строку целиком.Измерено: 98 узлов CLIR (18 правил, 5
interpretation, 2interpretation_group, 1external_decl); 7/7 рукописных.lawtest; 6/6 сцен семействаbalfour(corpus/kz/acts/balfour.py) под differential--only balfour(11 evaluate-вызовов,liblaw_ffi==lawrefбайтово) и под зондом Lean (11/11 сертификатов принято, 0 отвергнуто). §33.1 по primarySource (письму): EXECUTABLE 3, ANCHORED 6, SOURCE_ONLY 0, UNEXPLAINED 0 из 9 оборотов. §218: 34/0 словаря, 22/0 норм. Новый правопорядокMandateForPalestine(verify/ci/gates/repo/check_jurisdiction_vocabulary.py) — Мандат как инструмент Лиги Наций, отдельно отUnited Kingdom(письмо и Белая книга).Находка, расходящаяся с брифом. Преамбула Мандата пересказывает письмо БЛИЗКО к тексту, но ОПУСКАЕТ дословно «and will use their best endeavours to facilitate the achievement of this object», перенося этот вес на ст. 2 другими словами («shall be responsible for placing the country under such … conditions as will secure the establishment»). Бриф утверждал дословное цитирование; закреплённый текст говорит другое, и решает он.
Деонтический градиент и асимметрия. «View with favour» — не норма, а идентификация бенефициара (ANCHORED, не SOURCE_ONLY); «best endeavours» —
dutyс каналом суждения §47.3 (Постоянная мандатная комиссия отвечает на достаточность усилий, REQUIRES_JUDGMENT без её ответа); обе оговорки —prohibition, не гасящие обязанность (две позиции стоят на одном деле рядом), а асимметрия защищаемых интересов — два непересекающихся закрытых списка (civil+religious для нееврейских общин Палестины, rights+political status для евреев диаспоры), проверенные парами.lawtestв обе стороны. Две развилки §152 (selection any_of, неexactly_one— измерено, что последняя без выбора метит ВЕСЬ кейсINTERPRETATION_REQUIRED, а не только предикат развилки): охват «Palestine» ст. 2 против изъятия Трансиордании (флип на ОДНОМ факте дела, BAL-08/09) и смысл «national home» (три прочтения, две — из ОДНОГО отрывка Белой книги 1922 года разными акцентами). -
btc.consensus— ограниченная реконструкция правил консенсуса Биткойна по расходящимся свидетелям (31.08.2026). Заведены новая группаbtcи пакетcorpus/laws/btc/consensus(urn:btc:clir:consensus). Пакет закрепляет байты Bitcoin Core v27.2, BIP-30/34/9/68/113/141, дефектной страницы Bitcoin Wiki и whitepaper как свидетеля намерения; восстанавливает срез заголовков, UTXO-транзакций, A3-субсидии, chainwork и BIP-9. Измерено: 10/10 сценариевbtc, differential--only btcзелёный, 7 рукописных.lawtest, включая исполнимое свойство §270 для выводимого предела 21 млн, и Lean-сертификат расписания субсидии. Разметка §218 — 91/6 словаря (шесть служебных узлов lowering BIP-9) и 71/0 норм; §33.1 — EXECUTABLE 7, SOURCE_ONLY 2, UNEXPLAINED 0 из девяти статей.Границы — часть результата. Криптография и 256-битное сравнение PoW остаются эмпирическими фактами дела: зонд показал предел
i64, что записано как errata-кандидат BTC-256-I64, а не подменено ложной арифметикой. Whitepaper-формула «самая длинная цепь» не сглажена с кодовой «наибольшая работа»; пара сценариев выводит расхождение. Аудит полноты —corpus/laws/btc/consensus/audit.ru.md.Финальный прогон намеренно сужен до
btc; статические общекорпусные проверки не заменяют проверку 10 исторических сценариев и 15 differential-вызовов этого пакета. -
chem.rulesрасширен вторым заходом: одиннадцать разделов, 162 правила, профиль §274 запросом, английский оверлей §218 (31.08.2026, вечер). Четыре новых раздела: ряд активности металлов (ст. 19-21: линейный порядок двенадцатью позициями и одним правилом сравнения; исключение щелочных металлов — дефитер по группе со strict-правилом «что происходит вместо»; пассивация свинца — дефитер по паре, чьи анионы — те же Chloride/Sulfate из перечней раздела II), закон смещений Содди — Фаянса (ст. 22-23: первая арифметика в ГОЛОВЕ правила —daughter_numbers(d, z - 2, a - 4); сверка заявленного дочернего ядра расщеплена §206 на заряд и массу), перициклические правила отбора (ст. 24-25: циклоприсоединение и сигматропный сдвиг тем жеmod 4— граница, которую ст. пределов раньше объявляла, СНЯТА), геометрия валентных пар (ст. 26: закрытая таблица восемью строгими правилами — A3 отвергнутLDC-E8306, выход строки — доменная константа; стерическое число вычисляет норма). Новое семействоchem_argumentationспрашивает профиль §274 запросомkind: "argumentation"и сторожит классы §274.6 —REJECTED/SKEPTICALLY_ACCEPTEDна трёх спорах пакета. Английский оверлей — 347 переводов,i18n-ratchet(словарь 185, нормы 162), состав держит генератор строкой вrun_all.sh. Итог: 114/114 сценариев в 12 семействах, differential 210 вызовов байтово (шесть вызовов с прочтениями вшиты вcase.options— до этого они законно пропускались сверкой, и замечено это по числу, не выросшему после добора сценариев), Lean 210/0, покрытие правил прогоном 162/162 (обход proof-графов снова нашёл мёртвые — десять при зелёных сценариях, все закрыты), мера EXECUTABLE 24 / INTERPRETED 1 / UNEXPLAINED 0, байты 90,1 %. STATUS.md иcorpus/laws/chem/rules/audit.ru.mdобновлены тем же коммитом. -
**
chem.rules— правила общей химии-chem.rules— правила общей химии с исключениями: первый акт группыchemи поражаемый слой в чистом виде (31.08.2026). Заведёнcorpus/laws/chem/rules: новая группаchem, восемь.lawпо семи разделам изложения, 108 правил (strict 57, defeasible 39, defeater 12), 4 объявленных приоритета §116, 6 замыканий §70, 3 прочтения §152 в одной группе, 1 фикция §147, 2 constraint §93.1, 68 сценариев в семи семействах, differential 153 вызова байтово идентичны (liblaw_ffi==lawref), Lean — 159 сертификатов приняты, 0 отвергнуто, батарея §267 — 14 рукописных.lawtest, разметка §218 127/0 словаря и 108/0 норм, стаб-цепей 0 из 108 правил, покрытие правил прогоном 108 из 108, мёртвых символов 0, посылок в никуда 0,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 16, INTERPRETED 1, ANCHORED 0, SOURCE_ONLY 0, UNEXPLAINED 0 из 19 статей; учёт единиц 19 из 19, объявленных границ 2 (ст. 1 и ст. 19, обе прошли проверку по тексту БЕЗ поляdespite), байтовое покрытие 88,6 % (26 579 из 29 985). Полный аудит конструкций —corpus/laws/chem/rules/audit.ru.md(16 видов деклараций из 44; двадцать восемь неиспользованных разобраны поимённо, вердикта «работа» не получил ни один).Заголовочный результат — правило Хюккеля гардом
pi mod 4 == 2, и остаток здесь РАЗЛИЧАЕТ классы вычетов. Errata E-0062 (31.08.2026, тот же день) закрыла разрыв «объявлен и неконструируем» и назвала правило Хюккеля внешним заказчиком операции; здесь оно им становится дважды — в правиле ароматичности (остаток 2 против 0) и в правилах отбора Вудворда — Хоффмана, где тот же остаток при ДВУХ независимых признаках даёт четыре исхода. Оговорка к брифу: ПЕРВЫМ употреблениемmodв корпусе пакет не является —bio.codonзаводился параллельно и проверяет рамку считывания гардом(p - origin) mod 3 == 0. Различие содержательное: там остаток сравнивается с нулём (делимость), здесь — с двумя значениями.Источник — авторское изложение (19 статей, 29 985 байт,
PINNED_OFFICIAL_BYTES), и все его числа сверены ДО написания статей. Прецедентfaraid.sharesиkz.tuystyq: у учебного правила нет ни издателя, ни официального текста, и файл изложения сам есть публикация. Сверено с общепринятой учебной формулировкой: перечни исключений растворимости, +2 у кислорода во фториде кислорода, 8/3 у железа в Fe3O4, степени +7 в перманганате, +6 в дихромате и −3 в аммонии, пара исключений Ауфбау (Cr 3d5 4s1, Cu 3d10 4s1) при следующих правилу V и Zn, восемь элементов расширенного перечня, три рода исключений из октета (BF3 — секстет, PCl5 и SF6 — расширенная оболочка, NO — одиннадцать валентных электронов), ограничение пероксидного эффекта одним бромоводородом, четыре клетки Вудворда — Хоффмана и числа пи-электронов бензола, пиридина, циклопропенильного катиона, циклобутадиена, циклооктатетраена и его дианиона.«ПОБЕЖДАЕТ» — НЕ ФИГУРА РЕЧИ, И ЭТО ИЗМЕРЕНО МУТАНТАМИ. Исключение записано правилом с ОТРИЦАТЕЛЬНОЙ головой над тем же атомом, что и общее правило, а порядок — отдельной декларацией §116. На OF2 запрос об общем правиле кислорода даёт FALSE_ONLY, а не NEITHER. Вырезанная декларация приоритета даёт BOTH — не молчание, а неразрешённое противоречие на каждом фториде кислорода; вырезанный конъюнкт
planar(m)делает циклооктатетраен антиароматическим по одному счёту электронов; снятая строка выбора прочтения роняет тест 14 в NEITHER. Все три мутанта прогнаны, остальные тесты у каждого зелены.ТРИ ТВЁРДОСТИ НА ОДНОЙ СИСТЕМЕ, И МЕХАНИЗМ ПОВТОРЁН НА ВТОРОМ ПРЕДМЕТЕ. Паули —
constraint§93.1 ПЛЮС громкое правило (§93.1 на деле не исполняется); Ауфбау —defeasibleс поимёнными дефитерами и замыканием перечня; Хунд — предпочтение, при котором непредпочтённое размещение остаётся ДОПУСТИМЫМ. Правило октета повторяет устройство Ауфбау на другом предмете намеренно: один механизм на двух нормах доказывает, что он принадлежит языку, а не одной удачной статье. Дублет при этом — НЕ исключение, а отдельное правило: у водорода октет неприменим вовсе (octet_rule_appliesдаёт FALSE_ONLY), а не «нарушен и объяснён»; запиши дублет исключением — и пакет утверждал бы, что октет к водороду применим и нарушен.НАПРАВЛЕНИЕ ПРЕЗУМПЦИИ У РАЗНЫХ КЛАССОВ РАЗНОЕ, А СВЕРХ НЕГО ЕСТЬ ЧИСЛОВАЯ ШКАЛА. Хлориды и сульфаты предполагаются растворимыми, карбонаты — нерастворимыми, нитраты не предполагаются вовсе. Ст. 10 добавляет шкалу в граммах на сто миллилитров с двумя порогами, и качественное отнесение с количественным независимы и могут разойтись — расхождение объявляется громким правилом, а не устраняется предпочтением. Свидетелей расхождения два, и оба настоящие: хлорид свинца (0,99 г — нерастворим по перечню, малорастворим по шкале) и карбонат таллия(I) (5,2 г — нерастворим по презумпции ст. 9, растворим по шкале, потому что таллий(I) ведёт себя как щелочной металл, не будучи им).
A3 ОТВЕРГНУТ ДИАГНОСТИКОЙ, А НЕ ДОГАДКОЙ. Шкала растворимости просится строками «катион × анион → граммы», но колонка такой таблицы обязана быть доменной константой:
LDC-E8306отвергает колонку типаEntityRefсловами «у него нет universe §A3.3.1, и значение такого типа не строится термом среза 0.1» — проверено пробой на живой таблице сlaw.lock0.2. Закодировать катион целым числом значило бы выдать доменную константу за величину.ТРЕК О НАШЁЛ ДВЕ НАСТОЯЩИЕ ВЕЩИ И ОДИН ПРОБЕЛ В СЕБЕ. (1)
lawref loopholeобнаружил, что у редакции не было окна действия: проекция §31/D1 снимала все 108 правил с причинойCHEM_RU: not_yet, то есть право пакета было ПУСТЫМ для всякого потребителя, идущего через проекцию, — при 68 зелёных сценариях, которые зовут оракула напрямую. Починено объявлениемin_force [@0001-01-01, infinity)при по-прежнему отсутствующемadopted; тот же класс уже стоил окна пакетуusus.corpus.ochered. (2) Обход proof-графов нашёл три правила, не срабатывавшие ни разу при 65 зелёных сценариях — закрыты, итог 108 из 108. (3)smt_witness.pyзакрыл 2 скалярные цели из 11 и на двух ответил «binary-операцияmodвне среза»: errata E-0062 перечислила пять мест, обязанных знать остаток, и SMT-ветвь пути 3 в перечень не попала — заголовочная операция этого пакета для неё невидима.ГРАНИЦЫ НАЗВАНЫ ПОИМЁННО (ст. 19). Равновесия, кинетика и энергетика — непрерывная математика, вне поверхности §35. Формула вещества не разбирается. Правило
n + lне ВЫВОДИТ конфигурацию, а проверяет заявленную. Учебное объяснение расширенной валентной оболочки участием d-орбиталей современной квантовой химией не принимается, и изложение прямо отказывается его приводить, оставив в правиле проверяемый отбор по номеру периода. Сигматропные и циклоприсоединительные правила отбора объявлены границей, а не умолчаны. -
eo.corpus.fundamento— Fundamento de Esperanto: конституция языка, у которого нет государства (31.08.2026). Заведёнcorpus/laws/eo/fundamento: новая группаeoи новый правопорядокEsperantismo, семь.law, 28 правил, 22 сценария семействаfundamento, differential 35 вызовов байтово идентичны (liblaw_ffi==lawref), Lean — 35 сертификатов принято, 0 отвергнуто, разметка §218 78/0 словаря и 37/0 норм, стаб-цепей 0 из 28 правил, мёртвых символов 0, посылок в никуда 0,doctor.py— «пробелов нет». Шесть закреплённых документов официальной публикации Akademio de Esperanto, 28 фрагментов. Мера §33.1 по единицам деления НЕПРИМЕНИМА и записи в базе глубины не имеет: заголовков «Статья N» нет ни в одном документе (Antaŭparolo — сплошная проза), а заводить конвенцию под голый «N.» хуже молчания — он встречается в перечислениях внутри абзацев. Байтовое покрытие двух учредительных документов — 99,3 % (Antaŭparolo) и 88,1 % (Булонская декларация); итоговые 8,0 % по шести документам отражают намеренно невзятые слои (грамматика, словарные дополнения), а не пробел.Предмет — не грамматика, а механизм, который её удерживает. Формализована конституционная механика: чем основание обязательно, кто и что вправе с ним сделать, и почему старая форма не перестаёт быть правильной оттого, что появилась новая. Учредительная норма закреплена формой
entrenchment§D4 по прецеденту последней оговорки статьи V Конституции США.Ядро — власть ДОБАВЛЯТЬ при отсутствии власти МЕНЯТЬ, и обе половины проверены ОТДЕЛЬНО (EO-FUND-01 против 02): пакет, умеющий сказать только «изменение не прошло», от сломанного правила официализации неотличим. Три ступени статуса взяты не из головы, а из введения к Девятому официальному дополнению 2007 года, где Академия говорит это сама: официализация «ne signifas, ke la radiko fariĝas Fundamenta», ибо фундаментально лишь то, что стоит в «origina netuŝebla Fundamento», а сама официализация имеет характер «forta rekomendo» — «devige gvidi la lingvouzon la Akademio nek povas, nek volas».
АРХАИЗМ — УСТАРЕВШЕЕ, НО ДЕЙСТВИТЕЛЬНОЕ: ВЫРАЗИМО, и не конструкцией, а разделением двух отношений. Это главный замер пакета.
validaвыводится изfundamentaи НЕ читает ниrekomendata, ниarhaisma; слей их — и вытеснение формы стало бы неотличимо от её отмены, ради различения которых написан весь акт. Пара EO-FUND-04/05 держит обе половины: новая форма официализована, старая одновременноarhaismaИvalida; попытка объявить её недействительной не проходит. Отсутствие власти отмены выражено ПОЛОЖИТЕЛЬНО — власть §127 сvalid_whenна отсутствующее право плюс иммунитет §128 с приоритетом §116, — иначе оно было бы невидимо: без узла §127 попытка не находила бы адресата, и дело отвечало бы молчанием вместо недействительности.Запрет менять основание УСЛОВЕН, а не определён, и это проверяемо делом. Первый абзац Antaŭparolo даёт единственный путь: правительства главнейших государств принимают язык особым законом → избранный ими комитет получает право «fari … ĉiujn deziritajn ŝanĝojn». Условие не наступило с 1905 года ни разу, но EO-FUND-02A обязан давать действительное полномочие в мире, где оно выполнено, — иначе формализация утверждала бы о запрете больше, чем текст; 02B держит вторую сторону (двух условий из трёх мало). Соотношение этой оговорки с безусловным «neniu havas la rajton fari ŝanĝon» декларации — правовой выбор, а не технический: он вынесен человеку и решён прочтением A (совместимость), альтернатива записана в README пакета как отвергнутая, а не умолчана.
Число из брифа разошлось с числом из акта, и в акт пошло число из акта. Бриф называл девять Oficialaj Aldonoj (1909–2007); закреплённый источник называет ДЕСЯТЬ — Десятое утверждено 24 сентября 2023 года. Ось редакций построена по закреплённым датам двух крайних дополнений:
algoritm/oофициален с 10 марта 2007,kazaĥ/o— с 24 сентября 2023, и пара EO-FUND-06A/06B проверяет флип с точностью ДО СУТОК (23-е против 24-го), а 06C/06D доказывает, что первая пара говорит о дате, а не о пустоте словарного слоя.Пять языковых версий грамматики — редакции БЕЗ главного текста. Версии на эсперанто не существует вовсе (заголовок источника — «FUNDAMENTA GRAMATIKO … EN KVIN LINGVOJ»), поэтому пять редакций одного источника равноправны по построению, а не по объявлению: все несут
officiality officialи не связаны отношением вытеснения. Правило сверки при неясности легло ПРАВИЛОМ, а не каналом §47.3: сверка даёт результат механически, а канал обязывал бы ждать орган, которого текст здесь не называет. Расхождение версий в пакете не гипотетическое — примечание о суррогатной орфографии четыре версии дают перечнем (ch, gh, hh, jh, sh, u), английская правилом, и Antaŭparolo называет виновника поимённо: ошибки оставлены неисправленными «precipe en la angla parto».Уточнён записанный класс молчаливого отказа. Неравенство над сущностями в теле правила известно как ТИХОЕ: у entity-переменных голова молча остаётся
NEITHER, правило даже не попадает вNON_EXECUTABLE_RULE. Над аргументами-КОНСТАНТАМИ тот же класс оказался ГРОМКИМ —issue TYPE_ERRORна обеих сторонах сверки (EO-FUND-07/07A). Починка не в другой регулярке: нужное различие не в том, что версии разные, а в том, что одна версия не бывает ясной и неясной разом, и место ему — ограничение §93.1 о связности дела.Снято подозрение на молчаливый отказ в чужом пакете. Форма
protected_effect_terminateвстречается в корпусе один раз (us/constitution/equal-suffrage.law) и не перечислена ни вspec/grammar.ebnf, ни в prose, ни в парсере поиском по имени — то есть могла разбираться какmetadata_item, оставляя иммунитет без защищаемого эффекта. Проба сняла подозрение: обе формы понижаются в байтово тот же payload{kind: terminate}. Недокументированный алиас, а не отказ.Одна честная граница языка названа, а не обойдена. «Ĉio alia … estas nur verkoj privataj» есть дополнение замкнутого множества: посылкой было бы
not fundamenta(e), аnotтребует УСТАНОВЛЕННОГО отрицания, которого на обычном деле нет — правило молчало бы, выглядя работающим. Честная форма — замыкание §70, вне среза v1; предикат-пустышка, ничего не выводящий, снят вместе с двумя другими неупотреблёнными объявлениями после воротcheck_dead_symbols. -
quran.atima— пищевые запреты Корана и оговорка о вынужденном: первый акт корпуса, где нормой является само писание и больше ничто (31.08.2026). Заведёнcorpus/laws/quran/atima: новая группаquran, восемь.law, 43 правила (25 строгих, 12 поражаемых, 6 дефитеров), 5 шаблонов норм, 8 замыканий §70, 3 толкования §152, 42 сценария семействаatima, differential 75 вызовов байтово идентичны (liblaw_ffi==lawref), батарея §267 — 10 рукописных.lawtest+ 69 порождённых, все зелёные; разметка §218 60/0 словаря и 47/0 норм, мёртвых символов 0, стаб-цепей 0. Мера §33.1 по подлиннику: EXECUTABLE 18, SOURCE_ONLY 4, UNEXPLAINED 0 из 22 аятов; по переводу — 19, 4, 0 из 23 стихов.Почему собственная группа, а не
fiqh. Уfiqh.hajjиfiqh.sawmрядом с Кораном стоит авторское изложение доктрины, и правила держатся в основном на нём; уfiqh.zakat,fiqh.wasiyya,fiqh.nikahиfiqh.taqlidаяты названы локаторами внутри статей изложения и источниками не являются вовсе. Здесь изложения нет — ни хадиса, ни мазхаба, ни ханафитской базы, — и каждое правило стоит на аяте. Группа кодирует происхождение акта, иfiqhназвал бы доктриной то, в чём доктрины нет. Решение человека, точка §47.3 фазы 0; прецедентfiqh.hajjсprimarySource = QURAN_HAJJбыл предъявлен и отклонён.ВЕСЬ ПОРАЖАЕМЫЙ СЛОЙ ВЫВЕДЕН ИЗ ЗАКРЕПЛЁННЫХ БАЙТОВ ПИСАНИЯ. Пермиссивная презумпция, перечень запретного, два дефитера ограниченной области и оговорка о вынужденном — ни одно из этих звеньев не заимствовано у доктрины. Замыкание перечня объявлено САМИМ текстом ЧЕТЫРЕЖДЫ независимо: ограничительное «إِنَّمَا حَرَّمَ» в 2:173 и 16:115, «لَّآ أَجِدُ … إِلَّآ» в 6:145 и прямое утверждение о подробном изложении запретного «وَقَدۡ فَصَّلَ لَكُم مَّا حَرَّمَ عَلَيۡكُمۡ» в 6:119. Задание называло опорой один 6:145 — три остальных найдены чтением.
ЗАПРЕЩАТЬ ЗАПРЕЩЕНО — ВТОРОЙ ДЕОНТИЧЕСКИЙ СЛОЙ, КОТОРОГО НЕ БЫЛО В ЗАМЫСЛЕ. 5:87 («لَا تُحَرِّمُواْ طَيِّبَٰتِ مَآ أَحَلَّ ٱللَّهُ لَكُمۡ») и 16:116 («وَلَا تَقُولُواْ … هَٰذَا حَلَٰلٞ وَهَٰذَا حَرَامٞ») делают пермиссивную презумпцию не техническим умолчанием вывода, а ОБЯЗАННОСТЬЮ: расширить перечень значит нарушить её, и нарушение это позиция, видимая на деле (ATIMA-31).
АКТ ОСПАРИВАЕТ СОБСТВЕННОЕ ЗАМЫКАНИЕ, И ЭТО ВЫВЕДЕНО ГОЛОВОЙ. 6:121 запрещает «مَّا لَمۡ يُذۡكَرِ ٱسۡمُ ٱللَّهِ عَلَيۡهِ» — основание, которого нет в перечне четырёх ни у одного свидетеля.
ground_outside_the_enumerationвыводится правилом, то есть оспоренность есть факт дела, а не оговорка в шапке файла (приёмfiqh.hajjс расхождением мазхабов).ДВА ДЕФИТЕРА ОГРАНИЧЕННОЙ ОБЛАСТИ, ПРОВЕРЕННЫЕ ПАРАМИ ПО ОБЕ СТОРОНЫ ГРАНИЦЫ. «إِلَّا مَا ذَكَّيۡتُمۡ» (5:3) достаёт до пяти способов гибели и не достаёт до мертвечины, крови, свинины, посвящённого иному и заколотого на жертвеннике; «إِلَّا مَا حَمَلَتۡ ظُهُورُهُمَآ» (6:146) достаёт до тука и не достаёт до нераздвоенного копыта. Проверяется не тем, что изъятие сработало, а тем, что на соседнем деле с ТЕМ ЖЕ фактом оно НЕ сработало (ATIMA-05 против 06/07/08; ATIMA-36 против 37).
ИЗЪЯТИЯ ЗАПИСАНЫ ПРЕМИССАМИ С ЗАМЫКАНИЕМ §70, А НЕ КЛАУЗАМИ
unless, И ЭТО МЕХАНИКА. Проба 31.08.2026:unlessделает правило поражаемым, поражаемый производитель поднимает барьерprohibited_foodрангом выше презумпции, и на деле о МЕРТВЕЧИНЕ — не имеющем к изъятию отношения — одновременно выводятся «дозволено» и «запрещено».lawc checkчист, CLIR валиден, differential сходится байтово; неверен только ответ. Третье измерение канона «производители барьера — только строгие правила», и первое на форме «производитель барьера поражаем по ЧУЖОЙ причине».НЕОГОВОРЁННОЕ ИЗЪЯТИЕ 6:119 ПОГЛОЩАЕТ ГАРДЫ ОСТАЛЬНЫХ ТРЁХ СВИДЕТЕЛЕЙ — найдено исполнением. 2:173, 6:145 и 16:115 требуют «غَيۡرَ بَاغٖ وَلَا عَادٖ», 5:3 — «فِي مَخۡمَصَةٍ غَيۡرَ مُتَجَانِفٖ لِّإِثۡمٖ», а 6:119 гардов не ставит вовсе. При §206-расщеплении «правило на свидетеля» всякий вынужденный освобождается независимо от того, желал он или преступал. Пакет не сглаживает: дописать 6:119 чужие гарды значило бы вписать в аят слова, которых в нём нет. Поглощение объявлено фактом —
exemption_rests_on_the_unguarded_clauseвыводится ровно там, где освобождение держится на одном 6:119 (ATIMA-23/24), и не выводится, где гарды выполнены (ATIMA-25).ОСЬ «АЯТ → МАКСИМА» ЗАКРЫЛА ГРАНИЦУ, КОТОРУЮ СОСЕД САМ О СЕБЕ ОБЪЯВИЛ. Ст. 21 и 22 Маджаллы («الضَّرُورَاتُ تُبِيحُ الْمَحْظُورَاتِ», «مَا أُبِيحَ لِلضَّرُورَةِ يَتَقَدَّرُ بِقَدْرِهَا») в
osm.mejelleформализованы не были: они стояли границей с причиной «текстового крючка у неё в книге III нет». Причина верна и остаётся верной — недоставало не прочтения, а ПОТРЕБИТЕЛЯ. Настоящий пакет им стал, обе максимы заведены в00-maxims.lawи объявленыpub(первыеpub-декларации Маджаллы), границы сняты с записанной причиной. Зазор выводим: ст. 21 говорит то же, что аяты (ATIMA-41), а ст. 22 добавляет соразмерность, которой базовое прочтение не знает (ATIMA-42) — при том, что мера выразима и из самого аята прочтением «وَلَا عَادٖ» как «не преступая МЕРЫ», объявленным толкованиемMeasureOfNecessity.ГРАНИЦА СУННЫ НАЗВАНА, А НЕ ОБОЙДЕНА. «Две мертвечины и две крови» — рыба, саранча, печень, селезёнка — в закреплённых байтах не названы ни разу. Печень есть кровь несцеженная: базовым прочтением 6:145 («دَمٗا مَّسۡفُوحًا», кровь ВЫПУЩЕННАЯ) она дозволена презумпцией, широким прочтением трёх остальных свидетелей — запретна; развилка объявлена толкованием
BloodWithoutTheQualification, а не решена молча. Мёртвая рыба удовлетворяет и дозволению 5:96, и запрету мертвечины — приоритета §116 нет ни в одну сторону, иnot_resolved_by_this_actстоит рядом с запретом выводом, а не молчанием.ВЫРАВНИВАНИЕ §29 ОДИН-КО-ДВУМ У ЦЕНТРАЛЬНОГО АЯТА. Саблуков делит 5:3 на два стиха: 5:4 несёт перечень вместе с изъятием «кроме той, которую очистите», 5:5 — оговорку о вынужденном. Без второй пары оговорка не имела бы в переводе адреса вовсе. Смещения нумераций меняются и между сурами, и ВНУТРИ суры (во второй −5, в пятой 0 → +2 → +1, в шестой 0 → +1, в шестнадцатой +1) — 23 декларации набраны сверкой текста. Попутно исправлен дефект извлекателя, известный по
fiqh.hajj: шапка страницы Викитеки (навигация, название мусхафа, число аятов суры) больше не попадает в закреплённые байты первого аята суры — границей служит басмала.ТРИ СЕРТИФИКАТА LEAN ИЗ 75 ОТВЕРГНУТЫ, И ЭТО КВАЛИФИЦИРОВАНО КАК ДЕФЕКТ ОРАКУЛА. Класс §181.1 («сертификат перечисляет только победителя») открыт в репозитории до этого акта; пакет к нему ПРИСОЕДИНЯЕТСЯ. Под-сигнатура НОВАЯ: одна голова
eating_is_open, одна подстановка, производители в РАЗНЫХ СТРАТАХ —InvokedSlaughterIsOpenToEatingв страте 0 (читает только эмпирическое),EatingOpenToMankind/EatingOpenToBelieversв страте 1 (читают поражаемыйpermitted_food); оракул кладётcandidate_closureпо страте, и Lean, проверяя узел страты 1, находит применимым кандидата страты 0. Детектор: 9 пропущенных кандидатов, 3 документа с дублемconflictKey. Подгонять акт запрещено — слить три правила значило бы стереть, что 2:168 обращено ко всем людям, 2:172 к уверовавшим, а 6:118 к убитому с поминанием имени. -
usus.corpus.ochered— живая очередь: первый акт корпуса, у которого нет даже носителя-сообщества (31.08.2026). Заведёнcorpus/laws/usus/ochered: новая группаususдля безгосударственного эмерджентного обычая, десять.law, 63 правила, 29 сценариев семействаochered, differential 81 вызов байтово идентичен (liblaw_ffi==lawref), Lean — 81 сертификат принят, 0 отвергнуто, батарея §267 — 8 рукописных.lawtest, два журналаprocess-run, разметка §218 81/6 словаря (шесть — пол профиля процедур §160) и 67/0 норм, стаб-цепей 0 из 63 правил, мёртвых символов 0, посылок в никуда 0,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 16, ANCHORED 0, SOURCE_ONLY 0, UNEXPLAINED 0 из 18 статей; учёт единиц 18 из 18, байтовое покрытие 78,9 %. Полный аудит конструкций —corpus/laws/usus/ochered/audit.ru.md(14 видов деклараций из 44, шесть неиспользованных отнесены в группу «ложное усиление — добавлять НЕЛЬЗЯ»).Почему группа новая. Прецедент
voryназывает группу по СООБЩЕСТВУ-носителю. У очереди носителем является всякий присутствующий, и назвать группу именем сообщества значило бы утверждать существование сообщества, которого нет.usus— длительное фактическое пользование, из которого право вырастает без акта установителя; группа заведена под класс, а не под один акт.Три расхождения с заданием, все в пользу источника. (1) Числа Манна в пакете нет: статья 1969 года закрыта платным доступом, открытый реферат величин не сообщает, и предел отлучки остался без числа — спор ст. 6 принял форму «событие против суждения» вместо «число против суждения». (2) Позиционная санкция принадлежит Манну (1970, с. 392), а не Милгрэму: у Милгрэма она процитирована как гипотеза Манна и подтверждена экспериментом. (3) Писаных островков два, и второй важнее: Правила системы электронной очереди на Госгранице (приказ № 707, рег. № 32911) очередь не изымают, а КОДИФИЦИРУЮТ — повторяют порядок прибытия (п. 31), гасят место за неявку (п. 35), легализуют покупку очерёдности (п. 6-1) и запрещают продажу брони соседу (п. 36).
Новый класс молчаливого отказа, найденный обходом лазеек: половина нормы, выраженная одним лишь поражением. У
serves_firstбыл единственный производитель — правило порядка прибытия, — и статутное изъятие лишь ГАСИЛО его вывод, не устанавливая обратного: ответ у ветерана оставалсяNEITHERпри живом правиле,EXECUTABLE-статье, нулевой стаб-доле и байтовом differential. Ни один счётчик корпуса этого не видит. Уликой стало то, чтоlawref loopholeне нашёл пути к цели «пройти раньше честно стоящего» там, где путь заведомо есть. ДобавленоStatutoryPrecedenceGoverns.Недатированная редакция даёт не осторожный ответ, а пустое право.
adoptedу изложения не объявлен (обычай не принимался), ноin_force [@0001-01-01, infinity)объявлен: без него проекция §31/D1 снимала 57 правил из 62, иprocess-runсloopholeработали бы по пустому праву при зелёных воротах. Окно понадобилось и семи редакциям свидетелей —@sourceправил называет их фрагменты, и снятая редакция снимает правило. -
id.halal— Закон Индонезии № 33/2014 о гарантиях халал-продукции: первый индонезийский акт корпуса и первый акт, где халал-сертификация есть СТАТУТНАЯ ОБЯЗАННОСТЬ (31.08.2026). Заведёнcorpus/laws/id/halal: новая страновая группаid, девять.law, 141 правило, 45 сценариев семействаhalal, differential 68 вызовов байтово идентичны (liblaw_ffi==lawref), Lean — 68 сертификатов приняты, 0 отвергнуто, батарея §267 — 8 рукописных.lawtest, разметка §218 214/6 словаря (шесть — пол профиля процедур §160) и 163/0 норм, стаб-цепей 5 из 141 правила (3 %), мёртвых символов 0,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 57, ANCHORED 6, SOURCE_ONLY 5, UNEXPLAINED 0 из 68 статей; учёт единиц 68 из 68, байтовое покрытие 90,2 %.Почему это важнее одного акта. Халал-сертификация почти везде есть добровольный знак соответствия: стандарт частный, право молчит. Ст. 4 этого закона делает её обязанностью — «Produk … wajib bersertifikat halal», — и потому вопрос «обязан ли продукт иметь сертификат» получает правовой ответ. Из этого растёт всё: государственный орган BPJPH, процедура §160 из девяти стадий с тремя сроками в рабочих днях, четыре набора административных взысканий и ДВА уголовных состава (бриф ожидал только административные — расхождение записано).
ДВА РАЗНЫХ КАНАЛА СУЖДЕНИЯ §47.3 В ОДНОМ АКТЕ, И НИ ОДИН НЕ ВЕДЁТ В СУД. Запрещённость МАТЕРИАЛА сверх законного перечня устанавливает Министр по фетве MUI (ст. 18 п. 2, 20 п. 3); халальность ПРОДУКТА — заседание халал-фетвы MUI (ст. 33). Слить их в один
authorityзначило бы утверждать, что акт различия не делает, — а он делает: у первого решение есть «penetapan Menteri berdasarkan fatwa MUI», у второго «Keputusan Penetapan Halal Produk», подписанное MUI.ЗАКОН САМ ПЕРЕЧИСЛЯЕТ ХАРАМ — И САМ ЖЕ ОТКРЫВАЕТ ПЕРЕЧЕНЬ. Ст. 18 п. 1 закрывает четыре источника («meliputi»: падаль, кровь, свинья, забой не по шариату), ст. 18 п. 2 тут же отдаёт остальное Министру. Формализовано ЧЕТЫРЬМЯ замыканиями §70 над законным перечнем (замыкание унарно — LDC-E2114) плюс канал суждения на расширение: молчание дела о запрещённости даёт халяльность по презумпции ст. 17 п. 3, а молчание о ПРОИСХОЖДЕНИИ не даёт статуса вовсе.
ТРИ НАХОДКИ ДАЛ САМ ИСТОЧНИК. (1) Ст. 4 называет три способа присутствия на рынке («masuk, beredar, dan diperdagangkan»), а ст. 67 п. 1, переносящая начало обязанности на пять лет, — только два, без ввоза; развилка взята прочтением §152
ImportOutsideDelayсо статусомdisputed(база — узкое прочтение) и различима ТОЛЬКО выбором прочтения (HALAL-03/04). (2) ОБА английских перевода — регулятора BPJPH и FAOLEX — искажают ст. 61: подлинник отсчитывает два года «sejak BPJPH dibentuk», переводы — «from the legislation of this Law»; переводы согласны между собой и расходятся с подлинником оба, то есть у них общий предок. Формализован подлинник, сторожит HALAL-25. Там же ст. 62 подлинника отсылает к «Pasal 14 dan Pasal 15», переводы — только к 15. (3) Заверенная копия регулятора несёт опечатку в заголовке — «Pasal 59`», U+0060 в текстовом слое PDF; закреплена как есть, обе конвенции деления §33.1 допускают один хвостовой посторонний знак.РЕДАКЦИЯ 2023 ГОДА НЕ ОБЪЯВЛЕНА, И ЭТО ИЗМЕРЕННОЕ РЕШЕНИЕ. Закон № 6/2023 (омнибус, утверждение Perppu № 2/2022) статьёй 48 меняет двадцать восемь положений, включая вставку ст. 4A о самодекларации микро- и малого бизнеса. Единственная доступная копия омнибуса — OCR-слой поверх скана (
pdffonts: невстроенные Type 1,emb no sub no uni no), и порча бьёт в НОМЕРА: «Tahun 2Ol4», «Pasal 1 1», «Pasal 3 1», «Pasal 52El» и — решающее — «Pasal 338» вместо «Pasal 33B», то есть номер испорчен в ДРУГОЙ действительный номер. Акт, целиком состоящий из фразы «Ketentuan Pasal N diubah», из таких байтов формализовать значит выдумать те самые идентификаторы, которыми он и является. Класс тот же, что у сканированных правил «Монополии» ($900 вместо $200), но порча попадает не в ставку, а в адресацию. Осьimpact-editionsдля этого акта объявлена невзятой с этой причиной.СРОКИ В РАБОЧИХ ДНЯХ НЕ ВЫЧИСЛЯЮТСЯ — И ЭТО НАЗВАНО. Три срока главы V (5, 30, 7 «hari kerja») требуют снимка календаря §85, а рабочий календарь Индонезии задаётся ежегодным решением трёх министров, пакетом не закреплённым; снимок «только выходные» дал бы срок РАНЬШЕ настоящего. Счёт рабочих дней приходит фактом, ПОРОГ стоит литералом в правиле и проверен парой дел по обе стороны каждой границы. Шесть остальных сроков акта (пять лет ст. 67, четыре года ст. 42, три месяца продления, два года ст. 62-63 и 65, три года ст. 64, два года ст. 61) ВЫЧИСЛЯЮТСЯ
add_calendar_period.ДЕЛЕГАЦИЯ ОБЪЯВЛЕНА, ДЕЛЕГИРОВАННЫЙ АКТ В СРЕЗ НЕ ВХОДИТ. Двадцать предметов отданы подзаконному акту (восемь Правительству, один Президенту, одиннадцать Министру) и выражены властью §127 с окном от дня вступления закона в силу. Постановление Правительства № 42/2024 стоит на первой из этих отсылок (ст. 67 п. 3); его байты не закреплены, и обещать за него нечего.
МОСТ «СТАТУТ ↔ ДОКТРИНА» НЕ ПОСТРОЕН, И ПРИЧИНА НЕ В СИЛАХ: в корпусе нет доктринального пакета о халальности материала. Семь пакетов
fiqh/— пост, брак, хадж, закят, долг, завещание, таклид, — и ни один о пище. Единственное вхождение словаharamв них (family_resident_at_haram,fiqh.zakat) означает Заповедный предел Мекки: омоним, на который поиск по слову ловится первым.Реестры, тронутые вместе с актом. Новая единица деления
pasalвписана в ОБА реестра меры §33.1 (check_source_pinning.pyиcorpus/tools/lib/act_split.py) — измерено, что без второго мера отвечает «неприменима» при верном учёте; новый набор признаков исполнимого содержания для языкаid(пять классов, включая ДВА, которых нет у соседей: «распределение» — обязанность органа прямым изъявительным, и «перечень» — закрытое перечисление как норма) откалиброван на главах V и IX и молчит на 11 статьях из 68, шесть из которых чистая делегация; профильid-uu-pasalв шаблоне закрепления; правопорядокIDв словаре. Попутно починена проверка 4scripts/lint.py: её набор перекрёстных ссылок знал только русские «статья/пункт» и принимал номер индонезийской статьи за порог — девять ложных находок из десяти на этом пакете (тот же класс, что KeyError уOPERATIONAL_MARKERSна новом языке). -
he.gospel.sermon— Нагорная проповедь как поправки к Торе: первый акт корпуса, чьё утверждение О СЕБЕ проверяется машиной (31.08.2026). Заведёнcorpus/laws/he/gospel-sermon: девять.law, 54 правила, 51 сценарий семействаsermon, differential 100 вызовов байтово, Lean — 100 сертификатов приняты, 0 отвергнуто (7 побеждений сверено), разметка §218 89/0 словаря и 76/0 норм, стаб-мостов 0, мёртвых символов 0, покрытие правил прогоном 54 из 54,doctor.py— «пробелов нет». Мера §33.1 по стихам: EXECUTABLE 28, SOURCE_ONLY 20, UNEXPLAINED 0 (все двадцать — границы с причиной, проверенной по тексту); три базы Торы — 4/4, 3/3, 3/3 EXECUTABLE; учёт единиц 48 из 48, необъяснённых 0, байтовое покрытие 99,2 %. Рукописных.lawtest6, порождённых 88.5:17 — формальное утверждение, и оно проверено, а не пересказано. «Не нарушить пришёл Я, но исполнить» есть заявление о КОНСЕРВАТИВНОСТИ поправки. Каждое дело батареи исполняется ДВАЖДЫ — в мире «сказанного древним» (одна Тора) и в мире «а Я говорю вам», — и оба имени дал сам текст, который строит каждую антитезу как «Ye have heard… But I say unto you». Миры различает один факт дела. На каждой паре запрещены ДВА направления: нарушение мира Торы не вправе исчезнуть и норма мира Торы не вправе исчезнуть. Итог прогона (сценарий-счётчик SERMON-42): 50 пар, запрещённых флипов 0, дерогация 1.
Второе направление добавлено по измерению, а не для полноты. Обязанность-ДОСТИЖЕНИЕ с открытым окном
[@0001-01-01, infinity)не истекает и VIOLATED не становится НИКОГДА — семь сценариев были написаны на VIOLATED и разошлись с ОБОИМИ движками одинаково. Считай проверка только исчезнувшие нарушения — исчезновение ЦЕЛОЙ нормы Торы прошло бы молча, а это и есть «нарушить закон» в прямом смысле 5:17.Вид поправки читается СТРУКТУРОЙ CLIR, а не прозой комментария. Расширение состава есть ВТОРОЙ ПРОИЗВОДИТЕЛЬ предиката (гнев →
in_danger_of_the_judgment, взгляд →guilty_of_adultery, круг любви →within_love_circle); дерогация естьdefeater. Их в пакете ровно один — талион, гашение правомочия потерпевшего, — и утверждение «пять аддитивны, одна дерогационна» держится счётом узлов. Незаявленная дерогация роняет прогон: сценарий, гасящий вывод базы без явного флага, есть отказ.Проверка 5:17 там, где она всего опаснее. Втор 24:1 обращён к отпускающему жену, 5:32 привешивает к тому же деянию новое последствие — дозволение базы ПЕРЕЖИВАЕТ поправку (SERMON-14). Исх 21:23 обращён к ПРИЧИНИТЕЛЮ, 5:39 — к ПОТЕРПЕВШЕМУ: гашение правомочия не трогает обязанности отдать равное (SERMON-26/27). Не будь в пакете второй стороны талиона, дерогация выглядела бы превращением нарушения в дозволенное, то есть опровержением 5:17.
ОБЯЗАТЕЛЬНАЯ НАХОДКА: три цитаты баз разошлись с Торой, и одна базы не имеет вовсе. Проповедь вводит антитезы формулой «Ye have heard that it was said». Половина цитаты 5:43 — «и ненавидь врага твоего» — в Торе ОТСУТСТВУЕТ: ни в закреплённых Втор 24, Исх 21, Лев 19, ни в обеих рецензиях декалога её нет, а Лев 19:17–18 говорит прямо обратное. 5:21 пересказывает «не убий» ВМЕСТЕ с санкцией, которой Исх 20:13 не назначает. 5:33 цитирует составную базу, вторая половина которой — Числ 30:2 и Втор 23:21, в пакете не закреплённые. Висячий якорь молчалив, поэтому находка держится тремя способами: структурно (у пяти баз цепь анкерована во фрагмент ТОРЫ, у шестой — только в
MT_5_43), байтово (sync_sermon_fragments.py --checkищет строки в двух пакетах разом и падает, если находка опровергнута; канарейка проверена правкой Лев 19:18) и ответом права (в мире Торы круг любви для врага даёт NEITHER, а не FALSE_ONLY: Тора о враге не говорит ничего — ни любить, ни ненавидеть).ДЕВЯТЬ ПРАВИЛ ИЗ 54 НЕ ИСПОЛНЯЛИСЬ НИ РАЗУ ПРИ 42 ЗЕЛЁНЫХ СЦЕНАРИЯХ — и ни одни ворота этого не видели. Ни
check_dead_rules(его отказы СТАТИЧЕСКИЕ, а эти правила исполнимы), ни мера §33.1 (стих, на который ссылается хоть одно правило, уже EXECUTABLE), ни differential (обе реализации молчали одинаково). Найдено обходом proof-графов прогона, закрыто сценариями SERMON-43…51, итог — 54 из 54. Переносимая ловушка самого обхода: «правило сработало» отмечается в графе ДВУМЯ видами узла —rule_applicationу литеральной головы (идентификатор в полеrule, у ветви презумпции с суффиксом/R1,/R2) иnorm_creationу деонтической (идентификатора правила в узле НЕТ, имя достаётся изidвидаurn:proof:norm:<Правило>:0). Счёт по одному виду даёт ложное «правило мертво» у ВСЕХ обязанностей разом (19 из 54 вместо 45), срезание суффикса — у всех презумпций (39 вместо 45); оба ответа выглядят правдоподобно и оба неверны.Расхождение свидетелей выведено, а не выбрано. Клаузула 5:32 «saving for the cause of fornication» есть только у Матфея; Мк 10:11 и Лк 16:18 её не знают. Байтов Марка и Луки пакет не закрепляет, поэтому расхождение предъявлено СТРУКТУРОЙ: вырез —
unlessпрезумпции, и разница между свидетелями есть разница в одном узле CLIR. -
Первый
pubуhe.torah.decalogue— экспорт трёх символов по запросу потребителя. До 31.08.2026 декалог не экспортировал ничего, иlawc lowerотвечал на межпакетную ссылкуLDC-E1105: экспортировано: ничего. Открытыaddressee,kills,commits_adultery— ровно те, о которых проповедь говорит прямо (5:19 «these least commandments», 5:21, 5:27); причина записана в шапке каждого. Цена названа: CLIR декалога пересобран,semanticHashизменился, и сужение--only sermonбольше не изолирует пакет — замыкание импортов тянет декалог.Побочно измерено: чистый
lawc checkНЕ доказывает разрешимости межпакетной ссылки.check— и без--imports, и с правильным контекстом — отвечаетok=trueс пустым списком диагностик на правиле, читающем неэкспортированный чужой предикат; отказ приходит только отlower. Класс тот же, что «зелёный lowering, мёртвое право», но с обратным знаком, и он не документирован.И вторая молчаливая ловушка сборки:
import pkg;безversion. Компилятор такую форму принимает,checkчист, но генератор CLIR корпуса выводит порядок сборки регулярным выражением, требующим словаversion, — зависимость становится для него НЕВИДИМОЙ, и сборка падает наLDC-E1104«объявлена import-ом, но не предъявлена resolve-контекстом», то есть жалуется на отсутствие того, о чём сама же не спросила. -
logic.zebra— зебра-паззл: первый акт корпуса, содержание которого есть ОСТАТОК замыкания §70, и первая группа каталогаlogic(31.08.2026). Заведёнcorpus/laws/logic/zebra: четыре.law, 45 правил, 21 сценарий семействаzebra, differential 352 вызовов байтово, Lean — 352 сертификата приняты, 0 отвергнуто, разметка §218 44/0 словаря и 45/0 норм, стаб-мостов 0 из 45 правил, мёртвых символов 0,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 16, SOURCE_ONLY 2, UNEXPLAINED 0; учёт единиц 18 из 18, байтовое покрытие 99,4 %.Пятнадцать посылок ничего не выводят — они ПРОВЕРЯЮТ расстановку, предъявленную делом. Выводится ровно то, чего дело не говорит: вода и зебра не названы ни одной посылкой, и оба ответа приходят остатком замыкания §70 по условию 16. Сломай замыкание — оба станут NEITHER при пятнадцати зелёных посылках и зелёных статических воротах; видят это ZEBRA-17 и ZEBRA-18, ломающие по ОДНОМУ замыканию каждый (симметричная поломка спрятала бы половину).
Режим «проверка, а не поиск» объявлен границей в самом изложении. Движок деривирует по фикспойнту и ветвиться не умеет; о единственности решения акт не утверждает ничего. Мост к SMT в объём не заведён осознанно: «второй модели нет» было бы утверждением о кодировке, а не о CLIR.
Различность признаков написана СЧЁТОМ, а не отрицанием.
not <повторён>над выводимым предикатом молчит на всяком деле (установленного отрицания не даёт ни §70, ни открытый мир), а!=над сущностями молчит при зелёныхcheckиlower. Различность выраженаcount(collect …) == 1по ЭМПИРИЧЕСКОМУ отношению дела — барьер §111 запрещает агрегат над ВЫВОДИМЫМ и сюда не достаёт; различность домов — целочисленными позициями.Три измеренных факта, каждый стоил бы времени следующему. (1) Константа перечисления внутри generator-а comprehension §52.1 отвергается громко — LDC-E1317; значение обязано связываться биндером правила. (2)
reference … resolve_at legal_timeна редакцию без дат жизненного цикла даётSOURCE_RESOLUTION_FAILEDуровня fatal на КАЖДОМ деле пакета, а не на одной ссылке: провенанс Life International записан фрагментами-локаторами в редакцииABSTRACT_ONLY, а не выдуманнымin_forceжурнальному номеру. (3) У посылки 15 ветвь «правее» НЕДОСТИЖИМА, пока соблюдена посылка 10 (норвежец в первом доме — синему пришлось бы стоять в нулевой позиции); исполняется только на зеркальной расстановке ZEBRA-19, которая ломает ровно посылки 6 и 10 — единственные две, у которых есть направление.Источник: свои байты закреплены, чужие названы без закрепления. Авторское изложение написано для репозитория и закреплено собственными байтами (
PINNED_OFFICIAL_BYTES,authored_exposition— прецедентfaraid.shares); байты Life International (17.12.1962, решение — 25.03.1963) не закрепляются вовсе: копирайт, живого пина нет. Приписывание задачи Эйнштейну и Кэрроллу названо ЛЕГЕНДОЙ в самом тексте изложения. Новая единица деления «посылка» вписана в ОБА реестра меры §33.1 и в две таблицы имёнboundaries.py: пятнадцать посылок, условие и два вопроса нумерованы сквозной последовательностью 1—18, и три слова заголовка дают ОДНУ единицу — иначе номера при локатореarticle/Nперестали бы быть уникальными.Границей объявлены оба ВОПРОСА, и это не молчание пакета. Вопрос нормы не содержит, из него ничего не выводится, — а ответ на него выводится правилом остатка условия 16. Анкерить это правило ещё и на вопрос значило бы поднять меру §33.1 разметкой, а не формализацией.
-
bab.hammurabi— Кодекс Хаммурапи, первая сессия (§§1–5, 195–223, 229–233, 250–252; 31.08.2026). Новая группаbab, правопорядокBabylonianKingdom(без искусственного ISO-кода), CLIRbab-hammurabi.lawir.jsonи 42 фрагмента современной издательской единицыhammurabi_law. Закреплены перевод И. М. Волкова 1914 года и транслитерация CDLI P464358; §§66–99 стелы помечены как лакуна, требующая вторичного свидетеля при будущем расширении. Строгая казуистика покрывает суд, сословные телесные повреждения, шкалу врача, обрушение дома и бодливого вола. Первый в корпусе проверенный карательный викарный талион: §230 выводит казнь сына строителя и на том же деле исключает казнь строителя. §2 оставляет ордалию внешнему суждению Реки; §5 меняет статус судьи навсегда. Одна сравнительная сцена прогоняет быка без уведомления в двух пакетах: у Хаммурапи денежная санкция не выводится, вleges_xiiвозникаетnoxae_deditio. Полный разбор, границы A3, будущие эпилог и Исход 21:28–32:corpus/laws/bab/hammurabi/audit.ru.md. -
«Начала» Евклида I.20/I.47/I.48 — теорема Пифагора как первый математический акт корпуса (31.08.2026,
grc.eukleides.pythagoras). Подлинник по пиннованной ревизии el.wikisource + пофразная сверка с Гейбергом (Perseus, фиксированный commit); единица — предложение (конвенцияprotasisзаведена вcheck_source_pinningиact_split). Мера §33.1 EXECUTABLE 3/3, закрепление 96,2 %. Девять strict-правил: гейт существования I.20 (строже «не меньше» — вырождение отвергается), признак I.48 тремя правилами по позиции угла, контрапозиция I.47 и сторож противоречия заявленного угла. Сцена (0,3,3): пифагорова арифметика без треугольника признака не даёт — гейт материален. 17/17 сцен, differential 20/20 байтово, Lean-зонд 20/0, 5.lawtest, разметка без остатка, sync-ворота фрагментов вписаны вrun_all.sh. -
kz.paracetamol мигрирован на
with_unit— обе миграции E-0074 закрыты в один день (31.08.2026). Семь пришивок выхода (… * MilligrammEdinitsa: пересчёты по концентрации, пределы по ставкам, полосная таблица, сорбитол) переписаны наwith_unit(…, "mg")— тег литералом на месте пришивки. Побочная находка:MilligrammEdinitsaжил ТОЛЬКО пришивкой — сравнения ставок идут размерно (mg против mg, E-0068), и сирота снята вместе с меткой (пол разметки 122 → 121 осознанной правкой с $comment); эталоны входаKilogrammEdinitsa/MillilitrEdinitsaостались громкой половиной. Приёмка: 46/46 сценариев, differential 60 вызовов байтово. Оба тарана DECISION-0068 теперь живут на обеих формах, которые сами породили: класс опечатки «эталон не той единицы» невоспроизводим ни в одном акте корпуса. -
Сторож реестров векторов не разбирал реестр — и два дня отменял хвост локального конвейера (31.08.2026).
new_vector.py --checkопознаёт записьSUPPORTEDпо ФОРМЕ пути. До переноса корня записи писались какvectors/errata/ID, и разбор считал слэши — двух хватало; DECISION-0059 дописал всем путям префиксverify/, сверку префикса поправил, а условие арности оставил прежним (m.count("/") == 2при трёх слэшах). Множество записей стало ПУСТЫМ: инструмент отвечал «вне SUPPORTED» про КАЖДЫЙ evaluate-вектор — 168 строк, в которых настоящий пробел покрытия был бы неразличим, — и был объявлен «предсуществующе красным». Цена оказалась выше шума: шаг стоит вverify/ci/run_all.shподset -eu, поэтому с 29.08 не исполнялись ДЕСЯТЬ идущих ниже вызовов, включая ворота раскладки корня, которые тот же перенос и завёл (check_root_layout), туториалы, воспроизведение примеров, типизацию исходников векторов, процессный слой, формы отчётов трека О и поверхности демо. Правка: форма записи проверяется числом сегментов пути, а не слэшей; «реестр не разобран» отличён от «реестр пуст» — ноль записей при непустом файле ворот теперь отдельный отказ ОДНОЙ строкой, и членство в SUPPORTED в таком прогоне не проверяется вовсе, чтобы поломка разбора не маскировалась под массовую непокрытость. Канарейка —scripts/test_new_vector.py(вrun_all.shстрокой ПЕРЕД--checkи в планеverify.py): на возврате старого предиката краснеет, проверено мутацией. После починки--checkзелен без единой правки реестров — они были согласованы всё это время; все десять отменённых вызовов прогнаны поимённо и зелены, включая обе канарейки раскладки и демо. -
Вектор на границу конверсии:
ERR-E0072-CONVERT-SOURCE-UNIT-UNCHECKED(31.08.2026). Пятый вектор E-0072 предъявляет исполнимо названную прозой границу — тег ИСТОЧНИКА не сверяется ни с фактором, ни с тегом цели:convert(18 m_per_s, 5, 18, "m_per_s")=5 m_per_s, COMPUTED, ноль issues, хотя источник и цель суть один тег (вырожденность дела и есть свидетельство: фактор применяется безотносительно тегов). Вектор пинует не способность, а границу — её отступление до сих пор прошло бы молча, теперь это отказ с квалификацией по инварианту 8. Живой замер, из которого граница добыта, — миграция ст. 3phys.zadachnikна терм (audit §2.6): голая замена эталонной записи теряла громкую проверку входа. Три реестра синхронно (digitize + artifacts/kinds + SUPPORTED), обязательство E-0072 дописано пятым пунктом, §259-абзац оunit— оговоркой об источнике. Векторы 383 (374 runnable), differential 168/168 байтово, capability-matrix перегенерирована; попутно закоммичены пятьcase.lawtestвекторов E-0074, порождённых тем же прогоном генератора. -
phys.zadachnik мигрирован на
convert— и замер миграции нашёл слепоту терма к ИСХОДНОМУ тегу (31.08.2026, E-0072). Переводные нормы ст. 3 переписаны с эталонной записи ((v / KmVChasEtalon) * 5 / 18.0 * MetrVSekunduEtalon) на явную формуconvert(v, 5, 18, "m_per_s")по образцу миграцииkz.paracetamolна E-0068. Куплено: обе переводные пришивки ушли (тег цели — аргумент, опечатка «пришил эталон исходной единицы» в переводах невыразима) и снята граница 10-гладкости —convert(1 km_per_h, 5, 18, "m_per_s")возвращает точную дробь 5/18 там, где эталонная запись отвечала TYPE_ERROR (новый сценарий KZ-PHYS-39). Замер миграции (audit §2.6, четыре дела на четырёх записях одной нормы, обе реализации байтово) назвал и цену:convertсверяет вид значения, но не единицу источника (реестра факторов нет намеренно — сверить 5/18 сkm_per_hне с чем, сказано самой erratой), и голая замена записи термом отвечала бы на скорость, поданную уже в м/с, МОЛЧА — на гладком частном18 m_per_s→5 m_per_sTRUE_ONLY, то есть внесла бы в акт третью дыру класса «масштабирование читается как пересчёт». Поэтому эталонная гвардия оставлена ОТДЕЛЬНОЙ НОРМОЙ: числовое значение поданной скорости (ст. 3 называет его прямо) считается делением на эталон, перевод требует его посылкой, чужая единица роняет посылку громким TYPE_ERROR с обоими тегами. Сторожа падающие: KZ-PHYS-07 и новый KZ-PHYS-40 с гладким частным — снятие посылки красит второй первым. Приёмка: сценарии 40/40, differential 49 вызовов байтово,.lawtest20/20, Lean 49/0 обеими ногами, разметка 80/0 + 48/0, мера §33.1 EXECUTABLE 12/12 при UNEXPLAINED 0, пробы замера 25/25 без единой правки ответов (они меряют язык, а не акт — датированная оговорка в шапке скрипта). Эталонная запись ФОРМУЛ этой правкой не тронута:convertпокрывает перевод, а не «численно равен» источника. -
phys.zadachnik мигрирован на
with_unit— у эталонной записи не осталось слепого выхода (31.08.2026, E-0074). Все 15 пришивок выхода в шести модулях переписаны с… * XEtalonнаwith_unit(…, "тег"): тег теперь литерал на месте пришивки, и класс опечатки Н4 («эталон секунды на месте эталона метра → путь 300 s TRUE_ONLY молча») в акте невоспроизводим. Эталоны ВХОДА (v / Etalon— громкая половина, E-0068) остались как были; осиротевшие эталоны выходаKilometrEtalonиVattEtalonсняты, пол разметки ослаблен 82 → 80 осознанной правкой храповика с $comment. Приёмка: сценарии 40/40, differential 49 вызовов байтово, пробы замера 25/25 (они мерят идиом языка и сохранены историей с датированной оговоркой). Обе молчаливые дыры замера тарана №2 закрыты для акта существованием явных форм: перевод — convert (E-0072), пришивка — with_unit (E-0074). -
ERRATA E-0077: выведенный атом не проходил сверку сигнатуры, которую проходит дело (31.08.2026). Третий и последний слой класса «объявленный тип не сверяется»: E-0053 закрыла константы, E-0046 — утверждения дела, E-0077 — головы правил. Найдена замером тарана №3 (
kz.tarifyН5: Money-слот принялQuantity[tenge_per_kWh]молча, TRUE_ONLY;phys.zadachnik: Decimal-слот принял Rational 1/3) — два входных пути одного support жили под РАЗНОЙ дисциплиной, и differential молчал по построению (реализации соглашались). Правка: материализованная голова strict- и defeasible-ветвей проходит ту же сверку §189 (check_derived_types, тот же индекс, что E-0046) ДО укладки в support; отказ per-подстановка (вид §58 значение-зависим — соседняя 10-гладкая подстановка того же правила проходит), сообщение зеркалит E-0046, арность и entity_ref — по её границам; closure/эффекты власти/позиции названы безымянным остатком (свидетеля нет). ВекторыERR-E0077-DERIVED-ARG-TYPE/-KEPT— приём и отказ в ОДНОМ документе, вход исходником, оба вSUPPORTED; векторы 385, differential OK, Lean-ворота, clippy/tests 35/0, бандл оракула пересобран. Радиус полной регрессией (10136 сценариев): затронуты ровно 3 — все phys.zadachnik, все запинены ЗАРАНЕЕ как швы и перевёрнуты осознанно: KZ-PHYS-27 и тест 15 (Rational в Decimal-слот КПД), KZ-PHYS-33 (терпимый поимённо коллатеральный код —_truthнаучился tolerated), KZ-PHYS-39 — граница 10-гладкости, снятая E-0072 утром (convert-Rational входил в Quantity-слот МОЛЧА, класс E-0053), вернулась вечером дверью дисциплины слота; семейство 40/40, differential zadachnik и tarify OK. Пробы Н4/Н5 тарифов теперь громкие байтово (45/45), audit §3.5 аннотирован: Quantity-ветвь находки закрыта, «плата минус тариф» в Money-ветви — цена выбора, не дефект типов. Остальные 16 провалов прогона — ПРЕДСУЩЕСТВУЮЩИЙ чужой красный (MISSING_CALENDAR в linked-прогонах business_day: anti_corruption + subsoil; воспроизведён на коммите ДО errata, worktree 134e6d17) — заведён отдельной задачей, 3 FAIL покрытия — регистрационные долги чужих семейств (myco/ofac/semidnevka). -
ERRATA E-0074: пришивка «число → величина» получила явную форму —
with_unitзакрывает вторую молчаливую дыру замера phys.zadachnik (31.08.2026). Обратный ход эталонной записи был скалярным умножением §49 на эталон-константу, и эталон НЕ ТОЙ единицы пришивался молча: правило выводило путь «300 секунд» TRUE_ONLY без единой диагностики (Н4) — эталонная запись громка на входе и слепа на выходе. Заявка задачника проекта не оставила («сверять не с чем без реестра»); errata отвечает: проверяемость — не реестром, а СТРУКТУРОЙ. Правка:with_unit(value, unit)вlaw.std.units§259 — три отказа, которых у идиома не было: величина с единицей отвергается поимённо (перетег — толькоconvertE-0072, повторная пришивка невыразима по построению), Money — к §50, неточная дробь — RUNTIME_ERROR по канону INEXACT_DIVISION; тег выхода — ЛИТЕРАЛ на месте пришивки, эталоны выхода не нужны вовсе, класс опечатки «не тот эталон» исчезает (опечатка в самом литерале остаётся авторской — граница названа). Побочно снята вторая половина «Rational не пришивается»: 10-гладкая дробь становится Quantity (with_unit(1/4, "m")=0.25 m). Вид результата всегда Quantity — известен статически, в отличие от convert. Скалярный идиом §49 не запрещён. Пять векторов вSUPPORTED; check_std_registry 12 термов синхронно, векторы 373, differential OK, cargo test 363/0, бандл оракула пересобран, wasm/ffi зелены. Заявка DECISION-0068 §5 закрыта в двух пунктах из трёх; третий (умножение размерных пар + канон составного тега) честно ждёт свидетеля. -
ERRATA E-0072: конверсионный терм
convert— явная форма рамки 1 DECISION-0068, проведённая по проекту акта-тарана (31.08.2026). Рамка объявляла «конверсия — только явной формой», а формы не было: перевод «72 км/ч → м/с» записывался лишь масштабированием/3.6, возвращающим20 km_per_hМОЛЧА (вторая дыра класса «масштабирование читается как пересчёт»), а перевод с не-10-гладким частным был невыразим вовсе (Decimal * Rational— TYPE_ERROR, T163). Правка:convert(value, num, den, unit)вlaw.std.units§259 — только Quantity (Money отвергается поимённо: §50), точный фактор парой строго положительных Integer аргументами при норме-владельце (реестра факторов НЕТ — 18/5 есть определение, не курс), вид результата по значению как у Decimal/Decimal (10-гладкое — Quantity целевого тега, иначе точный Rational). Оператор/не тронут ни на одной паре. Проект терма целиком — из заявкиphys.zadachnik(audit §3.2, каждое решение с задачей-свидетелем); проведён без отклонений. Три реестра std и статика синхронно (check_std_registry: 11 исполнимых термов, оракул == движок), Lean —.opaqueсознательно. Четыре вектора вSUPPORTED; векторы 367, differential OK, selftest, clippy/cargo test (362), бандл оракула пересобран, wasm/ffi зелены. Из заявки остаётся проверяемая пришивка «число → величина» — за владельцем. -
T163: формулировка отказа
Decimal * Rationalвыровнена на оракульную — закрыта differential-находка тарана №2 (31.08.2026). Пара отвергалась обеими реализациями TYPE_ERROR, но РАЗНЫМИ байтами: оракул — «mul: Rational не смешивается с Decimal-видами (§48)», lawc — «§49-алгебра — с unit-package» (обещание пакета там, где его не будет: смешение видов чисел не станет законным и с ним). Ни один вектор пару не пиновал — differential молчал (найдено живой пробойphys.zadachnik, audit §2.3). Владелец выбрал оракульную формулировку; lawc получил арм(Rational, _) | (_, Rational)дословно, пин — вектор T163 (T-семейство по прецеденту T132: формулировка под контрактом §211; errata не потребовалась — prose §48/§58 верна, врали только байты lawc). T163 вSUPPORTEDи матрице CORE-TESTS;KNOWN_DIVERGENTprobe-скрипта опустошён — 25/25 проб задачника байтово, векторы 363, differential OK, clippy/cargo test (362) зелены. -
ERRATA E-0068: ставка «X мг/кг» получила размерно честную запись — одна строка таблицы делимых §58, проведённая актом-тараном (31.08.2026). Таран
kz.paracetamol(DECISION-0068 п. 4) нашёл то, чего разведка не увидела: рядом с невыразимостью ставки жила МОЛЧАЛИВАЯ дыра —Quantity[u] * Integerмасштабирует, и записьd <= w * 15со случайно совпавшими тегами исполнялась без единой диагностики с порогом, съехавшим в тысячу раз. Правка:Quantity / Quantityпри байтово ТОЖДЕСТВЕННОЙ единице — безразмерное частное по правилу пары Decimal/Decimal (15 mg / 1 mg= 15;1 mg / 3 mg= Rational 1/3); разные единицы — TYPE_ERROR, называющий оба тега (неявной конверсии нет — рамка 1 DECISION-0068); умножение не тронуто. Две развилки решены владельцем multi-choice: вход безусловно в ядро (рамка 3 уточнена: feature-флаг — вход ПАКЕТА, не строки таблицы), вид частного зеркалит Decimal/Decimal, а не «плоский Decimal» черновика. Дыра закрыта ПО ПОСТРОЕНИЮ: в записи(d / MilligrammEdinitsa) <= (w / KilogrammEdinitsa) * 15чужая единица — громкий отказ; единица переезжает из имени предиката в тип. Пять векторов + точечная перезаморозкаERR-E0064-QUANTITY-PAIR(граница сузилась до кросс-юнита осознанно); differential 157/157 байтово, векторы 358/358, clippy чист, 360 тестов, бандл оракула пересобран, wasm/ffi зелены.kz.paracetamolназван первым кандидатом на миграцию к размерной записи. -
ERRATA E-0075 + E-0076:
pow— последнее имя перечня §58 обрело семантику; перечень §58 впервые стал правдой целиком (31.08.2026). Седьмое и последнее «объявлен и неконструируем» перечня операций:powне имел ни продукции, ни лексемы, ни таблицы видов, а три записи степени давали три разных отказа, ни один из которых не называл §58 (самый тихий носитель класса — LDC-E2105 читается как опечатка). Свидетель — акт-таранla.gauss.theorema_fermatianum(малая теорема Ферма цепью проверяемых звеньев). Решения владельца (multi-choice): носитель — std-ТЕРМ (как min/max/abs из той же половины перечня; грамматика не тронута), единственная параInteger pow Integer -> Integer, показатель < 0 — TYPE_ERROR,0^0 = 1(пустое произведение, засвидетельствовано источником: «praeter primum 1», Гаусс DA art. 45). Два предела RESOURCE_LIMIT с обеими сторонами в векторах: показатель > 4096 — до вычисления; результат — 64-битный диапазон ЗНАЧЕНИЯ Integer (2^62точен,2^63— отказ; уточнение против черновика: у mod/div i128 был промежуточным, у pow предел встаёт на самом значении). Шесть реестров синхронно (check_std_registry13==13), семь векторов E-0075 (INT-POW — исходником, гардpow(v,3) mod 7 == 1— экземпляр самой теоремы). E-0076 закрыла попутную находку тарана: перечень термов в сообщении «std-функция вне v1-среза» печатался в РАЗНОМ порядке двумя реализациями — байтовое расхождение §170, недостижимое через lawc check и достижимое чужим CLIR; теперь отсортирован у обеих, байты пиннит векторERR-E0076-STD-SLICE-ORDER. Векторы 383, differential байтовый, clippy/cargo test (368) зелены, бандл оракула пересобран. Снята языковая половина долга Кармайкла (остаток — кодировка показателя-переменной у решателя, audit §5.4); переписка правил Гаусса наpow-гард — работа акта. -
Следствия E-0075 в акте Гаусса: предсказание черновика опровергнуто замером, обе половины долга Кармайкла сняты (31.08.2026). Черновик errata обещал свести
ProbatioFermatianaTransactaк одному гардуpow(basis, modulus - 1) mod modulus == 1и сделать след иллюстрацией. Обещание неисполнимо, и опровергает его тот самый пункт, которым проведение отклонилось от черновика (предел на ЗНАЧЕНИИ, а не на промежуточной разрядности): гард даёт TRUE_ONLY при модулях 7 и 13 и RESOURCE_LIMIT при 341 (2^340) и 561 (2^560) — ровно на псевдопростом и числе Кармайкла, ради которых пакет заведён. Рамкой малости это не чинится, и это находка ширеpow: порядок конъюнктов тела — sha256 канонических байтов (§207.1/E-0002),solveберёт первый полностью связанный в ЭТОМ порядке, а ошибка терма гасит правило ЦЕЛИКОМ; две записи одной мысли, отличающиеся одной цифрой в рамке (modulus <= 11против<= 12), ведут себя по-разному — первая чиста, вторая падает. Гардом нельзя защитить частично определённый терм; долг записан §9.4 (ширеpow— деление,convert, календарь у краёв §85). Сделано: степень взята туда, где тотальна на объявленном домене — три экземпляра инварианта (pow(basis, 2|4|6), показатель ЛИТЕРАЛ, максимум по всем сценам7^6) плюс новый свидетель эквивалентности двух записейPotestasVestigioDiscordat(второе звено следа против прямой степени; избыточен по замыслу — сработает только на дефекте самого терма);ProbatioFermatianaTransactaосталась на цепи, потому что за 64 битами альтернативы нет. Регрессия 26/26, differential 26 вызовов байтово, Lean 26+26/0, порождённые.lawtestбайтово те же, разметка затянута до 25/0. -
Кодировка степени у решателя + ворота
check_smt_pow(шаг 38/47, 31.08.2026). Вторая половина долга Кармайкла (audit §5.4) снята ЗАМЕРОМ.powвsmt_witness.pyразворачивается произведениями (литеральный показатель —nсомножителей, переменный — цепочкаiteпо0…POW_EXP_CAP), кап объявлен числом (64) и ПЕЧАТАЕТСЯ отчётом всякий раз, когда степень кодировалась; границы §58/E-0075 стоят assert-ами в самих скриптах (показатель в[0, кап], результат в 64-битном диапазоне — модель вне него была бы свидетелем дела, которого движок не исполнит). Охота дала три ответа, и верен не тот, что похож на успех: решатель ПЕРЕОТКРЫЛ наименьшее псевдопростое (n = 9, основание 8, движок подтвердил реплеем) на капах 8 и 16; на 32 и выше молчит (потолок развёртки между 16 и 32, а 341 требует 340); а мгновенный UNSAT приn > 100— ЛОВУШКА: он держится не арифметикой и не капом, а запретом 64-битного диапазона (снятие assert-а меняет ответ наunknown), то есть утверждает «нет ИСПОЛНИМОГО дела», а не «нет чисел Кармайкла». Побочно починен молчаливый дефект инструмента:solveвозвращал модель либоNone, иNoneозначало «unsat ЛИБО unknown» — а атака печатает по нему «доказано решателем», режим свидетеля — «кандидат в мёртвые нормы». Развёртка степени — первый класс скриптов, на которых z3 молчит (измерено: один и тот же скрипт дал свидетеля за 5,7 с и промолчал 60 с в повторе), то есть дефект стал достижим и объявлял бы теорему тем охотнее доказанной, чем труднее задача. Теперь вердиктов три, таймаут — тожеunknown(первый прогон охоты уронил инструмент трейсбеком), и молчащая ветвь отменяет утверждение так же, как усечённый перебор §206. -
ERRATA E-0064 + DECISION-0068: пример §49 обещал
Quantity<Velocity>— обещание снято, границы unit-package застолблены ДО реализации (31.08.2026). Третья строка примера §49 (5 m / 1 s // Quantity<Velocity>) обещала вид, которого v1 не определяет: таблица делимых E-0020 пары Quantity/Quantity не называет, обе реализации отвечают TYPE_ERROR. Квалификация — дефект prose-ИЛЛЮСТРАЦИИ (класс E-0060), реализации верны; в отличие от E-0062 обещание не реализовано, а снято: спрос замерен (597 употреблений Quantity в CLIR корпуса, 580 — календарные единицы §84–§86, физических семь, ни одна не умножалась). Разведка выразимого четырьмя пробами: пороговая норма «15 м² на человека» ВЫРАЗИМА уже в v1 умножением насквозь (a >= n * 15 sq_m; граница 45/44 м² на троих различается делом), истинно заблокированы кросс-юнитная ставка (mg/kg — DIMENSION_MISMATCH на исполнении), произведение двух размерных величин и производная величина как значение (оба — статический LDC-E2108); молчаливых дыр на границе НЕТ. DECISION-0068 фиксирует четыре рамки будущего unit-package: конверсия только явной формой (прецедент Money §50), канонизация существующих единиц-тегов не меняется (МРП и «щелчок» — постоянные непрозрачные жители, вход аддитивен по построению), въезд feature-флагомlaw.units/0.1по образцу A3, реализация — только с мотивирующего акта (лучший кандидат — дозировка mg/kg). ВекторERR-E0064-QUANTITY-PAIR(терм из самого примера §49) вSUPPORTEDдержит отрицательную половину §49 байтово: differential 144/144. Попутно добит третий случай unlink-класса E0052:T071/source.law(FunctionDecl вне среза рендерера) удалялся тем же прогономgen_artifacts, который его создал, — теперьlawc_lowerрегистрирует ВСЯКИЙ скомпилированный исходник вAUTHORED_SOURCESсам, и защита распространяется на билдерные и будущие вызовы по построению; шесть исходников errata и триver/перестали перезаписываться канонрендером (авторитет — файл, поданный компилятору). -
ERRATA E-0062: остаток от деления —
modбыл объявлен перечнем §58 и грамматикой и не существовал нигде ниже (31.08.2026). Шестое повторение класса «объявлен и неконструируем», впервые об операции самого перечня §58: лексер словаmodне знал (n mod 2 == 0— LDC-E0201), а чётность деления не заменялась в принципе — §58/E-0020 делит целые точно. Правка: единственная параInteger mod Integer -> Integer, остаток ЕВКЛИДОВ (0 <= r < |b|при любых знаках; родные%Rust и Python расходятся — усечённый против флорного, — поэтому конвенция стоит в prose, а векторERR-E0062-MOD-SIGNроняет любую реализацию на родном операторе: правилоv mod 3 == 2 and v mod -3 == 2на факте −7).modна ноль — evaluation error, как деление на ноль; пары вне списка — TYPE_ERROR под байтовым контрактом. Ключевое слово в лексере (без него5 mod 3разбирался бы Quantity-литералом5 mod), арм множительного уровня, строка таблицы видов law-hir, евклидов остаток в обеих реализациях (% absнад произвольной точностью /rem_euclidнадi128), рендер векторов. Схемы не тронуты (BinaryTerm.op— свободная строка), Lean — сознательно (.opaque, граница деления). Четыре вектора, все вSUPPORTED; differential 143/143 байтово, байты корпуса не двинулись.powиз того же перечня назван смежным пробелом и не закрыт — свидетеля в корпусе нет. Попутно закрыт дефект конвейера векторов:emit_sourcesудалял рукописныйsource.lawвектора, чей ir рендеру невыразим (программныйassertвне среза рендерера), —ERR-E0052-DECIMAL-CANONтерял исходник на каждом полном прогонеgen_artifacts; заведён реестрcommon.AUTHORED_SOURCES, петля рендера авторские исходники больше не трогает ни перезаписью, ни unlink-ом. Комментарии двух актов-свидетелей (togyzqumalak,calendar-act-1750) обновлены: разрыв закрыт, их решения оставлены сознательно. -
fiqh.dayn— аят о долге (Коран 2:282-283): ВТОРОЙ пакет корпуса, где Коран есть источник с закреплёнными байтами, и первый взвешенный счёт §59 (31.08.2026). Закреплены две редакции одного work — мусхаф Медины в передаче Хафса и перевод Г. С. Саблукова 1894 года, — 21 фрагмент и 2 декларацииalign§29. Восемь.law, 39 правил, 10 норм-шаблонов, 52 сценария раннераdayn, differential 52 вызова байтово, Lean — 52 сертификата оракула и 52 движка приняты, 0 отвергнуто, батарея §267 — 14 рукописных + 52 порождённых.lawtest. Покрытие §33.1: EXECUTABLE 2 из 2, байтово 99,9 %,UNEXPLAINED— ноль, разметка §218 — 58/0 словаря и 49/0 норм, стабовых мостов 0 из 39 правил.Взвешенный счёт составов — первый в корпусе агрегат с НЕРАВНЫМ весом. Двое мужчин ЛИБО мужчина и две женщины; иерархия составов взята из условия самого аята («فَإِن لَّمۡ يَكُونَا رَجُلَيۡنِ») положительным сравнением
< 2над тем же счётом, а не отрицанием, которое на молчащем деле дало бы NEITHER. Обе стороны условия стоят ВНУТРИ одного comprehension: разнеси их — и норма держалась бы на совпадении чисел, а не на тождестве лиц. Состав из одних женщин аят не называет, и правила о нём нет ни положительного, ни отрицательного — молчание сторожит сцена DAYN-10.Вырез, антивырез и граница выреза — на одном деле. Наличная торговля из рук в руки снимает запись (
unless§149), размер долга её не снимает («мал он или велик» выведено ПОЛОЖИТЕЛЬНО, а не оставлено отсутствием условия), а свидетелей вырез не касается вовсе — следующее предложение аята велит брать их при купле-продаже. Сцена DAYN-05 показывает все три факта разом.Два канала суждения §47.3 с органами, названными самим текстом, и оба держатся отдельно от того, с чем их естественно слить: ризаа сторон («مِمَّن تَرۡضَوۡنَ») — от арифметики состава, потому что через агрегат канал не проходит; малоумие должника — от немощи и неспособности диктовать, которые органа не требуют.
Развилка о силе повеления (ваджиб у захиритов и ат-Табари, мандуб у джумхура) выражена прочтениями §152 БЕЗ приоритета и БЕЗ группы §155: база молчит о силе и отвечает без options обо всём, о чём иджма есть. Оба прочтения заякорены в закреплённые предложения — довод джумхура лежит в 2:283 («если один доверился другому»), а не в пересказе. Группа
selection exactly_oneне заведена намеренно: её гейт тотален по документу и вернул быINTERPRETATION_REQUIREDна вопрос о залоге, к спору не относящийся.Три расхождения с заданием, все в пользу закреплённых байтов. (1) 2:283 несёт ТРЕТЬЕ распоряжение, которого бриф не называл, — запрет скрывать свидетельство с собственным последствием («ءَاثِمٞ قَلۡبُهُۥ»); формализовано. (2) Смещение нумерации Саблукова в этом участке суры равно НУЛЮ, тогда как в участке о хадже той же суры оно −5 и −4; проверено сверкой текста и примечанием самого издания. (3) Состав свидетелей для купли-продажи аят не называет — объявлено границей, а не перенесено из долговой записи.
Найдено этим пакетом слепое пятно меры §33.1: совпавшая нумерация редакций.
boundaries.pyопознаёт единицу НОМЕРОМ, и когда номера двух редакций одного work совпадают, правила подлинника засчитываются переводу — по редакции Саблукова мера даёт EXECUTABLE 2 из 2 при нуле заякоренных правил. Уfiqh.hajjтого же отказа нет случайно: там счёт переводчика смещён. Разбор —corpus/laws/fiqh/dayn/audit.ru.md. -
faraid.sharesрасширен главой «дед и братья» (аль-джадд ва-ль-ихва): первое в корпусе прочтение §152, меняющее ЗНАМЕНАТЕЛЬ (31.08.2026). Изложениеsources/faraid/ru.txtдописано статьями 14-17 (дед по отцовской линии, ’умарийятан, расхождение о деде, муштарака), публикация и фрагменты §194 перепинены — 15 фрагментов вместо 11, покрытие §33.1 выросло с 73,3 % до 82,9 % (12417 из 14986 байт), учёт статей 17 из 17 без неучтённых, глубина — EXECUTABLE 13, INTERPRETED 1, SOURCE_ONLY 1 (ст. 12, объявленная граница). Новые модули04-grandfather.law(база: иджма всех четырёх школ),05-jadd-readings.lawи06-tashrik-readings.law(две группы прочтений). Раннерcorpus/run_faraid_cases.pyвырос с 7 казусов до 19, differential — 27 evaluate-вызовов байтово, Lean-сертификаты 306 принято, 0 отвергнуто, батарея §267 — 13 рукописных.lawtest(три пары на байтово одних фактах различаются одной строкойinterpretationоси §168.2; мутант с вырезанной строкой роняет четыре теста), разметка §218 затянута до 31/0 словаря и 57/3 норм.Прочтение меняет число, а не квалификацию. На байтово одних фактах акдарии (муж, мать, дед, единственная полнородная сестра) ханафитское прочтение отстраняет сестру и сводит доли на базе 6 — 3/2/1 при нуле сестре; прочтение Зайда возвращает сестре фард 1/2, ведёт сумму аулом 6→9, складывает доли деда и сестры и делит их заново 2:1 — знаменатель 27, итог 9/6/8/4. Оба ответа известны классической литературе задолго до этого движка и потому физически не могли быть подогнаны под поведение реализации.
База обязана быть УЗКИМ прочтением, иначе расхождение исчезает молча.
interpretationтолько ДОБАВЛЯЕТ: присуди база сестре её фард ст. 8 при живом деде — ханафитское прочтение не смогло бы его отнять. ПоэтомуFullSisterAloneHalf,FullSistersTwoThirds,UterineOneSixth,UterineThirdSharedиFullBrotherTakesResidueполучили гард «и деда нет» по образцу их же гарда об отце (semanticHash изменился, семейство перепинено). Молчание базы держат казусk-akdariyya-base-silentи тесты §267 05/06; обе стороны проверены мутацией — вписанное в базу ханафитское отстранение роняет первый, снятый гард роняет второй.Две группы независимы, и это выводит тальфик. Разрез школ в ст. 16 (Малик, аш-Шафи’и, Ахмад против Абу Ханифы) не совпадает с разрезом ст. 17 (Абу Ханифа и Ахмад против Малика и аш-Шафи’и). Казус
s-talfiq-across-groupsвыбирает ханафитское прочтение о деде вместе с маликитско-шафиитским о муштарака — механически проходит, оба выбора доезжают до движка (сверяетсяmanifest.interpretations). Зазор с доктринальной дозволенностью (fiqh.taqlidст. 10) зафиксирован комментарием; межпакетный мост НЕ строился.Арифметика осталась в запросах (§111), новизна — их исполнение ПОД прочтением. Наибольшее из трёх, передележ акдарии и деление фонда единоутробных считаются запросами; выбор дублируется в
case.options, иначе differential сверил бы базовую теорию, напечатав «байты идентичны». Три соседних состава (n,o,p) держат исключение акдарии в его границах.Пробел базы, найденный по дороге: отец при ПОЛНОМ отсутствии потомков к остатку не призывался вовсе —
FatherTakesResidueпокрывал лишь случай потомков женского пола, и ни один из семи прежних казусов не ставил отца в такой состав. ЗаведеноFatherTakesResidueWithoutDescendant(ст. 15 абз. 2). -
kz.corpus.emle— көптік жалғау: первая грамматическая система корпуса, и первый акт, у которого нормодателя НЕТ (31.08.2026). Заведёнcorpus/laws/kz/emle—kz.corpus.emle→kz-emle.lawir.json. Предмет — выбор аффикса множественного числа казахского языка (-лар/-лер/-дар/-дер/-тар/-тер) как норма ПИСЬМА. Разведка разошлась с брифом решающим образом: акта «Об утверждении правил правописания казахского языка» в ИПС «Әділет» НЕТ — проверено полнотекстовым поиском портала на обоих языках и перебором буквенных форм id постановления 1993 года; сам действующий приказ это подтверждает изнутри — подпункт 2) пункта 7 Положения ставит Республиканской орфографической комиссии задачу «емле ережесінің жобасын … бекітуге ұсыну», то есть ПРЕДСТАВИТЬ проект на утверждение. Отсюда два закреплённых Work’а с разными ролями: приказ Министра науки и высшего образования РК от 30.09.2024 № 468 (НПА: п. 4 Положения объявляет принципом «қазақ тілінің үндестік заңын сақтау», п. 7, 14 и 18 делают Комиссию кодификатором) и справочник Р. Сыздық «Қазақ тілінің анықтағышы» (Астана: Елорда, 2000) — свидетель материальной нормы,officiality unofficial, единственный из проверенных текстов, называющий все шесть алломорфов дословно и по обеим осям сразу: «қала+лар, көше+лер, ат+тар, ит+тер, қаз+дар, із+дер». ГЛАВНЫЙ РЕЗУЛЬТАТ ПАКЕТА — МОЛЧАНИЕ ИСТОЧНИКА, СДЕЛАННОЕ ГРОМКИМ. § 31«а» справочника делит конечные звуки НАДВОЕ, а не натрое: «дауысты немесе үнді (м, н, р, л, ң, у, й) я ұяң (ж, з)… қосымша ҮНДІ НЕ ҰЯҢ дауыссыздан басталады» — то есть после сонорной основы аффикс начинается либо с сонорного (-лар), либо со звонкого (-дар), и выбора текст не делает; примеры преамбулы закрывают только гласный, звонкий и глухой. Дело о слове «тау» поэтому даёт NEITHER с evaluationStatus REQUIRES_JUDGMENT и типизированным запросом к Республиканской орфографической комиссии (канал §47.3,authorityвзят из закреплённого приказа, а не выдуман), а adjudicated assertion §73 замыкает вывод обычным путём. Сам справочник при этом употребляет «таулар» 109 раз и «адамдар» 23 — но словоупотребление есть данные, а не норма, и выводить из него правило пакет отказывается. Фонологические свойства основы — ТИПИЗИРОВАННЫЕ ФАКТЫ ДЕЛА, а не разбор строки (решение человека). Довод не только в том, что строковых операций в замкнутой поверхности вычислимого нет: § 31 не говорит «возьми последнюю букву», он ОТНОСИТ звук к названному классу, и отнесение есть юридический факт. Следствие названо прямо: слово без объявленных ряда и класса даёт NEITHER — ответ пакета, а не пробел формализации. Два отступления выражены поражением, и оба действуют НА ВХОД, а не на ответ. Правило раздела «Сөз сазы» о к, г снимает ряд основы («түбірдегі дауысты мейлі жуан болсын, мейлі жіңішке болсын» — «парктер» при заднем «а»); дәнекер ы, і § 32 подменяет класс конечного звука, потому что вставная гласная и есть новый конец слова («қосымшалар ұяңдап кетеді … митинг+тер — митинг+і+лер»). Закрытый перечень § 32 (нд, нз, нк, нг, мп, мб, мт, кт, ск, вт, фт, пт) живёт В ЯЗЫКЕ — двенадцатью вариантами enum и двенадцатьюassert, — а не прозой в метке. 19 сценариев семействаemle, differential 19 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), 14 рукописных.lawtest§267 и 19 порождённых, разметка §218 18/0 словаря и 17/0 норм, мёртвых правил и стаб-цепей ноль,doctor.py— «пробелов нет». МЕРА §33.1 ПОТРЕБОВАЛА ЗАКРЕПИТЬ СПРАВОЧНИК ЧАСТЯМИ, И ЭТО ГЛАВНАЯ ПРАВКА ФАЗЫ 5. Книга нумерует § ЧЕТЫРЬМЯ независимыми сериями (§1…§129 правил орфографии, §1…§126 и §1…§87 о знаках препинания, §1…§36 о звучании слова) — 376 маркеров при 129 уникальных номерах. Целиком она неизмерима, но молчала об этом НЕВЕРНО: автоопределение ловило 28 маркеров из 376 — ровно те, что издание набрало без пробела («§47.» против «§ 47.»), — объявляло книгу измеримой по случайной типографской выборке и требовало фрагментов на «статьи» 10…36 и 47, которых у документа нет. Закреплены три части, у каждой свой счётчик: вводный очерк «КIРIСПЕ» (§ не нумерует вовсе — unmeasured честно, но именно там перечень фонетического принципа называет все шесть алломорфов), раздел орфографии § 1 — § 129 и раздел о звучании слова § 1 — § 36; разделы о знаках препинания не закреплены вовсе — из них не выводится ничего. Заведена конвенция деленияkk_paragraph_signВ ОБЕИХ мерах §33.1 (check_source_pinning.pyиact_split.py), в автоопределение не входит. Фрагменты нарезаны по ней на ВСЕ 127 + 36 единиц. § 63 и § 64 в разделе орфографии отсутствуют — между § 62 и § 65 текст течёт непрерывно, ни в какой форме набора этих номеров в текстовом слое издания нет; отсюда 127 единиц при номерах, доходящих до 129, и число объявлено в генераторе, а его расхождение роняет прогон. Глубина по разделу орфографии: EXECUTABLE 3, SOURCE_ONLY 124; у приказа и у вводного очерка мера честно неприменима. Границей v1 с причиной объявлен § 33 (сс, лл, тт, пп, ст…): он предписывает написание ОСНОВЫ, а не выбор аффикса. Байтовая доля покрытия §33.1: раздел орфографии 99,9 % (127 фрагментов), раздел о звучании 96,7 % (36), приказ 18,9 % (5), вводный очерк 1,0 % (1). Точечныйpackage_reportворот закрепления по пакету — проблем нет. -
Покаянные дни латинской Церкви: одна власть, употреблённая в две стороны (31.08.2026). Новый пакет
vat.canon.paenitentia— cann. 1249-1253, 1245 и 97 §1 Кодекса канонического права 1983 года, определения поста и воздержания из нормы III апостольской конституции «Paenitemini» (Павел VI, 1966) и два декрета конференций епископов, употребивших одну и ту же делегированную власть в ПРОТИВОПОЛОЖНЫЕ стороны: конференция США (18.11.1966) сняла обязательность мясного воздержания вне Великого поста, конференция Англии и Уэльса (13.05.2011) восстановила её. Один и тот же верный в одну и ту же пятницу связан или не связан воздержанием от мяса — в зависимости от того, на какой территории он живёт, и оба ответа законны. Развилка выражена толкованием §152 поверх УЗКОЙ базы: базовая теория выводит для пятницы только «воздержание связывает, материя оставлена конференции», а мясную материю добавляет то прочтение, которое её предписывает, — сделай базой мясное воздержание, и прочтение США, которое его СНИМАЕТ, выразить было бы нечем. Четыре работы трёх уровней в одном пакете, и делегация у двух декретов стоит на РАЗНЫХ основаниях. Декрет США издан за семнадцать лет до Кодекса, и c. 1253 его основанием быть не может — им является норма VI §1 b) конституции, которую сам декрет и называет («In keeping with the letter and spirit of Pope Paul’s Constitution Poenitemini»); резолюция 2011 года стоит уже на c. 1253. Оба основания объявлены §27.1 (basis,regulates,authority) и ездят вместе с пакетом. Асимметрия возрастов c. 1252 — с парой дел по обе стороны каждой границы. Воздержание — [14, ∞) без верхней границы вовсе, пост — [18, 59), причём верхняя снимается в день ПЯТИДЕСЯТИДЕВЯТИЛЕТИЯ: «usque ad annum inceptum sexagesimum» есть «до НАЧАВШЕГОСЯ шестидесятого года жизни», а он начинается именно в этот день. Прочтение «до шестидесяти» дало бы человеку лишний год обязанности, и ни одна проверка типов этого не поймала бы. Числа 18 в c. 1252 нет — он говорит «aetate maiores», и число даёт c. 97 §1, ради которого канон и взят в срез. Подвижные даты — параметрами A3, а не вычислением. Computus в объём v1 не входит: Пепельная среда, Страстная пятница и торжество Пресвятого Сердца Иисуса лежат тремя*.lawparam.jsonтипаDateпервые Date-параметры корпуса: прежде все девятнадцать его*.lawparam.jsonнесли Decimal либо Integer, и то, что осьlegal_timeумеет выбирать ДАТУ, а не только величину, до этого пакета не было проверено ни одним живым актом, покрытие 2024-2027, вне покрытия MISSING_PARAMETER_VALUE, а не молчаливый ноль. Порождаютсяsync_paenitentia_calendar.pyпо названному алгоритму: это единственное место пакета, где величина не сверяема с закреплёнными байтами, и потому она сверяема хотя бы алгоритмом. 43 сценария регрессии, differential 43 evaluate-вызова байтово (liblaw_ffi==lawref), Lean-сертификаты 43 принято, 0 отвергнуто, 4.lawtest§267, глубина §33.1 — 7 из 7 канонов EXECUTABLE, у конституции 2 из 10 при восьми объявленных границах, у декрета США 3 INTERPRETED при двух объявленных; стаб-цепей ноль, мёртвых символов и правил ноль. -
Демо «Судебная карточка ↔ ГПК»: ход гражданского дела, восстановленный из журнала событий и прогнанный процессным слоем через формализованный ГПК РК (30.08.2026). Пакет
kz.corpus.civil_procedureрасширен двумя модулями —08-procedural-terms.law(сроки статей 150, 164, 173, 183 и 403 как НОРМЫ: предельная дата выводится термом §86 из даты дела и становится окном §124 деонтической позиции) и09-first-instance-process.law(автомат §160 искового производства: 15 стадий, 18 переходов, два цикла — приостановление ↔ возобновление и оставление жалобы без движения ↔ устранение недостатков). До этогоlawref process corpus/clir/kz-gpk.lawir.jsonотвечал «процедур 0, состояний 0, переходов 0», а весь пакет из 738 правил не содержал НИ ОДНОЙ деонтической позиции — кодекс о сроках не мог назвать ни одного срока датой. Три журнала дел при пакете (journals/) и демо-инструментcorpus/tools/gpk_case_card.py— чистая оркестрация поверх канонических байтов отчёта О-5. Семействоgpk174 → 190 сценариев, 5 рукописных.lawtest§267,lawc checkчист, стаб-цепей среди 31 нового правила ноль. -
Приостановление течения сроков (статья 125) — сделано ТОЧНО там, где язык это позволяет, и названо границей там, где нет. Часть 1 («течение всех не истекших процессуальных сроков приостанавливается») выражена через день начала течения: срок, начавший течь ДО определения о приостановлении, предельной даты не получает вовсе, — и демо поэтому не обвиняет суд в просрочке остановленного срока; срок, начавший течь со дня возобновления или позже, считается как обычно (расщепление §206 на две ветви, пара сценариев GPK-TERM-04 и пара
.lawtest). Часть 2 требует ОСТАТКА срока, а замкнутая поверхность §84/§86 не содержит ни счёта рабочих дней между двумя датами, ни шага на переменное число дней; вместо молчания выводитсяterm_recomputation_required_after_suspensionсо ссылкой на часть 2. Отдельным правилом выражено различие «отложение ≠ приостановление» (статьи 198 против 125): отложенное заседание срок рассмотрения не продлевает, и вывод об этом сделан явным, а не оставлен читателю карточки. -
Календарь сроков процессного слоя видел только ВПИСАННЫЕ пределы и молча терял ВЫВЕДЕННЫЕ (
lawref.process, 30.08.2026)._window_endчитал окно §124 изnorm_template, а у нормы с вычисляемым сроком там стоит переменная — строка отбрасывалась, и разделdeadlinesотчёта О-5 был пуст ровно у тех норм, ради которых он существует. Правая граница теперь берётся из МАТЕРИАЛИЗОВАННОЙ позиции (шаблон остался запасным путём); канарейка вcheck_process.pyстроит обязанность с пределом из даты дела и обязана падать без починки — проверено. Тем же прогоном закрыт второй разрыв: журнал не мог передать БАЙТЫ календарного набора §85 (в JSON их не записать, аcase.optionsканонизируется вcaseHash§170 и падал бы CanonError на каждом вызове) — добавлен пробросresourcesчерезimpact.run_scenarioмимо дела и флагlawref process-run --calendar-resource. -
Две границы §86 предъявлены сценариями, а не обойдены. (1) Политика §86 у дела ОДНА, а семейства единиц §84 требуют несовместимых:
add_business_daysотвергает policy сmonth_end,add_calendar_periodтребует его и требуетroll = no_roll(errata E-0029) — пересечение пусто, а ГПК считает рабочими днями и месяцами в одном производстве. GPK-TERM-10 требует, чтобы соседнее семейство отказывало КОДОМ, а не молчало; демо делает по два прогона на журнал и говорит это в шапке карточки. (2) Статья 123 часть 4 переносит окончание срока, исчисляемого месяцами, на следующий рабочий день, аadd_calendar_periodперенос запрещает — месячный предел, выпавший на выходной, пакет вернёт нерабочей датой. Расхождение найдено ИЗМЕРЕНИЕМ: первая редакция журнала стояла на пределе 2026-08-15 — субботе; даты сдвинуты на рабочие пределы, а класс закреплён сценарием GPK-TERM-11, который упадёт в день, когда errata к §86 разрешит перенос. -
Контрапункт строгого письма: обязанности позициями §123 и ось стиля прочтениями §152 (30.08.2026).
gradus.counterpointрасширен тремя модулями (09-styles.law,10-deontic.law,11-judgment.law) и первым в своей истории прогоном регрессии — семействоgradus, 13 сценариев,corpus/kz/acts/gradus.py. Найдено: вся обязывающая половина пакета не исполнялась на деле — двенадцатьconstraint … requireпри полностью зелёной батарее из 15.lawtest, потому что evaluation-документ 0.1 констрейнты не считает вовсе, а тесты спрашивали положительный предикат, чьёNEITHERот молчания неотличимо. Шесть обязанностей (ст. 4, 5, 6, 10) записаны приёмом bcp14 —goal maintenance+ презумпция + поражающие правила + приоритет; констрейнты оставлены как декларации инвариантов для фаззера. Ось стиля даёт четыре различимых ответа на одном баховском обороте: молчание базы, запрет строгого модального прочтения, дозволение барочного иBOTHпри выборе обоих. Починен разъезд страт, пойманный сценой: поражающее правило, читавшее предикат состава, производимый под прочтением ПОРАЖАЕМЫМ правилом, уезжало рангом выше презумпции — приоритет §116 молчал, позиция выходилаCONFLICTEDвместоVIOLATEDпри зелёныхcheck,lowerи воротах мёртвых правил; вылечено сменой посылки на строгие предикаты состава. Ст. 1 получила фрагмент (прежнее решение отменено явно) — на ней стоит канал суждения §47.3 с органомCounterpointTeacher, отводящий музыкальное достоинство упражнения за границу изложения сREQUIRES_JUDGMENT. Латинский оригинал 1725 объявлен вторым источником с редакциейUNAVAILABLE: IMSLP отдаёт только сканы без текстового слоя, OCR-выгрузка Internet Archive недостижима, и закрепление OCR печати 1725 года испортило бы ровно те числа, из которых выводятся разряды интервала. Отвергнуты с измерением:closure§70 (LDC-E2114— унарность),interpretation_group … exactly_one(INTERPRETATION_REQUIREDна любой запрос, все 15 тестов краснеют), A3-таблица (разряд интервала — определение в прозе, а не матрица, и поlegal_timeне меняется). Глубина §33.1 — EXECUTABLE 12/12 (было 11/12), differential 13 вызовов байтово, разметка §218 47→55 словаря и 109→150 норм при нуле неразмеченного. -
anthropic.constitution— конституция Claude: первый акт корпуса, чей адресат — модель (30.08.2026). Заведёнcorpus/laws/anthropic/constitution—anthropic.constitution→anthropic-constitution.lawir.json; правопорядокAnthropic(новая строка реестра §27.1: частный трансграничный нормодатель, ближайшая родня — IETF, отличие в адресате). Закреплена январская редакция 2026 года из EPUB издателя (sha256 в коде получателя, адрес на CDN неизменяем), 40 фрагментов на всех сорока именованных разделах, CC0 1.0. Единица деления заведена этим пакетом:named_section— раздел с ИМЕНЕМ и без номера, обе меры §33.1 узнают его по таблице заголовков изarticles.jsonсамого акта; составной номер учёта выведен из разметки издателя (уровниchapter-header/subheader/H3/H4), а не назначен. Три артефакта издателя расходятся — страницаanthropic.com/constitutionпротив PDF и EPUB даёт 147 несовпадающих блоков по предложениям, и расхождение решающее: перечень базовых ценностей на странице теряет нумерацию, которую сам документ называет носителем приоритета («prioritize these properties in the order in which they are listed»). Страница в v1 не закрепляется — её состояние издателем не датировано, а редакция §31 без даты машине D1 не предъявима; цена выбора названа: в закреплённом артефакте нет веб-фразы об охвате предисловия. Объём v1 — объявленный срез из четырёх разделов: закрытый перечень семи жёстких ограничений, названный порядок четырёх ценностей, умолчания поведения с властью оператора и пользователя, корригируемость как пара §127/§128. 28 сценариев семействаanthropic-constitution, differential 45 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), разметка §218 53/0 словаря и 68/0 норм, мёртвых правил и символов ноль,doctor.py— «пробелов нет», фаззер: 58 правил применились, мёртвых нет ни одного. байтовое покрытие 98,0 % при 40 фрагментах и 40 учтённых единицах из 40. Lean-сертификаты: принято 44, отвергнуто 1 — отказ квалифицирован как дефект ОРАКУЛА (§181.1 кладёт узелcandidate_closureна кандидата, а не на конфликтную группу; детектор: пропущенных кандидатов 0, дублейconflictKey1 из 45), и класс в репозитории уже открыт — тем же классом красенrepka— 26 принято, 8 отвергнуто, замерено этой же сессией тем же зондом, что и делает квалификацию проверенной, а не припомненной; ранее тот же класс записан уzhirenshe,leonard-v-pepsicoиf1_sporting. Акт к классу присоединяется, а не вводит его, и под ядро не подгоняется. Мера §33.1: EXECUTABLE 5, SOURCE_ONLY 35, UNEXPLAINED 34 — и это заголовочный результат, а не недоделка: пять разделов из сорока дают правила, остальное говорит о характере, и пропорция измерена, а не назначена. -
Исчерпанность перечня выражается презумпцией, а не замыканием §70, если основания выводятся правилами (30.08.2026). Найдено на жёстких ограничениях конституции Claude:
closureнадhard_constraint_engagedобъявлял ложным вывод собственных продюсеров — замыкание закрывает основания, которые поставляет ДЕЛО, и выводы правил в его снимок не попадают. Дело с прямо заявленной категорией давалоFALSE_ONLYпри полностью зелёномlawc check, а обязанность не рождалась вовсе. Заменено презумпцией непричастности с приоритетом на каждое основание перечня; сторож — ACON-02. -
osm.mejelle— Маджалла: первый исламский пакет с настоящим кодифицированным актом и поражаемым слоем из него (30.08.2026). Заведёнcorpus/laws/osm/mejelle—osm.mejelle→osm-mejelle.lawir.json. Мажалла аль-ахкам аль-адлия (مجلة الأحكام العدلية, 1869–1876), гражданская кодификация ханафитского фикха Османской империи; закреплён срез из 161 статьи: введение (ст. 1–100 — определение фикха и 99 правовых максим) и книга III о поручительстве (كتاب الكفالة, ст. 612–672). Отличие от всей линииfiqhнесущее: закят, васыйя, никах, хадж и саум — доктрина либо авторское изложение без юрисдикции, а здесь есть правопорядок (OttomanEmpire, новая строка реестра §27.1), издатель (комиссия Ахмеда Джевдет-паши), официальная публикация и редакцияin_force [@1876-01-01, infinity), объявленная по закреплённому байту источника («ساري النفاذ في الضفة الغربية وغزة» — действует на Западном берегу и в Газе), а не по знанию формализатора; ни поэтапное введение книг, ни отмена ГК Турции 1926 года закреплёнными байтами не подтверждаются и потому отсутствуют. 60 сценариев семействаmejelle, differential 109 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), Lean-сертификаты 109 принято, 0 отвергнуто, 10 рукописных.lawtest§267, разметка §218 217/0 словаря и 138/0 норм, мёртвых правил, символов и висячих якорей ноль,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 75, SOURCE_ONLY 86, UNEXPLAINED 0; байтовая доля 94,2 % при 161 фрагменте. -
Викитеки у Маджаллы НЕТ, и это измерено; закреплены два свидетеля, исправляющие друг друга. Бриф называл источником
ar.wikisource; такой страницы не существует, а элемент Wikidata Q1435600 не имеет ни одной ссылки на wikisource (проверены все 17 sitelink-ов) — прецедентfiqh.hajjнеприменим целиком. Публикацией объявлена страница «موسوعة مقام» (maqam.najah.edu/legislation/158), база законодательства юрфака Национального университета ан-Наджах; вторым свидетелем служит печатное издание Наджиба Хававини (Карачи) через «المكتبة الشاملة». У обоих дефекты нумерации, и ни один не находится одним свидетелем: у базы три записи в срезе кафалы помечены статьями 613–615, а несут текст статей 1613–1615 (потеряна ведущая единица), у издания статья 641 помечена «٤٦١» (перестановка цифр). Правило отсева требует ДОКАЗАТЕЛЬСТВА — текст выброшенной записи обязан совпасть с текстом статьи N+1000 — и падает без него; сверка свидетелей воспроизводима (fetch_mejelle_text.py --witness: 148 из 161 посимвольно после снятия огласовок). Свидетель публикацией НЕ объявлен: у редакции §27 ровно одна публикация, а двух редакций здесь нет — текст один, расходятся оцифровки. -
Субсидиарный ранг ст. 1 измерен пробой фазы 1, а не заявлен.
priority§116 «статья над максимой» при обеих нормах в страте 0 даётTRUE_ONLY; безpriority—BOTH; сpriority, но когда статья читает выведенный поражаемый предикат, — сноваBOTHпри чистомcheck. Форма ВЫРАЗИМА, но молчалива за пределами страты; пакет берёт вторую (решение человека): максима есть презумпция, конкретная норма книги III — строгое правило, поставляющее основание её снятия, а приоритет не объявляется нигде. Восемнадцать максим исполнимы, 82 объявлены границей с причиной, прочитанной по тексту статьи (81 с полемdespite, называющим найденный воротами признак поимённо). Расхождение ст. 24 и ст. 51 пакет НЕ разрешает и выводит третьим предикатомnot_resolved_by_this_package(приёмhasbro.rules.monopoly); ст. 21–22 о необходимости оказались без текстового крючка в книге III и объявлены честной границей. -
Первый арабский текст под мерой §33.1: конвенция
ar_articleи свой набор признаков исполнимого содержания. Единицаالمادة N.заведена В ОБЕИХ мерах (verify/ci/gates/sources/check_source_pinning.pyиcorpus/tools/lib/act_split.py) — расхождение здесь молчаливо: одна мера показала бы 161 статью, другая «мера неприменима». В автоопределение конвенция НЕ входит: слово «المادة» стоит внутри перекрёстных отсылок самого акта. Арабский набор признаков строится из основ БЕЗ огласовки одним правилом (arabic_stem) — в закреплённом тексте стоитيَجُوزُ, и голоеيجوزне совпадает с ним ни одним символом подряд; набор двухпластовый (язык книги договора плюс язык книги максим, где норма не имеет модального слова вовсе) и откалиброван на книге о кафале: 58 статей из 61, молчит на трёх голых определениях термина. ВSOURCE_DOCUMENTSмеры глубины добавленar.txt. -
Две границы движка, встреченные на власти §127 ст. 640 и обойдённые предписанным приёмом.
effect terminate(...)вне v1-подмножества исполнителя §127.2 (берётся толькоcreateс литералом-последствием) — власть видна, действие её нет,NON_EXECUTABLE_RULE; и факт из материализации эффекта §127.2 НЕВИДЕН поражаемому слою (DECISION-0021 §4.3), поэтому презумпция ст. 5 состоявшегося выхода поручителя не увидела бы. Обе квалифицированы как ограничения v1, обе обойдены: власть создаёт положительный факт, рядом стоит строгое правило, выводящее то же следствие из тех же условий, что вvalid_when, и парность закреплена сценарием, где без условия тот же выход обязан остаться без последствия. -
fiqh.sawm— саум: пост Рамадана, третий столп и седьмой акт исламской линии; ДВЕ ДЕОНТИЧЕСКИЕ ФОРМЫ, РАЗЛИЧЁННЫЕ НА ОДНИХ ФАКТАХ (30.08.2026). Заведёнcorpus/laws/fiqh/sawm—fiqh.sawm→fiqh-sawm.lawir.json. Двухэтажный источник по образцуfiqh.hajj: авторское изложение из семнадцати статей (authored_exposition,PINNED_OFFICIAL_BYTES, охват фрагментами 87,5 %, учёт статей 17 из 17) плюс восемь аятов байтами в двух редакциях — подлинник (мусхаф Медины, передача Хафса) и перевод Г. С. Саблукова 1894 года, обеPINNED_UNOFFICIAL_COPY, охват 99,8 % и 99,8 %, — совмещённых восемью декларациямиalign§29. НЕСУЩИМ ИСТОЧНИКОМ ОБЪЯВЛЕНО ИЗЛОЖЕНИЕ, А НЕ КОРАН, и этим пакет расходится с хаджем: аяты дают обязанность, границы дня, освобождения, возмещение, выкуп, счёт по луне и лестницу каффары, но не дают ни порогов свидетелей, ни запретных дней, ни меры мудда, ни срока нията — большая часть норм стоит на учении, и объявить несущим Коран значило бы обещать вывод из него. 51 сценарий семействаsawm, differential 76 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), Lean-сертификаты 76 принято, 0 отвергнуто, 7 рукописных.lawtest§267 и 3 свойства §270 (домены 1/1/2, обе канарейки называют контрпримеры поимённо), разметка §218 108/0 словаря и 89/0 норм, мёртвых правил, символов и висячих якорей ноль, стаб-цепей 0 из 79 правил, каждый из 44 эмпирических предикатов подаётся хотя бы одним делом (сверка нашла семь неподанных — четыре закрыты сценариями SAWM-48…51, три подаются журналами процесса),doctor.py— «пробелов нет». Мера §33.1 по подлиннику: EXECUTABLE 7, SOURCE_ONLY 1, UNEXPLAINED 0; по изложению: EXECUTABLE 14, ANCHORED 1, вне пакета 2. Состав аятов разошёлся с заданием ТРИЖДЫ, и все три расхождения меняют, на чём стоит акт. (1) Добавлены 58:3-4: задание относило лестницу каффары к сунне целиком, тогда как в аяте о зихаре стоят дословно все три ступени («فَتَحۡرِيرُ رَقَبَةٖ», «فَصِيَامُ شَهۡرَيۡنِ مُتَتَابِعَيۡنِ», «فَإِطۡعَامُ سِتِّينَ مِسۡكِينٗا»), их порядок (маркеры «فَمَن لَّمۡ يَجِدۡ» и «فَمَن لَّمۡ يَسۡتَطِعۡ») и оба числа; учением установлено лишь ОТОЖДЕСТВЛЕНИЕ каффары поста с каффарой зихара. Без этих двух аятов число шестьдесят было бы величиной, которой нет в закреплённом тексте. (2) Добавлен 2:189 — единственная кораническая опора счёта времени по луне. (3) 2:186 взят блоком ради непрерывности пассажа и объявлен границей с причиной, а 2:188 не взят: он начинает другой предмет. Смещение нумераций получено сверкой ТЕКСТА: во второй суре −4, тогда как уfiqh.hajjна аяте 2:158 то же смещение −5 — оно меняется ВНУТРИ суры, и арифметика дала бы уверенно неверный ответ; в пятьдесят восьмой суре +1, потому что Саблуков разбил аят 58:2 на два стиха. Предмет акта — удержание состояния, и деонтика это выражает двумя разными формами. Дневной пост есть maintenance §137 с ОТРИЦАТЕЛЬНЫМ условием цели (condition not fast_broken(f)): выведенное нарушение делает условие FALSE_ONLY, и позиция VIOLATED в тот же день — «один нарушитель её нарушает, и последующее воздержание нарушения не отменяет» (ст. 4). Возмещение есть achievement §136 со СРОКОМ, чья верхняя граница окна берётся ПЕРЕМЕННОЙ из факта делаnext_ramadan_starts(f, d): литеральная дата у доктрины была бы подделкой, а открытое окно значило бы, что срок не исполняется ничем (достижительная цель с окном до бесконечности не нарушается никогда). На ОДНОМ деле «нарушил и не возместил» первая позиция VIOLATED, вторая ACTIVE (SAWM-20/21); после срока при молчании дела UNDETERMINED, при явном отрицании исполнения VIOLATED (SAWM-23/24). АСИММЕТРИЯ УМЫСЛА — центральный факт, и она держится ПАРОЙ ПОЛЯРНОСТЕЙ одного эмпирического предиката (приём двух ставок ушраfiqh.zakat): съеденное по забывчивости даёт ПОЛОЖИТЕЛЬНЫЙ вывод «день цел», съеденное умышленно —fast_broken, а дело, смолчавшее об умысле, не получает НИ ОДНОГО из двух ответов (SAWM-10/11/12) — открытый мир §70 отрицания из молчания не даёт, и это проверяется, а не подразумевается. Найдено три вещи, ни одна из которых не была записана прежде. (1) Канал суждения §47.3 через АГРЕГАТ не проходит: правило со счётом читаетjust_witnessвнутри comprehension, счёт исполняется и ответ даёт верный, а запрос без ответа судьи приходит какNEITHERс ПУСТЫМjudgmentRequests— канал теряется молча. Обратный ход измерен тоже: перенести счёт на выводимое нельзя вовсе (барьер §111 →NON_EXECUTABLE_RULE, месяц не начинается никогда). Отсюда форма ст. 13: асимметричный порог свидетелей (Рамадан — один справедливый при облачном небе, Шавваль — два) считает агрегат, а требование справедливости несёт СТРОГОЕ правило с литеральной головой, на котором запрос виден. (2) A3-параметр разворачивается внутри операнда СРАВНЕНИЯ: известно было, что голое имя работает в терме и не работает аргументом головы; здесь измерено, что операнд сравнения — тоже терм (60 даёт TRUE_ONLY, 59 — NEITHER приKaffaraConsecutiveDays = 60). (3)notнад ВЫВОДИМЫМ предикатом молчит и в правиле власти §127: первая редакция читалаnot capable_of_vow(p)и отвечала NEITHER и способному, и неспособному при полностью чистой статике; поймал сценарий SAWM-39, починка — §206-расщепление на два правила над эмпирическими основаниями под замыканием §70. Шестьдесят дней подряд — процесс §160 с ЦИКЛОМ.procedure KaffaraSixtyDays: четыре стадии, четыре перехода, реброRestartStreakизInterruptedназад вCounting— прямое утверждение ст. 12 («перерыв счёта возвращает лицо в начало»), выраженное графом; без него сорвавшийся застревал бы навсегда, то есть автомат утверждал бы о праве неправду. Два журнала: чистый прогон, где заявленное на сороковом дне завершение даётATTEMPT_WITHOUT_EFFECT§164 (переход доступен, гард NEITHER, потому что 40 < 60 — различает шаги не действие, а A3-параметр), и срыв на сорок первом дне со сбросом, после которого порог берётся лишь спустя сто дней от начала. Назр — власть §127 у ЧАСТНОГО ЛИЦА, редкий случай: носитель и предмет власти одно лицо, обет создаёт обязанность у самого обещавшего. Обет на день Ида даёт на одном дне три позиции сразу —duty FastByVow,prohibition FastOnForbiddenDayиpower MakeVow, все ACTIVE: ст. 14 абз. 3 отношения между запретом и обязанностью не устанавливает, и приоритет §116 здесь не объявлен нигде. Тот же сценарий сторожит ГРАНИЦУ СРЕЗА: запрет §130 не получает VIOLATED никогда (нужна событийная модель §79), и он покраснеет, когда она появится, — граница устареет громко. Мазхаб выбран, расхождения не сглажены. База — ханафитское прочтение, записанное вlaw.tomlс причиной (доводfiqh.nikah); четыре точки ст. 16 — беременная и кормящая, срок нията, порядок каффары (тартиб против тахйира), просрочка возмещения — выводятся как ФАКТ делаdivergent_case, приоритета §116 между прочтениями нет. Свойство §270EveryBarredStepIsOpenUnderTakhyirломается, называя контрпримером каждую закрытую ступень, если расхождение о порядке схлопнуть в один ответ. ГРАНИЦЫ: заря, ночь и лунный календарь не вычисляются (ст. 4 — день месяцаIntegerплюс название перечислением, наступление следующего Рамадана факт дела); числа пропущенных дней, дней подряд и накормленных бедных приходят фактами, а не агрегатами (барьер §111 — считать пришлось бы по выводимому); добровольный пост, итикаф, молитва и порядок разрешения дел органом объявлены ст. 17 не охватываемыми. У границы ст. 1 ворота закрепления потребовали поляdespiteи получили его: слово «подлежат» стоит там в обороте о самом документе, а не в норме. -
fiqh.taqlid— таклид: первое применениеinterpretation§152 в исламской линии корпуса и ВТОРАЯ МОДЕЛЬ спора, уже смоделированногоfiqh.nikah(30.08.2026). Заведёнcorpus/laws/fiqh/taqlid—fiqh.taqlid→fiqh-taqlid.lawir.json, шестой акт исламской традиции. Авторское изложение из одиннадцати статей, написанное для репозитория и закреплённое байтами (authored_exposition,PINNED_OFFICIAL_BYTES, 13754 Б, охват фрагментами 83,9 %, учёт статей 11 из 11). 32 сценария семействаtaqlid, differential 103 evaluate-вызова байтово идентичны (liblaw_ffi==lawref), Lean-сертификаты 103 принято, 0 отвергнуто, 9 рукописных.lawtest§267 плюс 93 порождённых и 2 свойства §270, разметка §218 54/0 словаря и 47/0 норм, мёртвых правил, символов и посылок в никуда ноль, стаб-цепей 0 из 46 правил,doctor.py— «пробелов нет». Мера §33.1: EXECUTABLE 8, SOURCE_ONLY 2, UNEXPLAINED 0 (три единицы объявлены границами с причиной, проверенной по тексту). Предмет — не содержание норм, а порядок, в котором право отвечает лицу, когда школы отвечают по-разному. Два вопроса взяты потому, что расхождение по ним засвидетельствовано и уже выведено divergence-фактами у соседа: участие вали при никахе совершеннолетней женщины и тройное объявление талака одним произнесением. Четыре мазхаба дают по первому вопросу три различимых ответа (ханафитское — действителен; маликитское — фасид, расторгается кадием; шафиитское — не заключён, отсутствует рукн; ханбалитское — батиль), и каждый закреплён своей головой: свести их к одной значило бы стереть различие между «расторгается» и «не заключён». Архитектура выведена из механики, а не выбрана. Базой записано ОБЩЕЕ МЕСТО школ, потому чтоinterpretation§152 умеет только ДОБАВЛЯТЬ; прочтение поставляет базе строгую посылку, а не побеждающее правило (priorityвнутри толкования видит только своих — LDC-E1318 наlowerпри зелёномcheck), поэтому оба соперника и приоритет §116 живут в базе. Правила прочтенийstrictобязательно: поражаемая посылка увела бы потребителя стратой выше §110, конфликтная группа §111 не собралась бы, и ответ стал быBOTHвместоTRUE_ONLYпри всех зелёных статических воротах. Каждая развилка сторожится парой сцен на одном факте (без выбораFALSE_ONLY, с выборомTRUE_ONLY): TAQ-05/06 о вали, TAQ-16/17 о греховности произнесения. Группа §155 —any_of, а неexactly_one: тальфик обязан остаться выразимым, потому что ст. 10 изложения прямо оставляет вопрос усуля открытым. Гейт предъявлен СОДЕРЖАТЕЛЬНЫМ. Ст. 7 отвечает лицу об окончательности связи на пустых options (о счёте у четырёх мазхабов иджма) и молчит о греховности (о ней иджмы нет) — обе головы на одних и тех же фактах. Расхождение мазхабов тоже выводится в базе: ст. 9 абз. 3 объявляет его свойством ВОПРОСА, а не таклида лица, и потому две постановки спора сосуществуют — относительная (..._under(предмет, мазхаб)) и абсолютная (..._for(предмет, лицо)). Сверка сfiqh.nikahчерез границу пакета НАШЛА расхождение моделей. По вопросу о вали модели сходятся; по тройному произнесению сосед объявляет расхождение, а четыре мазхаба о счёте сходятся, потому что прочтение «одно отзывное объявление» ни одному из четырёх не принадлежит (ст. 8). Разная ГРАНИЦА множества прочтений записана головойmodels_differ_on_the_triple_utterance, а не комментарием. Ради сверки уfiqh.nikahпомеченыpubчетыре вывода ст. 14 (readings_diverge_on_validity,readings_agree_on_validity,readings_diverge_on_triple,divergent_case) и два типа — без экспорта символы через границу не видны вовсе (E-0059), и сверка выглядела бы зелёной, отвечаяNEITHERна всё. Три границы, найденные инструментами и закрытые тем же заходом. (1) Линт скилла нашёл деонтику «вправе» в метке при нуле деонтических голов — обязанность, сплющенную в признание; заведено дозволение §125SeekFaskhForWantOfKafaa, и пара TAQ-12/13 спрашивает теперь позицию, а не только признание; невзятая парная деонтика записана в шапке с доводом (§190 требует связанного носителя, а изложение его не называет). (2)emit_lawtestsпропускал ВСЕ 103 сцены, потому чтоlink_depsстоял на весь прогон: связка сужена до четырёх сцен сверки, порождённых тестов стало 93 вместо нуля. (3) Остаток фаззера квалифицирован тремя прогонами с растущим бюджетом (--targeted30/90/200 → 34/35/35), а не словом «недостижимо»: восемь правил прочтений (фаззер прочтений не выбирает) и два межпакетных (чужих узлов у него нет). Отчёт —corpus/laws/fiqh/taqlid/audit.ru.md. -
Постановление № 326 «О переносе дня отдыха в 2023 году» — первая двухосновная цепочка делегации с доказанной применимостью власти на дату издания (30.08.2026). Заведена пара пакетов:
kz.corpus.perenos_2023(ребёнок) иkz.corpus.tk_art85_2023(партиал-родитель: одна статья ТК в редакции снимка Архива Интернета 20230317174500 — v1-цепочка требует у родителя ровно один source_work, измерено LDC-E5305 при первой сборке всего в одном пакете). Разведка дважды разошлась с ожиданием, и оба раза решили байты: основание постановления — п. 3 ст. 85 ТК (преамбула дословно), а не ст. 4 закона о праздниках; и власть п. 3 мигрировала — снимок 17.03.2023 называет Правительство, текущая редакция — уполномоченный орган по труду (изменитель — закон 223-VII от 19.04.2023, он же правил ст. 4 закона о праздниках; отсюда смена формы переносов на приказы Минтруда с 2024 года). Оснований у акта ДВА (DECISION-0046), и это синтез двух сессий: специальное — власть ТК-партиала (basisна power §127 с holder-константой, valid_when, effect-материализацией), формы акта — п. 1 ст. 10 Конституционного закона «О Правительстве» (суждение снятого пакета-дубля унаследовано вместе с доводом — его комментарий сам просил добавить ТК-основание, «когда Трудовой кодекс будет заведён»). В воротахcheck_delegation— четвёртая живая пара (84/84): применимость власти на дату акта впервые ДОКАЗАНА закреплённой редакцией — W5303 отсутствует по построению; третья пара (ветвь формы, живой holder-var W5301) переоснащена на новый пакет и ждёт теперь три предупреждения. Семействоperenos_2023— 6 сценариев с мостом фактов уровня прогона (эффект власти исполняется у родителя, вывод переливается ребёнку делом с разыменованием const_ref; PER-05 стережёт саму границу пакета — без переливки дни не выводятся), differential 10 evaluate-вызовов байтово, сценарная ось к prazdniki (PER-06: День Столицы и перенесённый день отдыха двумя выводами двух пакетов). Дубль-инцидент разрешён снятием с синтезом: параллельная сессия завелаkz/holidaysиkz/rest-day-transfer-2023по тем же актам; по решению человека канонической осталась пара prazdniki/perenos-2023, дубли сняты со всех реестров, а их лучшие ходы пересажены — календарный ресурс §85 на 2026 год (kz-official-2026.calendar.json) теперь порождается исполнениемkz.corpus.prazdniki(нерабочесть каждой пары дат — прогономnerabochiy_den, не предположением), материализация переносов-2026 добавлена в prazdniki данными при модуле (03-calendar-2026.law, шесть переносов вместо двух у дубля, состав — полное применение абз. 3 ст. 5), семействоholidaysпереоснащено (HOL-06 — сторож переходного года: выбор «весь 2026 по действующей редакции» запиннен против строгого почленного применения редакций, при котором ни 15.03, ни 30.08 не были бы праздничными), якорный LAB-01 жив на пересобранном календаре. Обе сессии шли под теневым протоколом formalize-act: четыре судейские точки §47.3 записаны с одобрениями человека, обе дошли до терминала без нарушений §140. -
Публично обещанная награда:
kz.corpus.public_reward, микропакет на срез главы 46 ГК РК (Особенная часть) — и измеренная границаorв цели §124 (30.08.2026). Третий пакет той же работы о «Простоквашино»: Общая часть ГК РК о конкурсных обязательствах молчит, они живут в Особенной части отдельным актом (409-I), и вопрос «связывает ли объявленная награда того, кто её объявил» не выразим ни одним из двух прежних пакетов. Срез — ст. 910—912; семействоprostokvashino_reward20/20 сценариев, 4 авторских.lawtest4/4, глубина §33.1 EXECUTABLE 3 из 3 статей охвата, байтов под фрагментами 0,5 %, неучтённых 0, разметка §218 38/0 и 23/0, мёртвых символов 0,doctor.py— «пробелов нет». Пакет отдельный отkz.corpus.civilcodeнамеренно: Общая и Особенная части — разные source work, и склейка сделала бы номер статьи неоднозначным (ст. 240 есть в обеих). Три препятствия отказу ст. 912 п. 1 стоят тремя правилами (расщепление §206), а не одной дизъюнкцией: в одном факте они неразличимы для whynot и argmap, а третье — исполнение до отказа — единственное связывает обещавшего задним числом. Потолок возмещения ст. 912 п. 2 проверен ТРЕМЯ точками: «не может превышать» равенства не запрещает, поэтому к паре «ниже/выше» добавлено дело равенства; суммы приходят делом термами Money §50. ГРАНИЦА ЯЗЫКА ИЗМЕРЕНА И НАЗВАНА:orвнутриgoal achievementпроходитlawc checkи лоуверинг МОЛЧА, а обязанность не разряжается никогда. Улика — одно дело: обязанность ст. 911 с однолитеральной цельюreward_paid_to_winnerперешла в SATISFIED, а обязанность ст. 910 п. 2, содержащая тот же литерал внутриor, осталась ACTIVE, и ни одного issue выдано не было. Класс тот же, что уorв теле правила, но тише — там исполнитель предупреждаетNON_EXECUTABLE_RULE. Вылечено расщеплением §206 (две ветви альтернативы «и (или)» ведут к одной головеwinner_claim_satisfied, она стоит целью), сценарии PRW-19/20 сторожат обе ветви порознь; громкий отказ на стороне компилятора или исполнителя заведён задачей. Ворота мёртвых символов указали на ПОТЕРЯННУЮ норму:contest_initiatorиcontest_offer_madeобъявлялись и никем не читались — ст. 910 п. 2, центральная конструкция главы, не была выражена вовсе. Общий итог трёх семейств работы: 67 сценариев и 70 evaluate-вызовов, байтово идентичных у обеих реализаций. -
Отмена отменяющего акта: одно дело, два добросовестных прочтения, противоположные ответы (30.08.2026). Заведены три пакета и расширен четвёртый.
fiction.blefuscu(corpus/laws/eng/blefuscu-revival, 19 сценариев семействаblefuscu, 5 тестов §267) — центральный экспонат: пять вымышленных указов Блефуску, где акт A отменён актом B, а B отменён актом C. Базовая теория МОЛЧИТ ровно там, где расходятся две конструкции отмены, а сами конструкции живут прочтениями §152 под группой §155selection exactly_one. На ОДНОМ деле, одном CLIR и одних фактах — различается одна строка контекста — «модель окна» даётsilencedTRUE и ни одной позиции, «модель препятствия» —in_operationTRUE, обязанность ACTIVE и штраф четыре спруга. Без выбранного прочтения движок отвечаетINTERPRETATION_REQUIRED(§156), с обоими сразу — тем же самым: доктрину обязан выбрать контекст, и это исполняется, а не написано в комментарии. Арбитры закреплены отдельно:us.code.repeal_of_repealing_act(1 U.S.C. §108, байты GPO с govinfo.gov, 5 сценариев) иgb.statute.interpretation_act_1978(ss. 15–16, байты legislation.gov.uk по объявленной издателем дате действия, 8 сценариев). Сценарии BLEF-15…19 показывают ВЫБОР явно: арбитра спрашивают на той же тройке A/B/C, затем прогоняют дело Блефуску под предписанным прочтением, и обе половины обязаны сойтись. Контрольный опыт: тот же ход на ПОПРАВКЕ (указ E отменяет изменяющий указ D) не откатывает ничего — штраф остаётся четыре под обоими прочтениями, аlawref impact-editionsпоказывает то же на оси редакций: проекция изменилась (Dapplicable → closed, Enot_yet → applicable), исход — нет. Три находки, каждая измерена инструментом. (1)LATE_STATUS_PRODUCERметит ВСЁ отношение: одногоdefeasible-продюсера сnot_knownхватило, чтобыin_operationперестали читать три строгих правила разом (LDC-E4103); починено замыканием §70, а не обходом. (2) Якорь обязан называть все редакции, где текст стоит: правила, заякоренные на статью закрывшейся редакции, ЖИВЫ при исполнении и МЁРТВЫ в проекции D1 —lawref impact-editionsпечатал «без доказанного применения», при полностью зелёной батарее ворот. (3) Машина редакций §31 сама есть «модель окна»:in_force [a, b)возрождения не выражает вовсе, аsuspended [x, y); restored @yвыражает — язык предлагает обе формы, но выбор делается в момент объявления редакции, до всякого дела; спор поэтому вынесен целиком в правила. Уgb.statute.interpretation_act_1978структурный аудит (one_way_premises.py) нашёл, что s. 16(2) была УКРАШЕНИЕМ — выводила голову, которую не читал никто, при зелёномcheckи собирающемся CLIR; починеноfiction§… с общим входомtreated_as_repealed_by, и область фикции ограничена своей секцией (IA1978-06/07). -
Статья 46 Закона «О правовых актах»: молчание о возрождении объявлено, а срок приостановления взят (30.08.2026). Пакет
kz.corpus.legal_actsрасширен модулем19-revival.law(отдельный файл — чтобы ни один анонимныйassertне перенумеровался; проверено: 315 asserts до и после, 0 удалённых узлов, 8 добавленных) и пятью сценариями LEG-27…31. Взято три вещи, каждая из текста: двухместный акт о прекращении (пункт 3 называет ИНСТРУМЕНТ там, где подпункт 4 пункта 2 называл только орган, — без пары цепочка «B прекратил A, C прекратил B» была невыразима), срок приостановления (пункт 1 говорит «на определенный срок», и из срока следует ВОЗОБНОВЛЕНИЕ — законное, вычислимое возрождение, прямо противоположное молчанию подпункта 4) и само молчание: предикатrevived_after_cessation_of_the_cessation_actобъявлен и НЕ ВЫВОДИТСЯ ничем, вписан вdocumentedреестра мёртвых символов с этой причиной. Находка, ради которой модуль написан: пакет отвечал «акт A прекращён» и ответ ВЫГЛЯДЕЛ выводом из статьи 46, не будучи им —ceasedмонотонен и снять его нечем, то есть формализация по умолчанию отвечала по «модели окна», не имея основания в тексте. Канал суждения §47.3 РАЗОБРАН И ОТВЕРГНУТ: единственный кандидат на орган — статья 60, но она даёт разъяснение нормы, а не решение о действии акта, назначает орган по ФОРМЕ акта, и её пункт 1 исключён Законом от 11.07.2017 № 91-VI, то есть для законов разъяснения не предусмотрено вовсе. -
Черновиковый контур О-1 на статье 46: молчание становится определённым ответом (30.08.2026).
corpus/drafts/kz-legal-acts-art46-revival/— черновик пункта 2-1 («признание утратившим силу акта, которым другой акт был признан утратившим силу, не влечёт восстановления действия последнего, если иное не установлено»), написанный руками, потому чтоlaw_amendнорм НЕ ДОБАВЛЯЕТ (измеренная граница L8.3). Отчётlawref impact:added=4, два сценария из пяти изменили исход —NEITHER → FALSE_ONLY(поправка отвечает) иNEITHER → TRUE_ONLY(оговорка «если иное не установлено» открывает обратный путь), а три соседних (приостановление пункта 1, прекращение пункта 2, введение в действие статьи 42) дали БАЙТОВО равные исходы. Каталог лежит внеcorpus/laws/, в CLIR не собирается; размещение нормы пунктом 2-1, а не подпунктом 5 пункта 2, — с записанным доводом: пункт 2 есть закрытый перечень ОСНОВАНИЙ прекращения, а норма говорит о ПОСЛЕДСТВИИ. -
«Трое из Простоквашино» как ДЕЛО: одно дело, два противоположных ответа по двум кодификациям (30.08.2026). Ни мультфильм, ни повесть Успенского НЕ формализованы и НЕ закреплены — оба произведения охраняются авторским правом, и корпус их не вендорит (та же правовая причина, что у
ru.marshak.twelve_months); формализованы только реальные акты, фабула живёт делами, обстоятельства пересказаны своими словами. Первая половина не заводит ни одного пакета: семействоprostokvashino— первый прогон регрессии над Общей частью ГК РК (kz.corpus.civilcodeне тронут ни строкой; до него у пакета были только.lawtest§267), 25 сценариев к пяти делам. Вторая — новый пакетru.rsfsr.gk_1964: срез из двенадцати статей Гражданского кодекса РСФСР 1964 года (плоды и приплод ст. 140, клад ст. 148, имущественный наём и бытовой прокат ст. 275—277, 281, 283, 285—286, 291, 293—294), 25 сценариев семействаprostokvashino_rsfsr. Пара вычислена, а не пересказана: телёнок нанятой коровы по ст. 123 ГК РК — нанимателю, по ст. 140 ГК РСФСР — собственнику, а нанимателю не достаётся ничего; клад по ст. 247 ГК РК — поровну нашедшему и собственнику недвижимости, по ст. 148 ГК РСФСР — целиком государству, с четвертью стоимости нашедшему и только за перечисленные виды ценностей (клад вне перечня не даёт ни рубля при той же собственности государства). Машины редакций §31 между кодексами нет: разные source work разных правопорядков, прецедент — два Налоговых кодекса вkz-income-tax. Три находки дел к действующему ГК РК: у малолетнего, живущего отдельно от родителей, ДВА места жительства разом (ст. 16 п. 1 и п. 2 — два независимых strict-правила с одной головой, единственности ГК не объявляет); договорная оговорка ст. 123 («если иное не предусмотрено… договором») пакетом НЕВЫРАЗИМА — правило записано strict безunless, и сценарий PRO-04 упадёт в день, когда оговорку выразят; границу «люди/вещи» проводит НОРМА, а не типы — ст. 13 п. 2 выводит правоспособность из одного факта рождения и выведет её коту, тогда как физическим лицом кот не признан ответом NEITHER, а не FALSE_ONLY (ст. 12 перечисляет положительно, отрицание в открытом мире §3 из перечня не следует). Дело о посылке честно ограничено правосубъектностью получателя: почтовые правила не формализованы, отношения о вручении отправления в Общей части нет, граница объявлена словами. Источник ГК РСФСР потребовал трёх проб, две из них — измерения: Викитеки у акта НЕТ (prefixsearchотдаёт только редакцию 1922 года, три точных заголовка —missing), КонсультантПлюс отдаёт ту же редакцию 2001 года со СВЁРНУТЫМИ разделами I—III, где текста нужных статей нет вовсе; закреплён «Банк документов» kremlin.ru, сохраняющий текст отменённых разделов. Закреплена НЕ редакция 1978 года, и вместо обещания сделана проверка: ст. 140, 148 и 275 стоят в байтах без пометы «в ред.», это сторожит--auditв конвейере. Группаru, а неsu, — записанное решение по территориальному правопреемству (акт СОЮЗНОЙ РЕСПУБЛИКИ; довод тот же, что у декрета КирАССР в группеkz). Измерено: глубина §33.1 EXECUTABLE 12 из 12 статей охвата, байтов под фрагментами 1,4 % (срез, а не пробел), неучтённых 0; 50/50 сценариев обоих семейств, differential 50 evaluate-вызовов байтово идентичны, 4 авторских.lawtest4/4, разметка §218 55/0 и 42/0, мёртвых символов 0, недостижимых правил 0 (24 из 24). Аудит формализации починил две молчаливые потери, вторая — в воротах: пакет ВЫПАДАЛ изcheck_source_pinningцеликом (166 пакетов в отчёте при 181 источнике), потому что заголовок §22 стоял только вpackage.law, а ворота берут namespace из алфавитно первого.law; на стороне пакета починено повторением заголовка во всех модулях, громкий отказ на стороне ворот заведён задачей. Разбор —corpus/laws/ru/gk-rsfsr-1964/audit.ru.md. -
Закон о праздниках — первый акт, заведённый ПОД теневым протоколом formalize-act с фазы 0 (30.08.2026). Заведён
kz.corpus.prazdniki— Закон РК от 13.12.2001 № 267 «О праздниках в Республике Казахстан», консолидированная редакция ИПС «Әділет» (in_force с 01.07.2026 — окно из закреплённых сносок портала). Микро-акт: 6 статей, 10 правил, 23 установления; мера §33.1 — EXECUTABLE 5 из 6, ст. 6 объявлена границей с причиной и despite (UNEXPLAINED 0). Семействоprazdniki8 сценариев 8/8, KZ-differential байтово, разметка §218 24/0 словаря и 10/0 норм, 10 констант перечней вписаны вdocumentedс причиной,doctor.py kz/prazdniki— «пробелов нет». Байты старше памяти (приём kun-1920): в действующей редакции НЕТ ни Курбан-айта, ни 7 января (0 вхождений в сыром html), национальный праздник один — День Республики (25 октября), а День Конституции стоит государственным с датой 15 МАРТА (правка ст. 2 — закон от 11.06.2026 № 306-VIII). Три решения формы прошли канал §47.3 теневого протокола и записаны в журнал с одобрением человека: (1) ст. 5 «нерабочие дни» — статус без деонтики (носителя §190 в тексте нет, запрет живёт в ТК; VIOLATED в пакете невозможен — названо прямо); (2) определения категорий ст. 1 оценочные — ANCHORED, категории только из прямых установлений ст. 2–3 и событий ст. 4, перечень §70 НЕ замкнут (PRAZ-04 стережёт NEITHER); (3) календарная привязка — пары Integer (месяц, день) как данные акта: термов извлечения из Date в замкнутой поверхности нет, попадание даты заявляет дело (граница языка, подтверждена пробой join по паре Integer). Расхождение объёмов ст. 4/ст. 5 выводится делом PRAZ-08: утверждённый органом по труду профессиональный праздник отмечается и его день — праздничная ДАТА, но не праздничный ДЕНЬ и не нерабочий (ст. 5 говорит только о национальных и государственных) — тот же класс, что «запрет шире санкции» у kun-1920. Вся сессия шла под теневым протоколом: машинные факты фаз (закрепление, check, регрессия, differential, манифест, доктор, глубина, разметка, метадата) записаны в журнал только по exit 0 реальных ворот — включая три новых точечных режима--onlyу ворот метадаты/глубины/разметки, заведённых по итогам ретро-аудита kun-1920, — а перескок фазы и судейские точки протокол показывал по ходу (§164 / REQUIRES_JUDGMENT). -
Институт службы джинна: свод расходящихся свидетельств без единого байта свидетеля (30.08.2026). Заведён
ru.lagin.hottabych— не пересказ «Старика Хоттабыча», а ИНСТИТУТ: основание службы, форма акта власти, пределы и дары. Второй акт корпуса, у которого нет ни одного закреплённого байта свидетеля, и по той же ПРАВОВОЙ причине, что уru.marshak.twelve_months: Лагин умер в 1979 году, охрана длится до 2050-го, а фильм 1956 года и радиоспектакль 1958 года охраняются как самостоятельные произведения. Закреплены байты ЧЕТЫРЁХ ЗАПИСЕЙ о свидетелях — статей русской Википедии под CC BY-SA (54 строки, 54 фрагмента, покрытие исчерпывающее), и различие «свидетель / запись о нём» выражено ДВУМЯ ТИПАМИ, а не оговоркой: показание принадлежит произведению, байты — записи. Цитаты из охраняемой повести сняты вместе с шаблонами при извлечении, и потеря для свода нулевая — предмет пакета в том, КАКОЙ свидетель какую форму акта власти несёт, а не в словах формулы. Семействоhottabych: 23 сценария 23/23, differential 80 evaluate-вызовов байтово идентичны (liblaw_ffi==lawref), Lean 80 принято / 0 отвергнуто, 6 авторских.lawtest§267 6/6 и 2 свойства §270 (домены 4 и 6 элементов, обе канарейки падают), разметка §218 123/0 словаря и 48/0 норм, мёртвых символов неучтённых ноль,doctor.py— «пробелов нет». Два главных вывода даются делами, а не комментарием. Первый — форма УЧРЕЖДАЮЩЕГО АКТА расходится: книга сообщает односторонее решение («Принял решение служить своему спасителю»), фильм — обещание с названным объёмом («обещает мальчику выполнять любое его приказание»); это два разных юридических акта, и свод отвечаетfounding_form_diverges, не выбирая между ними. Второй — ИНВЕРСИЯ НАПРАВЛЕНИЯ НА ОДНОМ ЮРИДИЧЕСКОМ ФАКТЕ: одно освобождение из сосуда, один освободитель — и Хоттабыч служит, а Омар Юсуф решает убить; носителя обратного направления называет закреплённая запись прямо, а признака, который отличал бы одного брата от другого, не называет НИКТО, и свод честно отвечает «что», не отвечая «почему». Приоритета §116 между свидетелями в пакете нет ни одного: никто не уполномочивал выбирать между книгой, фильмом и грампластинкой. «Трах-тибидох» выведен АПОКРИФОМ, а не внесён нормой. Присказку несёт РОВНО ОДИН свидетель — радиоспектакль 1958 года, — и того не называет перечень радиопостановок, единственный перечень своего класса во всём своде (он знает 1953 и 1979 годы). Класс тот же, чтоtransmitter_without_attributionв «Ясе», но острее: там передатчик назван и показаний не оставил, здесь показание есть, а свидетеля перечень его класса не знает. Пара HB-06 стережёт основание вывода: заклинание редакции 1938 года несёт тоже один свидетель и апокрифом НЕ является. Отдельной головой выведено расхождение ВНУТРИ одного произведения — заклинание есть в редакции 1938 года и изъято в последующих, обе вышли под одним именем автора. ТРИ ПРОБЕЛА СВОДА ОБЪЯВЛЕНЫ И ВЫВОДЯТСЯ: исчерпание бороды («волосок за акт»), сухость бороды как условие колдовства и двадцать два мяча на футбольном матче не подтверждает ни одна из четырёх записей. Из первых двух выведен результат, а не умолчание:power_unbounded_in_the_pinned_slice— у института, каким его знают ЗАПИСИ, власть джинна не ограничена ничем, и это ровно та точка, где расходятся народная память и то, что можно предъявить (контраст — исчерпаемый иммунитет Кощея, где ресурс сосчитан правилами, потому что запись называет его словами). Футбол получил свою голову: эпизод засвидетельствован, содержание — нет, и разница между «эпизода не было» и «эпизод есть, а нормы к нему нет» юридическая. Дар, недопустимый для одаряемого, разложен на две стороны РАЗОМ: на одном деле одновременно истинныgift_validly_offered(полномочие дарителя цело, предела по содержанию не называет никто) иgift_cannot_be_accepted, и потому выводитсяacceptance_deadlock— обе попытки одаряемого устранить дар («сделать невидимыми либо передать в Роно») отклонены категорическим отказом. Состав дара при этом сам расходится и расхождение СЧИТАЕТСЯ: рабов называет только книга, караван верблюдов и слонов — только фильм, дворец называют оба и он не расходится. Сравнительная ось сru.pushkin.zolotaya_rybkaВЫЧИСЛЯЕТСЯ: предел откупа и обе головы ретроактивного отката выводятся правилами соседа, здесь только читаются, — у рыбки предел проведён по содержанию требования и снабжён откатом, у службы джинна нет ни того, ни другого, а препятствие лежит на стороне ПРИНЯТИЯ. Ради этого уru.pushkin.zolotaya_rybkaзаведена публичная поверхность §24 (13 объявлений; до тогоpubу него не было ни одного). Барьер полноты §111 задал форму двух слоёв, и это измерено, а не угадано: выведи «свидетель несёт форму» и «дар включает составляющую» правилом из положений свода — оба считающих правила становятсяNON_EXECUTABLE_RULEпри зелёномcheck; поэтому они ПОКАЗАНИЯ, заякоренные на строку записи, что и вернее по существу. Мера §33.1 по статьям неприменима и говорит это словами: у энциклопедических записей единицы деления нет, вverify/ci/data/formalization-depth.jsonпакет не вписан вовсе. -
Тоғызқұмалақ: правила игры как регламент федерации, и две действующие редакции, спорящие друг с другом (30.08.2026). Заведён
kz.corpus.togyzqumalaq— «Тоғызқұмалақ қағидасы мен ережесі» Федерации тоғызқұмалақ Казахстана (утверждён Агентством РК по делам спорта и физической культуры). Выражены раздел 1 целиком (доска и инвентарь 1.1, ход 1.3, захват по чётности 1.3 п. 2, тұздық 1.4, атсырау и исход 1.5 с целью 1.2, бланк партии 1.6) и подраздел 2.6 (счёт результатов): EXECUTABLE 7 из 18 подразделов, семействоtogyzqumalak26 сценариев, differential 26 evaluate-вызовов байтово, Lean 26 принято / 0 отвергнуто, 26 рукописных.lawtest§267, разметка §218 111/0 словаря и 75/0 норм,doctor.py— «пробелов нет». Расхождение двух ДЕЙСТВУЮЩИХ редакций выводится, а не примиряется: из пяти найденных различий раздела 1 два названы не операционными поимённо, три выражены правилами; тяжелейшее — 1.3 п. 4, где на одном деле (поправил рукой, не сказав «түзеймін», в классической партии) редакция 2013 обязывает ходить с тронутого отау, а поздняя прямо говорит «міндетті емес». Приоритета §116 между ними не поставлено: ни один документ не объявляет себя новой редакцией другого, и пакет выводитsheshilmegen. Три предела тұздық (девятый отау, зеркало чужого тұздық, «тек бір рет алынады») выражены поражением §107, а не отрицанием в гарде — измерено, чтоnot Pтребует УСТАНОВЛЕННОГО отрицания и на отсутствии факта молча даёт NEITHER, а замыкание §70 над выводимым предикатом даёт BOTH. Измеренная граница языка названа громко:modстоит вspec/grammar.ebnf(строка 833), но лексером и парсером не поддержан (LDC-E0201), а деление целых §58 точное (E-0020) — поэтому чётность внесена определениями САМОГО акта из его словаря, а не спрятана в метке; все числа регламента стоят константами в гардах. -
Единица учёта
unit: kk_subsection— казахский подраздел двухуровневого номера (30.08.2026). Заведена в ОБОИХ реестрах сразу (verify/ci/gates/sources/check_source_pinning.pyиcorpus/tools/lib/act_split.py): две меры §33.1 обязаны видеть одно множество единиц. Точка после номера НЕОБЯЗАТЕЛЬНА — свойство издания, а не структуры: две редакции регламента тоғызқұмалақ набирают её по-разному, и запрети конвенция одну форму, знаменатели редакций стали бы несравнимы. Два отсева измерены на этих же документах: требование заглавной кириллицы (или кавычки) отсекает запись хода «1.76 (10)», запрет двоеточия — подпункты «10.1.»/«10.2.» внутри пункта; без них 19 и 21 единица вместо 18. -
Срез
--joomla-item-pageуextract_source_text.py(30.08.2026). Тело статьи Joomla-портала по парному тегу с громким отказом на незакрытый блок; обвязка шаблона (иконки «Печать»/«E-mail», навигация «Назад/Вперёд») снимается по наличию. Нужен потому, что у сайта федерации тоғызқұмалақ служебная обвязка больше самого документа, и закрепление страницы целиком свело бы байтовую долю §33.1 к разговору о вёрстке. -
Ст. 91 Конституции РК: ось самоприменимости — дверь оживлена, ядро держит, развилка локализована (30.08.2026). Казахстанская пара к лазейке Гёделя в
kz.constitution.amendment. Затвор ст. 91 п. 3 (AmendmentMayBeSubmitted1995) был МЁРТВОЙ нормой — strict +notнад выводимым, установленного отрицания взять неоткуда, ни одного сценария; оживлён канонической defeasible+unless-формой. Три прогона L8.2: дверь открывается поиском с нуля (пара «заключение + подтверждение п. 2», 733 вызова); при посягательстве на унитарность — структурный ноль (монотонность); для поправки, сужающей перечень п. 2, путь существует ⟺ выбрано прочтение А «перечень не защищает сам себя» — обе стороны спора заведены прочтениями §152 (exactly_one, молчание громкое INTERPRETATION_REQUIRED), выбор оставлен Конституционному Суду. Воротаcheck_kz_entrenchment_loophole.py; AMD 2 → 10 сценариев (включая пару порога 4/5 парламентского пути, прежде тоже не покрытого), конституционная регрессия 148/148, разметка §218 затянута. -
Лазейка Гёделя: ось самоприменимости статьи V в
us.constitution, находка bounded-поиском и граница §110 (30.08.2026). Модульself-amendment.law— по ведущей реконструкции заявления Гёделя 05.12.1947: содержание гипотетической поправки («власть поправок переходит к одному Конгрессу») — факт дела, оба следствия выведены из валидационной клаузулы статьи V. Двухходовку «передача власти + унилатеральное введение» нашёл САМlawref loopholeпри фоне одной парадной процедуры — минимальная находка длины 2 без единой позиции VIOLATED; без фона на depth 3 находок ноль (порог статьи V структурно длиннее), а полное открытие с нуля (depth 5, 174 321 вызов) восстановило весь пятишаговый путь конвентным маршрутом статьи V, которого нет ни в одном авторском сценарии. Вечная оговорка о равном представительстве в Сенате стоит и в мире двухходовки (§128, пара USC-06/07 на факте согласия штата). Измерена граница ядра: возврат унилатерального пути вamendment_is_part_of_constitutionзамыкает цикл предикатов — LDC-E4102, стратификация §110 останавливается ровно на гёделевской самоссылке; один круг самоприменимости выразим, неподвижная точка — нет. Воротаcheck_godel_loophole.py(шаг 38/47): поиск обязан сам находить пару, детерминизм x2, контроль глубины, lawtest против свежесобранного IR. Семействоus_constitution7/7 (было 2), differential 8 вызовов байтово, lawtest 3/3, разметка §218 затянута (11/10 словаря, 13/0 норм), цель закрепленаanalysis/godel-goal.json. -
Треугольник экзогамии:
he.torah.arayot,vat.canon.consanguinitasиkz.corpus.zhetiata— одна пара, четыре системы, один граф предков (30.08.2026). Три пакета одной работой. Лев 18:6–18 — ЗАКРЫТЫЙ ПЕРЕЧЕНЬ имён (замыкание §70, ни степени, ни порога); два Кодекса канонического права — АРИФМЕТИКА степеней над графом предков, причём Кодекс 1917 года считает боковую линию по ДЛИННОЙ ветви (c. 96 §3), а Кодекс 1983-го — по ОБЕИМ вместе (c. 108 §3), и пределы у них третья против четвёртой степени; свод свидетельств жеті ата — счёт ПОКОЛЕНИЙ, читающийkz-tuystyqимпортом. На одной паре троюродных обычай запрещает, действующий канон препятствия не находит, перечень отношения не называет; Кодекс 1917 года на той же паре запрещает — ответ переворачивается ДАТОЙ (effective§87, граница проверена парой дел 26 и 27 ноября 1983 года). Семействоexogamy: 27 сценариев, differential 107 evaluate-вызовов байтово, Lean 107 принято / 0 отвергнуто, 7 рукописных.lawtest,doctor.py— «пробелов нет» у всех трёх. -
Конвенция учёта
unit: canon— единица деления кодексов канонического права (30.08.2026). Заведена в ОБОИХ реестрах сразу —verify/ci/gates/sources/check_source_pinning.pyиcorpus/tools/lib/act_split.py, — потому что две меры §33.1 обязаны видеть одно множество единиц; копия в одном месте дала бы «мера по статьям неприменима» у второй. Единица — канон, а не параграф:§ 1…§ 4нумеруются заново внутри каждого канона. Форма маркера принимается двоякой (Can 96 §1.без точки у издания 1917 года,Can. 1091 — § 1.с тире у издания 1983-го): выровнять их в закреплённых байтах значило бы править текст, а не нормализовать разметку. -
Публичная поверхность у
kz.corpus.tuystyqиkz.corpus.marriage(30.08.2026). У первого —NekeZhubyи три вывода ст. 7 (препятствие, его отсутствие, общий предок вне круга); у второго —Personи вывод ст. 9. Заведена радиkz.corpus.zhetiata, который обязан выводить сторону каждой системы из ЕЁ предикатов, а не описывать её от себя. Внутренние ступени счёта наружу НЕ выставлены: потребителю нужен исход, а не ход счёта. -
Фаззер L8.1 увидел процедуры §160: константы документа в направленном режиме (30.08.2026). Правила профиля перехода требуют в аргументе
const_refна объявленное состояние (entered_state(v, AmTor)) и на объявленный переход, а пул сущностей фаззера был синтетичен (urn:fuzz:<Тип>:N) и объявленных констант не содержал никогда: покрывалось только<P>/initial, а весь автомат числился непокрытым. Теперь направленный режим добывает константы из обратного замыкания САМОЙ ЦЕЛИ (_const_pools) — тем же приёмом, каким это давно делаетlawref loophole(typed_seeds), — и называет добытое в манифесте (constPools), чтобы пул не менял отчёт молча. Замерено на одиннадцати пакетах корпуса с процедурой: профиль вырос у всех, ни один пакет не потерял покрытия —kz.corpus.bata1/11 → 11/11,kz.corpus.procurement1/5 → 5/5,kz.corpus.qantar1/15 → 13/15,kz.judicial_system1/23 → 15/23,de.kafka.vor_dem_gesetz1/13 → 13/13,la.gellius.protagoras_euathlus8 непокрытых → 0. Слепой режим не тронут намеренно: глобальные пулы отняли бы 2423 существующих подстановки у 84 пакетов, вытеснив их капомMAX_GROUNDINGS; проверено, что после починки слепые подстановки байтово те же по всем 157 CLIR корпуса. Найдено формализациейde.kafka.vor_dem_gesetz; попутно фаззер нашёл собственную находку видаerror— на IR с нарушенным range restriction §190 оракул падает голымKeyErrorвsolver.substituteвместо диагностики (корпусу не грозит:lawc checkтакое правило отвергает, LDC-E4101; собрать можно только рукописным IR мимо компилятора). -
Три вектора §270 и первое применение свойств в корпусе (30.08.2026).
LAY-L1-PROPERTY-DERIVED-DOMAIN— домен квантора свойства по ВЫВОДИМОМУ предикату перечисляется (барьер §111 к нему не применяется: домен есть отдельный запросcollect, а не перечисление внутри тела правила);LAY-L1-PROPERTY-BARRIER-SKIPPED— тот же выводимый предикат в ОЖИДАНИИ барьер ловит, и свойство обязано сказать это спискомskipped, а не выдать пустой список контрпримеров за проверку;LAY-L0-PROPERTY-VACUOUS-DOMAIN— свойство над НЕОБЪЯВЛЕННЫМ предикатом домена держится вакуумно без единой диагностики, и единственный признак беды есть названная мощность домена (0). Первым пакетом корпуса свойства §270 применилfiqh.hajj: два сторожат, что перечни бесспорных обрядов ст. 9 и 10 не растут (то есть что мазхаб не выбран), третье — что оставление фарда прекращает хадж независимо от совершения остальных обрядов.
Исправлено
-
lawref loopholeна актах с редакциями и большим замыканием цели (03.09.2026, найдено переносом госпошлины вkz-income-tax): кап дат усекал и дату права самого дела (у акта с редакциями 2018 и 2025 первые шесть дат лежали до 2026, проекция §31 снимала 1090 правил из 2124, и цель, достижимая на дате дела, числилась недостижимой); нулевой шаг «достижима уже фоном» спрашивался на самой ранней дате документа; атомы алфавита шли в каноническом порядке, и трёхфактная цель ст. 669 не достигалась за бюджет. Теперь названные вызывающим даты кап не режет, дата дела — точка отсчёта обхода (порядок дат в пути — прежний, хронологический), атомы упорядочены по расстоянию до цели по графу голов/тел. Семантики нет, воротаcheck_loopholeзелены байт в байт. -
lawref amend: кап пространства правок (64) резал по каноническим байтам — на 2124 правилах нужная операция в кап не попадала, перебор сжигал бюджет на чужих правилах и отвечал «не найдена». Операции над правилами, применёнными в proof-графах целевых сценариев, идут первыми (витрина движка,editSpaceRelevantв манифесте); воротаcheck_amendзелены. -
Контракт MCP (
test_server.py): фикстура мёртвого правила — конструкция вне v1-подмножества (прежняя стратифицируется с DECISION-0088); проверки loophole/amend наkz-income-taxполучили явные капы алфавита и бюджета вместо ожиданий, унаследованных от снятогоkz-state-duty. -
Типизированный IR, Ф5 — правила Ф3 в виде программы,
eval-serveна кэше (02.09.2026). Поверх портаprepare_program/ViewCacheс оракула:CompiledStrictпубликуется вPreparedViewпервым вызовомstrict_closureи переиспользуется следующими вызовамиevaluateс воспроизведением предупреждений NON_EXECUTABLE_RULE на прежнем месте;eval-serveдержит один кэш на процесс. Байты: три вызова на хэндле и one-shot равны на 18 делах, ворота 28, KZ--onlyosms/criminal_code, сертификаты. Тёплый вызов на хэндле: УК 0,058 → 0,025 с, НК 0,272 → 0,190. -
Типизированный IR, Ф2 откачена (02.09.2026). Форма конъюнктов один раз на
solveи рекурсия по флагам прошли приёмку байтово, но парный замер против Ф3 выигрыша не дал (−5…+8 %, шум ±10 %): подпрофиль переоценилformula_varsиз-за цены самих меток.solver.rsвозвращён к Ф1+Ф3. -
Типизированный IR, Ф3 — скомпилированное строгое правило (02.09.2026). Тела правил,
governs, действие на дату права, планы semi-naive и ранги страт компилируются при первом вызовеstrict_closureи живут вSupportStore::strict_cacheдо конца вычисления вместо повторного разбора в каждом вызове замыкания; issue нестратифицируемости повторяется на каждом вызове, как её печаталstrict_ranks. Байты те же (22 дела, векторы, differential, ворота 28, KZ--only×3, сертификаты). Парный замер до Ф0 ↔ после Ф3: КоАП с делом 1,35 → 0,88 с, НК 0,97 → 0,65 с. -
Типизированный IR, Ф1 — интернер значений и ключ атома без канонизации (02.09.2026).
SupportStoreинтернирует значения аргументов и предикаты, атом —(pred_id, [ValueId]), корзины по id;solve_recсвязывает переменные слотами(атом, позиция)и материализуетBTreeMap<String, Value>только для гардов и готовых решений. Байты те же (22 дела, векторы, differential, ворота 28, KZ--only×3, сертификаты); КоАП с делом 1301 → 1004 мс на инструментированной паре,solve167 → 96. План —docs/plans/engine/TYPED-IR-PLAN.ru.md. -
Стратификация §110 без кубической сложности (02.09.2026).
reach_pathсканировал все рёбра на каждом шаге и запускался на каждое немонотонное ребро — наkz-administrative-code251 мс из 818 на вызовeval. Индекс смежности в исходном порядке рёбер плюс SCC-предфильтр (Тарьян): первый найденный путь тот же, байты те же (22 дела, векторы, differential, ворота 28, KZ--only×3, сертификаты). КоАП 818 → 535 мс, НК 677 → 552 мс. CPU-профиль по фазам и план типизированного IR —docs/plans/engine/TYPED-IR-PLAN.ru.md. -
Канонизация ради programHash: сток SHA-256 буферизован, NFC-проверка с ASCII-путём (02.09.2026). Байты
canon/semhashне изменились (400 CLIR, cross_canon 100k, векторы, check_lower, 22 дела eval); выигрыш 0–10 % user-времени — обход JSON и есть пол. Замена канонизации полемsemanticHashдокумента отвергнута как изменение §170 (нули у склеенных миров, ложь на правленном IR, оракул считает сам) — решение за владельцем. -
Errata E-0099 · §190/§149: range restriction не доходила до правила, порождённого клаузой
unless(02.09.2026). Поражаемое правило, у которого условие изъятия связывает не все переменные головы, проходилоlawc checkиlawc lowerмолча, а на исполнении реализации отвечали по-разному:lawrefпадалKeyError: 'v0'вsubstitute_head,lawc evalМОЛЧА отбрасывал дефитер и выводил голову — правовой ответ, противоположный написанному изъятию, без единого issue. Найдено на ст. 56 п. 3 подп. 3 ТК ЕАЭС. Квалификация решена замером: то же правило, записанное отдельнымrule … defeater, отвергаетсяLDC-E4101— проверка §190 работает, молчала она на ПОРОЖДЁННОМ узле, при том что §150 говорит дословно обратное («форма записи на нормализацию не влияет»). Правка: проза §149.1 (тело порождённого узла есть одно условие клаузы,whenобщего правила в него не переносится);lawc checkпроверяет каждую клаузу отдельно под именем<Правило>/unless/N— тем же, что даёт lowering; на исполнении вторая линия в ОБОИХ движках (lawref— классRangeRestrictionErrorвместоKeyError,law-eval— поиск неподставленной переменной в заготовленной голове), код, адрес и формулировка дословно одни, поэтому класс впервые покрыт differential-ом. Векторы T168 (три формы клаузы,LDC-E4101ровно трижды), T169 (граница) иERR-E0099-UNLESS-HEAD-UNBOUND(evaluate, error-outcome, вSUPPORTED;check_differential257/257). Радиус по корпусу измеренlawc checkпо всем 393 пакетам до и после: одна новая диагностика,kz.corpus.constitutional_court—UnconstitutionalActCeasesOnDecisionDayсвязывалact, но неtaken; норма исправлена, CLIR перегенерирован. -
evalбез копий IR (02.09.2026). Подготовка вычисления делала пять полных копий программы на вызов (клон узлов из IR, отбор интерпретаций, проекция редакций, пересборка при свёртке констант, склейка с утверждениями дела) и клонировала декларации вTermEnv; осталась одна — отбор интерпретаций. Свёртка констант — на месте (substitute),project_editionsперемещает узлы,ingestберёт два среза,TermEnvдержит ссылки. Байты: 22 живых дела, векторы, differential, ворота 28, KZ--only×3, сертификаты — без единого расхождения. CPU пустого дела: УК 0,74 → 0,22 с, КоАП 5,1 → 2,4 с; RSS КоАП 643 → 327 МБ. Код — в 608b47883 (унесён чужим коммитом), запись — отдельно. -
liblaw_ffiворот — профильgate(02.09.2026).fresh_library()иdylib_candidates()брали библиотеку только изtarget/*/debug, и хэндловый транспорт differential, сертификатов, раннеров корпуса и MCP-сервера исполнял debug-оценщик: 2,4 с на делоkz-income-taxпротив 1,1 с у gate-сборки. Пара «cdylib ↔ живой lawc» переведена синхронно (law_ffi.PROFILE,BIN = target/gate/law-cliу ворот 27/28, шаг 1run_all.sh), отката на debug нет; реестр DECISION-0072 дополнен. -
lowerотказывает необъявленному типу и internal-типу соседа (02.09.2026). LDC-E2101 у голого имени без декларации и LDC-E1105 уpkg::Typeвнеexports— на lowering-е, а не только уcheck;checkразрешаетrequest_schemaканала суждения §47.3. Векторы T165–T167; корпус: шестьpub, записьMitigationQuestionв Уставе МВТ, CLIR перегенерированы; вектор LAY-L2-JUDGMENT-SCHEMA объявил свою схему, голден переморожен точечно. -
lawc checkна закреплённых кодексах (02.09.2026).check_pinned_sources§194 искал каждый фрагмент наивным окном по всей публикации — O(|публикация| × Σ|фрагментов|), 59 % времениcheckнаkz-income-tax; теперь один проход Рабина–Карпа по префиксам игл (contains_each), семантика и порядок диагностик прежние (эталон в тесте). Терминальныйcheckлоуверил пакет дважды — приведён кcheck_diagnostics_lowered, как--json. Выходы на шести пакетах и трёх негативных фикстурах байт в байт прежние. CPU gate: НК 9,99 → 0,81 с, КоАП 5,77 → 1,91 с; debug: НК 82 → 4,5 с. -
lawc: цикл присутствия закреплённых ресурсов сужен доcapability: "compile_time"(02.09.2026).lower_a3_package(crates/law-cli/src/pkg.rs) читалresourcesлока ЦЕЛИКОМ, а «фактические» ключи собирал ТОЛЬКО из A3-sidecar-ов пакета — и требовал, чтобы каждая закреплённая строка нашлась среди них. Лок §11 при этом пинует ВСЕ ресурсы пакета: с DECISION-0070 туда же попадают оверлеи меток §218 строкой{"kind": "label-overlay", "capability": "presentation"}. Presentation-строка среди A3-файлов не находится никогда, поэтому пакет, у которого есть И A3-параметры, Иi18n/<lang>.json, падалLDC-E8704 locked resource i18n:kk (i18n/kk.json) отсутствуетпри существующем файле. Квалификация: дефектlawc; проза и схема верны, оракул стороны не имеет —resolver.check_locked_resourcesсверяет лок сdiscover_resources, который перечисляет и A3, и оверлеи, то есть у него обе стороны сравнения полны, и его же докстринг называет оверлеи ресурсами пакета дословно. Правка сузила цикл до той самой способности, которую соседний цикл уже требовал от проверяемых строк, и вынесла его в чистуюmissing_compile_time_pin— теперь он тестируем безInputи без ввода-вывода. Комбинация не исполнялась до 02.09.2026: у всех прочих пакетов корпуса с оверлеями (de/vor-dem-gesetz,chem/rules,sa/personal-status,sa/civil-transactions)law.lockнет вовсе, а первыми «A3 и оверлей сразу» получили четыре пакета волныaba/. Защита, ради которой цикл заведён, не ослаблена: отсутствующий A3-ресурс по-прежнему громкий (вектор PAR-007 «semantic source edit без lock update» зелен), и это закреплено тремя модульными тестамиpkg::tests, из которых два падают при снятии сужения (проверено мутацией). Локи четырёх пакетовaba/перегенерированы и пинуют оверлей, как и задумано DECISION-0070;check_lower217/217, векторы 463 исполнено,cargo testиclippyчисты, полная KZ-регрессия по 328 семействам зелена кроме двух, красных ЧУЖОЙ незавершённой работой и воспроизводящихся БЕЗ этой правки (проверено снятием правки и пересборкой). -
Лендинг
apps/landing: тексты сверены с живым сайтом и репозиторием (01.09.2026). Четыре страницы в обеих версиях (продукт, о проекте, Calculemus, MCP) строили ссылки на документацию и атлас отBASE_URL, и наwww.arxo.ioони отдавали 404 — сайт, чей главный аргумент «проверьте сами», вёл в никуда из «Изучить язык и метод», «N актов в реестре», «Контракт инструментов». Адреса теперь берутся изsrc/sites.ts, как у главной и шапки. Снимок журнала решений (governance.snapshot.json) обновлялся только руками: сайт показывал 68 решений при 90 в дереве под подписью «не могут устареть молча»; скрипт включён вprebuildрядом со снимком корпуса (без полного дерева оставляет снимок как есть — иначе роняла бы изолированную сборку Vercel), оба снимка пересняты (291 акт, 4 439 тестов, 90 решений, 82 errata, 399 векторов, 116 ворот), подпись переписана правдиво. Страница MCP называла 18 инструментов при 21 у сервера — добавленыlaw_query,law_editions,law_draft_impact; гарантия «Локальность» разведена с публичной точкой (та по README сервера хранит тела вызовов 30 суток), финальный CTA «Запросить доступ» противоречил «без ключа и регистрации» и ведёт теперь на подключение. Демо «Фараид» несло хэш, не встречающийся в корпусе, ссылалось на Коран, тогда как источник пакета — закреплённое изложение доктрины, и на вопрос «кому сколько» показывало только коранические доли ⅛ · ⅓ · ⅓ без остатка 5⁄24 — записан живой прогон оракула машинериейcorpus/run_faraid_cases.py: ⅛ · 7⁄16 · 7⁄16 с возвратом по ст. 13, хэш публикации изложения, вариант «минбария» (аул 24 → 27) из казусаc-minbariyya. Hero подписывал Регламент 261/2004 как «ред. 2026» (не менялся с 2005; закреплён снимок 08.2026); демо звалось «живым прогоном» при записанных прогонах; «Core 0.1» снят с первого экрана; «Оракул/Движок» на схеме проверяемости заменены на «эталонная/независимая реализация»; терминология сведена (атлас, рабочий стол, КОЛЛИЗИЯ, «опровержимые выводы» вместо «дефитеров»); «честный» оставлен в двух заголовках из двенадцати мест; ссылка «три честных нет» получила собственный якорь#limits. Карточка «Гражданам» и раздел «Корень» страницы «О проекте» ведут наzan.arxo.io. -
E-0080 (§110/§111): правила одной головы теперь стоят в одной страте — поражение перестало молча теряться. У головы с производителями на разных стратах дефитер выравнивался по максимуму цели и не доходил до нижней страты, где статус уже зафиксирован шагом 7 §111. Замер по всем 262 CLIR: четыре живых пакета, у
myco.opredelitel— неверный ответ на исполнении (образец с вердиктом «съедобен» оставался запрещённым). Квалификация — дефект SPEC; правка аддитивна (§110 требование 5), обе реализации выравнивают ранги внутри фикспойнта. ВекторыERR-E0080-*, differential 180/180 байтово. -
myco.opredelitel: дефитер над СТРОГОЙ головой не поражал ничего — вторая половина того же места, которую E-0080 не чинит (31.08.2026).DeadlyBlocksEdibleVerdictобъявлялdefeat edible_verdict(s), аedible_verdictпроизводился ОДНИМ строгим правилом. Дефитер §107.3 снимает КАНДИДАТА своей страты, строгий вывод кандидатом не становится — поражать было некого ни при каком выравнивании рангов. Замер на движке УЖЕ С E-0080: дело, приписавшее бледной поганке класс «съедобен», давалоedible_verdict= TRUE_ONLY одновременно сdeadly_verdict= TRUE_ONLY — ровно то, что запрещает соседнийconstraint, который на runtime не вычисляется (§93.1). Молчали все:lawc check,lower,check_dead_rules(правило исполняется — оно просто никого не побеждает),check_stratum_barrierи differential. Он же был ПРИЧИНОЙ дефекта, найденного E-0080 в этом пакете: мёртвый дефитер делалedible_verdictпоражаемой головой, чтение поражаемой головы поднимало ранг §110, иFullIdentificationDefeatsBarуезжал на страту вышеPresumeInedible. Две находки — одно место, и лечится оно с обеих сторон независимо. Лечение — по канону «производители барьера ТОЛЬКО строгие». Дефитер снят, его содержание переехало в ГАРД: статья 10 изложения объявляет перечень смертельно ядовитых ЗАКРЫТЫМ, поэтому заведено замыкание §70DeadlyListIsClosedнадdeadly_listedпо новому доменуtaxon_in_slice(десятивидовой срез ст. 1/14, 10 ассертов), и строгоеEdibleOnlyAfterIdentificationчитает установленный негативnot deadly_listed(t)— приём blefuscu-revival, где перечень тоже закрыт по существу. Оговорка той же статьи («невхождение в перечень не есть вывод съедобности») сохранена тем, что негатив стоит гардом ПРИ классеEdible, а не посылкой; вид вне среза по-прежнему не получает вердикта (ст. 14). Покрытие: у презумпции ДВЕ стороны, и проверялась одна. ЗаведеныMYCO-EDIBLE-VERDICT-LIFTS-THE-BAR(вердикт снимает запрет — краснел до E-0080) иMYCO-DEADLY-TAXON-NEVER-EDIBLE(закрытость перечня на противоречивом деле — краснел и после E-0080). Семействоmyco22/22, KZ-differential по нему 28 вызовов байтово, все 26.lawtestпакета проходят; заодно эмитировано 25 отсутствовавшихcorpus/tests/myco-*. После обеих правок обход всех 262 CLIR по паре «ранг дефитера ↔ ранги производителей его цели» даёт НОЛЬ — обе формы класса закрыты. Ворота на саму пару при этом нет:check_stratum_barrierдержит рёбраpriorityчерез страту и полярности одного предиката, а третья форма в нём не выражена. -
Деплой демо
kz-govбыл мёртв сутки, и репозиторий об этом молчал; заведены ворота 49/49 (31.08.2026). ЧЕТВЁРТЫЙ за сутки экземпляр класса «инструмент громкий, тихо то, что его никто не зовёт» (первые три — образец рабочего стола, осиротевшие.lawtestи обе embed-пробы, записи ниже) и пятый адрес одного и того же снятого файла.apps/demos/kz-gov/tools/gen_terms.py:168читалcorpus/clir/kz-holidays.lawir.json— пакет-дубль, снятый коммитом 7fa3bc97, — и падалFileNotFoundError. Цена оказалась НЕ «один калькулятор без данных», и это выяснилось только чтением вызывающего:tools/gen_data.py— единственный входtools/vercel-build.sh— зовёт девять генераторов цепочкой черезsubprocess.run(..., check=True)подset -euo pipefail, аgen_termsстоит ТРЕТЬИМ. Отказ обрывал цепь целиком: шесть генераторов после него не исполнялись ни разу,npm run buildне начинался, и деплой поверхности не собирался вовсе. Ворот, которые бы его звали, не было:grep -rn "gen_terms\|kz-gov" verify/ci/run_all.sh verify/ci/gates/давал ноль. Подмена оказалась механической, и это редкость на фоне соседей по классу: здесь берётся толькоsemanticHash, а не задаётся вопрос, поэтому расхождение словарей (non_working_holiday(RepublicDay)у дубля против парыIntegernerabochiy_den(10, 25)у живого акта), стоившее embed-пробам и демо праздников отдельной работы, не проявилось ничем. Преемник ОДИН, и это замер, а не сходство имён:official_calendar_2026(corpus/gen_kz_clir.py) выводит календарь изkz-prazdnikiцеликом, включая переносы абз. 3 ст. 5 (perenos_vykhodnogo_dnya,03-calendar-2026.law), — второй актkz-perenos-2023формализует постановление № 326 и в 2026 году не участвует, так что провенанс страницы остаётся парой хэшей. Попутно вскрылось, что лежавший на дискеterms.jsonпиннил и УСТАРЕВШИЙ хэш календаря (ad1e66dd…против1ddd2bec…в корпусе): страница показывала провенанс позавчерашнего дерева. Вторая сторона согласована, но механизм у неё оказался другой, чем читалось:apps/mcp/law_mcp/ask_positions.py:183фильтрует неbridge.json, а каталог_packages()(ключ — имя CLIR без суффикса), поэтому снятое имя не давало отказа —k in {…}просто не совпадало, иlaw_ask kind=deadlineуезжал с провенансом из ДВУХ актов при собственном обещании контракта «цепочка трёх актов». Теперь три (kz-civil-terms,kz-official-calendar-2026,kz-prazdniki),apps/mcp/test_server.pyзелен. Тут же снята мёртваяacts_used— вторая, расходившаяся вычислялка того же перечня (она собирала ХВОСТЫ пространств имён, которые ключами каталога не являются и не совпали бы никогда). Новые ворота утверждают ТРИ вещи, и ни одна раньше не проверялась: генераторы данных исполняются (тот самый класс); каждое имя корпусного артефакта, названное генератором, разрешается вcorpus/clir/(статически — это покрывает и то, что шаг не гоняет); цепьgen_data.pyучтена целиком в обе стороны —gen_*.pyна диске вне цепи и член цепи, не исполняемый и не объявленный дорогим, роняют шаг. Второе утверждение важно тем, что соседние воротаcheck_demo_surfaces.pyсверяют ДРУГОЙ перечень: манифестkz-govназывает 6 пакетов, а генераторы читают их и ещё восемь — второй реестр, который не сверял никто. DECISION-0064 §1 не нарушен: сборок поверхностей (npm run build, astro) шаг не делает — он исполняет питоновских потребителей движков против живого корпуса; закрывается ровно дыра решения — «красная проверка означает несобранный деплой по построению» держалось, но узнать об этом можно было только глядя на Vercel. Что НЕ исполняется — названо строкой с ценой, а не выброшено молча:gen_salary_grid(~2,5 мин, замер шапки генератора) иgen_fines(58,6 с и Rust — CLIR КоАП в корпусе нет, он собираетсяlawc lowerна каждый прогон), а с ними неотделимый от них входkz-gov/gen_data.py. Исполнено 9 генераторов трёх поверхностей за 30,7 с под нагрузкой фермы (load 13,6 на 14 ядрах); канарейка — 5 мутаций, каждая роняет свою сверку, и первая из них есть исторический дефект дословно. Канарейка же поймала дефект В САМИХ ВОРОТАХ до первого прогона: разбор цепи искал"tools", "gen_x.py"через запятую, тогда какPathскладывается оператором/, — «фон грязный» вместо ложно-зелёного шага. -
Обе embed-пробы не запускались, и одна — с самого переноса под
packs/; заведены ворота 29/48 (31.08.2026). Третий за сутки экземпляр класса «инструмент громкий, тихо то, что его никто не зовёт» (первые два — образец рабочего стола и осиротевшие.lawtest, записи выше).packs/examples/embed-python/ask_law.pyиpacks/examples/embed-node/ask_law.mjsчиталиcorpus/clir/kz-holidays.lawir.json, снятый коммитом 7fa3bc97 как пакет-дубль, —FileNotFoundError/ENOENTс первой строки. Под этим лежал ВТОРОЙ, независимый дефект: node-проба считала корень репозитория двумя уровнями вверх ('..', '..') вместо трёх и потому не запускалась ВООБЩЕ с переноса примеров подpacks/(DECISION-0059) — починка одного дефекта ничего бы не дала, а признака второго не было ни одного. Ворот, которые бы их звали, не существовало:grep -rn "embed-python\|embed-node\|ask_law" verify/ci/давал ноль. Пересадка — не подмена пути: у живого преемникаkz-prazdnikiдругой словарь, и это граница языка, а не переименование. Снятый дубль спрашивался константой-праздником (non_working_holiday(RepublicDay)), живой акт — ПАРОЙInteger(nerabochiy_den(10, 25)): термов извлечения месяца и дня изDateв замкнутой вычислимой поверхности нет, поэтому дату заявляет спрашивающий осями, а константуDenRespublikiс парой 10/25 связывает сам акт (решение формы 3 шапки02-prazdniki.law). Ответ от этого стал содержательнее: вместо одного правила §206-альтернативы proof-граф даёт ЦЕПЬDniNatsionalnykhPrazdnichny→PrazdnichnyyDenNerabochiy— в живом пакете национальная и государственная ветви ст. 5 разведены отдельными правилами, и видно, каким из двух оснований день стал праздничным. Обе пробы исполнены:TRUE_ONLY, минбария1/9,8/27,8/27,4/27,4/27, Σ = 1 точным равенством,semanticHashпакета совпадает между хостами. Новые ворота утверждают ДВА, и оба раньше не проверялись ничем: пробы запускаются (тот самый класс) и два хоста печатают одно и то же — README node-пробы обещал «тот жеsemanticHash, что печатает питоновская проба» СЛОВАМИ, и расхождение сделало бы обещание ложью при зелёном конвейере. Сверяются четыре величины из stdout (semanticHash, статус, цепь правил, пять долей); своей семантики ворота не считают (инвариант 5), а Σ = 1 роняет пробу её собственным ненулевым выходом. Канарейка — 5 мутаций, каждая роняет свою сверку; шаг 1,7 с, graceful skip по половинам. Попутно: node-проба научилась уважатьCARGO_TARGET_DIR(уступка, которую питоновская получала даром отverify/ci/lib/law_ffi.py), а обещания о номерах ворот в шапках и README догнаны (26/44 → 27/48, 27/44 → 28/48). Третий адрес того же снятого файла — демо праздниковapps/site-prototype— пересобран, и drop-in-преемника у него не было: у снятого дубля вопросnon_working_holiday(holiday)давал матрицу из ОДНОЙ комбинации (0 тумблеров), а у живого акта каждый вопрос либо несёт два свободных параметра иcollectего не поддерживает (nerabochiy_den,prazdnichnyy_den,vykhodnoy_den,prazdnichnaya_data), либо тянет 10 тумблеров = 1024 прогона оракула. Из двух кандидатов на 1024 прогона первый оказался ВЫРОЖДЕН, и увидеть это можно было только собрав:otmechaetsyaдаёт 1024 комбинации и ОДИН различный ответ (1,4 МБ) — все 10 констант уже отмечаемы по перечням ст. 2–3, поэтому тумблеры ст. 4 не могут добавить ни одного члена; демо с десятью ничего не делающими тумблерами хуже честного нуля, который оно заменяло. Впаян соседprofessionalnyy_ili_inoy_prazdnik(1024 комбинации → 1024 различных ответа, биномиальное 1-10-45-120-210-252-…, 1,1 МБ): у него нет ни одного продуцента в перечнях закона — состав целиком задаёт делегация ст. 4, и каждый тумблер двигает ответ ровно на одного члена. Число тумблеров было измеримо заранее, а вот двигают ли они ответ — нет.forms-*.jsonпорождён своим генератором с путями от корня (generatedFrom— репо-относительный, как у остальных одиннадцати);generated/data.jsгенератора не имеет вовсе (README объявляет его однострочникомjson.dumps), поэтому запись 7 заменена кодом со сторожем round-trip — сверка байтов ДО правки, иначе замена одной записи переформатировала бы остальные одиннадцать; проверено после: расходится ровноdemos[7].forms-holidays.jsonиanswers-holidays.jsonсняты. -
Образец рабочего стола пережил свой пакет на сутки — поймало это только свойство 15 индекса реестра (31.08.2026).
apps/constructor/tools/build-samples.mjsпервым образцом называлcorpus/laws/kz/rest-day-transfer-2023, снятый из корпуса днём раньше как ДУБЛЬ параллельной сессии (7fa3bc97; канонической по решению человека осталась параprazdniki/perenos-2023). Манифестsamples/index.jsonпри этом не пересобирался, иplayable()индекса, соединяющий образец с пакетом черезlaw.toml, молча терял запись: вложено 6, связано 5 — образец, не нашедший свой пакет, теряет кнопку «испытать», не уронив в UI ничего. Сам генератор был громким (build-samples: нет каталога …, exit 1) — тихим оказалось не падение, а то, что его никто не звал. Уцелевший близнец на это место не встал, и это замер, а не вкус:kz/perenos-2023формализует то же постановление № 326, но импортируетkz.corpus.tk_art85_2023(партиал-носитель власти §127), а рабочий стол открывает ОДИН каталог —lawc lowerна нём одном даётLDC-E1104/LDC-E1105, то есть образец открывался бы и не компилировался. Строка снята с доводом в комментарии; шестой образец объявлен вопросом кураторским, а не ремонтным. Попутно перезаливка синхронизировала вложенные байты, протухшие независимо:faraid/sharesехал в браузер семью файлами против 23 в корпусе (шесть модулей и 13.lawtestпоявились после последней сборки), уtuystyqпри том же счёте разошлись байты.check_registry_index— 222 пакета, канарейка 20/20;check_constructor— зелено. Тем же снятием осиротели.lawtest, и это отдельный долг, здесь не тронутый:corpus/tests/kz-corpus-holidaysиcorpus/tests/kz-corpus-restdaytransferссылаются вcorpus/tests/index.jsonнаkz-holidays.lawir.jsonиkz-rest-day-transfer-2023.lawir.json, которых нет, —check_corpus_testsна них красен. -
Осиротевшие
.lawtestснятых пакетов-дублей сняты, живые пакеты дособраны эмиссией (31.08.2026). Долг, названный хвостом записи выше, закрыт:corpus/tests/kz-corpus-holidays(HOL-04) иcorpus/tests/kz-corpus-restdaytransfer(RDT-01, RDT-02) ссылались вcorpus/tests/index.jsonна CLIR, удалённые вместе с пакетами-дублями (7fa3bc97, канонической по решению человека осталась параprazdniki/perenos-2023), иcheck_corpus_testsна них падал. Сообщение ворот уводило от причины: ветка «ноль строк при непустом каталоге» одинаково описывает битый JSON параллельной сессии и отсутствующий файл, и предлагала первой гипотезу транзиторного отказа — тогда как файла не было вовсе. Пересаживать пробы не понадобилось, и это замер, а не вкус: пересадка уже произошла на уровне РАННЕРА тем же коммитом — HOL-04 жив вofficial_calendar.pyи спрашивает уprazdnikinerabochiy_den(10, 25)вместоnon_working_holiday(RepublicDay)снятого дубля; предмет RDT-01 покрыт PER-03 двумя унарными выводами (den_otdykha(@2023-07-07)иrabochiy_den(@2023-07-01)) вместе с цепью власти, которой у плоского бинарного предиката не было, а RDT-02 (сторож порядка аргументов) стал НЕВЫРАЗИМ — бинарного предиката больше нет, и роль сторожа молчания взяли PER-04 (соседний день) и PER-05 (граница пакета). Осиротевшие файлы были СТАРОЙ ЭМИССИЕЙ: генератор не звали с 30.08.2026, и живые пакеты не имели тестов вовсе. Проходemit_lawtests.py --only holidays --only perenos_2023 --only prazdnikiзавёл 22 теста трёх пакетов (kz-corpus-prazdniki18,kz-corpus-tk-art85-20233,kz-corpus-perenos-20231), а снятие осиротевших повторило сметание полного прохода — файлы по прежнему индексу, затем опустевшие каталоги. Полный проход не звался намеренно: он перезаписывает ВСЕ записи индекса, то есть внёс бы в коммит несвязанную работу параллельных сессий; индекс 6423 → 6442. Попутноcorpus/README.mdприведён к факту — три мёртвых пути (laws/holidays/,laws/kz/holidays/,laws/rest-day-transfer-2023/), семействоrest_day_transfer(RDT-01, RDT-02) →perenos_2023(PER-01…PER-06) и два числа, разошедшихся с корпусом: assert-узлов 23 → 29, override-дней календаря 13 → 19 (13 праздничных по абз. 2 ст. 5 и 6 перенесённых по абз. 3, а не снапшоты постановлений). Ворота при этом НЕ зелены, и остаток чужой: класс «схлопнувшийся прогон» из вывода исчез, 22 новых теста проходят (18/18, 3/3, 1/1), но полная форма красна по двум несвязанным отказам —ie/code-duelloduello-t02(5/6) иfia-corpus-f1-sportingfia-sc-15-judgment-invisible-through-a-defeasible-rule(27/28); ни CLIR, ни.lawtest, ни записи индекса этих двух пакетов настоящей правкой не тронуты, оба отказа воспроизводятся на закоммиченных байтах. -
Компиляционный отказ пакета не краснеет НИГДЕ, и три акта корпуса прожили так неизвестно сколько (31.08.2026). Принцип 6
verify/ci/README.mdотдаётlawc check«контрактуcheck_lowerи раннера векторов», но раннер проверяетverify/vectors/, аcheck_lowerзовёт ТОЛЬКОlawc lower. Пакет, которыйlowerсобирает, аcheckотвергает, поэтому зелен у всех: единственный инструмент, зовущийcheckпо корпусу, —check_source_pinning.py, и он превращает отказ в ПРОПУСК. Найдено тремя пакетами разом, и все три диагноза разные. (1)kz.constitution.rights— триLDC-E4101§190: норм-голова с несвязанным носителем.TreatyExtraditionPower,CitizenshipDeprivationPowerиAccessToAffectingDocumentsDutyобъявлялиfor authority: StateAuthorityи не читалиstate_authority(authority)в теле. Право при этом не молчало — оно было ХУЖЕ мёртвого: на деле с органом и всеми фактами позиция создавалась с ВЫДУМАННЫМ носителем (urn:position:AccessToAffectingDocumentsDuty:0/holderвместо органа дела); измереноpositions()до и после правки, 18 позиций в обоих прогонах, у трёх сменился носитель. Различающая проба — собственные близнецы редакции 1995 (TreatyExtraditionPower1995,CitizenAccessToAffectingDocumentsDuty1995): те связыватель читают и на том же деле дают реальный орган, то есть акт сам себе контрпример. Пять сценариевKZ-CON-RIGHTS-*ни одной из трёх норм не касаются. (2)kz.corpus.criminal_procedure_code— пятнадцатьLDC-E2102: восемь предикатов без объявления, из них семь сроковых констант (10 суток ст. 483, 3 суток ст. 483, 30 и 7 и 30 суток ст. 486, 3 суток ст. 489, 10 суток ст. 492) и входной факт ст. 262 ч. 1. Неизвестное имя понижается в URI того же пространства имён,assertи правило сходятся, и все 1 384 рукописных.lawtestзелены — терялись метка §218 (нетsymbol_decl— метке негде жить, и храповик разметки такой предикат не видит вовсе: он не «без метки», его нет среди объявлений) и типовой контракт аргументов. (3)packs/demo/lilliput— дефект самих ворот. Строка перечисления демо звала актом КАЖДЫЙ.law, тогда как у lilliput девять файлов под однимlaws/law.toml; пофайловыйcheckна пакете отказывает по построению, восемь файлов уходили в «ПРОПУЩЕН», а два разбиравшихся поодиночке печатали один и тот жеfiction.lilliputДВАЖДЫ — покрытие было неполным и задвоенным разом. Правило манифеста распространено наpacks/demo/; правило доманифестного каталога — НЕТ, и это измерено: уmiddle-earth/laws/четыре.lawсуть четыре разных пакета, слитый каталогlawc checkотверг бы как склейку LDC-E1108. Заведён громкий сторожreject_shadowed_files(файл внутри каталога с манифестом — отказ перечня, а не пропуск акта) и девятнадцатая ступень канарейки, испытывающая его различающую силу. Измерено после правок:checkчист у всех трёх; компиляционных пропусков в воротах закрепления ноль (было 10 строк); УПК считается впервые — 687 фрагментов,text coverage100,0 % (2 254 752 из 2 255 438 байт), учёт статей 686 из 686, неучтённых 0; lilliput одной строкой вместо двух (24 фрагмента, 2 публикации). Регрессии: конституционная 148/148, KZ--only marriage/osms/peaceful_assembly/personal_data61/61 при differential 111 вызовов байтово,.lawtestУПК 1 384/1 384. CLIR пересобран уkz-constitution-rights,kz-constitution-linkedи четырёх зависимых пакетов, пиннящих байты rights вenvelope.imports(kz-marriage,kz-osms,kz-pd,kz-peaceful-assembly). Сторожа у нуля компиляционных пропусков НЕТ — владение отказом есть вопрос раскладки ворот, вынесен принципом 6в вverify/ci/README.mdотдельным решением. -
kz.corpus.emleгасил собственное отступление: дефитер § 20 снимал вывод ПО РЯДУ ОСНОВЫ, а не жуан-вывод (31.08.2026). Латентный дефект, найденный не воротами, а разбором соседнего пакета:kz.grammar.singarmonizmформализует те же § 20 и § 30 и записал расхождение форм замером.UndestikKGZhengediиUndestikYuYoEZhengediчиталисьwhen … and buyn_undestigi(w, u); defeat qoldanylatyn_undestik(w, u)— то есть снимали вывод общего правила § 31 КАКИМ БЫ ТОТ НИ БЫЛ. На основе, чей собственный ряд уже жіңішке и в конце есть к, г (киоск), это гасило заодно то, что отступление только что вывело: голова-литерал у общего правила и у отступления одна. Замер на живой базе ДО правки: дело {buyn_undestigi(Kiosk, Zhinishke),songy_dybys_klasy(Kiosk, Qatan),songy_dauyssyzdarda_k_g_bar(Kiosk)} давалоqoldanylatyn_undestik(Kiosk, Zhinishke)= NEITHER иkoptik_zhalgau(Kiosk, Ter)= NEITHER/REQUIRES_JUDGMENT — при том, что § 20 аттестует «киоскінің, киоскілер» прямым перечнем. Молчало потому, что этого угла не спрашивал никто: оба слова, которыми пакет проверял отступление, — парк и пункт — жуан, а на жуан-основе обе формы дефитера дают одно и то же. Правка направлена источником, а не симметрией: § 20 говорит «қазақ қосымшалары ТЕК ҚАНА ЖІҢІШКЕ жалғанып», значит снять надо именно ЖУАН —for w: Soz; when songy_dauyssyzdarda_k_g_bar(w); defeat qoldanylatyn_undestik(w, Zhuan);, и жіңішке-вывод общего правила отступлению не противоречит. Попутно из тела ушёлbuyn_undestigi(w, u), а из головы — переменная ряда: класс несвязанной головной переменной, из-за которого формаunlessроняла оракула (KeyError: 'v1'вsubstitute_head), здесь больше невозможен; явная клаузаdefeatоставлена, потому что показывает, ЧТО снимается. Измерено после правки: киоск —ZhinishkeTRUE_ONLY черезQoldanylatynUndestikKG,ZhuanNEITHER,koptik_zhalgau(Kiosk, Ter)TRUE_ONLY, чужая формаTarNEITHER; парк не сдвинулся (TerTRUE_ONLY, жуан по-прежнему поражён, иwhy_notназываетUndestikKGZhengediсреди блокеров — обещание шапки «жуан проиграл, а не не выводился» держится). Покрытие: три сценария-свидетеля вместо одного, потому что классы регресса разные — KZ-EMLE-20 (отступление доживает до ответа на жіңішке-основе), 21 (это доходит до главного предиката, «киоскілер»), 22 (у парка спрашивается ЧУЖАЯ форма -тар и требуется NEITHER — единственный сторож того, что дефитер вообще ЖИВ: положительный «парктер» остаётся зелёным и с выключенным дефитером). Приёмка: регрессия--only emle22/22, KZ-differential 22 вызова байтово идентичны, рукописные.lawtestпакета 14/14, три порождённых.lawtestзелены обоими путями, пол храповика 19 → 22, манифест и индекс реестра пакета перегенерированы владельцами. -
Красный
check_demo_differentialзакрыт: расходились ВХОДЫ, а не движки — 74/74 байтово (31.08.2026). Квалификация по инварианту 8 — дефект вызывающего, не реализаций и не SPEC: гипотеза «lawcвыбирает толкование, а оракул считает вопрос открытым» опровергнута решающим замером (равные options — байт в байт на всех 24 вызовах демо). Политики вычисления §170, среди них выбор прочтения §152 (§168.2), доезжают разными путями:lawc eval— только изcase.options, оракул — только из четвёртого аргументаevaluate. Пять прямых вызовов сценариев 2, 3 и 5 демо «Лилипутия» отдавали прочтение только делом, и оракул считал их по базовой теории с issueINTERPRETATION_REQUIRED, а демо печатало OK:status()смотритtruthStatus, разошлась вторая ось §170. Проведено: помощникoptions_for()вpacks/demo/lilliput/run_demo.py; вverify/ci/gates/differential/check_demo_differential.py— симметричный сторож по прецеденту KZ-гейта, изъятие внеполосныхcalendar_resource_bytesиз сверки конвенции и записьcalendar.resource.jsonв директорию (два календарных вызова §85 прежде отвергались как «вне конвенции» и стояли вне байтового контракта). Канарейка 6/6, снятие любого из четырёх сторожей ловится мутацией. Сверенных вызовов 74 против прежних 69. -
Красный
check_lowerзакрыт — голдены §52.1 проведены через генераторы (31.08.2026). Квалификация по инварианту 8 — дефект голденов: с auxiliary binders §52.1lawc lowerнесётbindersу comprehension и пустым, байты узла сменились, §207.1 пересортировал конъюнкты по sha256 поддерева; корпус был перегенерирован, а 4 вектора lay (BODY-AGGREGATE,QUANTIFIER-FORALL/EXISTS/BARRIER) и 2 демо-CLIR (lilliput,shire) отстали. Проведение владельцами байтов:binders: []в comprehension-словариaggregates.py(authoring-conj§207.1 пересортировал сам, рендер отразил порядок вsource.lawEXISTS/BARRIER), точечная перезаморозкаexpected.json(rm +--bootstrap-expected, прецедент E-0064; разошлись только хэши, у EXISTS — ещё порядокpremisesпри тождественном составе), демо — ихgen_clir.sh. Итог:check_lower142/142 + демо 8/8, векторы 371 OK, differential 141/141,check_demoзелен, Lean 157 сертификатов. Попутно названы предсуществующие красные:check_demo_differential(lil:fee/lil:inst— движки расходятся выбором толкования, воспроизведено на старом CLIR; заведено задачей) иnew_vector.py --check(красен на чистом HEAD). -
kz.paracetamolне компилировался, и из-за этого ворота закрепления МОЛЧА не проверяли акт вовсе (31.08.2026). Два строгих моста раздела 6-2 —RazreshenieObscheeиRazreshenieCherezOtvet— читалиrazresheno_bez_konsultatsiiиrazresheno_otvetom_vrachaголыми, а единственные производители обоих поражаемы:lawc checkотвергал пакет паройLDC-E4103 LATE_STATUS_PRODUCER(§111, статус потребляется до завершения продюсеров обеих полярностей). Дефект ПРЕДСУЩЕСТВУЮЩИЙ — воспроизведён на HEAD, к миграции E-0068 отношения не имеет. Дорого в нём не отсутствие компиляции, а её последствие:verify/ci/gates/sources/check_source_pinning.pyиз-за ненулевого кода возврата ПРОПУСКАЛ пакет строкой «lawc check exit 1 — пакет не проверен на закрепление», то есть закрепление источника у акта, который сам объявляет его закреплённым (sources.law+sources/paracetamol/, sha25606052cc7…) и отчитывается мерой §33.1 вaudit.ru.md§2, не сверял с текстом НИКТО — а в общем итоге ворот пропуск выглядел строкой, а не отказом. Починка — приём корпуса из разбораvat/computus: раз у отношения есть поражаемый производитель, вся цепь ниже объявляетсяdefeasible, и LDC-E4103 учитывается разом, а не по ошибке за ошибкой. Структура веток не тронута: они разведены по головам сознательно (дефитер поражает ВЫВОД, а не своё правило), менялась сила ПОТРЕБИТЕЛЕЙ; оговорок у самих мостов нет, поражение живёт этажом выше. Правовой ответ не сдвинулся: канал суждения §47.3 сквозь поражаемый мост не теряется (это errata E-0066 — путь запроса судьи разбирает поражаемые правила, в отличие от отчёта §185), KZ-PARA-23 осталсяREQUIRES_JUDGMENTс органомVrach, KZ-PARA-24/25 —TRUE_ONLY, рукописные тесты 08/09 зелены. Измерено:checkчист, регрессия 46/46, differential--only paracetamol— 60 evaluate-вызовов байтово идентичны,.lawtest15/15,check_lowerдля пакета чист (красные там прежние — 4 LAY-L0 и 2 демо линии E-0068). Ворота закрепления теперь СЧИТАЮТ акт: 26 фрагментов, одна публикация,text coverage PARA_RU_TEXT94,6 % (19 067 из 20 164 байт), учёт статей 26 из 26, неучтённых 0. Находка записана в шапке03-primenimost.lawи вaudit.ru.md§2 и §7 п. 5. -
assert { observed @ДАТА; }порождал CLIR, который нормативная схема отвергает, — и об этом молчали все трое (errata E-0069, 31.08.2026).grammar.ebnfдаётobserved/recordedкатегориюtemporal_literal(date | time | datetime),legal-ir.schema.jsonдержал уobservedAt/recordedAtодинInstantString, понижение писало литерал как есть:lawc check— 0,lawc lower— 0, документ невалиден. Расходились НОРМАТИВНЫЕ документы между собой, а не реализации: обе стороны согласны байтово. Направление правки задали §196 и замороженные векторы — проверка порядка §196 грубость РАЗЛИЧАЕТ (сравнивает литералы одной грубости и молчит на разных: их порядок решает политика §82), а T097 прямо содержитobserved @2026-08-25;и требует ПРИНЯТЬ файл; сузить поверхность значило бы переписать голден под новое поведение. Правка: §72 объявляет грубость авторской и говорит, почему это не запрещённое §48 неявноеDate -> Instant(значение здесь никем не сравнивается), схема принимаетDateString | InstantString— ровно как концы интервала §20.complete_as_of§70 иevidence§74 не тронуты и названы в prose соседями с ДРУГОЙ строгостью: там дата отвергается громко (LDC-E1307). Молчало потому, что этого пути не было ни у кого: корпус полей не употребляет вовсе (0 из 64 376assert), а два вектора, которые их употребляют (T097/T098), заведены в режимеstatic— понижение там не зовётся. Поэтому вместе с векторным обязательствомERR-E0069-ASSERT-DATE-GRANULARITY(обе половины: дата остаётся датой, мгновение — мгновением) заведена сама способность его провалить — режимlower-shapeсверяет выходlawc lowerсlegal-ir.schemaПРЕЖДЕ своих утверждений о полях (режимevaluateсвой рукописныйir.jsonвалидирует давно). Прочие 15lower-shape-векторов проверку прошли без правок; обратной правкой схемы проверено, что вектор краснеет именно сообщением о невалидности документа. Радиус: расширение аддитивно, значение поля не читает никто (во всём деревеobservedAtвстречается только в понижении и в порождённом типе протокола рабочего стола) — ни один CLIR не пересчитан, ни одинsemanticHash§209 не сдвинут. -
corpus/run_faraid_cases.pyне стоял вverify/ci/run_all.shвовсе (31.08.2026). Раннер — настоящие ворота: ненулевой код возврата, встроенный differentiallawc evalпротив живогоlawref, — но конвейер его не звал, и знали о нём только два отчётных инструмента (report_norm_graph.py,report_edition_impact.py). Тот же класс, из-за которого 27.08 впаивались четыре молча краснеющие проверки, и та же цена: девятнадцать классических казусов фараид, включая обе стороны двух развилок §152, были негарантированы. Впаян строкой в существующий корпусный шаг — перенумерации сорока семи заголовков не потребовалось. Он же единственный проверяет АРИФМЕТИКУ развилок §152 главы о деде: сам выбор прочтения.lawtest§267 несёт (ось §168.2), а аул 6→9 и знаменатель 27 — нет, они живут запросами-термами. -
Связка в УСЛОВИИ ЦЕЛИ §124 молчала у обеих реализаций — семь норм корпуса были написаны и мертвы (30.08.2026). Схема
AchievementGoalобъявляетconditionкакFormula, то есть §124 связки РАЗРЕШАЕТ, а оба исполнителя разбирают у цели только атом либо established-атом (condition_literal). Всё прочее читалось как «не установлено», и обязанность не разряжалась НИКОГДА — ни SATISFIED по §136/§137, ни VIOLATED, — при чистомlawc check, собравшемся CLIR и ПУСТОМissues. Квалификация по инварианту 8: дефект ОБЕИХ реализаций, не SPEC и не компилятора. Проба на минимальном пакете сверена байтово:lawc evalи живойlawrefдавали один и тот же документ, то есть молчание было СОГЛАСОВАННЫМ — differential оставался зелёным при мёртвом праве, а ворота мёртвых правил не видели ничего по построению (правило-то срабатывает, мертва только цель). Класс тот же, что уorв теле правила, но тише: там исполнитель хотя бы печатаетNON_EXECUTABLE_RULE. Отказ сделан громким в обеих реализациях синхронно. Общая классификация —rules.norm_goal_status(портnorms.rs), один список v1-форм на трёх потребителей: оба движка и ворота молчания. Обе печатаютNON_EXECUTABLE_GOAL(severitywarning, дедуп между итерациями цепочки §143 черезstore.warned_rules), сообщение под байтовым контрактом §208 совпадает дословно. Позиция при этом СОЗДАЁТСЯ и остаётся адресуемой — §134/§135 требуют, чтобы написанная норма была видна. Вектор — различающая пара в одной программе (LAY-L2-NORM-GOAL-DISJUNCTION, из prose §124, зарегистрирован вSUPPORTED): на одном деле с утверждённымpaidатомарная обязанность переходит в SATISFIED, а дизъюнктивнаяpaid or contractedостаётся ACTIVE и выносит issue. Одиночная обязанность прошла бы и у реализации, которая молчит; улика — именно РАЗНИЦА исходов при одном факте.check_differential139/139 байтово. Ворота молчания получили вторую половину меры.check_dead_rulesспрашивал только «исполнит ли движок ПРАВИЛО»; теперь он отдельно проходит по 1209 шаблонам норм корпуса и требует, чтобы неразряжаемая цель стояла в реестре с причиной (corpus/slices/dead-rules.json, разделdeadGoals, храповик в обе стороны — ожившая запись тоже отказ). Цена измерена исполнением: семь мёртвых целей в четырёх пакетах, все вылечены тем же коммитом — клятва Гиппократа абз. 5, Конвенция о геноциде ст. V, De legibus §19 lex 1, §20 lex 9 и §22 lex 14, Грамота 1731 года п. 1 и диспозиция п. 28. Все семь — конъюнкция в условии; у клятвы автор ЗАЩИЩАЛ её комментарием («голова одна, обещано одно длящееся состояние, описанное двумя признаками»), и довод верен — поэтому обязанность НЕ расщеплена на две, а расщеплён §206 ВЫВОД: состояние получило имя институциональным предикатом, конъюнкция уехала в тело строгого правила, гдеandисполняется, а целью встал один литерал. Позиции, их число и стороны при этом не сдвинулись. Регрессии:genocide_convention10/10,hippocratic_oath20/20,gramota_173118/18,de_legibus4/4;check_kz_differentialпо трём семействам — 55 evaluate-вызовов байтово идентичны. РазделdeadGoalsреестра остался ПУСТЫМ намеренно: он сторож, а не долг. Что осталось за границей и названо словами: §124 по схеме допускает у цели ЛЮБУЮ формулу, и v1 её по-прежнему не исполняет — теперь громко. Восстановлена только положительная сторона конъюнкции: чтобы конъюнктивная maintenance-цель дала VIOLATED, контрпример утверждается на имени состояния, а не на отдельном признаке (строгое правило положительной опоры не снимает). -
Ворота закрепления теряли пакеты молча — по алфавиту имён файлов (30.08.2026).
check_source_pinningбрал namespace §22 из АЛФАВИТНО ПЕРВОГО.lawпакета; не найдя заголовка, он получалindex.get(""), то естьNone, и уходил голымcontinue. Комментарий оправдывал это §22 («заголовок одинаков во всех файлах, LDC-E1108»), но требование говорит о предъявленных заголовках и ничего не обещает об их наличии: господствующая конвенция корпуса ставитnamespaceв один заголовочный файл (00-package.lawуkz/civil-code,package.lawуru/twelve-months-1943), и работало это лишь потому, что заголовочный файл оказывался первым СЛУЧАЙНО. Назови модули по главам источника — и первым становится файл без заголовка: уcorpus/laws/ru/gk-rsfsr-1964(13-…,27-…,99-sources,package.law) пакет выпал из ворот целиком — ни строки в--report, ни отказа, ни записи в «ПРОПУЩЕН», при чистомlawc check. Под тем же дефектом прятался второй, хуже первого: поиск шёлrglob-ом, то есть СКВОЗЬ границу вложенного пакета §10, и уcorpus/laws/kz/constitutionалфавитно первым файлом оказывалсяamendment/amendment.law— родитель проверялся против CLIR РЕБЁНКА, сlocal_path§27.3, разрешаемым от чужого корня. Не пропуск, а подмена предмета:urn:kz:constitution:amendmentпроверялся дважды,urn:kz:constitution:sources— ни разу, и в отчёте строкаkz.constitution.sourcesне появлялась вовсе. Починка тройная, по трём разным осям. (1)package_namespaceчитает ВСЕ собственные файлы пакета —own_law_filesостанавливается на подкаталоге с собственнымlaw.toml(DECISION-0033), — и называет расхождение заголовков вместо молчаливого выбора первого. (2) Заголовок, не найденный ни в одном файле, — ОТКАЗ, а не пропуск: пакет прошёлlawc check, значит молчание здесь означает «ворота его не видели», а не «проверять нечего». (3) Балансreconcile: у каждого источникаlaw_sources()обязан быть назван исход из закрытого спискаVERDICTS, и новыйcontinueбез исхода роняет ворота. Это сторож КЛАССА, а не починенного случая — прежде «166 пакетов проверено» при 181 источнике читалось как норма, потому что знаменателя в сводке не было и разницу никто не перечислял. Сводка теперь печатает «N проверено из M источников», а законный пропуск «CLIR не закоммичен» — назван поимённо (три пакета:eng/poor-settlement-1691-1697,eng/statutes-of-apparel-1574,kz/administrative-code). Замер до/после на корпусе: было 168 + 10 = 178 при 181 источнике, стало 168 + 13 = 181, баланс сходится; в отчёте впервые появиласьkz.constitution.sources, аkz.constitution.amendmentперестала дублироваться. Канарейка (--canary, 10 → 16 ступеней) испытывает РАЗЛИЧАЮЩУЮ СИЛУ, а не зелёность: рядом с новым поиском считается прежний, и ступень держит, только если прежний терял пакет там же, где новый находит. Проверено откатом обеих защит по отдельности — поиск по первому файлу роняет 3 ступени из 16, снятый баланс — 2. -
lawcписал пропущенное наблюдающее правило §270 дважды (30.08.2026). Дедупликация спискаskippedсравнивала строку «{id}: {сообщение}» с голымidи не совпадала никогда; у свойства ДВА запроса (домен и нарушения), и пропущенное правило приходило в вердикт по разу на каждый. Оракул (lawref.lawtest.run_property) ту же проверку делает черезstartswithи давал один раз — то есть расхождение было дефектом ДВИЖКА, а не оракула и не SPEC. Заморожено векторомLAY-L1-PROPERTY-BARRIER-SKIPPED.
Добавлено
-
ie.clonmel.code_duello— ирландский дуэльный свод (Клонмел): ПЕРВАЯ СРАВНИТЕЛЬНАЯ ОСЬ КОРПУСА, КОТОРАЯ ВЫЧИСЛЯЕТСЯ, А НЕ ОПИСЫВАЕТСЯ (30.08.2026). Двадцать пять правил свода и две «Additional Galway Articles», принятые делегатами пяти графств на ассизах и предписанные «for general adoption throughout Ireland». Пакет заведён РАДИ соседства сru.durasov.duel_code_1912: модуль06-comparison.lawвыводит сторону Дурасова из ЕГО СОБСТВЕННЫХ посылок через мост §24 — сломайся норма там, здесь погаснет, а не останется зелёным описанием (приёмkz.corpus.amengerlikпротивhe.torah.levirate).Четыре оси, и две из них — совпадения. Расходятся: кто выбирает оружие (правило 16 — ВЫЗВАННЫЙ, §§ 49—50 — ОСКОРБЛЁННЫЙ) и выстрел в воздух (правило 13 запрещает «in any case», § 486 даёт его стреляющему вторым). Совпадают: ранг секунданта (правило 14 против § 142) и обязанность секундантов мирить (правило 21 против § 187). Сравнение, показывающее одни расхождения, доказывает вкус сравнивающего, а не сходство сводов, поэтому совпадения выводятся тем же механизмом.
Расхождение по оружию имеет предел, и он проверен парой дел: своды вручают оружие разным людям только когда вызванный — не оскорблённый; при встречном вызове оба называют одно лицо, и пакет выводит согласие (DUELLO-16A/16B). Сторож DUELLO-19 держит третье состояние: пока ответил только один свод, о двух не утверждается ничего.
Год в имени пакета отсутствует намеренно. Свод известен как «Code Duello 1777»; единственный источник с провенансом — транскрипт Sir Jonah Barrington, «Personal Sketches of His Own Times», vol. II (1827—1832) — печатает «settled at Clonmell summer assizes, 1775». Числа расходятся так же: в Голуэе их звали «the thirty-six commandments», расхожее имя — двадцать шесть, в транскрипте — двадцать пять. Пакет закрепляет то, у чего есть байты, а спор называет вслух. Свидетель сам говорит, что копия неполна, и его сноска закреплена ОТДЕЛЬНЫМ источником (
BARRINGTON_NOTE), а не пересказана.Заведена двенадцатая объявляемая единица деления §33.1 —
duello_rule(^RULE N.прописными, на отдельной строке):yar_ruleберёт букву либо римскую цифру и регистронезависим,point— голый номер,en_article*— слово Article. Без своей конвенции свод был бы для обеих мер невидим молча. Тем же заходом закрыт латентный пробелLOCATOR_RE: ветвьrule/принимала только НЕчисловые номера (Йорк-Антверпен:rule/A,rule/XVII), и числовойrule/1не разрешался — полностью выведенный акт показывал EXECUTABLE 0 при 71 неразрешённом якоре. Радиус правки измерен воротами глубины: ни у одного акта корпуса числа не снизились.Измерено:
lawc checkчист, 73 правила (37 поражаемых, 36 строгих), 2 замыкания § 70, канал суждения § 47.3 с органомSeconds(тот же вопрос Дурасов отдаёт суду чести — §§ 147, 185), 2 duty, 31 фрагмент §194 (генераторsync_code_duello_fragments.py, шаг вrun_all.sh); меры §33.1 — EXECUTABLE 25 из 25, SOURCE_ONLY 0, учёт статей 25/25 и 2/2 при нуле неучтённых, байтовая доля 99,6 / 99,5 / 99,7 % по трём закреплённым документам; 32 сценария регрессии 32/32, KZ-differential 80 вызовов байтово идентичны, 6 авторских.lawtest6/6,doctor.py ie/code-duello— «пробелов нет». ПравопорядокKingdomOfIrelandвписан в словарь ОТДЕЛЬНО отGreatBritainиUnited Kingdom: до Акта об унии 1800 года у Ирландии свой парламент и свои суды, и ассизы, на которых свод принят, — ирландские. -
ru.durasov.duel_code_1912дополнен § 486 и открыт соседу (30.08.2026). Право стреляющего вторым выстрелить в воздух в пакете ОТСУТСТВОВАЛО: были записаны только последствия выстрела в воздух ПЕРВЫМ (§§ 487—488). Пробел нашёлся ровно там, где два свода расходятся, — сравнивать было не с чем. Восемь объявлений помеченыpub§24 (два типа и шесть отношений, которые наполняет дело); differential после правки — 81 вызов байтово идентичен. Числа в STATUS пересняты: прежняя запись «222 правила (150 поражаемых)» расходилась с закоммиченным CLIR, где их было 215/143. -
ru.durasov.duel_code_1912— «Дуэльный кодексъ» В. Дурасова (4-е изд., СПб., 1912): первый акт корпуса, у которого ПРОЦЕДУРА есть предмет, а не приложение (30.08.2026). Кодекс целиком о порядке, и порядок у него нормативен: § 197 — условия объявляются «только тогда, а не раньше», когда примирение не вышло; § 199 — два протокола необходимы «для законности» дуэли. Автомат § 160 на 10 состояний и 9 переходов с четырьмя законными исходами, без недостижимых стадий и мёртвых переходов.Демо-дело — журнал дуэли Пушкина с Дантесом 27 января 1837 года, каждое событие которого опирается на закреплённый байт рассказа секунданта К. К. Данзаса (Аммосов, СПб., 1863), а не на пересказ. Выход: 26 строк находок § 140, за которыми стоят пять статей, шесть шаблонов норм и десять позиций — § 158 адресован обоим противникам и потому дал два шаблона, обязанность секунданта рождает позицию на каждого носителя, а отчёт печатает находку на каждом кадре. Статьи: § 158 — личные сношения с противной стороной; § 183 п. 1 — об авторе кодекса не условились; § 187 — усилий к примирению нет; §§ 381/429 — двадцать шагов при барьере в десять против предписанных 35—45 и 15—25 без требуемого двойного согласия; §§ 209—212 — протокола поединка не составляли. Плюс три попытки без правового эффекта § 164 (секундант у каждой стороны один, а § 170 велит указать двух) и
STUCK. Список доказан вторым журналом: вымышленное образцовое дело проходит ту же процедуру до примирения с вердиктомCLEANи кодом 0.Анахронизм назван свойством постановки, а не скрыт. Кодекс 1912 года в 1837-м не действовал; окно
in_forceоткрывается 1912 годом, и проекция as-of §31 на 1837 год сняла бы все правила пакета (NORMS_NOT_IN_PROJECTION). Журнал идёт по оси действия кодекса со сдвигом ровно на 76 лет, сохраняющим подлинные интервалы день в день — а только интервалы и читают нормы о сроках. Вопрос демо — «как ход дела 1837 года соотносится с позднейшей кодификацией дуэльного обычая», и спрашивать так разрешает сам § 183 п. 1.Механика, без которой список нарушений был бы пуст на любом деле:
maintenance§ 137 даёт VIOLATED только по контрпримеру, а невыведенный предикат лежит на NEITHER; запрет § 130 VIOLATED не получает вовсе. Восемь замыканий § 70 переводят «в материалах дела этого нет» в «этого не было», и основание даёт сам кодекс — §§ 201, 203, 211—212 о конститутивной силе и полноте протоколов.Три сторожевых расхождения с расхожим представлением: поспешность нарушением НЕ является (§ 198 требует срока «возможно краткого»), срок вызова соблюдён (§§ 156—157), § 159 не нарушен — друг к другу противники не являлись. Три канала суждения § 47.3 по трём РАЗНЫМ вопросам кодекса (§§ 147/183 п. 3, § 88 п. 1, § 129); туда же отнесён спорный вопрос о свойстве (свояки с 10.01.1837: § 123 говорит о родстве, § 64 включает «зятя тестя»).
Четырёх статей в закреплённой копии нет (нумерация идёт 41 → 46), и знаменатель обеих мер §33.1 равен 496, а не 500; § 183 п. 5 на пропавшие статьи ссылается. Меры: EXECUTABLE 229 / SOURCE_ONLY 267 из 496, байтовая доля 99,6 %, учёт статей 496 из 496 при нуле неучтённых. Заголовок «полная формализация» пакет не носит: части третья и пятая (техника поединка на шпагах и саблях) и техника снаряжения пистолетов объявлены границей.
Измерено: 222 правила (150 поражаемых, 72 строгих), 8 замыканий, 15 duty / 1 liberty / 1 power, 607 фрагментов §194 (генератор
sync_duel_code_1912_fragments.py, шаг вrun_all.sh); 27 сценариев регрессии, KZ-differential 81 вызов байтово идентичен, Lean принял 81 сертификат при нуле отвергнутых, 6 авторских.lawtest,doctor.py ru/duel-code-1912— «пробелов нет». Аудит полноты записан вcorpus/laws/ru/duel-code-1912/audit.ru.md: пять мёртвых символов оказались потерянными нормами (§§ 61 п. 1, 114, 125, 211, 216) и закрыты правилами, шесть недостижимых синтезом правил закрыты сценариями, две жирные статьи без норм (§§ 77, 167) формализованы. -
de.kafka.vor_dem_gesetz— «Vor dem Gesetz» Кафки: достижимость входа ВЫЧИСЛЕНА, а не объявлена (30.08.2026). Притча о привратнике по первопечатному тексту («Selbstwehr», Прага, 7 сентября 1915) плюс экзегеза из главы «Im Dom» романа «Der Prozeß» (1925). Заведён ради одного вопроса — был ли вход достижим хоть при каком-нибудь ходе просителя, — и аксиомы «вход невозможен» в пакете НЕТ: она противоречила бы тексту дословно («Es ist möglich», говорит сам привратник) и подменила бы вывод разметкой. Три инструмента отвечают сами. Канал суждения §47.3 отдаётREQUIRES_JUDGMENTс органомTuerhueter— «это решает привратник», — и ответ не двигается ни от просьб, ни от даров, ни от блох (VG-14). Разбор автомата §160 находит ДВА пути за врата РАЗНОЙ ПРИРОДЫ: один читает суждение привратника, другой — простой факт прохода, потому что врата открыты «wie immer» и привратник сам предлагает попробовать; проситель выбрал первый и на второй не ступил ни разу. Журнальный прогон даёт три попытки без правового эффекта §164 — и класс этот назван самим источником: «Ich nehme es nur an, damit du nicht glaubst, etwas versäumt zu haben». Запрет есть, санкции нет: предикат последствия объявлен БЕЗ правила, ответNEITHERсторожится сценарием и тестом. Предназначенность врат одному лицу невыводима до последней реплики — проверено парой дел, различающихся одним фактом. Экзегеза записана профилем §274 одиннадцатью доводами: 38 аргументов, 10 опровержений, 7 подрывов и ни одного приоритета — четвёртое прочтение («судить его не вправе никто») бьёт в ДОПУЩЕНИЕ остальных, а не в их выводы, и отсутствие приоритетов сторожится структурно. Измерено: регрессия 29/29 в трёх семействах, differential 26 evaluate-вызовов байтово, Lean-сертификаты 26 принято / 0 отвергнуто, 11 рукописных.lawtest§267 и 16 порождённых, мёртвых правил и посылок в никуда ноль, стаб-цепей ноль,doctor.py— «пробелов нет». Мера §33.1 неприменима (притча набрана одним абзацем) и говорит это словами. Найдено формализацией:lawref fuzzне покрывает ни одного переходаprocedure§160 — пул сущностей фаззера синтетичен и объявленных констант состояний не содержит; измерено на двух пакетах (12 правил из 19 здесь, 8 из 22 у Протагора). И пробел SPEC: §274.2 разрешает рекурсию дословно, но §110 проверяется у всей программы, поэтому рекурсивный довод невыразим с поверхности (LDC-E4102). -
hasbro.rules.monopoly— правила «Монополии»: расхождение официального свода и народной редакции как ВЫВОДИМЫЙ факт (30.08.2026). Первый акт корпуса, предмет которого — не право, а РАЗРЫВ между писаным правилом и всеобщей практикой. Три закреплённых документа Hasbro: классический текст правил (00009, © 2004, 2007), действующий листок (G0009, © 2025) и пресс-релиз 04.04.2014 об опросе игроков. Оба свидетеля народной редакции — байты САМОГО издателя: в пресс-релизе он называет пять популярных домашних правил по итогам опроса, а панель действующего листка называет три из них и ЗАПРЕЩАЕТ («HOUSE RULES COULD BE MAKING YOUR MONOPOLY GAME LONGER!»), чем и признаёт их существование. Ни одного домашнего правила «из головы» нет, и это проверяется: положение без показания выводится какunattested_in_this_corpus. Своды НЕ смешиваются ни в одном предикате (приставкаfolk_у всех голов народной редакции), приоритета §116 между ними НЕТ намеренно — выбирать между текстом Hasbro и практикой не уполномочен никто, и на деле с расхождением оба ответа остаются выведенными одновременно (divergent_on+not_resolved_by_this_package). Шесть вопросов расхождения, у каждого — пара дел на ОДНОМ положении партии: невыкупленное поле (аукцион против «остаётся у банка»), Free Parking (ноль против всей казны), точное попадание на GO (200 против 400), рента ИЗ тюрьмы (собирается против «Frozen Assets»), покупка на первом круге, заём между игроками. Перечень выходов из тюрьмы замкнут §70 — «просто отсидеть» даёт FALSE_ONLY, а не NEITHER. Утрата права требовать ренту выражена поражаемым слоем с приоритетомexplicit_exception, а не строгим гардом: отрицание шло бы по выводимому предикату. Две гипотезы замысла источник УБИЛ: таблицы ренты A3 невозможны — официальный текст ставок не содержит вовсе («in accordance with the list printed on its Title Deed card»), таблица живёт на карточках, то есть в инвентаре коробки; подоходный налог не формализован — закреплённые байты суть OCR-слой скана, и распознавание испортило ЧИСЛО ($900 вместо $200), а формализовать число, которого закреплённый текст не несёт верно, запрещает первое правило фазы 0. Free Parking проверен по байтам: это НЕ молчание источника — обе редакции говорят прямо («does not receive any money, property or reward of any kind»; «Relax! Nothing happens»), поэтому «ничего не происходит» выражено нормой, а не фактом о молчании. Мера §33.1 неприменима ко всем трём документам, и довод записан по каждому (articles.json): у классического текста заголовки разделов стоят не отдельной строкой И испорчены OCR в пяти случаях из девятнадцати, у листка вёрстка журнальная (единицей была бы панель — то есть авторская разметка), у пресс-релиза единицы деления нет вовсе. В базу глубины пакет поэтому не вписан. 63 сценария, differential 63 вызова байтово, 5 рукописных.lawtest, разметка §218 — 118/0 и 48 норм/0, мёртвых символов и односторонних цепей ноль,doctor.pyбез пробелов. -
fiqh.hajj— порядок обрядов хаджа: аят как единица меры §33.1, выравнивание §29 и невыбранный мазхаб (30.08.2026). Пятый акт исламской традиции в корпусе и первый в ней ПРОЦЕДУРНЫЙ. Два источника: 28 аятов о хадже закреплены байтами в подлиннике (мусхаф Медины) и в переводе Саблукова 1894 года, 18 статей авторского изложения — третьей редакцией. Нумерация коранических редакций расходится по-разному в разных сурах, и соответствие объявлено 29 декларациямиalign§29 — первое применение этой формы в корпусе. Три уровня последствий пропуска обряда выражены тремя предикатами, а не стратами §116; мазхабное расхождение о са’йе, бритье и Муздалифе выводится ФАКТОМ дела при молчащей базе, приоритета между прочтениями нет нигде. Процессный автомат из 12 стадий читает гардами выводимоеrite_performed, и обряд вне своего времени даёт §164 «попытка без правового эффекта». Канал суждения §47.3 с органом, названным самим источником (TwoJustPersons— «двое справедливых из вас», Коран 5:95). 52 сценария, differential 55 вызовов байтово, Lean 55/0, 6 рукописных.lawtest, мера §33.1: EXECUTABLE 16, SOURCE_ONLY 12, UNEXPLAINED 0.
Исправлено
- Проверка 4
lint.pyсчитала порогом ссылку на статью (30.08.2026).XREF_REснимала слова целиком («статья», «пункт», «глава»), но не их общепринятые СОКРАЩЕНИЯ и не локатор Писания: метка «…прекращает хадж (ст. 9)» читалась как «порог 9 прозой». Замер наfiqh.hajj— 10 срабатываний из 10 ложные, все на «(ст. N)» и «Коран N:M». Ложная тревога здесь дороже пропуска: она приходит на КАЖДУЮ метку акта, который ссылается на себя, и приучает не читать вывод целиком.
Исправлено
- Заведение ворот вскрыло ещё две мёртвые панели рабочего стола
(30.08.2026).
ImpactReport(«что изменит правка», «что изменилось между датами») читалreport.diff?.changes ?? report.changesиreport.uncovered— ни одного такого ключа отчётlawref.impactне отдаёт: изменения смысла §215 живут вsemdiff.entries, непокрытые нормы вcoverage.uncovered(ОБЪЕКТ сrules/normTemplates). Обе меры печатали ноль на любом черновике, включая тот, где снято правило; третья цепочка (report.outcomes ?? report.scenarios) работала ВТОРЫМ звеном — то есть угадала, и это признак семьи, а не исключение.ArgMap(карта спора §274) читалedge.from ?? edge.sourceпри отдаваемыхattacker/target— ни одно ребро не находило начала, и фокусный подграф не раскрывался дальше одного узла;n.status ?? n.groundedпри том, что метка grounded живёт в ОТДЕЛЬНОЙ картеlabelling, — все узлы серые с подписью «—»; иn.label ?? n.conclusion, печатавшее[object Object], потому что вывод аргумента есть литерал, а не строка. Обе панели переписаны на объявленную форму (workbench/src/engine/track-o-reports.ts, туда же переехала запись фаззера изfuzz-report.tsи форма лазейки из перспективы),anyснят с состояний всех четырёх перспектив, а метка grounded объявлена закрытым множеством'in' | 'out' | 'undec'— теперь и компилятор, и ворота. Найдено не чтением, а заведением ворот: обе панели выглядели правдоподобно, пока производителя и потребителя не свели в одном прогоне. - Карта спора получала не тот вход — вкладка не спрашивала дела
(30.08.2026).
AnalysisPerspectiveслал вargmapsnapshot.document, то есть CLIR, аlawref.argmap.projectпроецирует ИСПОЛНЕННОЕ дело — читаетproofGraphиconflicts§170, которых у CLIR нет. Отчёт выходил пустой, но формы верной, поэтому ни типизация, ни сверка имён его не ловили (оси «форма» и «вход» разные — граница ворот названа в них же), а панель подписывала пустоту словами «аргументов нет: спорить не о чем — ни одного побеждаемого вывода в пакете»: утверждение о ПРАВЕ, сделанное без единого исполнения, и ложное о любом пакете. Починка тремя частями. Мост исполняет сценарий сам, в том же порядке, чтоlawref argmap <ir> --scenario(исполнить → проецировать), а отсутствие дела стало ОТКАЗОМARGMAP_WITHOUT_CASE, а не пустой картой — инструмент, которому нечего проецировать, обязан это сказать (доводprojectionVoidиз L8.2: «искать было НЕГДЕ» ≠ «не найдено»). Дело берётся то, что исполнено в «Проверке»: оно вынесено в стор четвёртым глобальным входом (lastCase— дело, запрос, имя вопроса и ключ входа, сбрасывается вместе с пакетом), потому что СВОЙ сборщик дела в «Анализе» стал бы вторым источником одной формы. Пока дела нет, вкладка не строит ничего и говорит почему, с кнопкой перехода в «Проверку». Заодно разведены два разных «пусто», бывшие одним: ноль аргументов значит «в этом деле не применилось ни одного правила» (карта строится из применений §180), ноль атак — «применились, но ни один вывод не побеждается», и второе теперь перечисляет применения с их метками grounded. Проверено в браузере наkz-tuystyq: дело из «Проверки» даёт 7 применений с читаемыми выводами (entered_state(urn:entity:e0, QudaTusi)) и меткамиin— до правки на этом же месте было «спорить не о чем». - Второй
preferв одном телеpriorityмолча затирал первый (30.08.2026, вектор T157).priority_declвspec/grammar.ebnfдопускает ровно одно реброprefer … over …, но парсерlawcразбирал тело циклом с голым присваиванием: каждый следующийpreferперезаписывал предыдущий, побеждал последний по тексту, и первое написанное ребро не доезжало до CLIR при полностью чистыхcheckиlower— снаружи неотличимо от «норма не применима». Differential этот класс не видит по построению: поверхность.lawразбирает толькоlawc, и оба движка сверялись на CLIR, порождённом уже после потери. Теперь второйprefer— ошибкаLDC-E0201на своём спане («одно ребро на декларацию, второе пишется отдельнымpriority»), выживает ПЕРВОЕ ребро (прецедент — повторныйcapability§47.4). Вектор T157 пиннит все три стороны утверждения: ровно одно вхождение кода, отказ синтаксический (LDC-E4108/LDC-E4107в отсутствующих), направление выживания — второе ребро файла нарочно повторяет соседнюю одиночную декларацию, и «дубликат priority-ребра»LDC-E4106звучит ровно у реализации, оставившей последнийprefer(измерено на доправочном парсере). Корпус проверен срезом комментариев: живых носителей двухpreferв одном теле нет —osms/10-contributions.lawиyasa/09-readings.lawуже расщеплены и документируют ловушку словами. - Обе панели фаззера рабочего стола показывали нули на любом пакете
(30.08.2026). «Мёртвые нормы и конфликты» и «Право молчит» читали ключи,
которых отчёт
lawref fuzzне отдаёт НИ ОДНОГО:report.deadRules ?? report.dead(таких ключей нет — норма без доказанного применения живёт вcoverage.uncovered.rules),report.conflictsна верхнем уровне (конфликты §115 лежат вfindingsсkind === "conflict"),report.skippedPredicates(лежит вmanifest) иreport.uncoveredКАК МАССИВ — на делеcoverage.uncoveredесть объект сrules/normTemplates, и.lengthу негоundefined. Все четыре чтения давали[], поэтому панель печатала «мёртвых норм: 0, конфликтов §115: 0, непокрыто: 0», а раздел «Нормы без доказанного применения» — ноль с подписью «все нормы применялись хотя бы раз»: утверждение, противоположное истине, и неотличимое от чистого пакета. Измерено на вложенномtuystyqтеми же параметрами, что стоят в панели по умолчанию (--seed 0 --worlds 24 --max-assertions 40 --targeted 30): 8 правил из 105 не применились ни в одном мире (весьQudalyq—Uzatu,QalynMalBeru,Buzylu,BuzyluQalynMalDanKeyin, у каждогоentersиvalid), 2 контрпримера инварианту §93.1 (aga/necessary,epke/necessary) и 8 констрейнтов, по которым охоту не вели вовсе (капCONSTRAINTS_CAP=8) — последнее особенно дорого молчало: «контрпримеров 0» там означало бы «не смотрели», а не «их нет». Форма отчёта записана типами вapps/constructor/apps/workbench/src/engine/fuzz-report.tsи импортируется обеими панелями: цепочка??из синонимов иreport: any— след угадывания имён, и она снята вместе с ними, как 30.08.2026 уLoopholeReportShape. Тот же класс, что вид узла'edition'в перспективе «Редакции», но с важной разницей, названной вслух: у отчёта фаззера нормативной схемы нет (трек О — оркестрация поверх ядра), поэтому тип ПОРОДИТЬ не из чего и запись сделана руками — расхождение сfuzz.pyэта запись ловит только компилятором на стороне потребителя, а не воротами. Панель заодно перестала врать составом: непокрытые правила и шаблоны норм выводятся списком, пропущенные предикаты и констрейнты — с ПРИЧИНОЙ из отчёта, а покрытие названо парой «покрыто N, из них наведением M» (числа панели сверены сpython3 -m lawref fuzz … --jsonна том же пакете и совпали все восемь). - Поиск лазеек L8.2 молча возвращал ноль на пакетах без дат вступления
(30.08.2026). Право каждого шага — проекция §31/D1 на дату шага, и это же
движение создаёт слепую зону: у пакета, чьи редакции lifecycle не несут
(обычай, доктрина, реставрация текста — их не вводили в действие датой, и
это ВЕРНО про них), проекция снимает ВСЕ заякоренные правила на ЛЮБУЮ дату.
Обход честно исполнял пустое право и честно не находил путей, а отчёт
печатал «путей к цели не найдено» — утверждение, неотличимое от «лазеек
нет». Измерено на
vory.corpus.ponyatiya: цельgnutyiдостигается одним шагом при обычном evaluate (TRUE_ONLY), аloopholeдавалfindings: 0иalreadyReachable: falseпри любом бюджете — все 30 правил сняты на каждой из дат-кандидатов, семь редакций в состоянииnot_yet. Тот же класс дефекта, что у process-run наkz-tuystyq(88 правил из 93), закрытый там находкойNORMS_NOT_IN_PROJECTION(DECISION-0052 §8) — у L8.2 такого маркера не было. Теперь манифест отчёта несётprojectionLossesтем же именем маркера (сколько правил снято из скольких, сколько из них датируемых, на каких датах, в каких состояниях редакции, три примера снятых), а снятые на ВСЕХ датах все ЗАЯКОРЕННЫЕ правила поднимаютprojectionVoid: текстовый вид и витрина MCP говорят «искать было НЕГДЕ», CLI отдаёт код 3 — недостоверный отчёт отличается от чистого кодом, а не только текстом (какimpact-editionsотделяет «датировать было нечем»). Счёт вынесен вimpact.projection_rule_loss— один код на оба инструмента вместо двух копий одного утверждения. Оркестрация, не семантика (инвариант 5): сравнивается число правил в проекции с числом правил документа, состояния редакций берутся из меты как есть. Канарейка гейта — пара фикстур, различающихся ТОЛЬКО lifecycle редакции: без дат обязаны быть маркер,projectionVoidи код 3; с датами — ни одного маркера и прежняя находка pay→use (проверено: без маркера канарейка падает). - Перспектива «Редакции» рабочего стола не работала никогда (30.08.2026).
Фильтр узлов стоял по виду
'edition', которого в CLIR нет вовсе (нормативный —source_edition,legal-ir.schema.json), и не совпадал НИ РАЗУ с появления конструктора: таймлайн §31 показывал «редакций: 0» на КАЖДОМ пакете (у пяти из шести вложенных образцов редакции есть — от одной до четырёх), объявлял неразрешённым КАЖДЫЙ якорь пакета, а кнопка «что изменилось между датами» брала границы из пустого списка и сравнивала дату саму с собой. Опечатка была невидима, потому что литерал сравнивался сany; теперь вид берётся из порождённого по схеме типа (LegalIrSourceEdition['kind']), и такая правка — ошибка компиляции (проверено канарейкой). Применимость и разрешение якорей перенесены в оракул (инвариант 5): состояние редакции определяет последовательность событий lifecycle §31, а якорь нормы ведёт во фрагмент и датируется его редакцией §28 — обе машины живут вlawref.applicabilityиlawref.impact.edition_projection, и вторая их реализация в TSX не покрывалась бы differential. Заведена операция мостаedition-projection(as-of одной даты, только мета); до подъёма оракула на месте счётчика стоит «считает оракул», а не посчитанное в браузере число. Таймлайн показывает окно силы ЦЕЛИКОМ: редакция 2009 года Нахичеванского соглашения в силе с 27.09.2010 по 23.05.2025, и «в силе с» без конца говорило о ней обратное правде. Бейдж состояния отделён отmaterializationStatus§27.2 — степень закрепления байтов стояла на месте ответа на вопрос «действует ли». Дефект держал e2e-тест: все три проверки Ф6 открывалиfaraidи утверждали «В пакете нет объявленных редакций», хотя фараид объявляетFARAID_RU, — сломанный вывод был закреплён как обещание фазы. Тесты переписаны: пустое состояние проверяется наsocial-assistance(там ноль настоящий), таймлайн и состояния — на Нахичевани (3 из 4 действуют на 30.08.2026, редакция 2009 года погашена), применимость до оракула — парной проверкой «имя, а не число». Найдено открытием вложенного образца с редакциями: пять лет данных лежали в корпусе, но ни один вложенный пакет не показывал их в этой перспективе. - Презумпция теряла все
unless, кроме последнего (lawc, 30.08.2026).PresumptionDecl.unlessбылOption, и второйunlessмолча затирал первый прямо в парсере: файл принимался,checkиlowerбыли чисты, а в CLIR приезжала одна норма из двух. Уruleто же поле всегда былоVec, и расхождение двух поверхностей одного слова ничем не объяснялось. Квалификация по инварианту 8 — дефектlawc, не SPEC (прецедент E-0008): §146 десугаризацию для одногоunlessописывает, но нигде их не ограничивает, а §149/§150 прямо предполагают цепочку. Поле сталоVec<ExceptionClause>, цепочка исключений вынесена в общийlower_exception_chain— теперь у правила и презумпции ОДИН носитель логики вместо двух копий. Попутно заработала формаunless Cбезthen(§149: defeater по презумируемой голове): парсер требовалthenвопрекиgrammar.ebnf. Имена узлов первого исключения сохранены (/R2,/priority) — id входит вsemanticHash§209, и переименование перезаморозило бы CLIR всех 18 пакетов корпуса с презумпциями; проверено — все 18 регенерируются байт в байт. Найдено пробой при формализацииfiqh.wasiyya. - Сила
defeaterсthen-частью молчала (lawc, 30.08.2026). §95.3 и нормативный вектор T006 дают каноническую формуdefeat <атом>: голова defeater-а называет АТАКУЕМЫЙ вывод. Формаthenпринималась без единого слова, а полярность бралась буквально —then not qатакует кандидатов наnot q, то есть противоположную сторону той, которую автор гасит словом «не». Ответ на деле переворачивался при зелёныхcheck,lowerи differential (замер: маукуфfiqh.wasiyyaотвечал TRUE_ONLY вместо NEITHER). Теперь — предупреждение LDC-E1308, называющее каноническую форму; поведение не менялось, байты CLIR у обеих форм одинаковы.
Добавлено
-
us.asimov.three_laws— «Три закона робототехники» Азимова, первый акт корпуса категории «вымышленная этика машин» и первый, чьим ПРЕДМЕТОМ является сам порядок норм (30.08.2026). «Lower-numbered laws supersede the higher-numbered laws» — три упорядоченные поражаемые нормы, четыре приоритета §116 и выровненные ранги, названные в каждом модуле (приоритет между стратами §110/§111 не применяется никогда и молчит при чистомcheck). ПравопорядокPositronicRoboticsвписан в перечень §27.1: вымышлен, как Скотный двор, но обязателен иначе — нормы вшиты в позитронный мозг, органа принуждения нет вовсе, ближайший родственник по механизму — IETF. Закреплены байты свидетеля, а не акта: «Handbook of Robotics, 56th Edition, 2058 A.D.» не существует ПО ПОСТРОЕНИЮ (датирован будущим внутри вымысла), его редакция —UNAVAILABLEбез публикации и фрагментов, а 12 099 байт принадлежат отдельному произведению-свидетелю (приём «Жеті жарғы»); полные тексты «Runaround» и «I, Robot» охраняются и не вендорены. Первый закон — две нормы врозь, и наблюдаемо нарушается только положительная:maintenanceдаёт VIOLATED от контрпримера,forbearanceне даёт никогда (сцена-сторож на §79). Роботы NS-2 — класс адресата с гардом, а не вторая редакция (у Азимова оба текста действуют одновременно — на том и держится сюжет «Little Lost Robot»). Нулевой закон — толкованием §152 поверх узкой базы, со старшинством через дефитер §107.3 (вложенныйpriorityправила базы упорядочить не вправе — LDC-E1318 при чистомcheck); пара дел различается ровноoptions.selectedInterpretations, выбор дублирован вcase.options, и все 22 вызова вошли в differential. «Вред» — канал суждения §47.3 с органом не судом, разрезанный на два предиката: запрос доходит до решающего только через строгое правило. Дилемма Херби отвечает честнымBOTH, и причина предъявлена машинно — отношениемunattested_in_this_corpus. Замыкание §70 по унарномуhumanслужит и определением, и солярианской лазейкой; обе стороны различимы парой сцен. 22/22 сценария, 22/22 вызова байтово идентичны, 11 рукописных.lawtest, мёртвых правил и символов ноль, фаззер — ноль находок. Учёт §33.1 —unmeasured(единицы деления у свидетеля нет), покрытие байтов 20,8 %. Разбор границ —analysis/README.ru.md, вердикты по 30 неиспользованным видам деклараций —audit.ru.md. -
kz.corpus.tabaq_tartu— свод восьми расходящихся свидетельств об обычае табақ тарту (01.09.2026). Кому какая часть туши: роль гостя → вид табақ → обязательные и запрещённые мүше; голова — кто держит, кто не вправе («әкесі тірі адам бас ұстамайды», Ә. Диваев), зубы и правое ухо по краям; долг зятя резать төс, игра с құйымшақ и киіт. Все восемь свидетелей пиннит сам — статьи казахской Википедии по закреплённым ревизиям (fetch_tabaq_tartu_texts.py, 33 140 байт, 56 фрагментов отsync_tabaq_tartu_fragments.py); девятый («Қонақ», жалоба бию) назван фактом без импорта. Четыре расхождения выводятся, приоритета §116 между записями нет: в нормативном слое тоқпан жілік в қос табақ и невыбитые зубы в Жетісу отвечаютBOTH§115. Две измеренные границы: замыкание над бинарным предикатом (LDC-E2114) и равенство сущностей в агрегате (TYPE_ERROR на исполнении при чистомcheck) — недостача выводится сравнением двух счётов по показанию одного свидетеля; канал суждения §47.3 проходит один шаг, и вид табақ почётного гостя читаетhonoured_guestнапрямую. 24 сценария (corpus/kz/acts/tabaq_tartu.py), differential 24 вызова байтово, 21.lawtest, разметка 230/0 и 61/0, 113 констант закрытых перечней вdead-symbols.json,doctor.pyбез пробелов, мера §33.1 неприменима. Аудит —corpus/laws/kz/tabaq-tartu/audit.ru.md. -
kz.corpus.ant_zhan_beru— свод пяти свидетельств о присяге и соприсяжничестве казахского обычного права (30.08.2026). Второй пакет приёма «свод свидетельств» послеkz-amengerlikи первый с ПЯТЬЮ свидетелями. Байты пиннит один — статья «Жан беру» казахской Википедии (ревизия 2793599, 2275 байт, пять блоков, режет их генераторfetch_zhan_beru_text.pyпо дословным зачинам: в разметке абзац ОДИН). Троих свод читает импортом —kz-valikhanov(черта шестая суда биев: «присяга честных родовичей, когда нет явных улик»),kz-karamola(ст. 14 присяга ОТВЕТЧИКА перед волостным муллой, ст. 18—19 недопуск подозрения, ст. 10 несостоятельный свидетель) иkz-aldar-kose(поражаемая презумпция присяги по статье «Ант», байты которой закреплены ТАМ — вторая копия одной ревизии дала бы два расходящихся хэша одного текста). Пятого, «Жеті жарғы», называет фактом без импорта: читать у него нечего кроме ассерта, и мост был бы стабом. Ради этого у трёх соседей заведена публичная поверхность:kz-karamola5 → 17 объявлений,kz-valikhanovиkz-aldar-kose— с нуля (у обоихpubне было ни одного). Расхождение доказуемо лишь тогда, когда обе стороны исполняются своим кодом. Пять расхождений выводятся, ни одно не примиряется, и приоритета §116 между записями в пакете нет ни одного: обычай никого не уполномочивал выбирать между записями. О числе присягающих, о направлении присяги, о её силе, о столкновении назначения обряда с запретом ереже вменять подозрение и о двух выходах из одной доказательственной развилки. Главный ответ пакета — молчание, а не обвинение: при отказе соприсяжника обряд прерван и подозрение осталось, ноaqtaldyиzhazadan_bosatyladyдают NEITHER — отказ лишает возможности УСТАНОВИТЬ невиновность, а не устанавливает виновность; последствие отказа объявлено пробелом свода и ВЫВОДИТСЯ счётом §59, а не записано константой. Ни одной позиции §127: ни один свидетель не облекает обряд в обязанность. Канал суждения §47.3 сauthority Bi— орган назван текстом дважды. 18 сценариев (corpus/kz/acts/ant_zhan_beru.py), 3.lawtest, differential 77 вызовов байтово, разметка 92/0 и 33/0, мёртвых символов неучтённых 0,doctor.pyбез пробелов. Мера §33.1 неприменима (единицы деления у документа нет) и говорит это словами; вformalization-depth.jsonпакет не вписан. Полный аудит —corpus/laws/kz/ant-zhan-beru/audit.ru.md. -
Ворота на расхождение формы отчётов трека О — шаг 46/47 (
verify/ci/gates/hosts/check_track_o_shapes.py, 30.08.2026). У узла CLIR есть нормативная схема, поэтому точный тип порождается кодогенератором и опечатка в литерале вида — ошибка компиляции. У отчётов трека О схемы нет вовсе: это оркестрация поверх замороженного ядра,spec/их формы не описывает, порождать не из чего. Форма жила в двух местах —lawref/<инструмент>.pyи рабочий стол — и расходилась молча: TypeScript сверял ПОТРЕБИТЕЛЯ с записью, а запись с ПРОИЗВОДИТЕЛЕМ не сверял никто. Ворота закрывают вторую половину контракта и утверждают: каждое имя, которым рабочий стол читает отчёт, отчёт действительно отдаёт — на ЖИВОМ вызове моста, а не на закоммиченной фикстуре ответа. Три проверки. (1) Реестр полон: операции добываются из ИСХОДНИКОВ рабочего стола (op: 'x'ипомощник('x', …)), а не объявляются списком — объявленный список и есть тот реестр, который расходится молча; операция без объявленной формы и файл-вызыватель без импорта записи роняют ворота, потому что и то и другое значитany. (2) Объявленное отдаётся: из TS-записи добываются пути ключей, и каждый обязательный ищется ходьбой по пути ([]— любой элемент списка,*— любой ключ словаря); дополнительно сверяются строковые ЛИТЕРАЛЫ — значение, которое производитель кладёт, а запись не разбирает (undecпри объявленных'in' | 'out'), есть мёртвая ветвь потребителя. (3) Ненаблюдённое названо поимённо: путь, которого фикстура не порождает, обязан стоять вUNOBSERVEDс ПРИЧИНОЙ (сегодня 28 строк — скалярные термы, ветвь отказа движка, отказ на кадре), рост списка — отказ. Обратная сторона НЕ утверждается намеренно: ключ отчёта, которого нет в записи, — не дефект; переименование же на стороне производителя делает объявленный путь ненаходимым, и это ловит проверка 2. Отдельно пиннитсяschemaVersionкаждого отчёта. Фикстуры не заводятся заново — берутся у ворот классаlayers(дыра и конфликт §115 у фаззера, найденный путь у лазейки, каскад §116 у поправки, сломанная процедура у процесса), поэтому ветви отчёта непусты и список ненаблюдаемого короток; запросов на операцию бывает несколько, наблюдённое объединяется. Разборщик TS узок намеренно и отказывает на всём, чего не знает, включаяanyв самой записи: молчаливое «конструкцию не понял, путей ноль» дало бы зелёные ворота на пустом множестве. Канарейка встроена и гоняется каждый раз: машинерия сверки прогоняется на записи, какой она была у панели фаззера до починки, и обязана отвергнуть все четыре исторических имени. Проверено подложенным расхождением:attacker→fromроняет ворота с указанием наблюдаемых соседей,Record<string, 'in' | 'out'>— с указанием непонятого значения. Стоимость шага 1,6 с. 9 отчётов, 443 пути под сверкой. -
kz.corpus.kun_1920— декрет СНК КирАССР от 09.12.1920 «Об отмене куна» (30.08.2026). Второй советский акт корпуса, гасящий институт обычая, и пара кkz-kalym-1920; замыкает ось «институт вычислим → институт погашен», которую с другого конца держатkz-zheti-zhargy(01-kun.law) иkz-karamola(04-kun.law). 5 статей из 5 (EXECUTABLE 4 + ANCHORED 1), 8 сценариев KUN-01…KUN-08, differential байтово 25/25, Lean 25/25, разметка 23/0 и 13/0. Байты — воспроизводимо из ревизии 4886355 Русской Викитеки (копия по сборнику «Образование Казахской ССР», 1957, с. 309—310),unit: point(статья с точкой; выбор подтверждён внутренней отсылкой самого акта — «указанного в ст. 3»). Три расхождения разведки с заданием, приоритет у закреплённых байтов: акт датирован 1920, а не 1921 годом (и старше калымного на 19 дней); издан ТОЛЬКО СНК, а не ЦИК и СНК; литература называет ещё и третью дату (2 декабря). Отдельного акта о барымте не существует — ближайший реальный, декрет КазЦИК «О борьбе со скотокрадством» от 10.11.1921, не имеет машиночитаемых байтов в открытом доступе и не формализован; сам декрет барымту не упоминает. Первый акт корпуса, у которого запрет ШИРЕ санкции: статья 2 воспрещает всякую уплату куна, статья 4 конфискует только уплаченное «во исполнение соглашения» — расхождение объёмов рождается на деле (KUN-05), статически обе нормы живы. Деонтика §130 здесь есть, а у калымного соседа её нет, и различие текстуальное («воспрещаются» против «— отменить»). Слова «отменить» в срезе нет вовсе — оно в заголовке карточки, — поэтому фактаkun_abolished()у пакета нет. Ось дат меряется СОСЕДНИМИ ДНЯМИ: окно[@1920-12-09, infinity)даёт PENDING на 8 декабря и ACTIVE на 9-е — первый акт, где эффект errata E-0050 виден на пáре суток. Число акта — единица (множителя нет), и KUN-03 сторожит это NEITHER на удвоенной величине, чтобы двойка соседнего декрета не приехала незамеченной. -
kz.corpus.incometax: расщепление §206 по всему пакету — 554 находки «либо/или» в эмпирических посылках закрыты, 0 осталось (31.08.2026). Аудит формализации (по запросу) нашёл, что первый отчёт занизил находку на два порядка: полныйlint.pyпо всем 145 файлам дал 554 находки в 100 файлах, включая более ранние Очереди 1–2, не только шесть файлов этой сессии. 13 правил расщеплены генуинно, с чтением источника (ИП против частнопрактикующего лица ст. 79–81, зачёт при задолженности против возврата без неё ст. 101/113, отмена штрафа против переплаты ст. 106, недропользователь против перевозчика ст. 255) — новые сущности, отношения, правила, обновлённые сценарии. Остальные 541 — координатные перечни однородных оснований (виды вычитаемых расходов, виды оборота НДС), перелексованы автоматизированным скриптом без семантики (замена связки на запятую), каждый результат проверен диффом иlint.py.lawc checkчист, CLIR пересобран, KZ-регрессия 150/150 PASS (под экстремальной нагрузкой —load averageдо 127 — шаги заняли до 50 минут вместо секунд). Реестр меток затянут точечно (4826→4866, нормы 1681→1695), манифест не менялся для income_tax (состав сценариев тот же). -
kz.corpus.incometax: СТАРЫЙ КОДЕКС № 120-VI ФОРМАЛИЗОВАН ЦЕЛИКОМ — Раздел 23 закрыт, Очередь 3 закрыта, 799 EXECUTABLE / 10 SOURCE_ONLY по всем 809 статьям (30.08.2026). Пятый и последний пакет Очереди 3. Семь новых модулей (133–139) для Раздела 23 «Налогообложение недропользователей» (ст. 720–773, главы 82–88, 56 правил): общие положения и раздельный налоговый учёт по контрактам (ст. 720–723-1), подписной бонус (ст. 724–730), платёж по возмещению исторических затрат (ст. 731–735), НДПИ на углеводороды/ минеральное сырьё/общераспространённые ПИ (ст. 736–751), налог на сверхприбыль по скользящей семиуровневой шкале (ст. 752–765), альтернативный налог на недропользование по шкале от мировой цены нефти (ст. 766–771), исполнение обязательств в натуральной форме — последняя глава Кодекса (ст. 772–773) — тот же Layer-A стаб-приём, применённый к самому формулоёмкому разделу корпуса (мировые цены, коэффициенты баррелизации, скользящие шкалы — числа в label, не исполняются). Семь сценариев IPN-143…IPN-149 (дата дела 31.12.2025), KZ-регрессия 150/150 PASS, реестр меток затянут точечно (4658→4826, нормы 1625→1681; сверено по всем 160 пакетам, регрессий ноль), манифест дописан слиянием без потерь. Глубина §33.1 Кодекса 2017 года — 799 EXECUTABLE / 10 SOURCE_ONLY (было 743/66) — 99% EXECUTABLE; остаток — десять честно задокументированных границ (390/427/428/433/514/539/540 без текста между заголовками, 612/618/639 исключены сноской), ни одна не пропущена молча. Differential не запускался (риск, общий для всей Очереди 3). Этим закрыты Раздел 23, Очередь 3 целиком (пять пакетов) и вся формализация старого Кодекса № 120-VI — симметрия с Кодексом 2025 года достигнута по всему документу. -
kz.corpus.incometax: очередь 3 старого Кодекса, четвёртый пакет — Раздел 18 «Платежи в бюджет» закрыт целиком, крупнейший раздел Кодекса (30.08.2026). Пять новых модулей (128–132) для всего Раздела 18 (ст. 550–643-1, главы 68–71, 95 правил): сборы (ст. 550–554), платы за лицензии/землю/воду/ окружающую среду/животный мир (ст. 555–583), платы за лес/радиочастоты/ связь/рекламу/цифровой майнинг (ст. 584–606-5; параграф 7 пуст, ст. 589–592 отсутствуют в нумерации), государственная пошлина и консульский сбор (ст. 607–629; ст. 612, 618 исключены сноской), всеобщее декларирование доходов и имущества (ст. 630–643-1; ст. 639 исключена сноской) — тот же Layer-A стаб-приём. Обширные тарифные таблицы и перечни освобождений (десятки статей) — стаб признаёт факт применения ставки/освобождения на уровне статьи. Пять сценариев IPN-138…IPN-142 (дата дела 31.12.2025), KZ-регрессия 143/143 PASS, реестр меток затянут точечно (4373→4658, нормы 1530→1625; реестр в этом цикле пришёл переформатированным параллельной сессией — сверено программно по всем 157 пакетам, регрессий ноль). Глубина §33.1 Кодекса 2017 года — 743 EXECUTABLE / 66 SOURCE_ONLY (было 648/161) — 92 процента EXECUTABLE. Differential не запускался. Остаток всей формализации старого Кодекса: только раздел 23 (недропользование — ст. 720–773+, ~56 статей). -
kz.corpus.incometax: очередь 3 старого Кодекса, третий пакет — Раздел 3 «Налоговый контроль» закрыт целиком (30.08.2026). Шесть новых модулей (122–127) для всего Раздела 3 (ст. 68–176-1, главы 8–20, 111 правил): администрирование и регистрация налогоплательщика (ст. 68–93), камеральный контроль и учёт обязательства (ст. 94–115), принудительное взыскание, мониторинг и управление рисками (ст. 116–137 вкл. 120-1), формы и порядок проверок (ст. 138–152), права и результаты проверок (ст. 153–164), ККМ и прочие формы контроля (ст. 165–176-1) — тот же Layer-A стаб-приём. Параграф 4 главы 9 (электронный налогоплательщик) в источнике без статей — заголовок сразу сменяется параграфом 5, ст. 86–87 в нумерации отсутствуют — не измеряется, как Разделы 17 и 24. Шесть сценариев IPN-132…IPN-137 (дата дела 31.12.2025), KZ-регрессия 138/138 PASS, реестр меток затянут точечно (4040→4373, нормы 1419→1530). Манифест дописан слиянием без потерь (диф чист). Глубина §33.1 Кодекса 2017 года — 648 EXECUTABLE / 161 SOURCE_ONLY (было 537/272) — 80 процентов Кодекса 2017 года EXECUTABLE. Differential не запускался. Остаток очереди 3: раздел 18 (сборы, госпошлина, декларации — ст. 550–643-1, крупнейший оставшийся), раздел 23 (недропользование — ст. 720–773+). -
kz.corpus.incometax: очередь 3 старого Кодекса, второй пакет доведён до EXECUTABLE (30.08.2026). Восемь новых модулей (114–121) для Раздела 11 (ст. 460–481, акцизы), Раздела 2 (ст. 31–67 вкл. 49-1, 51-1, 51-2, налоговое обязательство — общие положения, исполнение, изменение сроков, ликвидация и реорганизация), Раздела 20 (ст. 678–707 вкл. 686-1…686-3 и 696-3…696-4, спецрежимы — патент, упрощённая декларация, мобильное приложение, фиксированный вычет, розничный налог, сельхозпроизводители, крестьянские хозяйства), Раздела 19 (ст. 644–677, нерезиденты — юрлица без и с ПУ, физлица, международные договоры) — тот же Layer-A стаб-приём. Восемь сценариев IPN-124…IPN-131 (дата дела 31.12.2025), KZ-регрессия 132/132 PASS, реестр меток затянут точечно (3647→4040, нормы 1288→1419). Глубина §33.1 Кодекса 2017 года — 537 EXECUTABLE / 272 SOURCE_ONLY (было 406/403) — 66 процентов Кодекса 2017 года EXECUTABLE. Манифест и реестр меток при записи словили параллельные добавления других сессий (code_duello,prostokvashino,environmental-code,exodus-genealogy,us_constitution) в тот же файл — сверено построчно, все чужие изменения аддитивны. Differential не запускался. Остаток очереди 3: разделы 3 (~1940 строк), 18 (крупнейший, ~3150 строк), 23 (~990 строк). -
kz.corpus.incometax: очередь 3 старого Кодекса начата, первый пакет из восьми разделов доведён до EXECUTABLE (30.08.2026). Восемь новых модулей (106–113) для Раздела 1 (ст. 1–30 вкл. 24-1, основные понятия и полномочия), Раздела 4 (ст. 177–188, обжалование), Раздела 5 (ст. 189–215, налоговый учёт и отчётность), Разделов 12–13 (ст. 482–496, социальный и транспортный налог), Раздела 14 (ст. 497–516, земельный налог), Разделов 15–16 (ст. 517–542, налог на имущество и на игорный бизнес), Разделов 21–22 (ст. 708–719, СЭЗ/инвестиционные режимы и рентный налог на экспорт), Разделов 24-1/25/26 (ст. 776-1–784, единый платёж, электронная торговля, переходные положения) — тот же Layer-A стаб-приём. Раздел 6 (ст. 216–223) уже покрыт файлом 92 очереди 2; Разделы 17 и 24 в источнике пусты (заголовок без глав и статей), статьи 514, 539, 540 — без текста между заголовками. Восемь сценариев IPN-116…IPN-123 (дата дела 31.12.2025), KZ-регрессия 124/124 PASS, реестр меток затянут точечно (3170→3647, нормы 1129→1288). Глубина §33.1 Кодекса 2017 года — 406 EXECUTABLE / 403 SOURCE_ONLY (было 247/562) — формализованная часть впервые превысила неформализованную. Differential не запускался. Остаток очереди 3: разделы 2, 3, 11, 18 (крупнейший, ~3150 строк), 19, 20, 23. -
kz.corpus.incometax: раздел НДС Кодекса № 120-VI доведён до EXECUTABLE — симметрия с Кодексом 2025 года, очередь 2 ЗАКРЫТА ЦЕЛИКОМ (30.08.2026). Семь новых модулей (99–105) для ст. 367–459 (91 статья, главы 41–50: обороты и место реализации, размер оборота и нулевая ставка, необлагаемый оборот/импорт и зачёт, счёт-фактура, исчисление и уплата, бюджетные отношения, самостоятельный контур ЕАЭС гл. 50 с приставкойEaeu) — тот же Layer-A стаб-приём, что и у очередей 1 (ИПН) и 2 (КПН). Четыре статьи без текста между заголовками (390, 427, 428, 433 — переномерованы либо прямо исключены поправками) объявлены явно, не пропущены молча. Семь сценариев IPN-109…IPN-115 (дата дела 31.12.2025), KZ-регрессия 116/116 PASS, реестр меток затянут точечно (2897→3170, нормы 1038→1129). Глубина §33.1 Кодекса 2017 года — 247 EXECUTABLE / 562 SOURCE_ONLY (было 156/653). KZ-differential--only income_taxне досчитан байтово — под тяжёлой конкуренцией параллельных сессий прогон превысил час без завершения и остановлен явным решением пользователя (честная граница, не пропуск);check, регрессия и реестры зелёные независимо. Очередь 3 (~24 раздела, 562 статьи) не начата. -
kz.corpus.incometax: раздел КПН Кодекса № 120-VI доведён до EXECUTABLE — симметрия с Кодексом 2025 года, очередь 2 (30.08.2026). Продолжение очереди 1 (ИПН). Семь новых модулей (92–98) для ст. 216–315 (100 статей, главы 26–34: резидентство и постоянное учреждение, налогооблагаемый доход, вычеты, фиксированные активы, преференции, производные инструменты, долгосрочные контракты, льготные режимы, КИК, убытки, исчисление и удержание у источника, ставки) — тот же стаб-слой, что уже несут модули 20–33 Кодекса 2025 года для тех же статей. Ст. 223 и 313 приостановлены статьёй 783 именно на декабрьское окно 2025–2026 годов; стаб не расходится ни с одной из двух редакций. Семь сценариев IPN-102…IPN-108 (дата дела 31.12.2025), KZ-регрессия 109/109, differential байтовый. Глубина §33.1 Кодекса 2017 года — 156 EXECUTABLE / 653 SOURCE_ONLY (было 55/754). Раздел НДС (~95 статей) — остаток очереди 2. -
Демо-поверхность
apps/demos/us-sentencing— «Rangefinder» (30.08.2026). Третий жилец семейства DECISION-0066: живая Sentencing Table 43×6 (числа — из закоммиченной A3-таблицы, зоны и диагональ life — от оракула на сборке, клетка за клеткой, ~10 с на 258 клеток), ведомость §4A1.1 → диапазон «штампом» с цепью вывода и следствиями §5B1.1/§5C1.1; исполнение — lawc в wasm в браузере, двухфазная схема входа сетки (полный домен в двадцать раз дороже на вызов — замер в шапке gen_table.py). Страница/findings/— четыре измеренных находки формализации, три с исполняемым контрпримером. Контракт формы (29 предикатов, 6 шаблонов позиций) сверяется с CLIR на каждой сборке; живая поездка держит пример источника (15×III → 24–30) и кап §4A1.1(c) (5 приговоров → 4 очка). -
us.ussc.sentencing_guidelines: Sentencing Table США — самая большая A3-таблица корпуса, порождаемая из закреплённых байтов (30.08.2026). Guidelines Manual ред. 01.11.2025, срез §4A1.1 + §5A + §5B1.1 + §5C1.1; сетка 43×6 →sentencing-grid.lawtable.jsonна 231 строку, разбираемую генераторомsync_ussg_fragments.pyиз закреплённого текстового блока (сверено до собственного примера источника: 15×III → 24–30); 27 клеток «360–life»/«life» — правилами с диагональю «категория ≥ 43 − уровень», сверяемой клетка в клетку. Водопад очков §4A1.1 с капами черезminи надбавкой (e) от собственного промежуточного итога; зоны A–D по словесным определениям примечаний с измеренной дырой разбиения (минимумы 11/13/14 не покрыты никем — и таких клеток нет); пороги (a)/(b) в несоизмеримых единицах (13 месяцев против 60 дней) — срок подаётся в обеих, конверсия не выдумывается. Новая конвенция деленияussg_guidelineв обеих мерах §33.1 и веткаguideline/в LOCATOR_RE. 38 сценариев регрессии, differential 65 вызовов байтово; 5 авторских.lawtest; разметка 47/0 и 281/0. -
vory.corpus.ponyatiya: воровские понятия в трёх редакциях — первый пакет, где свидетели расходятся о существовании самой редакции (30.08.2026). Неписаный свод реконструирован по трём научным свидетелям (CC BY): классический закон, «новый закон» отошедших (ось сучьей войны: труд — нарушение против дозволения на одних фактах), молодёжная редакция АУЕ, существование которой один свидетель описывает нормами, а другой отрицает — спор выведен предикатом, пакет его не решает. Коронация и развенчание — полномочия §127 сходки; трюмление по классике без правового эффекта (§164); «поступок против понятий» — канал §47.3 с органом-сходкой; ценз стажа — календарной парой по обе стороны границы (E-0026). Новая группаvory/и правопорядокVorovskoeSoobshchestvo; 21 сценарий, differential 28/28 байтово, Lean 28/28, 11 авторских + 25 эмитированных тестов §267, doctor без пробелов; обе меры §33.1 неприменимы и говорят это словами. Рамка аналитическая: провенанс только научный и судебный, госзапрет АУЕ закреплён фактом внешнего правопорядка. Дополнено тем же днём: предмет спора выведен поражаемой парой без приоритета (poryadok_deystvuet, 05-sushchestvovanie.law, приём Даля/Антигоны) — по АУЕ честный BOTH и CREDULOUSLY_ACCEPTED в §274, классика и «новый закон» без отрицателя TRUE_ONLY; сценарии 21 → 23, differential 31/31, Lean 31/31, тесты 11 → 13 (пол 1265 → 1267). И процедура §159–§164PriyomVSoobshchestvo(приём многостадиен по источнику: стаж → вынесение → присяга → обсуждение) с журналами ПАРОЙ по обе стороны развилки:journals/priyom-kandidata.json(самовольная присяга мимо сходки — §164 без эффекта, правомерный путь до терминала «Принят») иjournals/priyom-otklonyon.json(возражение уводит в «Отклонён», попытка продавить приём после возражения — снова §164 с поимённым незакрытым гардом). Замерено:@sourceна процедуре разъезжается по порождённым правилам и убивает их в проекции (37/37) — якорь снят, провенанс на словаре переходов; шесть служебных предикатов профиля без меток — принятое состояние, как у kz-tuystyq (72/6, нормы 45/0). -
kz.corpus.incometax: раздел ИПН Кодекса № 120-VI доведён до EXECUTABLE — симметрия с Кодексом 2025 года, очередь 1 (30.08.2026). Фрагменты всех 809 статей Кодекса 2017 года (было 9), scope вsources/tax-code-2017/articles.jsonрасширен явным списком. Раздел ИПН (ст. 316–366, 55 статей) — целиком EXECUTABLE: 9 уже формализованы глубоко (зарплатная цепочка), 46 добавлены восемью новыми модулями (84–91, зеркалящими главы 35–40 источника) в том же стаб-слое, что уже несут модули 33–42 Кодекса 2025 года для тех же статей —entity+_conditions+ строгое правило + институциональный вывод, без арифметики. Восемь сценариев IPN-94…IPN-101 (дата дела 31.12.2025) вcorpus/kz/acts/income_tax.py, KZ-регрессия 102/102, differential 125 вызовов байтово идентичны. Глубина §33.1 Кодекса 2017 года — 55 EXECUTABLE / 754 SOURCE_ONLY, измерена явной парой аргументовboundaries.py(у пакета два документа, автоматический храповик глубины ключует один документ на акт — Кодекс 2025 года не тронут). Остальные 25 разделов Кодекса (754 статьи) — честно SOURCE_ONLY, невзятая работа очередей 2–3. -
Леджер предложений: детектор молчания ВНУТРИ статьи (30.08.2026, DECISION-0067). Мера §33.1 считает покрытие по статьям и слепа внутри статьи: одна формализованная обязанность из пяти — и статья
EXECUTABLE. Заведён детерминированный леджер (corpus/tools/lib/sentence_ledger.py): закреплённый источник режется на предложения и подпункты («1) …;» — отдельные единицы, маркер шапки распространяется на подпункты), словарь деонтических маркеров ru/kk (deontic_markers.py, неизвестный язык — громкий отказ) даёт кандидатов в нормы, и пара статья×класс без единого гасящего узла — непогашенное молчание. Критерий бинарный по классу:deonticиconstitutive(«считается/признаётся» — определение, честная модель строгая) гасятся любым выводящим узлом,presumption(«предполагается, пока не доказано иное») — только поражаемым слоем; ради этогоdepth()получил аддитивную колонкуdefeasible(рендер меры не изменился). Разделение классов измерено пилотом: до — 134 непогашенных пары с десятками определительных «признаются», после — 122/151. Ложные маркеры гасятся диспозициями с причиной (sources/<акт>/ledger.json), протухшая и бескаузальная записи — отказ. Воротаverify/ci/gates/coverage/check_sentence_ledger.py(шаг 41/46, канарейка шести ступеней, 15 регрессийtest_sentence_ledger.py) держат храповикcorpus/ratchets/sentence-ledger.json:unquenchedне растёт,coveredне убывает; заведение поэтапное через--registerс честными числами, незаведённые акты называются счётом каждым прогоном. Попутно срез текста на единицы деления вынесен изboundaries.pyвcorpus/tools/lib/act_split.py(+article_spansс позициями заголовков); перенос сверен байтово (--allдо/после идентичен), потребители не правились —boundaries.pyреэкспортирует все имена. -
Жатва оси редакций сужается по семейству (
--only, 30.08.2026).verify/ci/gates/layers/report_edition_impact.pyпробрасывает повторяемый--only <семейство>в argv раннера: точечная жатва одного акта стоит минуты вместо десятков минут полного kz-прохода (замеры:income_tax— 125 перехваченных вызовов за ~4 мин,repka— 34 за 5 с; цена вызова линейна по размеру IR, а жатва платит её трижды — подлинный вызов и две проекции). Своего разбора имён нет намеренно: словарь семейств принадлежит раннеру (corpus/kz/run.py), и неизвестное имя называет он. Право на сужение даёт СИГНАТУРАmainраннера (main(argv)противmain()), а не список исключений, — раннер, обзаведшийся argv, становится сужаемым сам. Развилка молчания разведена по тому, просил ли пользователь раннера ИМЕНЕМ: названный в--runnersнесужаемый есть ОТКАЗ (молча вернуть полный прогон значило бы вернуть ровно ту цену, от которой флаг спасает), а попавший в набор по умолчанию исключается и называется — в stderr и в полеskippedRunnersотчёта. Инварианты жатвы целы: ноль перехваченных вызовов остаётся отказом (под сужением названы обе его причины — оборванный шов либо ничего не исполнившие семейства), красная регрессия под жатвой — отказ, отчёт полного прогона не изменился (ключиonly/skippedRunnersпоявляются только у суженного), аSystemExitраннера глотается только под сужением — без него сторож осиротевшегоevaluateдонёс бы своё сообщение как раньше. Само сужение прижато смоком--check: суженная жатва обязана дать СТРОГО МЕНЬШЕ вызовов, чем полный kz того же прогона, — потерянный проброс argv не падает, а молча гонит раннер целиком, и «зелёное» сужение стоило бы двадцать минут вместо секунд. Красная регрессия под жатвой перестала быть немой: stdout раннера перехвачен, и отказ сообщал ОДИН код возврата — теперь строкиFAILраннера идут эхом в stderr перед отказом жатвы (при красном без них — хвост буфера как есть). Побочно закрыт клоббер--emit, который сужение и породило: имяedition-<индекс>.jsonнесло порядковый номер В ОТЧЁТЕ, а две суженные жатвы нумеруются с нуля обе и в общем каталоге молча затирали сценарии друг друга; индекс остался префиксом (один queryId в отчёте встречается дважды — запрос к разным пакетам), queryId добавлен различителем. Проверено:--only antigoneи--only antigone_editionsв один каталог дают 12 + 6 файлов, а не 12 затёртых. -
fiqh.nikah— никах и талак: третья сторона спора о браке, пара §127/§128 и расхождение мазхабов без приоритета (30.08.2026). Четвёртый акт группыfiqhи первый в исламской линии СЕМЕЙНЫЙ (до него линия была имущественной целиком). Авторское изложение по прецеденту закята и васыйи, база — ханафитское прочтение, записанное вlaw.tomlс причиной (15 статей, закрепление 87,7 %, глубина EXECUTABLE 13 / SOURCE_ONLY 1 / UNEXPLAINED 0). Пакет сравнивается с соседями выводом, а не комментарием: мир сценариев склеен из трёх документов, и одна вдова на один день до истечения иддата даётorders_diverge_on_the_widow(адат зовёт деверя —kz.corpus.tuystyqст. 10, фикх не допускает союза), на следующий день — расхождения нет; вторая ось — махр жене против калыма роду, где половина вывода берётся из заключения самого декрета 1920 года. Мост построен черезtuystyq, а не черезamengerlik: тот не помечаетpubничего, и его символы через границу не видны (§24, E-0059). Расхождение мазхабов — выводимый факт: приоритет §116 между прочтениями запрещён, база отступает к общему ядру, и никах без вали даёт три разных ответа на одно дело (база NEITHER, ханафитское «действителен», большинства «недействителен»); тройной талак одним произнесением молчит в базе ДЕФИТЕРОМ — без него презумпция отзывности выбрала бы прочтение меньшинства молча. Отсюда три различимых ответа головыtalaq_revocable: TRUE_ONLY / FALSE_ONLY / NEITHER. Талак — власть §127 с двумя разными пределами, раджа — вторая власть с правовым окном, иммунитет жены §128 после окончательного талака блокирует превращениеnikah_restored(сценарий стережёт EFFECT_BLOCKED_BY_IMMUNITY поимённо). Попутно измерена ОБРАТНАЯ сторона приёмаhe.mark-of-cain: строгое правило рядом сpower— там условие работы §128, здесь прямой его обход (с ним союз восстанавливался при стоящей в том же документе issue блокировки). Пять замыканий §70 на ЭМПИРИЧЕСКИХ основаниях ст. 5 плюс шестое, выводимое сравнением с A3-параметром и потому не замыкаемое. Четыре A3-датасета по оси legal_time читаются обеими сторонами своих порогов; месячный шаг остаётся литералом (единица §86 стоит только у литерала). Хул’ и фасх — канал суждения §47.3 с органом Qadi и типизированнымиrequest_schema. Семействоnikah: 40 сценариев, differential 154 вызова байтово, Lean 157/157 сертификатов, 9 рукописных.lawtest§267, разметка §218 — 131/0 и 91/0. Измерено попутно: метки A3-датасетов (E-0056) доезжают до порождённыхsymbol_decl—$commentстрокиkz-conscriptionв храповике разметки, утверждающий обратное, устарел. -
fiqh.wasiyya— васыйя: порядок удовлетворения требований как предмет права, презумпция в вычислительном водопаде и маукуф третьим ответом (30.08.2026). Третий акт группыfiqh; авторское изложение по прецеденту закята (10 статей, закрепление 69,8 %, глубина EXECUTABLE 4 / SOURCE_ONLY 4 с объявленными по тексту причинами / UNEXPLAINED 0). Водопад четырёх очередей ст. 3 (погребение → долги → отказы → доли) выводится правиломPrecedesи спрашивается; правовая максима «основа в сделках — действительность» стоит презумпцией §. в середине арифметики: суммы третьей очереди считаются по ПОРАЖАЕМО-установленнымoperative_claim, отозванный (FALSE_ONLY) и приостановленный (NEITHER) в них не входят. Маукуф ст. 8 — дефитер поnot_known(consent): три различимых ответа одной головы. Арифметика распределения (соразмерность долгов ст. 4, треть и сокращение ст. 6, остаток ст. 9) — запросами по архитектуре аула фараида (§111 + LDC-E1317, обе границы измерены пробой). Семействоwasiyya: 22 сценария, differential 34 вызова байтово, Lean 34/34 сертификата, 4 рукописных.lawtest§267, разметка §218 — 24/0 и 9/0. Три канона поражаемого слоя, измеренных пробами по пути: (1) из несколькихunlessпрезумпции lower МОЛЧА оставляет последний; (2) unless и presume обязаны жить в одной страте — производители барьера только строгие, иначе конфликт разных рангов даёт BOTH; (3) голова defeater-а — блокируемый вывод (полярность совпадает),then not qблокировал бы противоположную сторону. -
fiqh.zakat— закят: первые натуральные шкалы A3 и граница среза, исполняемая по слову источника (30.08.2026). Новая группаfiqh; авторское изложение по прецеденту фараида (16 статей, закрепление 81,1 %, глубина EXECUTABLE 13 / SOURCE_ONLY 1 / UNEXPLAINED 0). Три таблицы A3, у которых и вход, и выход — поголовье (у шкалы верблюдов пять выходных колонок;uniqueдержит полосы письма Абу Бакра,total: falseчестен — непокрытые полосы закрыты правиламиherd_below_nisabиbeyond_restatement). Хвосты шкал (ст. 9, 11, 13) не молчат: сам источник говорит «дела … настоящим изложением не разрешаются», и ровно это выводится — у верблюдов и КРС причина правовая (неоднозначное разложение, расхождение школ), у овец техническая (floor-деление к Integer вне замкнутой поверхности — кандидат в errata по шаблону E-0015). Три вида арифметики ставок:div_roundMoney с политикой, проверенной в единственной различимой точке (25 000.025 → 25 000.03), точные дроби Rational у металлов, десятина/двадцатина урожая. Восемь замыканий §70 закрытого перечня получателей + правило с восемью отрицательными посылками; развязка «размер — обязанность» (duty §122 ACTIVE→SATISFIED, у урожая — без хауля по ст. 14). Семействоzakat: 52 сценария (полная лестница строк обеих шкал — до входа A3 синтезатор достижимости не властен, покрытие сценариями единственная мера), differential 64 вызова байтово, 5.lawtest§267. Попутно измерено: constraint §93.1 evaluation-документ 0.1 не исполняет (статика и цели фаззера) — «громкая» граница констрейнтом была бы молчаливой на деле. -
Нить замкнута: право HTTP стало исполнимым от закреплённого байта до вердикта (30.08.2026). К словарю
ietf.bcp14добавлены два ОБЪЕКТНЫХ акта, берущих модальности ИМПОРТОМ §23, а не объявляющих их у себя:ietf.http_semantics(RFC 9110, срез из шести подразделов, 15 сценариев) иietf.http_framing(RFC 2616 → RFC 7230 → RFC 9112, 11 сценариев). Так устроен и сам источник: раздел 2.2 RFC 9110 не изобретает модальностей, а ПРИНИМАЕТ чужой словарь дословной формулой RFC 8174, иimportесть формализация этой фразы. Ответ 405 без заголовка Allow от сервера, заявившего соответствие, даёт позициюSatisfyAbsoluteRequirementсо статусом VIOLATED: ни одна из двух половин такого ответа сама не даёт — словарь не знает про 405, протокол не знает, что значит MUST. -
Ходячая версия происхождения request smuggling опровергнута закреплённым текстом, а настоящий зазор локализован. Говорят, будто RFC 2616 допускал
Content-LengthиTransfer-Encodingвместе, не задав приоритета. Приоритет задан («the latter MUST be ignored»), и отправителю оба поля запрещены прямо («Messages MUST NOT include both…»). Зазор был уже: ПОСРЕДНИК, получивший такое сообщение, отправителем его не является, и обязанности снятьContent-Lengthперед пересылкой у него не было ни одной — её добавил RFC 7230 §3.3.3 одним предложением, RFC 9112 §6.3 адресовал посреднику прямо. Норма была; адресат был не тот. Пакет держит это ИСПОЛНЕНИЕМ: один и тот же след пересылки даёт ноль нарушений при притязании на RFC 2616 и нарушенную обязанность при притязании на RFC 7230 либо RFC 9112 (FRAME-01…03). -
Словарь поймал ошибку в обиходном чтении спецификации. Раздел 15.3.5 RFC 9110 («тело у ответа 204») не содержит НИ ОДНОГО ключевого слова BCP 14: «it cannot contain content or trailers» — обычный английский, а раздел 2.2 принимает словарь в редакции RFC 8174 («when, and only when, they appear in all capitals»). Обязанности и запрета из раздела не возникает, и линтер, штампующий там нарушение MUST NOT, ошибается о праве. Первая редакция сценариев
ietf.bcp14иллюстрировала этим примером MUST NOT — пример заменён настоящим запретом (§5.3), а сам случай стал сценарием HTTP-01: сообщение классифицируется неправильно построенным (утверждение о ПРОТОКОЛЕ), а деонтической позиции не возникает ни одной. -
Соответствие считается по определению самого источника. Раздел 1.2 RFC 2616 определяет его трёхчленно, и все три члена достижимы: нарушен MUST — не соответствует (FRAME-08); чистый обмен — соответствует безусловно (FRAME-09); нарушен только SHOULD — соответствует, но условно (FRAME-10). Записано презумпцией с опровержением, а не подсчётом: текст формулирует несоответствие экзистенциально («fails to satisfy one or more»), а универсальное «satisfies all» потребовало бы агрегата и сделало бы вывод невидимым для профиля §274.
-
Толкование §152 в BCP 14 получило материал, на котором меняет ответ. RFC 2616 §1.2 и RFC 7230 §1.1 принимают словарь в ДООСЬМИТЫСЯЧНОЙ форме («as described in [RFC2119]», без оговорки о заглавных), RFC 9112 §1.1 — уже с ней. Для первых двух вопрос «связывает ли строчный must» остаётся открытым по их собственному тексту.
-
Границы механизма, найденные и объявленные. (1) Члены
enumНЕ экспортируютсяpub:visibility§24 — префикс верхнеуровневой декларации, и словарь, чьи СЛОВА не пересекают границу пакета, не словарь; ключевые слова BCP 14 переведены вpub const(ссылки лоуверятся тем жеconst_refс тем же StableId, пакет не изменился ни на байт). (2) Поверхность §267 не несёт квалифицированной ссылки на чужой пакет — уlawc test … --programнет ключа--imports, файл отвергается целиком; авторские тесты обоих пакетов держат протокольную половину, деонтическую держат сценарии и байтовый differential. (3) Эмитированных тестов у обоих пакетов нет: раннер собирает МИР из двух документов, и программа сцены не тождественна CLIR пакета. -
Две меры §33.1 научились глубине больше двух уровней. Единица деления протокольного RFC — подраздел вида 15.5.6, а
LOCATOR_REбрал\d+[-_]\d+ОДНОЙ группой:section/5_3разбирался,section/15_5_6— нет, и три единицы из шести объявленного охвата выходили «без единой нормы» при живых правилах с якорями на них. Заведены две конвенции (rfc_subsectionдля RFC новой школы,rfc_2616_section— для издания 1999 года, где после номера точки нет: одна конвенция на оба находила в RFC 2616 РОВНО ОДИН заголовок из 255). Срез единицы теперь обрывается ТОЛЬКО следующим заголовком: стоп по постраничному аппарату был безвреден на BCP 14 по совпадению и на первом же протокольном RFC съедал из раздела 3.3.3 четыре пункта из семи молча; фрагменты BCP 14 после правки не изменились ни на байт. -
Расчёт заработной платы стал вопросом к корпусу:
kz.corpus.incometax— глава об индивидуальном подоходном налоге в ДВУХ Налоговых кодексах сразу (30.08.2026). Корпус год держал четыре пятых ответа на вопрос «сколько на руки»: ставку обязательных пенсионных взносов (kz.corpus.socialcode, ст. 249), взносы на медицинское страхование с пределами по датам (kz.corpus.osms, ст. 28), параметры года (kz.corpus.budget). Не хватало подоходного налога — и без него цепочка обрывалась на предпоследнем шаге. Закреплены байты обоих Кодексов: № 120-VI (утратил силу с 01.01.2026) и № 214-VIII (введён с 01.01.2026). Это ДВА РАЗНЫХ АКТА, а не две редакции одного, поэтому переключение по дате несут окнаeffective§87 и осьlegal_timeA3-параметров, а не машина редакций (diff-editionsсравнивает редакции одного work). -
Пакет НЕ СЧИТАЕТ взносы сам — он их читает, и это буквальное чтение. Ст. 402 и 438 Кодекса 2025 года (ст. 342 и 345-1 Кодекса 2017 года) вычитают из облагаемого дохода взносы, «исчисленные в соответствии с» законодательством о социальной защите и Законом об ОСМС. Мост воспроизводит именно ссылку: суммы приходят исполнением чужих пакетов, и в доказательстве видно, какая статья какого акта дала каждое слагаемое. Четыре импорта — больше, чем у любого другого акта KZ-корпуса. Ради моста в
kz.corpus.socialcodeиkz.corpus.osmsзаведеныpub-границы экспорта (§24, E-0059): до этого ни один из двух пакетов не экспортировал НИЧЕГО. -
Предел объекта обязательных пенсионных взносов (ст. 249 п. 1 пп. 1) — закрытый молчаливый пробел
kz.corpus.socialcode. Пятидесятикратный минимальный размер заработной платы «от одного агента» не был формализован вовсе: ставка 10 % честно применялась к любой поданной базе, и на окладе в 4 500 000 ₸ пакет возвращал взнос 450 000 ₸ вместо 425 000 ₸ — без единого issue, потому что усечение делал бы автор дела, а не право. Отношениеmandatory_pension_contribution_baseстало institutional и выводится правилом; вход — новоеarticle249_monthly_income_from_agent. «От одного агента» — не оговорка: у лица с двумя работодателями предел считается у каждого свой, и носитель предела поэтому расчёт, а не лицо. -
kz.corpus.budget2025— закон о республиканском бюджете на 2025–2027 годы № 141-VIII. Заведён ради одного: сторона «декабрь 2025» упиралась не в Кодекс, а в месячный расчётный показатель, которого в корпусе не было (3 932 ₸ против 4 325 ₸ в 2026 году). Без него та сторона считалась бы по показателю 2026 года — молча и неверно. Сверка с закреплённым текстом поправила и номер закона: 141-VIII, а не 143-VIII (последний вносит в него изменения), и параметры стоят в СТАТЬЕ 9, а не в статье 7, как в законе на 2026–2028 годы. -
Что показала пара дат на одном деле. Оклад 400 000 ₸: декабрь 2025 — 322 305 ₸ на руки, январь 2026 — 329 775 ₸, и машина называет причину (стандартный вычет 14 МРП вырос до базового 30 МРП). Но на минимальной заработной плате знак разницы ОБРАТНЫЙ по составу причин: Кодекс 2017 года давал льготу п. 1-1 ст. 356 (минус 90 процентов облагаемого дохода при начисленном доходе до 25 МРП), которой в Кодексе 2025 года НЕТ ВОВСЕ. Рост вычета и отмена льготы тянут в разные стороны, и пересказ по памяти, знающий только про «вычет вырос вдвое», ответил бы неверно.
-
Прогрессивная шкала ст. 363 достижима только вместе с машиной ст. 441. Порог второй ступени — 8500-кратный месячный расчётный показатель ГОДОВОГО облагаемого дохода (36 762 500 ₸ в 2026 году); помесячно он не достигается ни на каком окладе. Без «нарастающего итога с 1 января» строка 2 таблицы была бы мертва. Пара сценариев по обе стороны порога разнесена на 100 000 ₸ ОСОЗНАННО: соседние тенге дают одинаковый ответ, потому что 15 процентов от одного тенге стираются округлением, и такая «пара» не стерегла бы ничего.
-
Округление объявлено политикой пакета, а не выдано за норму. Ни один из двух Кодексов правила округления подоходного налога не называет — во всём тексте Кодекса 2025 года слово «округление» встречается один раз, и то про количество транспортных средств. Объявлено
HALF_UPдо тенге на каждом шаге, тем же способом и по той же причине, что вkz.corpus.osms. Округление стоит на НАКОПЛЕННОМ налоге, а не на разности ст. 441: иначе сумма помесячных удержаний за год разошлась бы с годовым итогом на копейки. -
«На руки» названо тем, что оно есть. Такой нормы нет ни в одном из трёх актов: каждый устанавливает СВОЁ удержание. Правило указывает на ст. 426 пп. 2 (единственное место, где Кодекс различает «подлежащую получению работником сумму» и «суммы, подлежащие удержанию») и ст. 440 п. 3, и в комментарии сказано вслух, что разность собрана из трёх обязанностей, а не выведена из одной нормы.
-
Три исторические пары «дыра → заплатка» и спор ZFS как argmap §274 (30.08.2026). Пакет
foss.licensesдополнен шестой лицензией LGPL-2.1 и двумя категориями словаря:installation-information(тивоизация, GPLv3 §6) иsame-license--library. Все три пары выражены ТОЧЕЧНЫМ различием множеств условий, а не пересказом: AGPLv3 отличается от GPLv3 ровно наnetwork-use-disclose, GPLv3 от GPLv2 — ровно наinstallation-information, а линковка получила третью форму — LGPL §6 «under terms of your choice». -
LGPL §5 — единственный текст пакета, высказывающийся о вопросе, который остальные оставляют суду. «Such a work, in isolation, is not a derivative work of the Library» — и тут же оговорка, что слинкованный исполняемый файл производным всё-таки является. Раздел получил фрагмент и НАМЕРЕННО не читается ни одним правилом: формализовать его значило бы дать пакету ответ на вопрос, который канал суждения §47.3 честно оставляет судье.
-
Замена лицензии отличена от соединения, и различие текстуальное. LGPL §3 («instead of this License») заменяет лицензию целиком — её условия замены не переживают; GPLv3 §13 разрешает соединение, а условие AGPL его ПЕРЕЖИВАЕТ («will apply to the combination»). Механизм назван самим GPLv3 §7: «provided that the further restriction does not survive such relicensing». Границу замены проводит одно слово — «the ORDINARY GNU General Public License»: LGPL-2.1 → GPLv2 и GPLv3 «можно», → AGPLv3 «нельзя».
-
Дело ZFS как два ПРОЧТЕНИЯ §152, а не два правила. Заключения SFLC и Software Freedom Conservancy оформлены
interpretation … includeсоstatus disputedи дают четырёхклеточную таблицу: ни одного прочтения → NEITHER (GPLv2 §0 молчит), только SFLC → TRUE_ONLY, только Conservancy → FALSE_ONLY, оба → BOTH. Базой обязано быть молчание: выбери позицию базой — и пакет решил бы спор экспертов сменой служебного слова. Проверено мутантом: снятая строкаinterpretation SflcReading;возвращает ответ к NEITHER. -
argmapпоказывает, что эксперты расходятся НЕ В ЛИЦЕНЗИЯХ. На деле ZFS профиль §274 даёт 164 аргумента и ровно ДВЕ атаки (rebut-unresolved=2): 162 аргумента о лицензиях стоятin, аundecпомечены только две позиции — о модуле и ядре. Утверждение брифа «расходятся в одном предикате» стало измеренным, а не заявленным. -
Лицензионные условия React 2013–2017 — новый пакет
foss.react_licensing(foss-react-licensing.lawir.json), ось ВРЕМЕНИ. Три редакции двух источников, закреплённые БАЙТАМИ ИЗДАТЕЛЯ по неизменяемым тегамfacebook/react: BSD 3-Clause и «Additional Grant of Patent Rights Version 2» (v15.6.1), MIT (v16.0.0).PINNED_OFFICIAL_BYTES— репозиторий и есть место публикации условий, не перепечатка. -
impact-editionsпереворачивает ответ на дате перелицензирования. Запрос «прекращён ли патентный грант у компании, судящейся с Facebook» на 2016-06-01 против 2018-06-01:REACT_BSD_2013иREACT_PATENTS_2015applicable → closed,REACT_MIT_2017not_yet → applicable, семантический diff §215 added=1 removed=5, оба сценария меняют исход TRUE_ONLY → NEITHER, вердикт SEMANTIC-CHANGE. Ответ даёт ПРОЕКЦИЯ §31, а не даты в гардах правил. -
Три основания прекращения записаны ТРЕМЯ правилами, и это несёт весь смысл. Патентная месть есть и у Apache 2.0 §3, и скандала не вызвала; React прекращал грант в том числе по основанию (ii) — иск К КОМУ УГОДНО, возникший «in whole or in part from any software, technology, product or service of Facebook», то есть о рекламе или видеокодеке, без единого упоминания React. Оговорка-исключение (встречный иск при первом иске Facebook) снимает ТОЛЬКО основание (i) — проверено парой тестов, дающих на одних и тех же фактах разные ответы.
-
Сторож исторического факта.
fetch_react_licensing_text.py --auditпроверяет, что PATENTS в текущей ветке отдаёт 404, а LICENSE — MIT: удаление файла и есть событие сентября 2017 года. Вернись файл в ветку — утверждение пакета об отзыве гранта перестанет опираться на наблюдаемый факт, и ворота скажут это громко.
Найдено
- Красные ворота, отказывающие ДО исполнения, неотличимы от отсутствия
покрытия (30.08.2026).
verify/ci/gates/compiler/check_corpus_tests.pyвозвращал 1 на ПЕРВОЙ проверке (индексcorpus/tests/index.jsonразошёлся с каталогом) и до вызоваlawc testне доходил, поэтому вся поверхность §267 не проверяла ничего, а её молчание читалось как согласие. Индекс починен коммитом a5ba7dfa — и ворота сразу назвали три теста «Жеті жарғы» (ZH-51,ZH-52,ZH-58), замороженных на поведении ДО errata E-0050: написаны 27.08, нижняя граница окна нормы вернулась 28.08. Квалификация — ни модель акта, ни временнáя машинерия: окна приходят делом и объявлены верно, аlegal_timeво всех трёх взят из умолчания пакета (1 января 1700 года), то есть ВНЕ предъявленного этим же делом окна; до правки дата не влияла ни на что, поэтому её никто не выбирал. Починено прецедентомHP-10— оба конца окна: ZH-51/52/58 спрашивают внутри и сохраняютACTIVE, нижнюю границу держат новые ZH-101 (PENDING), ZH-102 (PENDINGна обеих головах) и ZH-103. Последний читает распад сводки §134 вUNDETERMINED: свобода голоса до окна получаетCREATED(§134 даёт семейству power/immunity/liberty свою таблицу status kinds), а налоговая обязанность с техническим окном[@0001-01-01, infinity)остаётсяACTIVE; изолировать свободу делом нельзя —liberties(actor, context)§172 срезом 0.1 не исполняется, а посылкиArmedVotingLibertyиAnnualTaxShareсовпадают. Радиус правки ядра измеряется по прогонам, которые ДОШЛИ до исполнения, а не по числу зелёных шагов: заявленный E-0050 радиус «одно падение из 4427» был честен для регрессии и слеп ко второй поверхности тех же ответов. - У редакции может быть ровно ОДНА публикация. Первая раскладка React
объявляла один источник «условия проекта» с редакцией 2013 года и двумя
публикациями (LICENSE и PATENTS лежали двумя файлами). Компилятор отверг это
громко:
LDC-E5202: fragment "RBSD_P5": официальный текст (en) не найден в закреплённых байтах публикации "REACT_PATENTS_TEXT"— §194 сверяет фрагмент с публикацией ЕГО редакции, и при двух публикациях фрагменты одного файла проверяются против байтов другого. Отказ полезен и по существу: он заставил назвать лицензию на код и патентный грант ДВУМЯ инструментами, чем они и были, — первый заменён, второй отозван. - Текст LGPL-3.0 в редакции SPDX нумерует разделы ДВАЖДЫ (0…6 надстройки,
затем 0…17 приложенного GPLv3). Генератор фрагментов отказывает на повторе
номера, и он прав: локатор
section/5адресовал бы два разных текста. Пакет закрепил LGPL-2.1 с записанной причиной, а не срез надстройки — решения о такой границе источник не даёт. - ПДД РК: народная формула «знак главнее разметки» скрывает ЧЕТЫРЕ разных
механизма, и proof-граф их разводит (30.08.2026). Заведён
corpus/laws/kz/traffic-rules(kz.corpus.traffic_rules→kz-traffic-rules.lawir.json), семейство регрессииtraffic_rules, 34 сценария, differential байтовый (34 вызова), 15 из 15 пунктов объявленного среза EXECUTABLE, неучтённых нет. Каскад средств регулирования записан ТРЕМЯ разными конструкциями языка, потому что источник связывает его ступени тремя разными отношениями: поражение §128 (пункт 38 — регулировщик против светофора; приложение 1 — временный знак против стационарного; приложение 2 — знак против разметки) даёт узелdefeat; гард (пункт 94 — знаки приоритета действуют лишь на нерегулируемом перекрёстке) не даёт НИЧЕГО, правило просто не применяется; раздельные области (пункты 101 и 103 — «неравнозначных» против «равнозначных») не дают и конфликта. Пара KZ-PDD-06/07 держит различение измерением: тот же знак «Главная дорога» при неработающем светофоре порождает обязанность уступить, при работающем — не порождает, и в графе видно, что он не побеждён, а не активирован. Четвёртый механизм, которого формула не знает вовсе, — презумпция пункта 105 («считать себя на второстепенной»), дающая ВСТРЕЧНЫЕ обязанности уступить обоим. - Акт из брифа оказался отменённым — закреплён действующий. Правила дорожного движения утверждает ПРИКАЗ Министра внутренних дел от 30.06.2023 № 534 (регистрация в МЮ 01.07.2023 № 33003), а не постановление Правительства от 13.11.2014 № 1196: оно утратило силу постановлением от 01.09.2023 № 758 вместе с одиннадцатью изменявшими его постановлениями. Полномочие перешло от Правительства к министерству, и основанием приказ называет подпункт 5) статьи 10 Закона «О дорожном движении» вместо подпункта 7) статьи 9. Второй случай этого класса после постановления о переносе дня отдыха.
- Оранжевой (временной) разметки в казахстанских Правилах нет. Приложение 2 говорит «Горизонтальная разметка имеет белый, жёлтый цвет»; ступень «оранжевая побеждает белую» — конструкция российских Правил, и в пакет она не перенесена. Ту же работу в Казахстане делает временный знак на переносной стойке против стационарного (приложение 1 глава 7), и ступень записана им.
- Канал суждения §47.3 не проходит через ПОРАЖАЕМОЕ правило. Изолировано
перекрёстной матрицей «сила правила × полярность головы» на минимальной паре:
у строгих правил
REQUIRES_JUDGMENTдоезжает до потребителя и полярность соблюдает, у поражаемых молчит в обеих полярностях — ответ приходитNEITHERсо статусомCOMPUTEDи нулёмjudgmentRequests, неотличимо от «право молчит». Обе реализации согласны байтово, то есть это общая граница, а не расхождение. В пакете обойдено разрезом на два шага: «линия разметки действует» выведено СТРОГИМ правилом (на нём граница наблюдаема — KZ-PDD-15), «значит манёвр запрещён» осталось поражаемым, потому что его побеждает знак. - Направленный фаззер НЕ проверяет ни одного написанного руками констрейнта.
_hunt_invariantsтребует голого литерала вantecedent, аwhen p(a, b);понижается вestablished(p(a, b))— узел видаstatus; констрейнт уходит вmanifest.skippedConstraints, и сводка CLI об этом не печатает ни строки. Замер по корпусу: из 34 констрейнтов голый литерал в antecedent у пяти, и все пять — автоматические/necessaryизconcept-деклараций. Вторая половина той же проверки,_requirement_conjuncts,establishedразворачивает — асимметрия внутри одной функции. Не чинилось: это правка семантики фаззера, требующая своей квалификации и вектора. - Спортивный регламент «Формулы-1» ФИА: два пункта одной статьи, между
которыми нет приоритета (30.08.2026). Заведён
corpus/laws/fia/f1-sporting(fia.corpus.f1_sporting→fia-f1-sporting.lawir.json), семейство регрессииfia_safety_car, 30 сценариев, differential байтовый (30 вызовов), четыре авторских теста §267, журналprocess-runи правопорядокFIAв перечне §27.1. Закреплены байты ДВУХ выпусков с fia.com: 2021 год, выпуск 13 от 8 декабря (единственный текст, по которому проводилась гонка в Яс-Марине) и 2022 год, выпуск 6 от 29 апреля (текст после поправки). Охват §33.1 — статьи 15 и 48, обе EXECUTABLE. - Главный результат: база отвечает
BOTHо 57-м круге. Пункт 48.12 велит сейфти-кару уйти в конце СЛЕДУЮЩЕГО круга после прохода последнего кругового, пункт 48.13 — в конце ЭТОГО; оба применимы к одному состоянию, приоритета между ними в регламенте нет ни строчки. Постулат стюардов «48.13 перекрывает 48.12» (документ 58 от 12.12.2021) стоит отдельным толкованием, и его выбор меняет ответ наTRUE_ONLY— разница между двумя прогонами и есть цена ненаписанной строкиprefer.lawref fuzzнаходит ту же коллизию §115 сценарием ИЗ ДВУХ УТВЕРЖДЕНИЙ, без всякой гонки. - Спор о слове «any» коллизию не решает — он её убирает, и не в пользу
«Мерседес». Измерено, а не выведено рассуждением: прочтение «any = все»
делает обязанными всех восьмерых круговых, трое лидера не проехали, условие
пункта 48.12 не выполнено, отсрочки нет — и остаётся один пункт 48.13
(
TRUE_ONLYо 57-м круге,NEITHERо 58-м). Чтобы 57-й круг снова стал спорным, к нему нужно ВТОРОЕ прочтение — широкое изъятие «Except under Article 48.12» пункта 48.10; только вместе они даютFALSE_ONLYо 58-м, то есть «гонка обязана финишировать за сейфти-каром». - Граница поправки 2022 года измерена тремя выпусками подряд. Выпуск 4
(18.02.2022) — «any cars»; выпуск 5 (15.03.2022) — «any all cars», ФИА
опубликовала текст С ВИДИМОЙ ПРАВКОЙ, и плоское извлечение выкладывает
зачёркнутое и вставленное в один поток; выпуск 6 (29.04.2022) — «all cars».
Байты выпуска 5 не закрепляются (это артефакт отрисовки, а не нормативный
текст), но утверждение проверяемо командой из
sources.law. Отдельная находка: поправка сняла двузначность «any» и НЕ ТРОНУЛА коллизию сроков — в редакции 2022 года пункты 55.13 и 55.14 расходятся ровно так же. - Третья нога контура: 17 сертификатов из 28 отвергнуты известным дефектом
ядра (§181.1), иного класса ноль. Отвергнутые и принятые делятся ровно по
коллизии: ядро называет поимённо две стороны пары §115, а все одиннадцать
принятых — сценарии, где коллизия разрешена прочтением либо не возникает.
Класс уже квалифицирован сегодня на
us-leonard-v-pepsico,repkaиzhirenshe; обе реализации согласны байтово, починка идёт через errata, а не через правку акта. Детектор класса из разбора Leonard (дублиconflictKey) на этой форме даёт честный ноль — подстановка у соперников одна, полярность разная. - Аудит полноты нашёл структурно мёртвое правило при зелёных
check,lowerиcheck_dead_rules. Нижняя граница пункта 48.10 читала в посылке понятие пункта 48.12 (required_car_outstanding), а её оговорка снимала правило ровно при том условии, при котором посылка только и возникает: правило не могло сработать ни на каком деле. Признак — сверка двух списков: из 21 правила, недостижимого синтезом дел, 20 срабатывают в сценариях и одно не срабатывало нигде. Починка вернула пункту его собственный признак фактом протокола под закрытием §70; добавлены сцены FIA-SC-29/30 на круги 53–56. Отчёт аудита —corpus/laws/fia/f1-sporting/audit.ru.md; вердикт поpriority_decl— «ложное усиление»: приоритет в базе был бы документом 58, вписанным в регламент. - KHM 5 «Волк и семеро козлят»: ось редакций проходит по СУЩЕСТВОВАНИЮ
НОРМЫ (30.08.2026). Заведён
corpus/laws/de/sieben-geisslein(de.grimm.geisslein→de-sieben-geisslein.lawir.json), семейство регрессииgeisslein, 10 сценариев, differential байтовый (12 вызовов), десять авторских тестов §267. Закреплены ДВА прижизненных издания — Erstausgabe 1812 и Ausgabe letzter Hand 1857, — потому что они расходятся о праве: наставление матери в 1812 содержит прямой запрет впускать («laßt ihn nicht herein»), в 1857 запрета нет вовсе, осталось предостережение с описанием последствия. Отсюда результат, которого в корпусе ещё не было: на ОДНИХ И ТЕХ ЖЕ фактах (волк впущен) состав нарушения выводится по одной редакции и МОЛЧИТ по другой, и молчание — верный ответ, а не пробел формализации. ПравопорядокGeissenhaus— диегетический, оба акта дома козы (наставление, угроза волка мельнику) ABSTRACT_ONLY на условной шкале @1000-01-01; сама сказка — свидетель сjurisdiction "none". - Презумпция, которой норма не устанавливала, отделена от факта.
Наставление называет достаточные признаки ВОЛКА (грубый голос, чёрные лапы);
козлята употребили их обратным ходом и из необнаружения вывели «это мать».
Пакет держит выводы порознь: на третьей попытке
presumed_motherдаёт TRUE_ONLY, аmother_of— NEITHER. Разрыв между тем, чем руководствовался адресат нормы, и тем, что было, виден ПАРОЙ ОТВЕТОВ, а не комментарием; слейся два предиката, пакет утверждал бы, что волк был матерью. - Соучастие, различённое знанием, и принуждение как его вырез. Один вопрос даёт три верных ответа: мельник по изданию 1857 года оправдан принуждением (FALSE_ONLY — знал «der Wolf will einen betrügen», но уступил угрозе быть съеденным), тот же мельник по изданию 1812-го молчит (NEITHER: знания издание не сообщает), пекарь молчит по обоим (обманут ложью «я ушиб ногу»). Вырез требует знания наравне с базой намеренно: иначе пакет вывел бы «не соучастник» и по редакции, которая промолчала.
- Приёмка мутантами. Пять мутаций, каждая убивает ровно свой тест: снятый
ассерт запрета 1812, снятый
priorityпринуждения, запрет, приписанный изданию 1857, знание, приписанное мельнику по изданию 1812, и знание, приписанное пекарю. Четыре теста пакета ожидают NEITHER и без такой проверки зеленели бы при полностью мёртвом праве. - Қонақ құқығы — право гостя, и Алдар Көсе как дело о лазейке (30.08.2026).
Заведён
corpus/laws/kz/aldar-kose(kz.corpus.aldar_kose→kz-aldar-kose.lawir.json): пять энциклопедических записей закреплены байтами, 46 фрагментов, 22 правила, 14 сценариев §267 плюс 12 сценариев регрессии. Предмет пакета — ОБЫЧАЙ, а не сказка (приём «Вершков и корешков»): единственная строка корпуса, называющая право гостя правом («қазақ жерінде қонақ құқығы заңмен қорғалады»), даёт полную цепь «обязанность — состав нарушения — инстанция — санкция», какой не даёт ни один другой пакет обычного права. - Единица права — ПОСЕЩЕНИЕ, и это следствие измеренной границы v1. Обычай
различает три вида гостя через ОТСУТСТВИЕ признаков («ешбір таныстығы,
туыстығы, жекжаттығы жоқ»); отрицание требует замыкания §70, а замыкание
закрывает только унарный предикат —
closureнадacquainted(guest, host)отвергается с LDC-E2114, и та же диагностика называет каноническую форму. Проба сделана ДО первой строки акта; выигрыш не только технический — обязанность возникает из посещения, как и говорят байты. - Две лазейки, обе вычислены, и вторая не работает. Переквалификация
гостя в қыдырма снимает почести приоритетом lex specialis, названным самим
источником (AK-04, FALSE_ONLY — при расхождении страт §111 ответ стал бы
BOTH при чистых
checkиlower). Сокрытие снеди даёт NEITHER, а не FALSE_ONLY: скупой не лжёт, он молчит. Главный результат отрицательный — AK-11 вычисляет, что сокрытие НЕ спасает хозяина: основанием обычай называет отсутствие исполнения, а не отсутствие припасов. - Граница закреплённых байтов сторожится сценарием. Ни одна из пяти записей не говорит, что Алдар жаловался бию: его средство — клятва и позор, то есть самопомощь. Основание у него было, инстанция существовала — айыпа нет (AK-12, NEITHER). Обычай дал гостю средство, а герой предания им не воспользовался, и это ВЫЧИСЛЕНО, а не заявлено.
- Клятва как способ доказывания. Ант объявлен презумпцией: названное
присягой считается наличным, пока осмотр не опроверг («куәлік етуі» записи
Ант; клятва хлебом названа обычаем прямо). Воротаcheck_dead_symbolsнашли, что сам акт присяги не читался ни одним правилом, — гард исправлен, три мёртвых объявления сняты, храповик разметки опущен 44 → 41 осознанно приunlabelled0. - «Золушка» Перро 1697 года: объём отката как ЗАКРЫТОЕ ПЕРЕЧИСЛЕНИЕ
(30.08.2026). Заведён
corpus/laws/fr/cendrillon-1697(fr.perrault.cendrillon→fr-cendrillon-1697.lawir.json), семейство регрессииcendrillon, 23 сценария, differential байтовый 23/23, шесть авторских тестов §267. Крёстная обусловила дар полуночью и назвала последствия поимённо — карета, кони, лакеи, платье; туфелек в перечислении нет. Пакет закрытость не объявляет, а берёт из исхода, который сказка сообщает сама: после второго бала не осталось «rien […] qu’une de ſes petites pantoufles» — отпало ровно названное. Поэтомуsurvived_midnightвыводится НЕ правилом о туфельках (такого нет и быть не может: источник произносит список, а не основание), а закрытием §70 наsubject_to_reversion. На этом пробеле держится вся развязка: попади туфельки в перечень, доказывать тождество было бы нечем. - Измеренное расхождение объявленного условия со сработавшим. Крёстная
обусловила откат тем, что Золушка пробудет «un moment davantage» — дольше
полуночи (
>); сказка откатывает дар при уходе РОВНО на первом ударе (>=). Взято сработавшее, расхождение предъявлено парой дел по обе стороны границы в одну секунду (CE-05 против CE-06), а не спрятано в выборе оператора. - Два независимых канала испытания. Объявление принца («celle dont le pied ſeroit bien juſte à la pentoufle») связывает его ПРИЛАЖИВАНИЕМ, а не тождеством: право на брак не требует опознания, и третья девица, которой туфелька пришлась впору, получает его, не будучи опознанной (CE-17A/CE-17B). Опознание — отдельный канал через вторую туфельку; ни одно правило пакета их не связывает, потому что не связывает их и Перро.
- Восстановлено слово, которое теряет опубликованная Викитека. На границе
страниц 127/128 сканa перенос размечен половиной пары (
{{tiret|nop|ces}}без парного{{tiret2}}), и отрендеренная страница читается «épouſa en ſecondes une femme» —nopcesпропадает молча. Закреплённые байты его восстанавливают; любая НЕ названная в скрипте непарность роняет закрепление, а не проходит тихо. Байты приколочены к ревизиям 32 страниц сканa, а не к заглавной странице: та текста не содержит вовсе (221 байт директивы транслюзии), и еёoldidничего не фиксирует. - Пять открытых лицензий и ВЫВОДИМАЯ совместимость между ними (30.08.2026).
Заведён
corpus/laws/foss/licenses(foss.licenses→foss-licenses.lawir.json): MIT, Apache 2.0, GPLv2, GPLv3, AGPLv3 плюс словарь условий choosealicense.com — шесть закреплённых документов, 64 фрагмента. Матрица совместимости 5×5 не записана, а ВЫВОДИТСЯ: ни одно правило07-compatibility.lawне называет ни одной лицензии (проверяется грепом), лицензии объявляют о себе типизированные условия, каждое с якорем@sourceна свой раздел. Все клетки сошлись с опубликованными вердиктами Фонда свободного программного обеспечения, включая одностороннюю Apache 2.0 → GPLv3 и обе асимметрии копилефта. - Провенанс словаря условий, а не выдуманный список. Категории имеют ТРИ
объявленных источника:
rules.ymlchoosealicense.com (закреплён байтами), закрытый перечень GPLv3 §7 (a)–(f) и — ровно одна категория, патентная месть, — разделы, которые её вводят (Apache §3, GPLv3 §10). Измеренная находка: в словаре choosealicense НЕТ тегов ни для патентной мести, ни для индемнификации, то есть ровно для тех двух условий, на которых стоит конфликт Apache 2.0 × GPLv2, — на нём одном знаменитая пара вышла бы СОВМЕСТИМОЙ. - Ключевое правило вывода — общее, а не подогнанное. «Условие, которое лицензия налагает САМА, не является для её получателя further restriction»: им же объясняется, почему патентная месть Apache допущена GPLv3 (§10 налагает патентный мир сама) и не допущена GPLv2. Проверено мутантом: снятие одного утверждения о GPLv3 §10 переворачивает пару Apache 2.0 → GPLv3 в «нельзя», и proof-граф называет блокирующим условием патентную месть.
- Вердикт называет ПУНКТ. Отказ Apache 2.0 → GPLv2 приходит с proof-графом, перечисляющим три блокирующих раздела Apache — §3 (патентная месть), §6 (товарные знаки) и §9 (индемнификация). Заключение FSF называет два; §6 найден выводом, и его основание — существование GPLv3 §7 (e), который специально разрешает отказ в правах на товарный знак, то есть без §7 такой отказ был бы дальнейшим ограничением.
- Канал суждения §47.3 вместо конфигурационного тумблера. «Производное
произведение» невыводимо из текстов лицензий (GPLv2 §0 прямо отсылает к
авторскому праву) и объявлено
external judgment relationс органом Court и типизированным запросом. Дело ZFS (2016), где SFLC и Conservancy разошлись на одних текстах, отвечает REQUIRES_JUDGMENT; обе ветви вычисляются adjudicated assertion §73. Это и есть отличие от сканеров (Black Duck, FOSSA, ScanCode), где на том же месте стоит тумблер «считать ли линковку производной». - Новая единица деления
license_sectionв ОБЕИХ мерах §33.1 и профильspdx-license-sectionшаблонаpinning. Выражение совпадает сpointдословно, но конвенция своя: признаки исполнимого содержания берутся по ЯЗЫКУ конвенции, и английская лицензия под русским набором молчала бы на каждом разделе, штампуя любую объявленную границу.
Найдено
- ФАКТЫ НЕ ПЕРЕСЕКАЮТ ГРАНИЦУ ПАКЕТА, и это молчаливо.
--imports§11 несёт только интерфейс зависимости (имя, contentHash, features, exports) — ни одного узла. Правило, читающее импортированное отношение, дало NEITHER на утверждении из импортированного пакета и TRUE_ONLY на том же утверждении, сделанном у себя, — при ЧИСТЫХcheck,lowerи НУЛЕ issue. Следствие для раскладки: единица компиляции есть единица ВЫВОДА. Разложи пять лицензий по пяти пакетам — пакет вывода увидел бы ноль условий и отвечал бы «совместимо» на КАЖДОЙ паре, не уронив ни одних ворот. - Канал суждения §47.3 теряется на
defeasible-правиле — тоже молча. Изолировано минимальной парой: два правила с ОДНИМ телом, ОДНОЙ головой и одной арностью, отличающиеся только видом, даютstrict— одинjudgmentRequest,defeasible— ноль. Ни issue, ни диагностики; NEITHER без запроса читается как «нет». Согласуется с тем, что разбор блокеров §185 объявлен строгим (CLAUDE.md), то есть это граница v1, а не дефект, — но граница НЕМАЯ. Практическое следствие: цепь, обязанная донести вопрос судье, не может проходить черезdefeasible, а цепь сnot_knownне может бытьstrict(LDC-E4103) — два требования несовместимы, и композицию приходится разрывать на два предиката. - BCP 14 (RFC 2119 + RFC 8174): деонтический словарь IETF и первый акт
корпуса, закреплённый БАЙТАМИ ИЗДАТЕЛЯ без единого преобразования
(30.08.2026). Заведён
corpus/laws/ietf/bcp14(ietf.bcp14→ietf-bcp14.lawir.json). Канонический формат RFC — плоский US-ASCII текст, иhttps://www.rfc-editor.org/rfc/rfc2119.txtотдаёт САМУ публикацию, а не её отрисовку:materialization_status PINNED_OFFICIAL_BYTESтам, где у Конвенции о геноциде, ДНЯО и Римского статута стоитPINNED_UNOFFICIAL_COPY. Ни одногоre.subпри получении не выполняется; sha256 обоих документов закреплён в коде получателя, и--checkотказывает громко, если издатель отдаст другой файл под тем же URL. Постраничный аппарат («Bradner … [Page 1]», U+000C) остаётся в байтах и лежит в непокрытом остатке — обрывается только СРЕЗ единицы. Новый правопорядокIETFвписан в перечень §27.1 (родня —UEFA, частный трансграничный регулятор); новая единица деленияrfc_sectionзаведена в ОБЕИХ мерах §33.1. - Предмет — норма о нормах. Акт не регулирует ни одного протокола: он
определяет значение слов, которыми требования выражают ДРУГИЕ RFC, а раздел 6
предписывает самим авторам, когда императив употреблять можно («they MUST only
be used where it is actually required for interoperation») — прямой
родственник закона «О правовых актах» РК. Обязанность автора нарушается
(
VIOLATED), когда рабочая группа отказала по ОБОИМ основаниям; путь к нарушению проверен сценарием BCP14-15, потому что обязанность без такого пути есть украшение, а не норма. - MUST NOT записан обязанностью ВОЗДЕРЖАНИЯ, а не
prohibition. Позиция forbearance §130 в срезе 0.1 не получаетVIOLATEDникогда — толькоACTIVEлибоEXPIRED(нужна событийная модель §79), — а для этого акта «нарушен ли запрет» есть главный ожидаемый ответ. Запрет выражен цельюmaintenanceнад презумпцией воздержания, которую совершение действия опровергает отрицательной головой: §137 даётVIOLATEDот контрпримера. Сторож — BCP14-04 иtests/02-must-not-breached-is-violated.lawtest. - SHOULD: размытость стала типизированной. Раздел 3 даёт отступлению два
условия разной природы, соединённые союзом «but»: вескость причины (не
вычислима — канал суждения §47.3,
authority Implementor) и взвешенность последствий (эмпирический факт). Три сценария держат все три исхода, включая BCP14-09 «причина есть, последствия не взвешены — обязанность нарушена», который и доказывает, что второе условие записано конъюнктом. - Толкование ПОСТАВЛЯЕТ ПОСЫЛКУ, а не побеждающее правило, — и это вынужденно
дважды. Естественная запись (правило внутри толкования +
priorityнад правилом базы) не компилируется:LDC-E1318наlawc lowerпри зелёномlawc check— правила толкования получают scoped StableId, и объявленный там приоритет видит только своих. Обе стороны конфликта поэтому живут в базе, а толкование выводит предикат-посылку — причём правиломstrict: объяви егоdefeasible, и соперники разъехались бы по стратам §111, приоритет не применился бы вовсе, а ответом было быBOTHпри зелёныхcheck,lowerи нуле issue. Пара BCP14-05/06 ловит оба отказа сразу. - Фаззер нашёл конфликт §115, которого не нашло чтение.
lawref fuzz --targeted 40сообщил конфликт наrequirement_satisfied: дело вправе заявить и соответствующее, и отступающее поведение (реальный трейс так и выглядит), и без приоритета обе головы выводились бы разом. Разрешение по тексту: раздел 1 называет требование АБСОЛЮТНЫМ, значит побеждает контрпример (DeviationBeatsConformance). - Мера §33.1 — обе стороны, ноль необъяснённого. RFC 2119: 9 разделов, 6
EXECUTABLE, 1 INTERPRETED (раздел 7 — его
shouldстрочное, и по действующему прочтению ключевым словом не является), 2 границы с причиной. RFC 8174: 5 разделов, 2 EXECUTABLE, 3 границы с причиной. Байтовое покрытие 79,0 % и 51,8 %; непокрытый остаток ИЗМЕРЕН и состоит только из преамбулы издания и постраничного аппарата — нормативного текста в нём нет ни байта. - Граница объявлена заранее и в самом пакете: формализован свод BCP 14
целиком и НЕ формализован ни один другой RFC. Требования RFC 9110 (тело у 204,
Allow у 405) приходят В ДЕЛЕ как факты — BCP 14 ровно так и устроен, он
придаёт силу чужим словам, не зная, о чём они. 22 сценария семейства
bcp14, differential байтовый (30 вызовов), пять авторских тестов §267. - «Двенадцать месяцев»: норма, невыполнимая по природе, и первый акт корпуса
без единого закреплённого байта (30.08.2026). Заведён
corpus/laws/ru/twelve-months-1943(ru.marshak.twelve_months) — указ о подснежниках из драматической сказки С. Я. Маршака (1942—43): публичное обещание награды тому, кто доставит к Новому году во дворец полную корзину цветов. Байтов у пакета нет ни одного, и причина ПРАВОВАЯ, а не источниковедческая. У прежних актов текст либо закреплён, либо утрачен и потому не может быть закреплён (UNAVAILABLE— «Қасқа жолы», устный договор Балды); здесь третий случай: текст цел, доступен и машиночитаем, но охраняется — автор ум. в 1964, срок истекает в 2035. Корпус до сих пор закреплял исключительно тексты в общественном достоянии, и это свойство держалось только чтением: ни одни ворота его не проверяют. Пьеса поэтому не вендорится вовсе, обе редакции —ABSTRACT_ONLY, фрагменты несут толькоlocatorиlabel(приём устного договора «Балды»), а всё, что пакет говорит о содержании указа, изложено СВОИМИ СЛОВАМИ: охраняется форма изложения, а не сведения о том, что норма требует и что обещает. - Следствие, найденное этим актом и общее для всего корпуса: закрытие §70
недоступно пакету без закреплённого источника.
closureобязан нестиsnapshot(LDC-E1307),snapshotссылается на публикацию, а публикация по схеме обязана нестиcontentHashиdocumentHash— то есть закреплённые байты. Ловится это ПОЗДНО:lawc checkна закрытии без snapshot ЧИСТ, отказ приходит только наlower. Роль закрытия здесь играют прямыеassert not tsvetenie_v_prirode(December)— ответ тот же FALSE_ONLY. - Невыполнимость СЧИТАЕТСЯ, а не заявляется. Декабрьский поход за подснежниками выводится тщетным (TRUE_ONLY), цветение в декабре — FALSE_ONLY («в декабре их нет» есть утверждение О ПРЕДМЕТЕ, тогда как NEITHER было бы утверждением О СЕБЕ), а июль честно остаётся NEITHER: свидетель говорит только, что раньше апреля цветов не бывает, и о лете пакет молчит объявленной границей. Дар двенадцати месяцев — единственное основание собрать цветы вне сезона, и он СТРОГО ЛИЧЕН: декабрь не открывается для всех оттого, что одарили одну (проверено парой дел).
- Два дефекта юридической техники записаны нормами, а не примечаниями.
Золото мерится корзиной САМОГО соискателя — величина приходит из дела,
верхней границы указ не ставит вовсе (приём «Балды», где цена законна в
щелчках при неопределённой величине щелчка). «Тот, кто исполнит волю» не
различает собравшего и доставившего: база читает ДОСТАВКУ (буквальный текст
указа),
interpretationдобавляет СБОР, и на одном и том же деле — собрал один, доставил другой — они расходятся: без толкования награда причитается доставившему, с толкованием исполнителей оказывается двое на одну корзину. Базой стало буквальное прочтение сознательно: правило внутри интерпретации активно только при её выборе (§152/§157), и обратный порядок гасил бы буквальный смысл акта на каждом деле молча. - Измерено:
lawc checkчист, 72 узла CLIR, 9 норм, рукописных тестов §267 — 11/11 (включая пары по границе сезона и по личности дара),doctor.py«пробелов нет», разметка §218 полная (30/0 словарь, 10/0 нормы), вербализация без пробелов, 13 мёртвых символов (двенадцать месяцев и королева — константы закрытого перечня, читаемые толькоassert) вписаны вdocumentedс причиной на каждый, CLIR байтово стабилен при повторной генерации. Обе меры §33.1 неприменимы — байтов нет, деления на статьи у пьесы нет тоже, — поэтому записи вformalization-depth.jsonнет и быть не должно (приёмru/repka). Граница объявлена: акт покрыт.lawtest, но вне KZ-регрессии, и differential по обеим реализациям его не видит. - Leonard v. PepsiCo: первое судебное решение корпуса как акт (30.08.2026).
Заведён
corpus/laws/us/leonard-v-pepsico(us.sdny.leonard_v_pepsico) — мнение судьи Кимбы Вуд, 88 F. Supp. 2d 116 (S.D.N.Y. 1999): телеролик «Pepsi Stuff» с подписью «HARRIER FIGHTER 7,000,000 PEPSI POINTS» офертой не был. Байты — распознанный том репортёра из Caselaw Access Project (officiality unofficial,PINNED_UNOFFICIAL_COPY; артефакты OCR не правятся: фрагмент §194 обязан оставаться точной подстрокой публикации). Первая в корпусе единица деления «раздел мнения» (opinion_section) — её называет сам суд («See supra Section II.A.2», сноска 16). Составной номер «II.B.1» плоским выражением не собрать, а плоская метка «1.» стоит в мнении трижды, поэтому конвенция берёт выражением римские части, а буквенные и арабские разделы приходят объявлением акта (irregular_headings). Обе меры §33.1 научены этому одинаково; ради второйboundaries.pyперестал отказывать на паре «объявленная единица + нестандартный заголовок» — отказ сужен до единиц, чьи заголовки собираются без позиции в документе. Три самостоятельных основания одного отказа, разложенные так, что каждое валит требование в одиночку (LP-33A/B/C): общее правило Corbin «реклама — не оферта» как пара §115 с приоритетом §116 против двух исключений (Lefkowitz и Carbolic Smoke Ball); объективный тест разумного лица как канал §47.3 с органомCourt, замыкаемый ОТРИЦАТЕЛЬНЫМ ответом судьи Вуд через adjudicated assertion §73; и статут об обманах N.Y.U.C.C. § 2-201(1) презумпцией с изъятием, срабатывающей независимо от первых двух. Форма норм выбрана измерением, а не вкусом. Презумпция с изъятием на общем правиле дала быBOTH(дефитер презумпции обязан выводиться строго по всей цепи), промежуточный предикат «исключение сработало» — тожеBOTH(соперники разъезжаются по стратам §110/§111, и приоритет §116 молчит); обе формы проверены исполнением и заменены парой правил противоположной полярности в одной страте. Карта спора §274 показывает это как четыре ребраrebut: посылка определённостиREJECTED, выводSKEPTICALLY_ACCEPTED. Зеркальная пара кru-zolotaya-rybka— безразмерная оферта, принятая правом всерьёз, против конкретного предложения за 7 000 000 баллов, которое офертой не было. Третья нога контура отвергает 16 сертификатов из 28 ИЗВЕСТНЫМ дефектом §181.1 (candidate_closure— узел на кандидата, а не на конфликтную группу): тот же класс открыт наru/repka8 из 26 иkz/zhirenshe3 из 30, починка — errata оракула, а не правка акта. 44 сценария, differential 44/44 байтово, шесть рукописных тестов §267, разметка 76/0, охват текста 99,2 %, учёт разделов 19 из 19 при нуле неучтённых, §33.1 — EXECUTABLE 13, ANCHORED 3, SOURCE_ONLY 3 (три рубрики без собственного текста), UNEXPLAINED 0,doctor.pyбез пробелов. - Мнимое посредничество: конституционный контроль, не изменивший ни одного
исхода (30.08.2026). Заведён
corpus/laws/kz/sham-intermediary(kz.corpus.shamintermediary) — три инструмента и четыре закреплённых публикации: пункт 20 НП ВС от 27.11.2015 № 8 «О практике рассмотрения некоторых коррупционных преступлений» в ДВУХ редакциях (до и после поправки), проверившее его НП КС от 16.11.2023 № 35-НП и поправка НП ВС от 29.11.2024 № 6, эту проверку исполнившая. Первый пакет корпуса, где предмет конституционного контроля — не закон, а разъяснение высшего судебного органа: акт действующего права (ст. 4 Конституции), которому запрещено ограничивать права, потому что ограничения устанавливаются только законами (п. 1 ст. 39). Пара SHAM-11/12 переворачивает ответ одним фактом дела. Механизм противоположенpeaceful-assemblyи это ИЗМЕРЕНО. Там постановление признало норму конституционной В ИСТОЛКОВАНИИ и переменило исход в день вступления в силу; здесь пункт 1 признал её конституционной БЕЗ ОГОВОРОК, а пункт 2 лишь РЕКОМЕНДОВАЛ поправку — снимок исходов по обе стороны от 16.11.2023 совпадает целиком (SHAM-06/07), а расходится на дате 29.11.2024 (SHAM-08/09), когда Верховный Суд сузил антецедент. Пять объявлений мертвы по построению и названы вdead-symbols.jsonс причинами: правило вида «рекомендация → поправка» было бы ложью об устройстве права. Редакция до поправки взята снимком Архива Интернета (приёмqantar-2022); расходящиеся отношения разведены структурно (inducement_2020противinducement_2024), общими оставлены те, о которых редакции соглашаются. 14 сценариев, differential 31/31 байтово, Lean-ядро приняло 31/31 сертификат (зонд третьей ноги по одному акту), мёртвых правил 0 из 25, разметка 45/0, §33.1 — EXECUTABLE 2 из 2 в объявленном охвате,doctor.pyбез пробелов. Четвёртая находка, самая дорогая: приоритет, которому нечего разрешать, молчалив. Дефитер статьи 4 УК стоял против вывода самого Конституционного Суда, где конфликт невозможен по построению (полноту признаков Суд сделал условием своей нормы) — исход оставался верным, и ни одни ворота не краснели. Показал профиль §274: ноль атак при живом объявленном приоритете. Перенацелен на вывод РАЗЪЯСНЕНИЯ, где конфликт настоящий; поражаемое правило сталоdefeasible(LDC-E4105), а посылками дефитера — посылки побеждаемого правила (LDC-E4102 на цикл через отрицаемый предикат). Сценарий KZ-SHAM-NP35-05A проверяет теперь саму АТАКУ, а не только исход. Пятая:priorityбез@sourceпереживает своё правило — на дате, где побеждаемое правило снято вместе с редакцией, приоритет остаётся повисшей ссылкой (§116); назвал толькоimpact-editions. Якорь обязан быть ровно один: проекция оставляет узел при любом применимом якоре. Три отказа, найденные исполнением: локатор единицы у конвенции пункта остаётсяarticle/(написанный по смыслуpoint/20даёт «статьи не учтены» при живых нормах); мера §33.1 ищет «свою» карту статей по имени каталога и при четырёх документах молча берёт алфавитно первую — каталог действующей редакции переименован вsources/sham-intermediary/; текст фрагмента не может кончаться кавычкой (заголовок страницы портала склеивался с закрывающим"""и давал LDC-E0102 на следующей строке) — генератор теперь отказывает сам, называя фрагмент и правило.
Изменено
-
Постановление о переносе дней отдыха: замена заместителя настоящим актом и ТРЕТЬЯ живая пара делегационных ворот (30.08.2026).
corpus/laws/kz/rest-day-transfer-2026(учебный заместитель,ABSTRACT_ONLY, выдуманный номерREST-DAYS-2026) заменён наcorpus/laws/kz/rest-day-transfer-2023— постановление Правительства РК от 25.04.2023 № 326 «О переносе дня отдыха в 2023 году» (adilet P2300000326) с побайтово закреплённой публикацией (PINNED_UNOFFICIAL_COPY, преамбула и оба пункта фрагментами §194, извлечение воспроизводимо двумя прогонамиextract_source_text.pyна одном html). Замена, а не закрепление того же: постановления о переносе дней отдыха на 2026 год не существует. Проверено по adilet двумя независимыми способами — перечислением ВСЕХ актов Министерства труда за 2025 и 2026 годы через фасет издателя (168 документов, ни одного о переносе; фасет валидирован тем, что за 2024 год находит приказ № 436) и полнотекстовым поиском по операционным формулам серии. Серия жива, но сменила издателя: постановления Правительства шли с 1996 по 2023, с 2024 это приказы Министра труда — поправка к ТК от 19.04.2023 № 223-VII отдала перенос выходных «уполномоченному органу по труду» (п. 3 ст. 85). № 326 — последнее постановление серии, и потому единственный настоящий акт, на котором звено «закон → постановление Правительства» проверяемо вообще. Заместитель к тому же приписывал постановлению чужое правило: его два факта (21–22.03.2026 → 24–25.03) есть действие абз. 3 ст. 5 Закона 267-II («при совпадении выходного и праздничного дней выходным днем является следующий после праздничного рабочий день»), а настоящая серия занята переносами-мостиками. Факты переехали вkz.corpus.holidaysпод свой абзац с записанной подстановкой 2026 года;official_calendar_2026берёт их оттуда и больше не принимает второй пакет. Ни одна дата календаря не двинулась — изменился не результат, а его обоснование: провенанс каждого override ведёт кholidays#LAW_267_ART5, CIV-04 из цепочки трёх актов стала цепочкой двух, контракт MCP пиннит один акт вместо двух. Третья живая параcheck_delegation.py: № 326 против власти §127 п. 1 ст. 10 Конституционного закона «О Правительстве» — 81/81 (было 71/71), из них 7 новых проверок и 3 сценария differential кодов. Пара закрывает две дыры разом: СТУПЕНЬ (обе прежние пары одноступенчаты — приказ органа против власти закона) и первый живой случай holder-переменной (LDC-W5301до неё подтверждался только синтетической фикстурой). Диагностик две, обе предупреждения и обе верны:W5303(закреплена редакция закона с 01.07.2026, постановление издано 25.04.2023) иW5301. Границы объявлены в самом пакете: преамбула № 326 называет основанием п. 3 ст. 85 ТК РК, которого в корпусе нет, поэтому вbasisобъявлена ФОРМА акта (п. 1 ст. 10) — записанное суждение, а не цитата; издатель — глобальный URN §27.1 (urn:kz:gov:government), а не имя из пакета родителя, потому что holder — переменная и компромиссhealth-procurementне нужен. Собственный прогон акта — семействоrest_day_transfer(RDT-01 утверждённый перенос, RDT-02 обратное направление обязано бытьNEITHER, а неFALSE_ONLY); differential 2/2 байтово. Реестры:LOWERED_ACTS,PACKAGES/FAMILIESнового модуляcorpus/kz/acts/rest_day_transfer.py,scenario-ratchet(+2),scenario-manifest,label-ratchet,metadata-ratchet,dead-symbols(новыйholidays#rest_day_transfer— вdocumentedс причиной, почему нормы у него быть не может), образец рабочего стола, индекс реестра.doctor.py— «пробелов нет». -
DECISION-0060: раскладка
corpus/— корень по роду,tools/по назначению. Условие DECISION-0059 («перенос corpus/ — вторым этапом в полное тихое окно») выполнено: symlink-и сняты,git status --porcelain corpus/пуст. 155 чистыхgit mv:lib/(ratchet.py,clir_lock.py— импортируемые, без__main__),ratchets/(5 порогов и состав),slices/(5 порождаемых срезов),tools/{sources/fetch,sources/sync,checks,gen,lib}вместо 139 файлов в одном каталоге; два прозаических отчёта уехали в свои пакеты. В корне осталась публичная поверхность — 6 раннеров,gen_kz_clir.py,emit_lawtests.py.laws/не тронут. Ссылки — отдельным коммитом: климбыparents[N]в 132 файлах пересчитаны по фактической глубине пути, а не сдвигом на константу (глубина разная: +1, +2, +3); 6 разъехавшихся импортов соседа по каталогу; 342 путевых литерала в 107 файлах по карте из самих переименований git. Плоскими намеренно осталисьclir/(три*.calendar.jsonвходят вresourceUriузла CLIR — перенос меняет байты §208) иtests/(недомигрированный остаток конвенции «тесты в пакете»); разбор обоих — в решении. -
law.verb.kk@0.2.3: три фразы казахского пака говорили по-русски; заведена ступень 5 ворот — «текст на объявленном языке».assertion.head(«Факт: {atom}.»),doc.anchor(«Анкер: {anchors}») иdoc.node_id(«Идентификатор: {id}») совпадали сlaw.verb.ru@0.6.2байт в байт и несли русские СЛОВА в документе, который подписывает казахоязычный юрист. Класс — ровно тот, что DECISION-0032 §3 закрыл дляgapWhat(18 русских литералов в вызовахctx.gap): язык рендерера протекает в текст. Остальные четырнадцать совпадающих строк законны — структурные шаблоны без букв («({left} {op} {right})»,«{predicate} ({args})»). Стало: «Анықталған факт», «Дереккөз бекітпесі», «Сәйкестендіргіш». Тотальность §3.3 этого не видит по построению — она считает маркерыLDC-E8201, а чужой язык маркера не даёт: документ остаётся связным, подписываемым и неверным. Поэтому вместе с паком заведена ступень 5check_verbalization_totality.py: значение, совпадающее у паков РАЗНЫХ языков и несущее буквы вне слотов, объявляется утечкой; исключения — реестрSHARED_LITERALSс обязательной причиной, проверяемый в обе стороны (сегодня в нём одинJurisdiction→ «юрисдикция»: интернационализм, чью казахскую природу доказывает собственная форма барыс септіка «юрисдикцияға» вstdTypeForms). Проба алфавитом отвергнута замером: «обязана быть литера из әғқңөұүһі» даёт на ВЕРНОМ паке около двадцати ложных срабатываний («саны», «кем емес», «шама»), проба совпадением на том же паке — ровно три утечки и один законный интернационализм. Граница объявлена: ловится КОПИЯ, а не чужой язык вообще. Подъём — новый файл (packs/verb/README.md): одна строкаlaw.verb.kk@0.2.2не должна означать два текста, иначеstale_verbalization§3.6 перестаёт срабатывать. Четыре пина консьюмеров переведены (ворота,VERB_PACK_PATH_KK,verb-packs.tsвместе с подписью,_kk2в selftest-е), бандл оракула пересобран (87 файлов), замер после — 113 документов, 54 946 подписываемых блоков, пробелов 0 у всех девяти консьюмеров, пять канареек красные. -
Векторы
VER-KK-*переехали поимённо — и показали, что правило миграции работает на длинной дистанции. Все три стояли на0.1.0четыре подъёма подряд, и это было ВЕРНО, а не запущено:0.2.0/0.2.2только ДОБАВЛЯЛИ фразы,0.2.1правил текст §186, которого эти голдены не рендерят, — их байты под0.1.0и под0.2.2различались одной строкой (версией в шапке; замерено).0.2.3— первый подъём казахского пака, меняющий их байты:doc.node_idпечатается в КАЖДОМ блоке. ПереехалиVER-KK-L0-CALCиVER-KK-L1-DEFAULTS;VER-KK-GAP-FUNCTIONостался на0.1.0по правилу, которое держит иVER-RU-GAP-*, — он закрепляет отказ пака отfunction_decl, закрытый в0.2.0, и перевод на текущий пак стёр бы закреплённый отказ, а не обновил голден (инвариант 3). Долг объявлен:assertion.headиdoc.anchorне встречаются ни в одном из трёх казахских голденов (у их CLIR нет ни assertion, ни@source-анкеров), то есть две фразы из трёх сегодня держит только ступень 5, а не conformance. -
DECISION-0059 этап 2 закрыт: совместимые symlink-и сняты, раскладка под воротами. Миграция путевых литералов завершена (репо-широкий свип + дочистка), эхо-пути 24 CLI-голденов §208 переморожены на
verify/vectors/…синхронно с аргументами трёх гейтов (корректность доказана сверкой с живымlawc), все 18 symlink-ов удалены из корня. Новые воротаverify/ci/gates/repo/check_root_layout.py(шаг 46/46, с канарейкой): старое имя, воскресшее в корне, — громкий отказ с именем виновника. Первый пойманный отказ этого класса — самcheck_gate_wiring: егоgit ls-files -- ciпосле снятия symlink-а молча обнулился и ворота отчитались «0 проверок, OK»; pathspec исправлен наverify/ci. Откачены ложные срабатывания свипа внутри неизменяемых контекстов (release/0.1-kz-audit/examples,spec/conformance). -
Корень репозитория иерархизирован (DECISION-0059, 29.08.2026). 18 каталогов сгруппированы:
engines/{lawref,lawc,checker}— три ноги контура,verify/{vectors,ci,conformance}— доказательство эквивалентности,packs/{verb,demo,examples}— данные-пакеты,apps/{constructor,mcp,site, registry,registry-app,landing,site-prototype,editors,pilot}— потребители.spec/,release/иcorpus/остались в корне; corpus — намеренно (живая рабочая зона параллельных сессий: его перенос давал бы молчаливые отказы, тогда как перенос остального — громкие;local_pathзакрепления пакетно-относителен, байтовый контракт не тронут). На старых путях — временные совместимые symlink-и: старые команды работают, а запись пиров по старым абсолютным путям проходит сквозь них в новые места. Подняты на +1 все ROOT-вычисления от__file__в перенесённых деревьях (resolve()разыменовывает symlink),include_str!-пути lawc доspec/иrelease/, climb-пути shell-скриптов; workflows,.mcp.jsonи исполняемые пути скилла переведены на реальные пути. Пути-аргументы, эхом попадающие в конверты §208 (голдены), намеренно НЕ мигрированы — этап 2 с квалификацией, до него symlink-и не снимаются.
Добавлено
-
Протагор против Еватла (Авл Геллий, Noctes Atticae V.10) — первый пакет, предмет которого ПОРОК ДОВОДА, а не норма и не спор о факте (30.08.2026).
corpus/laws/la/protagoras-euathlus, пакетla.gellius.protagoras_euathlus; 16 параграфов главы закреплены байтово из ревизии 269232 латинской Викитеки, обе меры §33.1 сходятся (EXECUTABLE 10 + INTERPRETED 1 + ANCHORED 5, SOURCE_ONLY 0). Глава называется «De argumentis quae Graece ἀντιστρέφοντα appellantur», и тяжба софиста с учеником приведена в ней ПРИМЕРОМ; пакет поэтому не решает дело, а показывает оборачиваемость машиной. Главное утверждение — один вопрос, четыре ответа по выбору прочтения §152: NEITHER у базы, TRUE_ONLY при одной captio Протагора, FALSE_ONLY при одной captio Еватла, BOTH при обеих; и таблица СИММЕТРИЧНА по обеим ветвям приговора, то есть «utrimque pariter valet» (V.10.3) стало измеримым. Соперники в двух ветвях при этом разные — сценарий сторожит пару поимённо. Профиль §274 на том же деле даёт чётный цикл: ровно две атаки, grounded оставляет обе позиции невыведенными, preferred — ровно два расширения. Лейбницевское разрешение (De casibus perplexis in jure, 1666) воспроизведено без единой добавленной нормы: второй иск после первого приговора даёт TRUE_ONLY у базы и остаётся TRUE_ONLY даже при обеих выбранных captiones — их посылка (приговор по рассматриваемому делу) ещё не существует. ТРИ НАХОДКИ, КАЖДАЯ ИЗМЕРЕНА, А НЕ ПРЕДПОЛОЖЕНА. (1) Строгое правило с негативной головой не исполняется (NON_EXECUTABLE_RULE), а СМЕШАННАЯ форма (строгий позитив + поражаемый негатив) даёт TRUE_ONLY молча, без единого issue: формализатор решил бы дело за судей сменой служебного слова. Обе captiones поэтомуdefeasibleи без приоритета. (2) Асимметрия ответа в ветви «в пользу Еватла» оказалась артефактом СТРАТЫ — мутант сMercesExPacto defeasibleвернул в той же клетке BOTH. Починена содержательно: договорное правило обязано читать победу в тяжбе, ПРЕДШЕСТВУЮЩЕЙ той, по которой требуют плату, — то есть довод Лейбница записан посылкой нормы, а не выбором фактов сценария. (3) Редакция без единого события lifecycle получает состояниеnot_yetна любую дату, и машина D1 §31 снимает ВСЕ 22 правила из 22 при зелёномcheckи без единой диагностики; обнаружено процессным слоем, который проецирует всегда. Тяжба записана автоматом §160 (5 стадий, 4 перехода, структурных дефектов нет): две ветви приговора — разные стадии, как их разводит «sive … sive» обеих речей, и потому гард перехода связывает оба аргумента судейского предиката — канал §47.3 виден сквозь переход (вердикт JUDGMENT). Первый иск оканчивается приговором в пользу ученика и ОДНОЙ попыткой без правового эффекта §164 (требование Протагора), второй проходит тот же автомат другой ветвью без единой находки. 10 сценариев регрессии в двух семействах, 31 evaluate-вызов байтово идентичен у обеих реализаций (включая четыре запроса видаargumentation), 31 сертификат оракула и 31 сертификат движка приняты ядром Lean, пять рукописных тестов §267,doctor.py— «пробелов нет». Сценарии процессного слоя вынесены в отдельное семейство:lawref.processзовёт оракула мимо шваcorpus/kz/engine.py, и слейся они с делами — половина прогона молча вышла бы из-под байтового контракта. -
Глава 8 «Определение итогов голосования» (ст. 43–46) в
kz.corpus.elections— EXECUTABLE 17 → 21, сценариев 55 → 78 (30.08.2026). Пакет замкнул кампанию: подсчёт на участке, установление и опубликование итогов, регистрация избранных, удостоверения. Все четыре статьи главы стали исполнимыми. Первая ДЛИТЕЛЬНОСТЬ пакета — и она считается в МИНУТАХ. Ст. 43 п. 1: «Время подсчёта голосов … не должно превышать двенадцать часов с начала подсчёта». Измерено 30.08.2026: часовой терм отбрасывает дробную часть и даёт 12 и на 12 ч 00 мин, и на 12 ч 30 мин, и на 12 ч 1 с — подсчёт, шедший двенадцать часов с половиной, он объявил бы уложившимся в срок. Это класс erratы E-0058, увиденный на втором акте. Порог сравнивается в минутах, число двенадцать остаётся числом АКТА (шестьдесят — определение часа, а не юридическая величина); идиома взята из пакета Регламента (ЕС) 261/2004. ПараKZ-ELECT-56/KZ-ELECT-57стоит на ОДНОЙ МИНУТЕ и часовым термом была бы неразличима — то есть проверка не декоративна. Две власти §127 с ОДНИМ эффектом. Ст. 44 п. 1-1 и п. 2-1 дают признать проведение выборов на участке недействительным: Центральной комиссии — на выборах Президента и Курултая, территориальной — на выборах маслихатов, акима и иных органов местного самоуправления. Пробой подтверждено, что две власти с общим эффектом сосуществуют: каждая материализует свой узел, конфликта §127 нет. Контрольное делоKZ-ELECT-70показывает, что КРУГ ВЫБОРОВ — часть нормы: на президентских выборах у территориальной комиссии этой власти нет вовсе, и эффект не наступает даже при полном основании.valid_whenберёт РОВНО ОДНО предложение — конъюнкция в нём есть ошибка разбора (LDC-E0201, измерено пробой), а не молчаливая потеря. Поэтому двусоставное основание («нарушения И представление нижестоящей комиссии») сведено в промежуточный выводимый предикат, и он же сделал основание адресуемым отдельно от власти. Прочтение записано, а не сделано молча: «повторный подсчёт должен быть произведён до официального опубликования итогов» (ст. 43 п. 9) — условие ДЕЙСТВИТЕЛЬНОСТИ, а не иммунитет. Иммунитет §128 защищает держателя и текст его называет (как «не допускается» в ст. 89 п. 6 подпункт 4); здесь защищаемого нет, и назвать его иммунитетом значило бы выдумать держателя. ПараKZ-ELECT-66/KZ-ELECT-67сторожит это ПО КОДУ issue (POWER_INVALID_EXERCISE§127 противEFFECT_BLOCKED_BY_IMMUNITY§128): истинностное значение у обоих прочтений одинаковое, и по нему они неразличимы. Новые границы объявлены вслух: время суток не выражается ни на 18:00, ни на 20:00 начала подсчёта (ст. 43 п. 1) — извлечения часа из мгновения в замкнутом списке §58 нет; перечни учитываемых чисел (ст. 43 п. 4 и 4-1, ст. 44 п. 5) не заведены как символы без потребителя, но то, у чего исход ЕСТЬ, выведено (превышение извлечённых бюллетеней над выданными требует поимённой разбивки); ст. 46 п. 1 привязан к вступлению в должность — событию Конституции, а не этого акта. Обязанность §124.1 опубликовать заведена у ОБОИХ носителей, которых акт называет раздельно (Центральная комиссия — выборы Президента, территориальная — выборы маслихатов): позицияSATISFIEDпри опубликовании в срок иACTIVEпри опубликовании позже, потому что условием достижения стоит выводимая СВОЕВРЕМЕННОСТЬ, а не сам факт публикации — опубликование на одиннадцатый день обязанности не снимает. 25 новых сценариев, все парами; differential — 124 evaluate-вызова байтово идентичны (было 74), Lean-ядро приняло все 124. Второй сторож §130 без VIOLATED (KZ-ELECT-73, вскрытие урн) поставлен рядом с первым. -
Конституционный закон «О выборах в Республике Казахстан» (2464) —
kz.corpus.elections, 157 статей закреплённой редакции от 01.07.2026 (30.08.2026). Закрыта самая крупная бланкетная дыра корпуса: Конституция говорит о выборах отсылочно («в порядке и сроки, установленные конституционным законом» — ст. 41, 51, 54), конституционные пакетыpresident,kurultaiиcourtвыводят ценз кандидата и правило большинства, а сроков, взносов, барьера и допуска к распределению мандатов под ними не было вовсе. Обе меры §33.1 названы РАЗДЕЛЬНО и говорят разное: EXECUTABLE 17 статей (10, 20, 27, 32, 49, 53–56, 59, 65, 66, 85, 87–89, 97-1) при 157 фрагментах §194 на 157 статей и 98,5 % байтов публикации. То есть адресуем акт целиком, выводится из семнадцати статей; остальные 140 — не объявленные границы и не долг разметки, а честное «вне исполнимого среза». Закреплённый текст поправил три числа брифинга разведки. Барьер — ПЯТЬ процентов (ст. 97-1 п. 1 «пять и более», п. 2–3 «пятипроцентный барьер»), а не семь; избирательный взнос — в минимальных заработных платах (ст. 54 п. 2 — пятидесятикратный, ст. 88 п. 1 — пятнадцатикратный за каждое лицо списка), а не в МРП; квота тридцати процентов — по совокупности ТРЁХ категорий (женщины, молодёжь, лица с инвалидностью), а не одной. Акт САМ называет политику §86 — единственный такой случай в корпусе. Ст. 85 п. 3 договаривает оба поля, которых календарному шагу не хватает: «Моментом начала срока … является день введения в действие акта Президента» (start_count = same_day) и «срок истекает в последний день этого месяца» (month_end = last_day_of_month). Соседние акты берут то же из ГК РК (ст. 173, ст. 174 п. 3) как общий порядок; здесь умолчания не нужно, иKZ-ELECT-51стоит ровно на этом: роспуск 31.12.2026 плюс два месяца даёт 28.02.2027. Пара §127 ↔ §128 из ОДНОГО подпункта. Ст. 89 п. 6 подпункт 4) даёт комиссии власть отменить регистрацию партийного списка и тут же, последним абзацем, запрещает пользоваться ею за два дня до голосования — иммунитет, а не отрицание условия власти. ПараKZ-ELECT-52/KZ-ELECT-53различается ОДНИМ днём и сторожит по КОДУ issue: без приоритета §116 обе позиции несравнимы, ответ тот жеNEITHER, и случаи различает толькоEFFECT_BLOCKED_BY_IMMUNITYпротивUNRESOLVED_NORMATIVE_CONFLICT. Мост в закон о бюджете несущий: кратность МЗП — норма этого акта, тенге приходят изkz.corpus.budget::minimum_wage, год берётся из дела. На год без закона о бюджете правило не срабатывает, вместо того чтобы посчитать по вчерашней величине; убери импорт — три сценария перестанут иметь ответ. Границы объявлены вслух, а не оставлены пробелом: счёт преодолевших барьер (ст. 97-1 п. 2) — барьер полноты §111, и единственность приходит протоколом комиссии, которой п. 1 подсчёт и поручает; «в равной мере представляющих» (ст. 56 п. 2) не раскрыто самим актом; часы («восемнадцать часов по местному времени») срезаны до дней; деление на избирательное частное с остатками не выведено. 55 сценариев семействаelections, все парами по обе стороны порога — кворум 5 из 7 против 4 из 7, срок комиссии от 29.02.2024 (28.02.2029, а не 01.03), агитация за два дня против агитации за один день, 51 из 100 против 50 из 100, пять процентов против четырёх, четыре полосы шкалы взноса на своих границах, список 130 при 100 мандатах против 131. Differential — 74 evaluate-вызова байтово идентичны; Lean-ядро приняло все сертификаты. -
Конституционный закон «О судебной системе и статусе судей Республики Казахстан» (132-II) —
kz.corpus.judicial_system, 77 статей закреплённой редакции от 01.07.2026 (29.08.2026). Пара к соседнему пакету о Конституционном Суде: вместе они закрывают судебную власть целиком. Закрыты ДВЕ бланкетные отсылки Конституции, о содержании которых она сама молчит: пункт 3 статьи 80 («требования, предъявляемые к судьям, определяются конституционным законом») и пункт 3 статьи 83 (судебные коллегии). Обе записаны вkz.constitution.courtполномочиями §127 с предметом (DetermineJudgeRequirements,EstablishJudicialCollegia), а адресат объявляет их своимbasis/regulates§27.1 — до этого обе отсылки вели в текст, которого в корпусе не было. Обе меры §33.1 сходятся: EXECUTABLE 65 из 77 статей, 2 адресуемы фактами-утверждениями о самом акте (5 и 58), 77 фрагментов §194 на 77 статей при 96,6 % байтов публикации. Десять статей объявлены границей вarticles.jsonс проверяемой причиной: девять исключены изменяющими актами и нормативного текста не имеют, одна (36) — отсылка к Закону «О Высшем Судебном Совете», которого в корпусе нет. Три L3-механизма: полномочия §127 (образование судов Президентом, избрание судей Верховного Суда Курултаем, назначение судей местных судов, отмена возложения обязанностей), иммунитет §128 статьи 27 в паре §127/§128 и канал суждения §47.3 на оценочных основаниях дисциплинарной ответственности статьи 39. Дисциплинарное производство — автомат §159–§164 (10 стадий, 11 переходов, структурных дефектов нет) с возвратом дела на повторное рассмотрение по пункту 4 статьи 44-1. Таблица решений A3 — шкала компенсаций статьи 54 пункта 3 (law.decision/0.1,law.lock0.2, канарейка E8704 проверена правкой sidecar без lock). Двенадцать сценариев регрессии, 45 evaluate-вызовов байтово идентичны у обеих реализаций, 45 proof-графов приняты ядром Lean (183 шага правил, safety §190 у всех 183), четыре рукописных теста §267. Подтверждён на новом акте известный класс (записан 28.08.2026 на Принципах Нюрнберга): канал суждения §47.3 не поднимается через ПОРАЖАЕМОЕ правило — одно и то же тело подstrictдаёт REQUIRES_JUDGMENT с типизированным запросом органу, подdefeasible— COMPUTED/NEITHER и ни одного запроса, без единого issue. Здесь он встретился ровно там, ради чего §47.3 заведён: оценочные основания стоят в норме с изъятием. Обход — документированный мост: ступень, несущая канал, вынесена в отдельное строгое правило (вернее и по тексту — часть третья подпункта 1) говорит об УСТАНОВЛЕНИИ факта вышестоящей инстанцией), поражаемая ответственность стоит над ней, обе стороны границы закреплены сценарием. Делегационная цепочка на конституционном уровне НЕ замкнута и это названо: основание, предмет и издатель разрешаются, темпоральное звено отказываетLDC-E5305— у пакета источников Конституции ДВАsource_work(редакции 1995 и 2026), а v1-цепочка требует ровно один. -
Конституционный закон «О Конституционном Суде Республики Казахстан» (153-VII) —
kz.corpus.constitutional_court, 67 статей закреплённой редакции от 01.07.2026 (29.08.2026). Пакет закрывает БЛАНКЕТНУЮ ОТСЫЛКУ Конституции: ст. 72–75 пакетаkz.constitution.courtговорят «организация и деятельность Конституционного Суда устанавливаются конституционным законом», и до этого пакета отсылка вела в текст, которого в корпусе не было. Заведён ОТДЕЛЬНЫМ актом, а не подпакетом Конституции: мера §33.1 не спускается в подкаталог со своимlaw.toml, и восемь существующих подпакетов Конституции ровно поэтому не мерит ни одни ворота глубины. Обе меры §33.1 сходятся: EXECUTABLE 66 из 67 статей и 67 фрагментов §194 на 67 статей при 95,0 % байтов публикации. Единственная неисполнимая статья — ст. 40 «Государственная пошлина», у которой в закреплённой редакции остался один заголовок; она объявлена исключённой вarticles.jsonс командой проверки. Заявленная ДО НАЧАЛА глубина (40–45 статей) оказалась заниженной: главы 3–4, объявлявшиеся «ничего не выводящими», несут иммунитет §128, обязанность органов внутренних дел, шкалу компенсаций и семь величин со сроками — проверено чтением текста. Три L3-механизма разом: полномочие §127 (итоговое решение создаёт правовой эффект — акт прекращает действие, срок подписания возобновляется), иммунитет §128 в двух местах (неприкосновенность судьи ст. 11 и необоримость решения повторным принятием акта ст. 62 п. 2, где пара §127/§128 записана целиком) и канал суждения §47.3 на усмотрении ст. 45: «непосредственно затрагивает права» и «признаки нарушения» решает Суд, и до его решения ответ — REQUIRES_JUDGMENT с типизированным запросом, а не «нет». Конституционное производство глав 8–10 записано автоматом §159–§164 (10 стадий, 12 переходов, структурных дефектов нет) с журналом дела, где §164 предъявлен парой шагов: одно и то же действие даёт ATTEMPT_WITHOUT_EFFECT и эффект, различает их гард. Шкала компенсаций ст. 15 п. 3 — таблица решений A3 (law.decision/0.1,law.lock0.2; канарейка E8704 проверена правкой sidecar без обновления lock). Проверено: 8 сценариев регрессии, 19 evaluate-вызовов байтово идентичны у обеих реализаций, 19 proof-графов приняты ядром Lean, 3 рукописных теста §267,doctor— «пробелов нет». -
Разведение склеенных заголовков в
extract_source_text.py(29.08.2026). Adilet положил «Глава 6. ОБЩИЕ УСЛОВИЯ … Статья 29. …» в один<h3>, и статья 29 исчезала разом из нарезки фрагментов и из учёта §33.1 при зелёномlawc check. Извлечение разводит такую склейку само и ГРОМКО (разведённые печатаются), и только когда конвенция документа этого требует: у этого акта 66 из 67 заголовков открывают свой блок, склеен ровно один. Аддитивность ИЗМЕРЕНА: все 28 закреплённых документов корпуса, воспроизводимых из хранимого HTML, дают те же байты. -
doctorвидит экземпляр шаблонаpinningвторым родом генератора (29.08.2026). До правки пакет на шаблоне объявлялся пробелом «в пакете есть GENERATED-блок, но генератора нет», а совет («завестиsync_<акт>_fragments.py») уводил бы его С шаблона обратно на рукописный скрипт — против DECISION-0060. Блок такого пакета пересобирается и сверяется шагомlawgen.py pinning --all --checkв конвейере; канарейка на различающую силу добавлена в самотест. -
Конституционный закон «О Правительстве Республики Казахстан» (2688) —
kz.corpus.government, 29 статей закреплённой редакции от 01.07.2026 (29.08.2026). Пакет заведён РАЗДЕЛЕНИЕМ ТРУДА сkz.constitution.government, а не копией: конституционный пакет уже выводит статус, подотчётность, перечень ст. 65, несовместимости и два десятидневных срока, поэтому здесь стоит механика, которой в Конституции нет вовсе — большинство и две трети ОТ ОБЩЕГО ЧИСЛА членов (ст. 10 п. 2), кворум заседания (ст. 18 п. 4), периодичность (ст. 18 п. 1), формы актов и их отмена, звено делегации к министерствам и ведомствам. Повторяющие Конституцию статьи 8 и 9 заведены ЯКОРЯМИ, и перечень компетенции ст. 9 — закрытием §70, а не восемнадцатью strict-правилами: из закрытия выводится ст. 22 п. 2-1 (самостоятельность министерства вне компетенции Правительства), чего ни один набор правил-перечислителей не дал бы. Мера §33.1: EXECUTABLE 22, ANCHORED 2, EXCLUDED 5 из 29; регрессия 8/8, differential 24 вызова байтово, разметка §218 полная, мёртвых правил и мёртвых символов ноль. Самая интересная норма — временное постановление, имеющее силу закона (ст. 10 п. 1–2): полномочие §127 возникает из внесения законопроектов, а порог в две трети стоит вvalid_when, поэтому недостача голосов даётPOWER_INVALID_EXERCISE, а не молчание. -
DECISION-0062, фазы Ф0–Ф3: инверсия реестров корпуса — обязанность по свёртке, исключение строкой (29.08.2026). Защита реестров была несимметрична: выпавшая строка — громкий отказ, невписанная — молчаливый ноль. Два новых ворот делают молчание невозможным по построению:
check_corpus_enrollment.py(шаг 32/46) перечисляетcorpus/laws/**/law.tomlиcorpus/kz/acts/*.pyС ДИСКА и требует, чтобы каждый улежавшийся пакет был лоуверен либо исключён с причиной, каждаяrun_*-функция — вписана в таблицы раннеров, а ключ реестра без предмета был отказом (неулежавшееся дерево — NOTE, механикаsettled_acts);check_sync_wiring.py(шаг 3/46) вменяет каждомуsync_*_fragments.pyобязанность--check+ строку в конвейере (SYNC_OUT— 15 генераторов без режима сверки, список точный: отрастил--check— обязан впаяться). Найденный при заведении долг погашен, а не перенесён в baseline: сняты мёртвые записиCLIR_PACKAGES(labor_calendar,incoterms_group_c), два ключаPACKAGE_TITLESпереехали на пост-миграционные имена (eng-locke-second-treatise,su-molotov-ribbentrop), четыре генератора с--checkвпаяны в шаг 6 — трое были КРАСНЫ (шапки.lawнесли пути до DECISION-0059; фрагменты перегенерированы, CLIR байтово цел). Храповики затягиваются сами:tighten_ratchetвcorpus/lib/ratchet.pyподнимает полscenario-ratchet.jsonна полном прогоне (floor := max, новые семейства вписываются, понижение не пишется никогда, на неулежавшемся дереве — пропуск строкой; подключены все четыре раннера),check_label_coverage.py --registerвписывает/затягивает один пакет по образцу ворот глубины (новый — только с нулём неразмеченного, ослабление — отказ),--writeворот глубины отказывает при грязныхcorpus/lawsилиcorpus/clir(полная перезапись фиксировала чужой mid-edit). Канарейки — 6 мутаций у enrollment, 3 у sync-wiring, каждая роняет свою сверку. Тем же днём — Ф4-переходная и Ф5. ТаблицаACT_RUNNERSзаменена агрегацией декларацийFAMILIESиз модулейcorpus/kz/acts/*.py(registry.py786 → 365 строк): семейство объявляется рядом со своим раннером, новый акт центральных таблиц не правит; 95 семейств перенесены вместе с построчными комментариями, сверка «агрегат == литерал HEAD» — точное совпадение по семействам, функциям и порядку пакетов. Свои пары «имя → CLIR» модуль объявляет вPACKAGES;CLIR_PACKAGES(общие) иANCHOR_RUNNERS(уровень дела) остались литералами. Громкость удаления переехала из import-а в ворота полноты: семейство храповика без декларации и двойная декларация — отказ (канарейка — 9 мутаций); AST-читатели (doctor, ворота полноты) переведены на декларации, живые импорты не тронуты. Ф4-переходная: выводимость имени CLIR из пути — на каждой записиLOWERED_ACTS; снятие литерала — после зелёного периода. Проверено: частичная регрессия,check_kz_differential --only(байтово),check_scenario_manifest,test_doctor,check_evaluate_seam. Вечером — Ф7 и Ф6 (MCP-трек). Обзорlaw_packagesРАВНОМЕРЕН: каждый акт — заголовок, строка метадаты и одна счётчик-строка с адресом детали; пороги 10/6/12 иCATALOG_BUDGET79 600 сняты вместе со свёрточной механикой (ватерлиния была функцией СОСТАВА корпуса: новый акт сворачивал чужие блоки и ронял пины контракта у нетронутых пакетов при запасе 430 Б; теперь 70,8 КБ при 120 актах, добавление акта не меняет чужих строк). Шесть пинов развёрнутости контракта переехали в деталь/query; проба свёрнутых констант — заголовком перечня, не значением (первым свёрнутым стал de-surrender-1945 с константой «DE», совпавшей подстрокой в «DECISION-0062»). Титул акта — композитный (core.package_title): название/юрисдикция/статус из[metadata]манифеста (соединение по имени акта, выводимому из пути — опора на Ф4),EXECUTABLE N— рендером из базы глубины §33.1; девять консьюмеров переведены, 2,6-КБ эссе перестали уезжать в каждый ответlaw_askи остались аннотацией детали каталога и фолбэком (без источника титула — один порождённый пакет против тринадцати «без титула»). Попутно закрыт пробел: calc-путьlaw_askмолча ронял документированный аргументpackage(факты и агрегатыover); подсказка теперь мягкая, как у фактов, — рост корпуса (family_memberво втором пакете) как раз сделал это видимым. Бандл рабочего стола пересобран,check_engine_bundleзелен; контракт MCP — 182 проверки OK. -
Сайд-канал спанов вербализации: тултипы витрины адресуются структурой рендерера, а не регулярками (29.08.2026).
verbalize()теперь отдаёт в каждом блокеspans— офсеты (в кодовых точках) переменных, имён параметров, меток отношений и перекрёстных ссылок с типизированными нагрузками: рендерер знает, куда поставил каждый слот, и говорит это сам. Маркеры снимаются до хэширования — подписанный текст и contentHash байтово не зависят от канала ни при каком паке (замер по всем документам корпуса под семью паками до/после); офсеты запинованы голденамиVER-RU-L0-PARAM-ALIAS/VER-KK-L0-PARAM-ALIAS, сверку ведётrun_vectors.py. Первый потребитель — витрина:build_readme.pyпишет.spans.jsonрядом с каждым изложением, страницаapps/registry-appоборачивает фрагменты в спаны до markdown-рендера (с проверкой каждого фрагмента и молчаливым пропуском при рассинхроне) — «Л» получает тултип «Л — Лицо, переменная v0», непереведённое имя параметра называется именем источника, наведение подсвечивает все вхождения переменной в пределах блока (v0 соседнего правила — другая переменная, области не склеиваются). -
law.verb.ru@0.7.0/law.verb.kk@0.3.0: словарь имён параметров и краткие обозначения переменных — вербализация перестаёт мешать языки (29.08.2026). Скобка аргументов читалась протоколом на двух языках разом: «(person: Пользователь v0, day: дата v1)» — имена параметров ехали в текст идентификаторами автора пакета (меток §218 у ParameterDecl нет), а переменные — компиляторскимиvNс повторением типа при каждом вхождении. Оба пробела закрыты ДАННЫМИ пака, не семантикой рендерера: словарьparamNames(38 общих имён по частотному замеру корпуса: person → «лицо» / «тұлға»; имя вне словаря честно остаётся идентификатором) и флагvariableAliases— биндер вводит инициал метки типа и называет канонический id ровно один раз («Для Лица Л (v0); даты Д (v1)»), дальше вхождения не повторяют тип («лицо: Л»); занятость инициала даёт нумерацию («Л2»), связь с блоками norm_template, говорящими каноническими vN, держится скобкой биндера. Рендерер под младшими паками байтов не меняет — замер по всем 119 документамcorpus/clirпод пятью старыми паками до и после правки. Закреплено голденамиVER-RU-L0-PARAM-ALIAS/VER-KK-L0-PARAM-ALIAS(в т.ч. деградация имени вне словаря — «basis» — рядом с переведёнными). Переведены все восемь подвижных пинов консьюмеров (ворота ×2, MCP ×2, витрина, CLI оракула, argmap, рабочий стол ×2 + пересборка бандла); паспорт Конституции (0.4.0) и пилот (0.1.1) отстают законно, по записанным причинам. Ступень 5 ворот расширена на разделparamNames; семь совпадающих заимствований («орган», «акт», «лицензия», «депутат», «президент», «субъект») вписаны вSHARED_LITERALSс опорой на узус kk-редакций. Попутно сняты два молчаливых отказа ворот, вскрытых прогоном: реестрCONSUMERSимпортировал паспорт Конституции по домиграционному пути (corpus/toolsвместоcorpus/tools/gen, DECISION-0060), а кодоген протокола рабочего стола считал корень четырьмя..вместо пяти (DECISION-0059 перенёс constructor вapps/) и падал «нет каталога схем» на каждом прогоне ворот 29/45 — с регенерацией одного дрейфанувшего типа (package-manifest.ts) и галереи шаблонов. -
Тарханный ярлык Сахиб-Гирея (1523): первый пакет группы
kazan— и измеренное сужение иммунитета за 125 лет жанра (пакетkazan.corpus.sahib_girey_1523, 9 сценариев, 6.lawtest, differential байтово 33/33). Единственный сохранившийся документ канцелярии Казанского ханства: подтвердительный тарханный ярлык семерым во главе с Шеих-Ахмедом. Та же пара «иммунитет §128 против полномочия взимать §127 под явным приоритетом §116», что у ярлыков Орды, но перечень одиннадцати изъятий закрыт БЕЗ residual-оговорки Тимур-Кутлуга — и тамга, названная адресной формулой самой грамоты («сборщикам тамги»), с тархана ВЗЫСКИВАЕТСЯ: SG-04 против GHY-01 на одном взимании. Санкция — эвфемизм без названного последствия («им самим будет хуже»), записана правилом; прежнее тарханство и челобитье — фактами-пересказом, не правилом: хан жалует словом, а не автоматом. Закрепление — новый для корпуса случай: у фотокопии публикации Мухамедьярова (1967) нет текстового слоя, байтыru.txtдал свой OCR с запиненными версиями tesseract/pymupdf; квирки распознавания ОБЪЯВЛЕНЫ (--auditроняет «тихую починку» буквы), нумерация 1—23 признана издательской разметкой физических строк свитка — единицы деления нет, акт честноunmeasured, мерой остаются байтовая доля (99,8 %) и сценарии. Дата — по источнику (13 сафара 929 г.х. = 2 января 1523), а не по ходячему «1 января / 919 г.х.»; подлинник объявлен редакцией UNAVAILABLE. Новая юрисдикцияKazanKhanateвписана в словарь ворот. -
Әмеңгерлік: свод расходящихся свидетельств об одном обычае (пакеты
kz.corpus.amengerlik,kz.corpus.kalym_1920,he.torah.levirate; 21 сценарий, differential байтово 57/57). Казахский левират не кодифицирован — текста, который можно было бы назвать его редакцией, не существует, — и пакет не формализует «обычай», а строит СВОД СВИДЕТЕЛЬСТВ (приёмmng/yasa). Свидетелей три, и байты пиннятся только у одного: энциклопедическая статья (ревизия 3319943 казахской Википедии, 5 строк); двух других свод читает ИМПОРТОМ — очерёдность призыва уkz-tuystyq(ст. 10), имущественные доли вдовы уkz-karamola(ст. 51). Ради этого в обоих заведена публичная поверхность (девять и пять объявлений; до тогоpubу них не было ни одного), и это не экономия: свод существует ради РАСХОЖДЕНИЯ, а расхождение доказуемо только когда обе стороны исполняются своим кодом — перепиши он доли к себе, сравнивал бы себя с собой. Расхождение выводится, а не примиряется: статья не даёт ушедшей вдове ничего, ереже 1885 года даёт восьмую часть скота при детях, и сценарий AMENG-05 требует ответа «свидетели расходятся», а не выбора одного из них; приоритет §116 здесь был бы дописанной коллизионной нормой, которой обычай не знает. Решение рода — канал суждения §47.3 с органом НЕ-судом (ру ақсақалдары), названным закреплённым текстом. Первый в корпусе межпакетный мост, переносящий СУЩНОСТЬ: до него все такие мосты были нульарными (kz-pd→kz-constitution-rights,leges-xii→de-legibus), а здесь одна переменная связывает предикаты двух чужих пакетов с РАЗНЫМИ типами лица и на исполнении унифицируется. Мир сценариев склеен из пяти документов — тоже впервые. Пара к нему по сравнительной оси —he.torah.levirate(Втор 25:5–10, KJV из того же Гутенберга #10, что и декалог; разбор книг и стихов ИМПОРТИРУЕТСЯ уfetch_decalogue_text.py, а не копируется): 6 стихов из 6 EXECUTABLE, обязанность деверя и запрет вдове двумя позициями §127 разом, фикция о первенце, цепь отказа с халицей. Один институт, две несовместимые деонтики: Тора ЗАПРЕЩАЕТ вдове уйти, адат назначает уходу ЦЕНУ, иincompatible_deonticsэто выводит. Сходятся они ровно в одном месте — оба числят ребёнка за умершим, — и оба выразили это ФИКЦИЕЙ. Третий пакет —kz.corpus.kalym_1920, декрет ЦИК и СНК Киргизской (Казахской) АССР от 28.12.1920 «Об отмене калыма» (закреплённая ревизия 4912418 Русской Викитеки; 5 пунктов из 5, глубина EXECUTABLE 4 + ANCHORED 1): первый советский акт корпуса на казахской территории и первый, отменяющий институт обычая, а не правящий его. Единственное число акта — двойной размер конфискации — считается головой правила §58; граница обратной силы ВЫЧИСЛЯЕТСЯ (та же уплата до и после 28.12.1920 даёт разные ответы); «не свыше одного года» записано ПОТОЛКОМ, а не сроком — органа, определяющего меру, декрет не называет, и канала суждения там поэтому нет. Әмеңгерлік он по имени не называет ни разу, и связь институтов утверждает свод под своим именем, а не подсовывает декрету. Три пробела свода объявлены и ВЫВОДЯТСЯ, а не умолчаны: ни один из трёх закреплённых свидетелей не сообщает, что первым призывается МЛАДШИЙ брат; об условиях, гасящих обязанность (старость вдовы, малолетство аменгера, беременность); о возврате калыма при уходе за пределы рода. Всё это знает литература, и формализовать это значило бы выдать пересказ за запись — то самое, ради чего свод и построен. Два молчаливых отказа найдены исполнением и записаны в местах, где стояли:definition§151 не имеет биндера, и экзистенциальная переменная в её теле даёт LDC-E1322 уlawc lowerпри ЧИСТОМlawc check(ноль диагностик);pub§24 проверяется на понижении, а не наcheck— ссылка на невыставленный символ проходитcheckмолча и падает LDC-E1105 уlower. -
Пословицы как нормы: юридический пласт сборника Даля (пакет
ru.dal.poslovitsy0.2.0, 44 сценария + 18 рукописных и 44 порождённых теста §267, differential байтово 44/44). Первый пакет, где НОРМАМИ записаны сами пословицы — взглядkz.corpus.qara-soz(Абай судит пословицы как нормы) доведён до исполнения. Закреплены четыре раздела второго издания (1879) по фиксированным ревизиям Викитеки (fetch_poslovitsy_texts.py, извлечение воспроизводимо, пометы самого Даля «(зак.)»/«(стар.)» сохранены в байтах); 33 фрагмента-строки. Механика по классам: «Без суда не казнят» — пара запрет/разрешение с приоритетом lex specialis, неосуждённому казнь FALSE_ONLY (право запрещает, а не молчит); «Не пойман — не вор» — презумпция конструкциейpresumption, дефитер — строгий факт поимки; «Уговор дороже денег» / «деньги лучше уговора» — встречная пара, записанная САМИМ Далем в одну строку: честный BOTH при установленной неуплате, но не при одной неизвестности оплаты; «Повинную голову и меч не сечет» и «По дважды за одну вину не карают» — вырезы lex specialis из общей кары; «Холоп на боярина не послух» — Даль сам даёт провенанс («Прав.» Яросл.) — народная память Русской Правды рядом с её формализациейkz.corpus.russkaya-pravda; «Кто в деле, тот и в ответе» рядом с «Брат брату головой в уплату (стар.)» — третий ответ корпуса на «кто платит за чужой вред» после дикой виры и кругов туыстық, напряжение несут далевские пометы, а не выдуманный приоритет. В 0.2 добавлены надзор за судьёй, право быть выслушанным, суд по закону, третейское соглашение, пары иерархии доказательств, ошибка и условие сделки, прощение кары и верховная компетенция миловать. Пометы «(стар.)» и «в крестьянстве» стали условиями применимости, а исполнение обещания привязано к обещавшему: чужое исполнение его обязанность не закрывает. Молчание — тоже предмет: ответственность постороннего и дочь без братьев — NEITHER;peregovoryмёртв намеренно («Переговор — не уговор») и записан вdocumentedреестра мёртвых символов. Дескриптивная лирика разделов правилами не записана сознательно — выжать из неё норму значило бы выдумать то, чего в тексте нет. -
«Бата и теріс бата»: перформатив, закрепляющий чужие акты, и проклятие-отлучение (пакет
kz.corpus.bata, 42 сценария, differential байтово). Второй акт корпуса без памятника-текста послеtuystyqи первый, чей предмет — УСЛОВИЕ ДЕЙСТВИТЕЛЬНОСТИ ЧУЖОГО АКТА. Бата закрепляет құдалық:power§127, у которогоover— сама СДЕЛКА, а не лицо (форма проверена пробой; §127 условия «over — лицо» не ставит). Закрепление гасит презумпцию возможности отступить и открывает подсудность — «онсыз құдалық заңды болып саналмай, дау қаралмаған». Теріс бата поражает презумпцию принадлежности к жұрт составом из четырёх членов, выписанным одним предложением записи. Оба полномочия несут строгих ДВОЙНИКОВ: эффект §127.2 невидим поражаемому слою (DECISION-0021 §4.3), а поражаются здесь именно презумпции, и без двойников закрепление сделки не погасило бы возможность из неё выйти при полностью зелёномcheck. Источники — девять энциклопедических записей (jurisdiction "none",PINNED_UNOFFICIAL_COPY, закреплённые ревизии) против ТРЁХ обычаев (jurisdiction KZ,ABSTRACT_ONLY, условная шкала @1000-01-01 сin_force). 57 фрагментов порождаютсяsync_bata_fragments.py, из них 23 — вторым срезом тех же байтов с локаторами обычаев: без второго рода якорей проекция as-of §31 сняла бы каждое нормативное правило (цена измерена на Кощее). Срез мельче строки — по предложениям: семь записей из девяти суть один абзац на весь акт. Записи РАСХОДЯТСЯ, и расхождение выведено, а не сглажено. «Теріс бата» знает одного держателя — отца над своим ребёнком; «Бәддұға» говорит о старших вообще. Пакет их не примиряет: состав выводится только для круга, подкреплённого обеими записями, а для дяди остаётся NEITHER — и называет причину предикатомholder_outside_corroborated_circle. Развилка прочтений решает исход на одних и тех же фактах. Спорно слово «мұндай» в «Мұндай қарғыс алған адамдарды жұрт өз қатарына алмайды»: узкое прочтение относит отлучение к материнскому акту (соседство фраз), широкое — к обеим тяжким формам («Бұл — АТА-АНАСЫНЫҢ … жазасы»). Базой стало узкое, потому чтоinterpretation§114 умеет только ДОБАВЛЯТЬ правила; широкое вынесено вBroadCurseScopeReadingс двумя записями вinterpretation-gated.json. Сцены OTL-05 и OTL-06 обязаны расходиться. Три ходячих следствия отлучения НЕ выводятся, и это проверено рабочим механизмом. Ни одна из девяти записей не связывает проклятие ни с наследственной долей, ни с кругом кун, ни с әмеңгерлік. Доля переживает проклятие (OTL-08), хотя ТА ЖЕ презумпция снимается полученным при жизни енші (ENS-06) — то есть отрицательный ответ получен работающей осью, а не её отсутствием. Ходячее «до бата сделку можно бросить без последствий» тоже опровергнуто самим источником: до бәтуа платят ат-тон айып (BAT-06). Отзыва нет, и это сказано, а не выведено из молчания. «Бұл жаза, қарғыс алынбайды» — единственное место девяти записей, где об отмене говорится вообще. Предиката прощения в пакете нет, у автоматаQargysZholy(6 состояний, 5 переходов, ДВА терминала) нет обратных рёбер, иlawref loopholeна цели «вернуться в жұрт» отвечает пусто за 400 вызовов — содержательный ответ, а не вырождение: нормы в проекции стоят, автомат на журналеbir-otbasy.jsonисполняется (§164 на попытке дяди и на попытке отлучения из отцовского терминала). 11 рукописных.lawtest;boundaries.pyмера по статьям неприменима (энциклопедическая запись единицы деления не имеет) — в базе глубины пакета намеренно нет. -
«Туыстық жүйе»: ст. 13 «Құдалықтың бұзылуы» — ветви срыва сговора и судьба қалың мал (пакет
kz.corpus.tuystyq). Авторское изложение дописано (новая ст. 13, прежние «Границы» стали ст. 14; байты перезакреплены, фрагменты перегенерированы идемпотентно), процедураQudalyqвыросла до 4 состояний / 4 переходов — второй терминалSogovorBuzyldySatyи переход с каждой нетерминальной ступени. Четыре причины прекращения (отказ каждой из сторон, смерть каждой из сторон до проводов) — расщеплением §206; «до проводов» несёт САМ ФАКТ (uzatuga_deyin_qaytys_boldy), а не отрицание —notнад незаявленным empirical в строгом теле давал бы NEITHER на каждом деле; судьба қалың мал — пара положительных квалификаций под гардом ступениsogovor_qalyn_mal: до передачи оба вывода честно NEITHER, о кит и жасау источник объявляет молчание сам. СценарииTUYS-40…44на отдельном мире; регрессия 44/44, KZ-differential 140 вызовов байтово; глубина §33.1 EXECUTABLE 11→12; полы разметки 100→109 / 93→105; журнал «Айман–Шолпан» пересчитан (96/105, девять уцелевающих правил). Попутноcorpus/tools/checks/doctor.pyпереведён наrglobпри поиске sync-генераторов: после DECISION-0060 нерекурсивный глоб видел ноль скриптов и объявлял «фрагменты рукописные» всем пакетам. -
Печать Каина: §127 ↔ §128 целиком, и три способа сломать пару МОЛЧА —
corpus/laws/he/mark-of-cain/, пакетhe.torah.cain. Быт 4:8–24 и 9:5–6 (KJV, тот же Гутенберг #10, что Декалог и Суд Соломона; нарезка на стихи заимствована у закрепления Декалога, а не повторена). Фоновое полномочие кровной мести против иммунитета знамения — акт, целиком помещающийся в одну пару норм, и потому пригодный как испытательный стенд самой пары. Три вещи, которых в корпусе не было. (1) Иммунитет против НЕОГРАНИЧЕННОГО круга. «lest ANY finding him» —againstсвязанной переменной по тому же конечному домену, что держатель полномочия; двое встречных в одном деле дают ДВЕ блокировки. Замерено, что поле не декоративно: движок сверяетagainstсholder-ом власти, и мутант, сузивший круг до самого держателя, блокировку теряет (CAIN-11). До этогоagainstстоял у 2 иммунитетов корпуса из 82 и ни одним сценарием не проверялся. (2) §128 блокирует ПРЕВРАЩЕНИЕ, не деяние — видно на одном деле: убившему Каинаblood_shed_by_manдаёт NEITHER, аvengeance_owed(·, 7)— TRUE_ONLY. Санкция 4:15а сторожит физическоеslewименно потому, что правовое последствие заблокировано; множитель считается в голове правила (SevenfoldMultiplier * OrdinaryVengeance), где единица шкалы — возмездие 9:6, иначе «семикратно» повисло бы без операнда. (3) Похвальба Ламеха — попытка без правового эффекта §164: POWER_INVALID_EXERCISE, позиция не возникает; контрдело показывает, что дело в полномочии, а не в имени. Множитель Ламеха — 77 («seventy and sevenfold» закреплённых байтов), НЕ 490: чтение «семьдесят раз всемеро» идёт от Мф 18:22 и в Быт 4:24 KJV отсутствует. Найдено заведением и закоммичено исполнением: иммунитет, посылка которого есть эффект ДРУГОГО полномочия, опаздывает на круг. Порядок круга —norm_lifecycle→materialize_effects→strict_closure: строгие правила эффект видят, а создание позиций идёт ДО материализации, и знамение приходит после того, как месть уже материализовалась. Отказ абсолютно молчалив —check/lowerчисты, обе позиции ACTIVE, приоритет на месте, и НЕТ ни EFFECT_BLOCKED_BY_IMMUNITY, ни UNRESOLVED_NORMATIVE_CONFLICT. Обе реализации согласны БАЙТОВО, поэтому differential слеп по построению. Квалификация по инварианту 8: не дефектlawcи не дефектlawref— обе следуют одной модели круга; вопрос к §127 («evaluator проверяет отсутствие применимого immunity» — молчит о том, какого круга) вынесен как кандидат в errata, ядро 0.1 не тронуто. В акте применён записанный обход (строгое правило рядом сpower, гард дословно повторяетvalid_when), парность закреплена сценарием CAIN-10, а сам дефектный режим — мутантом CAIN-06. Тем же способом закоммичен второй молчаливый режим — иммунитет безpriority§116 (CAIN-07, UNRESOLVED_NORMATIVE_CONFLICT). Приёмка: 11/11 регрессии, KZ-differential 16/16 байтово, третья нога (Lean) 16 сертификатов оракула + 16 движка, 84 листа, 38 шагов правил, safety §190 на 40 применениях; 4 авторских.lawtest§267 и 13 эмитированных; глубина §33.1 — Быт 4: EXECUTABLE 4 / ANCHORED 2 / SOURCE_ONLY 11 из 17 стихов (девять границ с причиной), Быт 9: EXECUTABLE 1 / ANCHORED 1 из 2. Проклятие 4:11–12 СОЗНАТЕЛЬНО оставлено видимым пробелом, а не объявлено границей: ворота закрепления отвергли бы 4:12 («shall not», «When»), но пропустили бы 4:11 — архаичное «art thou cursed» английский набор признаков не знает, и зелень по слепоте набора хуже честного пробела. -
corpus/emit_lawtests.py: тождество программы сверяется по СОДЕРЖАНИЮ узлов, а не по множеству их идентификаторов. Прежняя проверка (node_ids(ir) != node_ids(clir)) отсеивала СОСТАВЛЕННЫЕ раннером программы (шире пакета) и была слепа к правке payload НА МЕСТЕ: сценарий, исполняющий мутанта с тем же составом узлов, проходил её и давал эмитированный тест, который спрашивает право у ЗАКОММИЧЕННОЙ программы, а ожидание несёт от МУТАНТА, — заведомо красный тест, порождённый молча. Найдено первым мутантом такого рода (CAIN-11): тест эмитировался и падал «truth_status == TRUE_ONLY: в документе NEITHER». Отпечаток берётся изcontentHash§202, при его отсутствии — из канонических байтов узла (ветка «хэша нет» не схлопывается вNone == None, чем и был отвергнутsemanticHash). Замер на соседнем семействе:zheti_zhargy79/79 без потерь. Заодно мутантыmark_of_cain.pyприведены к дисциплинеcheck_zheti_mutations.py— пересчётcontentHashправленых узлов иsemanticHashдокумента плюс preflight по схеме: мутант со старым хэшем есть документ, противоречащий сам себе, и обе реализации исполняют его не поморщившись. -
§168.2 + хвосты §168.1: оси политик в контексте дела и полный числовой литерал — эмиссия
zheti_zhargyдошла до 79/79, ноль вне выразимого подмножества (DECISION-0058 П2/П3 + хвосты П1; T153…T156, LDC-E1325). Три работы одним заходом. (1) Оси политик:interpretation <Reading>;(повторяемо → отсортированныйoptions.selectedInterpretations; существование прочтения проверяет исполнение — обе реализации уже отвечали issue, довод DECISION-0036 §4) иon_accepted_conflict halt;(единственное значение E-0001; опечатка — ошибка LDC-E1307, не молчаливо инертная политика). Блокoptionsиз черновика решения отменён измерением: пример §168 сам пишетinterpretationв контексте, E-0001 называет контекст носителем, грамматика форму уже парсила — менялось только понижение; раннеры не тронуты вовсе. Приёмка — zh-100 «Жеті жарғы»: первый авторский тест, выбирающий прочтение на языке нормы (base NEITHER ↔ TRUE_ONLY подGeneralLivestockValuationReading), оба раннера зелёные. (2) Знак — часть числового литерала: парсер принимает-60,-26.0,-100.00 KZT,(-3 / 2)(знак в числителе, канон E-0005); операции-xнад не-литералом в срезе по-прежнему нет — граница названа в §168.1. До правки отрицательных числовых литералов у поверхности не было ВООБЩЕ. (3) Обманка закрыта целиком: прочие вычислимые термы в ground-позициях (1 + 1,1.0 / 8.0, вызов,if, агрегат) отвергаютсяLDC-E1325— перепись корпуса и векторов дала ноль живых носителей (6332 const_ref + 1056 value), радиус пуст;Instant§19 печатается рендерером (понижение уже работало). Векторы T153 (evaluate + петля дела) / T154 (static) / T155 (evaluate:-3/2,-60, мгновение) / T156 (static: E1325 дважды); T153/T155 в SUPPORTED — differential 136/136; юнит-тесты lowering; Lezer-грамматика редактора приняла все новые формы без правки (1567 файлов).deadline_policy(П2а) отложен с измеренными блокерами: политика — словарь,DeadlinePolicyне разрешается компилятором (разрыв std-паритета §257), record-литерал в case-const не парсится; записано в решении. -
Жиренше шешен: довод как единица права —
corpus/laws/kz/zhirenshe/, пакетkz.corpus.zhirenshe. Третий слой линии казахского права: «Жеті жарғы» даёт нормы, «Қарамола ережесі» — решения, здесь предметом стал сам ДОВОД, потому что суд биев не имел ни кодекса под рукой, ни протокола. Источника-акта нет: предание бытовало устно, редакцияZHIRENSHE_ORALобъявленаUNAVAILABLE, закреплены байты четырёх записей о нём (казахская, русская и две кыргызские статьи вики — каждая отдельнойsource-работой), и записи расходятся о державе, веке и родстве Карашаш. Расхождение выводится правилами, а не описывается: обе стороны спора подкреплены (две записи против двух), внешней проверки нет, и оба факта — заключения (unresolved_by_corroboration,no_external_arbiter). Профиль §274 даёт ЧЕТЫРЕ класса ответа §274.6 и впервые на живом акте — last-link §274.4 через приоритет, процитированный из источника: на одном делеattestedSKEPTICALLY_ACCEPTED,not attestedREJECTED. Регрессия 10/10, differential 33/33 байтово, вербализация без пробелов; учёт статей §33.1 честноunmeasured(единицы деления у источника нет). Инструменты:corpus/tools/fetch_zhirenshe_texts.py(закреплённые ревизии вики, контракт среза по числу строк и дословным краям) иcorpus/tools/sync_zhirenshe_fragments.py(18 фрагментов, локатор кодирует свидетеля и строку). Три сертификата отвергнуты доверенным ядром — известный класс §181.1, новой разновидности (головы противоположной полярности дают дваcandidate_closureс однимconflictKey); квалификация — дефект обеих реализаций, разбор в шапке04-performance.law. -
Сюжет о смерти Кощея (СУС 302) в пяти записях Афанасьева —
corpus/laws/ru/koschei/, пакетru.afanasyev.koschei. Первый акт корпуса, где предметом регулирования является само условие ПРЕКРАЩЕНИЯ субъекта: «бессмертие» есть презумпция, поражаемая составом «носитель назван — достигнут по цепи вместилищ — уничтожен». Первый ИСЧЕРПАЕМЫЙ иммунитет («первый раз тебя прощаю… а в третий берегись»), выраженный агрегатом по предшествующим погоням. Первый свидетель, который ЛЖЁТ и от лжи отрекается. Пять записей — № 156, 157, 158 «Кощей Бессмертный», № 159 «Марья Моревна», № 269 «Царевна-лягушка» — расходятся о цепи (4, 5, 6 и 7 звеньев) и сходятся о носителе 3:1; ходячей сводной цепи нет ни в одной. Добыча носителя выражена процессом §160 (9 стадий, 10 переходов, один дословный откат). Регрессия 32/32, differential 32/32 байтово, 32 сертификата приняты ядром Lean, 8.lawtest. Инструменты:corpus/tools/fetch_koschei_texts.py(срез записей по разделам закреплённых ревизий Викитеки),corpus/tools/sync_koschei_fragments.py(29 фрагментов из закреплённых байтов,--checkв воротах). ПравопорядокTridesyatoeвписан вJURISDICTIONSрядом с диегетическимиThebesиOkiyanMore.
Добавлено
-
«Айман–Шолпан» как ПАРА сценариев к двум памятникам одного правопорядка: молчание одного акта измерено речью другого (15 сценариев,
ZH-AYMAN-01…06+KAR-AYMAN-01…09). Лиро-эпическая поэма XIX века — сюжет про исполнение права: набег Котибара на аул Мамана с угоном скота и увозом просватанной Айман есть эксцесс барымты, степной самопомощи во исполнение притязания. Своего пакета у поэмы нет и не заводилось: она не нормативна, и её место — дело, задаваемое чужим сводам (приём Алдар-Косе,ZH-ALDAR-*). Барымты в «Жеті жарғы» нет ни словом — ни отношения, ни составаOffenceKind, ни признака открытости или заявленного основания; при этом свод САМ объявляет тонаушылық предметом своего ведения (regulated_here(Robbery)= TRUE_ONLY, ZH-AYMAN-01), и цена этого заявления — ноль выводов (ZH-AYMAN-02). Граница «правомерная барымта / кража» целиком в руках составителя дела:theft_of—kind empirical, её не выводит ни одно правило, и тот же угон, названный кражей, даёт полную меру (ZH-AYMAN-03). Самое дорогое из найденного — захват ЧЕЛОВЕКА свод разбирает как кражу вещи, и отказать ему нечем: identity §8 есть пара (nominal type, stable_id), тип приходит от СЛОТА, а не от строки, поэтомуentity_ref("urn:zh:person:ayman")в слотеAssetcontextually И ЕСТЬ имущество — за просватанную дочь Маману причитается двадцать семь голов возврата, как за шубу, при нуле issue (ZH-AYMAN-04/05). URN — проза, не право; провести границу «скот / люди» можно только НОРМОЙ, и её в своде нет. Та же фабула, заданная «Қарамола ережесі» (1885), получает ответ по каждой оси: ст. 41 знает барымту, но уже как запрещённую — угонщик назван «ұры», выше двадцати лошадей свой режим (потолок три тоғыз, пол в доброго коня, KAR-AYMAN-01/02), ниже отсылка к ст. 37, то есть кража; крупный угон кражей НЕ становится (KAR-AYMAN-03) — различие идёт по числу голов, а не по открытости или притязанию, и той самой границы, на которой держится поэма, акт не проводит. Ст. 31 разбирает случай Айман почти дословно («Біреу айттырылған жесірді алып қашса…»): 50 жыртыс, возврат отцом ранее полученного калыма, защита женщины от принуждения (KAR-AYMAN-04…06), причём признак просватанности несёт всю тяжесть — без него ни один платёж не выводится (KAR-AYMAN-07). Ст. 7 знает бітім условием действительности, а не пожеланием: примирение без засвидетельствования силы не имеет (KAR-AYMAN-08/09). Измерено: 177 evaluate-вызовов двух семейств байтово идентичныlawref↔liblaw_ffi, 15 новых.lawtest§267 зелены, полы храповика подняты (zheti_zhargy73→79,karamola89→98). -
Процессный журнал «Айман–Шолпан» к процедуре
Qudalyq— и найденный им разрыв: единственная процедура адата в корпусе процессным слоем НЕ ИСПОЛНЯЕТСЯ (corpus/laws/kz/tuystyq/journals/ayman-sholpan.json). Поэма устроена как ход дела по ступеням сговора ст. 11 абз. 6, и юридическое содержание набега выражается попыткой без правового эффекта §164: увозя просватанную, Котибар совершает ВНЕШНЕ то же, что ұзату, — невеста покидает аул отца, — а обычай различает их не по видимому действию, а по ступени, потому что переходUzatuвыходит только изQalynMalBerildi. Прогон на закоммиченном пакете красный, и краснота есть результат: проекция §31/D1 снимает с ЛЮБОЙ даты 88 правил из 93 — все заякоренные, — потому что редакцияTUYSTYQ_RUне объявляет ниadopted, ниin_force; уцелевают ровно пять, которые компилятор породил из самойprocedureи потому не заякорил. Что журнал при этом ВЕРЕН, доказано контрольной пробой (в дерево не коммитится): тому же журналу против того же CLIR с дописаннымin_forceпроцедура проходит как поэма — две попытки §164 на набеге и на условиях Айман, эффект на бітім и на ұзату,NekeZhasaldyдостигнуто, находок ровно две. Регрессия этого не видела и не могла: сценарии TUYS-34…38 зовутevaluateнапрямую, минуя проекцию. -
lawref process-run: снятое проекцией называется вслух (NORMS_NOT_IN_PROJECTION, DECISION-0052 §8). Инструмент забирал уedition_projectionтолько проекцию и выбрасывал второе возвращаемое значение — состояния редакций и список снятых узлов. Следствие было молчаливым и ровно того класса, против которого стоит весь слой: разбор блокеров §185 честно печатал «не закрыто:X», и это неизбежно читалось как пробел ДЕЛА, тогда как нормы, способной закрытьX, на дату кадра не существовало вовсе. Находка называет дату кадра, число снятых ПРАВИЛ из общего (фрагменты иsymbol_declне считаются — на вывод не влияют, в одном числе с правилами были бы шумом) и состояние каждой неприменимой редакции; кадры с одинаковой потерей сливаются в одну строку. Оркестрация, не семантика (инвариант 5): читается уже возвращаемое значение, ни одного нового вычисления. Проверяется ОБЕИМИ половинами канареечного принципа вcheck_time_axes: на дате, где проекция ничего не снимала, находки быть не должно. Сразу же дала результат на закоммиченных журналах:qantar-2022различает кадры 05–11 января (4 снятых правила) и 19 января (13 — указы 725/726closed,SOVBEZ_ED2022not_yet);istanbul-draft-2022теряет 136 правил из 149, то есть заявленная в его$commentпричина неэффективности подписания (неустановленныйtreaty_signed_by_required_majority) — не операптивная;minsk-package-2015не теряет ничего (контроль). -
«Сказка о попе и о работнике его Балде» (Болдино, 1830) формализована — первый акт корпуса, чьи РЕДАКЦИИ расходятся в самом носителе обязанностей, и первый договор найма с неденежной отсроченной ценой (29.08.2026, пакет
ru.pushkin.balda,corpus/laws/ru/balda-1830/). Три источника и три их рода: свидетель — сама сказка (байты по СС в 10 т., ГИХЛ 1959—1962, т. 3 на РВБ, 188 стихов, воспроизводимое извлечениеcorpus/tools/fetch_balda_text.py); ПРЕДМЕТ — сам устный договор найма, заключённый на базаре (ст. 13—24), у которого нет ни текста, ни правопорядка; свидетель ЗАМЕНЫ — примечания С. М. Бонди (закреплённая ревизия Викитеки). Правопорядка нет ни у одного из трёх (jurisdiction "none"), и в отличие от «Сказки о рыбаке и рыбке» здесь нет даже диегетического порядка: суда сюжет не знает вовсе, спор кончается самопомощью — поэтому орган канала суждения §47.3 назван условно, и это сказано словами, а не подразумевается. Редакции расходятся в НОСИТЕЛЕ обязанностей, и это заводится впервые: авторский текст (напечатан по рукописи лишь в 1882 году под ред. П. А. Ефремова) даёт нанимателем попа, подцензурная переработка В. А. Жуковского 1840 года — купца Кузьму Остолопа. Сословие поэтому вынесено в ДВА РАЗДЕЛЬНЫХ отношения, а не в одно общее: записанный шрам корпуса — общее отношение под двумя edition-специфичными правилами молча доставляет факт одной редакции в правило другой. Ось проверена ИСПОЛНЕНИЕМ, а не заявлена: проекция §31 на 1850 год оставляет ТОЛЬКО купца (BALDA-20/21/22 — договора с попом на эту дату НЕТ, а срок расплаты купца течёт), на 1900-й поп возвращается (BALDA-23). Байтов редакции 1840 года у корпуса НЕТ, и это названо: машиночитаемой копии «Сына Отечества» на устойчивом адресе нет, воспроизведения в сети издания-источника не называют вовсе, поэтому редакция объявленаUNAVAILABLE, её единственный фрагмент несёт толькоlocatorиlabelбез строкиtext(приём «Қасқа жолы»), а дословная формула замены цитируется из закреплённых байтов примечаний. Цена неденежная и отсроченная: год службы поваром, конюхом и плотником за три щелчка по лбу —Quantityс единицейshchelchok, неMoney; срок — шаг календарного семействаadd_calendar_period, и политика §86 (start_count = same_day) записана как ВЫБОР, которого в сказке нет. Предмет найма закрыт §70 тремя ремёслами, поэтому «сбор оброка с чертей в предмет не входит» — вывод FALSE_ONLY, а не молчание (BALDA-08); из него выводятся выход за предмет и свобода работника не исполнять §125. Добросовестность поручения решает НЕ АКТ: оценочная гарда отдана каналу суждения §47.3 с типизированнымBadFaithPetition(BALDA-11), и показание попадьи о намерении («И Балду-то без расплаты отправишь», ст. 52) канал НЕ закрывает — ответ остаётся REQUIRES_JUDGMENT (BALDA-12);bad_faith_purpose_allegedобъявлен и не читается ни одним правилом — вписан вcorpus/dead-symbols.jsonС ЭТОЙ причиной, а не связан мостом. Фикция наступления срока названа единственным местом пакета, где норма ПОСТРОЕНА, а не прочитана: сказка излагает теорию уклонения устами попадьи и ОПРОВЕРГАЕТ её исходом, но случая неисполненного поручения не испытывает вовсе (Балда исполнил); общая доктрина п. 3 ст. 157 ГК РФ НЕ ввозится — это норма другого акта. Форма —fiction … strict, потому что обе дороги кpayment_term_reachedобязаны остаться строгими: презумпция на общем предикате пометила бы LATE_STATUS_PRODUCER’ом всё отношение и сломала бы strict-читателей. Расчёт — автомат §160 из четырёх состояний: третий щелчок до первых двух есть попытка без правового эффекта §164 (журналjournals/third-flick-first.json, вердикт FINDINGS, обязанность платить остаётся ACTIVE), три по счёту дают CLEAN и SATISFIED. Измерено: 13 фрагментов авторской редакции, байтовое покрытие 62,7 %; мера глубины по статьям НЕПРИМЕНИМА и говорит это словами (деления на статьи у сказки нет, записи в базе глубины нет — как у «Рыбки» и «Репки»); 30 правил и 4 деонтические позиции (одна достижительная обязанность, две поддерживающие, одна свобода §125 — считано поgoal.kind, а не по модальности), мёртвых правил 0, разметка §218 полная (unlabelled: 6— ровно шесть узлов десугаризации §160, тот же пол, что у всех пакетов с процедурой); 24/24 сценария, все 24 evaluate-вызова байтово идентичны (liblaw_ffi == lawref); 8 авторских.lawtest;doctor.pyбез пробелов. -
«Вершки и корешки» (ATU/СУС 1030) — первый акт корпуса, чьим ПРЕДМЕТОМ является неэффективность поправки (пакет
ru.afanasyev.vershki_koreshki,corpus/laws/ru/vershki-koreshki/). Три источника и два их рода: свидетели — Афанасьев № 23—26 (ревизия Викитеки по изданию Наука, 1984, Лит. памятники, т. 1, с. 34—38) и Гримм KHM 189 «Der Bauer und der Teufel» (7-е издание 1857 года, две страничные ревизии); предмет — сам устный договор о разделе урожая, чьи ДВЕ редакции закреплены срезами свидетеля (приём «Скотного двора»), связаны ребромrevision … amendsи датированы условной шкалой @1000/@1001. Правопорядка нет ни у одного из трёх (jurisdiction "none"): суда сюжет не знает, санкция — самопомощь, и диегетический правопорядок вроде Окияна-моря приписал бы сказке институт, которого в ней нет. Главное утверждение вычислено решёткой 2×2, а не заявлено: две редакции × две культуры дают ЧЕТЫРЕ разных исхода, и «медведь проигрывает при любом раскладе» ЛОЖНО — при КАЖДОЙ редакции есть культура, при которой ценность достаётся ему (VK-02, VK-04). Проигрывает он потому, что поправил переменную РАЗДЕЛА, тогда как лазейка L8.2 сидит в переменной ВЫБОРА КУЛЬТУРЫ, которой договор не связывает ничем;chose_cropобъявлен и не читается ни одним правилом — вписан вcorpus/dead-symbols.jsonС ЭТОЙ причиной, а не удалён. Ноль VIOLATED при дважды сорванной цели: обязанность передать отведённую часть в обоих исторических годах SATISFIED (VK-05/VK-06), буква соблюдена дословно. Санкция подвешена к суждению, а не к нарушению: обман — канал §47.3 сauthority AggrievedParty(потерпевший сам себе судья — формальная запись самопомощи), без суждения REQUIRES_JUDGMENT с типизированнымDeceitPetition, с суждением §73 санкция выводится целиком ПРИ НУЛЕ нарушенных норм. Измерено: 16 сценариев регрессии и 16 evaluate-вызовов байтово идентичныlawref↔lawc, 6 рукописных.lawtest, мёртвых правил 0 (фаззер: 8 правил из 8 доказанно применились), разметка §218 — 30 объявлений и 10 норм, неразмеченных ноль, покрытие байтов свидетеля 22,5 % (10 фрагментов из 16),doctor.pyбез пробелов. Глубина §33.1 по статьям неприменима (сказка без деления) — записи в базе нет, и это решение. -
Три отчёта аналитического слоя L8 на этом же пакете, и ДВА из трёх отрицательны содержательно.
impact-editionsдаётSEMANTIC-CHANGE,added=5, removed=4, «исход изменился: 2» — и изменились ровно КОНТРФАКТИЧЕСКИЕ сценарии (year-one-wheat: TRUE_ONLY → NEITHER,year-two-turnip: NEITHER → TRUE_ONLY), тогда как оба исторических не изменились вовсе: текст поправлен, право изменилось, исход тот же.amendпоправки НЕ находит при ИСЧЕРПАННОМ пространстве (exhausted: true,editSpaceTruncated: false, 8 операций): механический перебор L8.3 умеет только снимать и переупорядочивать (remove_rule,drop_effective,add_priority,remove_priority), а нужное медведю есть ДОБАВЛЕНИЕ нормы — то есть отсутствующую норму нельзя починить перестановкой присутствующих.loopholeпутей не находит по ГРАНИЦЕ ИНСТРУМЕНТА, и отчёт называет её сам (alphabetTruncated: true): кап алфавита в 24 атома расходуется атомами арности 1—2 над пулами типов, и до трёхместногоtook_own_part, которым и совершается раздел, перебор не доходит ни разу — обобщение: акт, чьё оперативное действие имеет арность ≥ 3, поиску L8.2 v1 при нынешнем капе недоступен. -
Найдено исполнением и изолировано отдельной пробой: канал суждения §47.3 обрывается на НЕсудейском конъюнкте со свободной переменной. Цепочка «суждение → мост → потребитель» даёт
REQUIRES_JUDGMENT, когда у потребителя все переменные блокируемого литерала связаны его головой, иCOMPUTED/NEITHER— когда одна из них существует только в теле. Это НАЗВАННАЯ граница v1, а не дефект:whynot.judgment_blockers(DECISION-0036 (б)) перечисляет по активному домену ТОЛЬКО судейский конъюнкт, всякий иной со свободной переменной остаётся вне разбора, и код говорит это прямо. Практическое следствие для формализации: предикат-мост обязан нести в голове потребителя все свои аргументы, иначе запрос отвечает обычным молчанием открытого мира — ровно тем, что §47.3 заведён отличать. -
Найдено и починено на том же пакете: норма, заякоренная ТОЛЬКО во фрагментах свидетеля, снимается проекцией as-of §31 на любую дату, и
impact-editionsпечатает верный отчёт о пустоте. У сказки нет и не может бытьin_force; до расширения срезов редакций проекция оставляла ОДНО правило из семи и четыре утверждения из десяти, а «исход изменился: 0» читалось как «поправка ничего не изменила». Починка — редакция договора пиннит и уговор года, и его исполнение, а нормы заякорены в редакциях, свидетель идёт дополнением. Смежный класс уже был записан на Стамбульском проекте («акт без in_force опустошает проекцию as-of»); здесь он проявился у акта, который в силу ВСТУПИЛ, но чьи нормы висели на ненормативном источнике. -
«Репка» (СУС 2044) в трёх закреплённых записях — первый акт корпуса о коллективной каузальности (пакет
ru.narod.repka,corpus/laws/ru/repka/). Афанасьев № 89 (1863), Ушинский (1864), Гатцук (1894) — три свидетельства одного обычая без установителя и без дат: устная редакцияUNAVAILABLEрядом с тремяPINNED_UNOFFICIAL_COPY, окон действия нет сознательно (проекция as-of неприменима, и это названо, а не умолчано). Записи расходятся в СОСТАВЕ (9 мест с пятью но́гами и без мышки у Афанасьева; 6 у Ушинского; 9 у Гатцука, где последнее место — у ВАНИ, «имени того, кому сказывается сказка») и в ПРИВЛЕЧЕНИИ (у Афанасьева участники приходят сами, и незва́ный состав правомерен; у двух других непривлечённый — изъян состава). Связность цепи «внучка за бабку, бабка за дедку, дедка за репку» — транзитивное замыкание через monotone-реброsupported§110, второе в корпусе и первое, проверенное отрицательными сценариями: разрыв одного звена оставляет всех за ним тянуть воздух. Полнота состава — двойное отрицание (агрегат по выводимому уперся бы в барьер §111), оба правилаnot_knownобъявленыdefeasible(соstrictони молчали бы на каждом деле — проверено исполнением). Обратный пересчёт Афанасьева, закрывающий его эллипсис «(и так далее до пятой но́ги)», записан одним comprehension с конъюнкцией внутри: сценарий RP-09 предъявляет шестерых посторонних при шести неподвижных перечисленных — числа сходятся, две независимыеcountобъявили бы состав удостоверённым, и тест обязан молчать. Обязанность «призванный становится за призвавшим» — достижение с открытым окном (неисполненная стои́т ACTIVE, не VIOLATED). Спор «кто вытянул репку» — профиль §274 тремя ярусами подрыва без единогоpriority. Измерено: 25 фрагментов, покрытие байтов 99,3—99,7 %, глубина по статьям неприменима (объявлено вarticles.json), 21 норма, мёртвых 0, разметка §218 полная; 34/34 сценария, 34/34 evaluate-вызова байтово идентичны, 5/5 авторских.lawtest,doctor.pyбез пробелов. Байты источников закрепляетcorpus/tools/fetch_repka_texts.py(ревизии Викитеки поoldid), фрагменты порождаетcorpus/tools/sync_repka_fragments.py(шаг вci/run_all.sh) — у Афанасьева ударения набраны комбинирующим U+0301 и стои́т его собственный знак сомнения «(?)», которые набранный руками фрагмент потерял бы молча. -
Дефект §181.1 предъявлен девятикратно и квалифицирован:
candidate_closureперечисляет не всех применимых кандидатов. Lean-ядро отвергает 8 сертификатов «Репки» из 34 (все — запросыargumentation) с одной причиной:allApplicableCandidateIdsсодержит только тот кандидат, что поддержал вывод, тогда как §181.1 требует всех. Срабатывает, когда одну голову с одной подстановкой выводят ДВА правила. Квалификация (инвариант 8): дефект оракула, не расхождение реализаций — differential байтовый,law-evalведёт себя так же, починка меняет байты обеих и потому требует errata. Класс заведён НЕ этим актом: прямой обход графов даётvalikhanov2 узла,repka18,leviathan/us-declaration/animal-farm/qantar-amnesty/criminal-code— ноль. Акт под ядро не переписан: три позиции, отвечающие на один вопрос одним литералом, и есть карта спора §274. -
corpus/tools/doctor.pyперестал объявлять вложенные пакеты «без генератора». Связь «sync-скрипт → пакет» бралась захватом ОДНОГО сегмента пути (corpus/laws/([A-Za-z0-9._-]+)), верным, пока корпус был плоским; после группировки по правопорядкам ключом становился «ru» вместо «ru/repka», и каждый вложенный пакет с генератором получал строку «фрагменты рукописные — кандидат в шаблон pinning». Утверждение ложное и молчаливое: «·», а не «✗». Теперь кладутся все префиксы пути; проверено наkz/alash-orda,intl/general-average,kz/procurement(генератор виден) иru/zolotaya-rybka(генератора действительно нет). -
boundaries.pyперестал печатать «фаза 0 не выполнена» пакету с закреплёнными байтами под неканоническими именами. У «Репки» три документа (af-1863.txt,ush-1864.txt,gat-1894.txt), и поиск по спискуru.txt/kk.txt/en.txt/fr.txtих не находил — мера сообщала об отсутствии закрепления вместо «мера неприменима». Лечится картойarticles.jsonв формеeditions(DECISION-0026), которая называет документы поимённо; отсутствие единицы деления объявлено в ней явно, с причиной. -
§168.1: деление целочисленных литералов в ground-позиции — запись Rational-значения, а не мёртвый терм (DECISION-0058 П1, LDC-E1324, T151/T152). Разведка исполнением показала форму-обманку:
assert share(2/1)парсился и понижался в binary-терм, который обе реализации хранили синтаксически — он совпадал сам с собой и никогда со значением из правила или дела (матрица перекрёстных форм: NEITHER в обе стороны при полностью чистой статике; живой носитель — молча мёртвыйassert sheep_value(Qoi, 1 / 1)«Жеті жарғы»). Теперь lowering сворачивает форму в каноническое Rational-значение §35 в аргументах assertion §71 (пакет, дело,givenтеста §267) и literal-аргументах запросов §172; канон E-0005 требуется ОТ АВТОРА — неканоническая пара отвергаетсяLDC-E1324с показом канонической формы (вычисляющая свёртка отвергнута решением: второй вычислитель, инвариант 5); rule-позиции не тронуты, там/— операция §58. Prose — §168.1; векторы T151 (evaluate + петля.lawcase → lower-case, до свёртки красен измеренно) и T152 (static, код дважды:10 / 4и3 / 0); юнит-тестground_rational_fold_168_1; T151 в SUPPORTED, differential 134/134. Рендерер эмиссии научен печатать Rational формой(n / d)и заодно перестал печатать отрицательные числовые литералы всех видов — у поверхности их нет (унарный минус только в-infinity§20), и тест с-60не разобрался бы; причина пропуска называет границу поимённо. Эмиссияzheti_zhargy: 56/73 → 71/73, каталог 72/72lawc test; CLIR «Жеті жарғы» перегенерирован — прежде мёртвый assert ожил. Остаток П1 (Instant/Duration в терм-позиции, унарный минус, громкий отказ прочим вычислимым термам) записан в DECISION-0058 §2.1. -
Ворота свежести вложенных движков рабочего стола: браузер обязан исполнять ТОТ ЖЕ оракул, что лежит в дереве (шаг 26/45,
ci/gates/hosts/check_engine_bundle.py).constructor/apps/workbench/public/engine/oracle-bundle.json— сгенерированный артефакт, который никто не пересобирает при правкеlawref/, и до 29.08.2026 на него не ссылался ни один шаг конвейера (ноль упоминаний во всёмci/). Замер до правки: 23 из 99 вложенных файлов разошлись с рабочим деревом — включая вычисляющее ядро (evaluator/{document,rules,strict,defeasible,norms}.py),resolver.py,verbalize.py, нормативнуюpackage-manifest.schema.jsonи сам мост воркера, — аmcp/law_mcp/engine_ffi.pyв бандле отсутствовал вовсе: разошлись и байты, и СОСТАВ. Признака в ответе нет ни одного (документ канонический,bundleHashсходится сам с собой, полоса зелёная) — класс «протухшего процесса MCP», но без громкого отказа. Артефакт пересобран генератором, инвариант 2 соблюдён; первая пересборка далаlaw_wasm.wasmбайт в байт прежним — протухал ровно оракул (последующая втянула правки параллельных сессий: артефакты порождаются из РАБОЧЕЙ КОПИИ, и пересборка — часть коммита). Ворота — четыре ступени, три из них не требуют ничего, кроме Python: (1) вложенные байты против рабочего дерева; (2) целостность —bundleHashпересчитан по составу (питоновский эквивалентJSON.stringify(files, sorted)сверен на живом артефакте),manifest.jsonпротив обоих артефактов; (3) составmcp/law_mcpпротив транзитивного замыкания импортов от моста по AST (импорты моста лежат внутри функций — греп их не видит), краснеющий в обе стороны; (4) состав против САМОГО генератора в новом режиме--bundle-only— второй список того, что едет в браузер, разошёлся бы с первым молча (доводSUPPORTEDизcheck_differential.py), и только эта ступень видит НОВЫЙ файл дерева, не попавший в бандл. Канарейка держит 11 мутаций; на историческом артефакте ворота краснеют предъявлением 23 расхождений. Объявленная граница: свежестьlaw_wasm.wasmОТНОСИТЕЛЬНОlawc/не утверждается (доказуема только повторной release-сборкой) — сверяется его согласие с манифестом. -
SMT-свидетели скалярных гардов: закрыто слепое пятно фаззера — вторая ветвь пути 3 записки docs/notes/COMPILATION-TARGETS.ru.md (
ci/tools/smt_witness.py). Пул скаляров фаззер строит только из значений, УЖЕ встречающихся в документе, поэтому норма с гардом по сумме или сроку, чей порог делом не представлен, оставалась непокрытой честно. Порог теперь спрашивается у z3 (z3 -in, SMT-LIB2 текстом; новых зависимостей ноль, без решателя — печатный пропуск, не тихий). Паттерн — тот же, что уlaw_screen.pyиfuzz --emit: решатель — недоверенный генератор кандидатов, арбитр — движок. Гарды strict-правила кодируются конъюнкцией, z3 даёт модель и контрмодель, обе материализуются в дела typed value-термами ({"kind":"value"}, НЕentity_ref) сorigin: "case_input"§73 и реплеятся черезliblaw_ffiхэндлом на пакет; покрытие правила подтверждает толькоrule_application§180 в proof-графе, а контрмодель обязана применения не дать — ложь кодировки видна в обе стороны. Замеры:kz-pd(126 strict-правил) — слепой fuzz 8,--targeted84, из 42 непокрытых 13 несут скалярный comparison, и SMT закрыл 13/13 (25 реплеев, 1,9 с), покрытие 84 → 97 из 126;kz-entrepreneurial-code(1729 правил) — фаззер оставил 17 непокрытых, и 14 из них были ровно скалярными: закрыты все 14 (цели с comparison — 32/32, 63 реплея, 51 с), покрытие 1712 → 1726 из 1729; там работают развёртка выводимых предикатов и целочисленная арифметика, без которых денежный порог «МРП × 3 000 000» из чужого пакета недостижим вовсе; корпусный прогон по девяти пакетам с гардами — 233 из 233 целей в срезе закрыты за 211 с и 470 реплеев, ноль ложных кандидатов и ноль лжи контроля (крупнейший —kz-social-code: 119 из 119, включая 16 норм о пенсиях по годам); черновик верстака (WB_DRAFT) — fuzz берёт 2 правила из 3, SMT даёт обе стороны границыd <= 7свидетелями d=7 и d=8. Выгрузка--emit— обычный тест формата О-1: реплей независимым путём (lawc eval) даётTRUE_ONLYс тем же применением. Кодировка недоверенная не на словах — пять её дефектов нашёл реплей, а не рассуждение, каждый на очередном живом пакете: ось политики §86 взята «дневная/календарная» вместо нормативнойmonth_end(§84.2, E-0029) и даты за окномvalidснимка §85 (kz-pd); развёртка связывала голову продюсера ПОСЛЕ впитывания тела, и факты ложились на другое лицо (kz-entrepreneurial-code, пять правил из пяти); интервал срока не содержал истину — месяц от 30 ноября выходит 32 дня против грани 31, и это врало в ОБЕ стороны сразу, гася свидетеля и объявляя ложь контроля там, где её нет (kz-customs-code); дело датировалось мимо окнаeffective§90, из-за чего 16 норм о пенсиях по годам давалиNEITHERбез единого issue (kz-social-code, 103 → 119 из 119). Способность контроля кричать проверена канарейкой: с обезвреженным отрицанием гарда он ловит ложь на 5 правилах из 5. Отдельно назван случай, где контроль бессилен по построению: при ветвлении §206 отрицание гарда одной альтернативы не гасит остальные, и вывод другой ветвью — законный ответ движка, а не дефект («контроль односторонен», 1 из 233). Вне среза v1 — громкий поимённый отказ (не-strict, deontic-головы, отрицания, агрегаты,callвне таблицы аппроксимаций,divE-0036, рекурсия развёртки, Money без выводимой валюты); побочно решатель называетunsat-гарды — кандидатов в мёртвые нормы, которых сэмплирующий фаззер от «не нашёл» отличить не может. -
Суд Соломона: 3 Цар 3:16–28 (KJV) — первый акт, где канал суждения §47.3 есть предмет источника. Пакет
he.solomon.judgment,corpus/laws/he/solomon-judgment/. Спор о материнстве при нулевой доказательной базе (3:18 называет её сам), протокол проверки притязаний (испытание мечом) и замыкание вывода суждением.mother_of— external judgment relation с органом KingSolomon и первым в корпусеrequest_schema(типизированный запрос судьиMaternityPetitionдоезжает доJudgmentRequest.requestSchema, DECISION-0036 (в)); мост — строгое правило с литеральной головой. Испытание мечом ЗАЯКОРЕНО, не понижено: вывод «пощадившая — мать» текст приписывает мудрости царя (3:28), не норме, — граница «правило / канал §47.3» проведена источником, как в Гортине. Вердикт 3:27 — duty отдать ребёнка установленной матери и prohibition умерщвлять; носитель — держатель ребёнка (custodian_ofприходит делом). Источник — тот же Гутенберг #10, что у Декалога (PINNED_UNOFFICIAL_COPY); якорь книги — уникальный подзаголовок «The Third Book of the Kings» (основное имя двусмысленно — оно же альтернативное имя 1 Царств); конвенцияunit: "verse", 13 фрагментов. Меры §33.1: 13 из 13 — EXECUTABLE 2, ANCHORED 11, SOURCE_ONLY 0 (честная глубина нарратива; 10 записей dead-symbolsdocumentedс причинами). Сценариев 6/6, 7 evaluate-вызовов байтово идентичны (liblaw_ffi == lawref), Lean-зонд — 7/7 сертификатов принято, включая узел запроса судьи (DECISION-0037). Сцены держат невидимое мерам: открытие канала с типизированным запросом; посуждённое «не мать» (adjudicated NEGATIVE §73) — COMPUTED-молчание по кандидату, а не новый запрос, второе притязание остаётся REQUIRES_JUDGMENT; суждение без держателя не порождает позиций. -
Формализована «Сказка о рыбаке и рыбке» Пушкина (1833/1835) — первый акт корпуса, где предел полномочия обращён на самого грантора, а санкция за его превышение — ретроактивный откат всех эффектов (пакет
ru.pushkin.zolotaya_rybka,corpus/laws/ru/zolotaya-rybka/; приём «Антигоны»: сама сказка — свидетель сjurisdiction "none", оферта рыбки — второйsourceдиегетического правопорядкаOkiyanMore,ABSTRACT_ONLYна условной шкале@1000-01-01). Оферта «Откуплюсь чем только пожелаешь» записана presumption’ом с поражением поexceeds_grant_limit: четыре дара выводятся (в том числе на ЧУЖИЕ желания — агентская ось «желает старуха, передаёт отпустивший»), а молчание рыбки на пятом требовании ПОЛУЧАЕТ содержание — отказ ВЫВЕДЕН (FALSE_ONLY), не промолчан, иwhy-notназывает поражающее условие; strict-форма с «and not exceeds…» молчала бы на всех четырёх дарах. Предел взят ЭКСТЕНЗИОНАЛЬНО — конъюнкцией засвидетельствованного состава (владычество над морем + служба самой рыбки): ratio отказа рыбка не произнесла, и о владычестве без службы пакет молчит вместе со сказкой (NEITHERпо пределу, оферта СТОИТ — сценарий ZR-09). Откат ретроактивен и требует ПЕРЕДАЧИ: донесённое запредельное требование отзывает каждый предоставленный дар и возвращает обоих к землянке (ZR-07/08), непереданное не отзывает ничего (ZR-11) — море чернеет после слов старика, а не старухи. Закреплены 205 стихов академического издания (СС в 10 т., ГИХЛ 1959—1962, воспроизведение РВБ; извлечение воспроизводимоcorpus/tools/fetch_zolotaya_rybka_text.py, сеткаlines/N-M— счёт стихов самого издания), 8 фрагментов, 57,9 % байтов; мера §33.1 по статьям неприменима (стих без деления). Регрессия 15/15, KZ-differential 15/15 байтово (liblaw_ffi == lawref), 5/5 рукописных тестов §267,doctor.py— «пробелов нет»; правопорядокOkiyanMoreвписан в словарь юрисдикций (группа диегетических, рядом сThebes). -
Set-at-a-time скрининг: норма по ста тысячам дел — первый артефакт пути 3 записки docs/notes/COMPILATION-TARGETS.ru.md (
ci/tools/law_screen.py). Движок отвечает про одно дело; регулятор спрашивает «кто из всех» — класс задач, которого не было вовсе. Закрыт санкционированным паттерномfuzz --emit: SQL — генератор кандидатов, движок — арбитр. Строгий срез CLIR (конъюнкции established-литералов, alt-правила §206 → UNION ALL, выводимые предикаты → вложенные подзапросы, циклы/отрицания/термы/defeasible — громкий поимённый отказ, не приближение) компилируется в SELECT по базе фактов на SQLite ИЗ STDLIB — новых зависимостей ноль; кандидаты реплеятся через liblaw_ffi хэндлом на пакет (DECISION-0057), и только proof движка делает кандидата ответом; контрольная выборка НЕ-кандидатов реплеится тоже — ложь кодировки видна в обе стороны (ложный кандидат — «кодировка шире права», ложное молчание — «уже права»), инвариант 5 соблюдён не запретом семантики в SQL, а недоверием к ней. Замер на живом акте — ст. 669 Налогового кодекса (освобождение от пошлины за приобретение гражданства: репрессированные-возвращенцы и кандасы × неиспользованность, два alt-основания): 100 000 синтетических дел (сеяный ГСЧ) → скрининг 21 мс → 3981 кандидат → арбитраж 3981/3981 TRUE_ONLY, 0 ложных кандидатов, 0 ложных молчаний на контроле из 200; 36 с против ~15 мин полного перебора (25×, ~9 мс/дело на хэндле) — каждый подтверждённый ответ несёт proof со ссылкой на основание (basis печатается из UNION-ветки). v1 честно ограничен: только--demo-мир (внешняя база — следующий срез), арность 1 в синтезе. Ветвь SMT пути 3 (скалярное слепое пятно фаззера — гарды по суммам и срокам; z3 на машине есть) — следующий кандидат тем же паттерном. -
Алдар-Көсе как дела против «Жеті жарғы»: семь сценариев ZH-ALDAR-01…07, семейство
zheti_zhargy66 → 73. Сказки цикла — народная коллекция контрпримеров к имущественному праву: завладение без захвата, согласием владельца под наведённым заблуждением. Сценарии закрепляют три факта, измеренных исполнением. (1) Молчание на обмане начинается на уровне словаря: закреплённые байты свода перечисляют составы поимённо («кісі өлтіру, мертіктіру, әйелді зорлау, соққыға жығу, қорлау, ұрлық істеу») — обмана среди них нет, отношений для обмена/согласия/заблуждения в пакете нет, и дело «шуба отдана добровольно» не может даже сформулировать порок воли: обе меры (десятикратное ст. 7 и «үш тоғыз») —NEITHER, тогда как та же шуба УКРАДЕННАЯ даёт 27 голов и оценённое взыскание 20 овец (контрастная пара ZH-ALDAR-01/02 ↔ 03/04). Квалификация обманного завладения как кражи была бы правовым решением, которого источник не принимал, — граница зафиксирована, не закрыта выдумкой. (2) Спор о самом факте кражи свод не решает: положительное и отрицательноеtheft_ofдаютBOTH, и обе меры молчат — строгие правила читают только установленный факт; установление — работа бия (ZH-ALDAR-05/06). (3) Кража в пакете — kind empirical, и ни одно правило её не выводит из обстоятельств — котёл, который «родил и умер», не квалифицируем изнутри свода; сценарий ZH-ALDAR-07 покраснеет, если выводящее правило появится молча. Пакет, CLIR и голдены не тронуты — ни строчки новой семантики. Регрессия 73/73, KZ-differential 73/73 байтово (liblaw_ffi == lawref), манифест дописан частичной записью, пол храповика поднят 66 → 73,check_scenario_manifestзелёный. -
MCP-сервер пересажен на движок in-process — потребитель № 2 по DECISION-0057 (
mcp/law_mcp/engine_ffi.py).tool_law_check: вместоcargo run … checkна КАЖДЫЙ вызов — конверт §225 черезlaw_opизliblaw_ffi; строки диагностик восстановлены из конверта в точном формате stderr-рендера CLI (path:line:col: severity code: message), медиана 306 → 11 мс (~27× на тёплом cargo; после любой правки дерева старый путь стоил секунды), пути в ответах стали репо-относительными (абсолютные пути машины утекали).tool_law_draft_differential: вместо бинаря с временной директорией — one-shotevaluateтой же библиотекой; инструмент oracle-bound (медиана ~стабильна), выигрыш — устойчивость (без cargo/temp-io на пробу, первая проба 1,4 с → одноразовый прогрев) и транзитивность через ворота 27/44 (сверка остаётся lawref ↔ lawc). Дисциплины: сборка/арка — тем жеfresh_library()ворот (второй политики нет), stdout на время сборки уведён в stderr (stdout сервера — канал JSON-RPC), экземпляр на поток; subprocess-пути сохранены fallback-ом. Свежесть в обе стороны: отпечаток процесса (freshness.py) расширен пятью точечными ci-файлами, которые сервер теперь исполняет, а байты.dylibпинуются при загрузке и сверяются на каждом обращении — порча под живым сервером даёт отказ голосом STALE_PROCESS с рецептом перезапуска (проверено негативом), молчаливого даунгрейда нет. Контракт-тест красен пре-существующе (law_ask/state_duty, та же строка до и после — вне объёма); слепки ответов обоих инструментов до/после идентичны, кроме относительных путей. -
Рабочий стол вписан консьюмером вербализации; его пин стоял на
0.1.0под подписью «текущий» (29.08.2026). Класс, ради которого 27.08 заведена ступень 2 ворот 39/44, повторился там, где реестрCONSUMERSего не искал: панель вербализацииconstructorдержала собственный список паков —verb/law.verb.ru/pack.jsonс подписью «ru — текущий» (это0.1.0, ступень (1) LS §3.8) иverb/law.verb.kk/pack.json, файла которого нет ни на диске, ни в бандле оракула, то есть казахская опция падала вызовом. Мостoracle_bridge._op_verbalizeумолчания не имеет и требует явногоpackPathровно ради этого, но назвать свой пин — половина дела: мерить его было некому. Цена измерена: под0.1.0корпус даёт 2316 маркеровLDC-E8201в 73 документах из 105, и даже на вложенных в приложение образцах —kz-tuystyq5 («статус monotone»),kz-pinning-example1 («revision»); документ с маркером по LS §3.3 не допускается к утверждению статусом вышеdraft. Пины вынесены вconstructor/apps/workbench/src/engine/verb-packs.tsи подняты доru 0.6.2/kk 0.2.2; ворота читают их разбором этого файла (пин у консьюмера на TypeScript, импортом не берётся),MIN_CONSUMERS7 → 9, замер после — 105 документов, 54 064 подписываемых блока, пробелов 0 обеими строками.Ступень 4 — подпись пака, и она ловит то, чего тотальность не видит по построению. Панель печатает выбранный пак рядом с отпечатком вербализации, поэтому «ru — текущий» над
0.1.0было ложью, оставаясь честным пином: на конкретном документе младший пак может дать ноль маркеров, и ступень 2 промолчит. Теперь заявленноеpack: 'law.verb.ru@0.6.2'сверяется сname@versionсамого файла. Канареек стало четыре: снятая фраза, откат пина, снятое описаниеgapWhatи разошедшаяся подпись — все проверены красными. Отдельно проверен путь «константа переехала»: разбор, поймавший ноль пинов, объявлен отказом с диагностикой, иначе ворота зеленели бы оттого, что читать стало нечего. -
Право как библиотека: нативный FFI-хост палитры
law-ffiи хэндл-транспорт KZ-differential — 819 → 210,5 с wall на семействе (DECISION-0057; план и замеры — docs/plans/products/BINDINGS-PLAN.ru.md, этапы 0–6). Путь 1 записки docs/notes/COMPILATION-TARGETS.ru.md исполнен: ретаргетинг ОДНОЙ реализации, ноль новых реализаций семантики. Состав: (0) разведочный транспортlawc eval-serve <ir.json>— IR парсится один раз, JSONL{"case","query"[,"calendarResource"]}на строку, flush на каждую (запрос-ответ, не конвейер; тривиальный вызов ~2 с per-call → 0,001 с steady-state); (1) крейтlawc/crates/law-ffi(cdylib+rlib) — базовый ABI приезжает ЛИНКОВКОЙlaw-wasm(#[no_mangle]-экспорты зависимостей у cdylib сохраняются), крейт — манифест + doc-comment +use law_wasm as _;, второй копии диспетча негде быть; (2) хэндл-APIlaw_load→{"handle": N}/law_evaluate_loaded(N, len)/law_unload(N)→ 1|0 — симметрия DECISION-0054 на стороне Rust, через ОБЩИЙlaw_wasm::dispatch(вlaw-wasmоткрытыpubтри вещи:dispatch,evaluate_request_with,error; wasm-ворота перегнаны — байтово нейтрально), таблицаthread_localBTreeMap, оценка под заимствованием без клона IR; (3) обёрткаci/law_ffi.py— транспорт без семантики: ctypes из stdlib, выбор.dylibпо арке ИНТЕРПРЕТАТОРА, привязка экземпляра к потоку создания (thread_localделает чужой поток не гонкой, а ДРУГИМ миром — отказ раньше молчания), самотест против замороженных голденов; (4) ворота 27/44ci/check_ffi_differential.py— «хост не меняет ответ» для четвёртого хоста: 24 операции палитры черезlaw_opи 133/133 SUPPORTED-векторов ОБОИМИ eval-путями против ЖИВОГОlawc, реквизит и реестры импортированы (вторых списков нет), сборка внутри ворот, канарейка испорченного пакета, §211 двойным вызовом; шаг вписан вci/run_all.shс перенумерацией 43 → 44,check_gate_wiringзелёный; (5)ci/check_kz_differential.pyпересажен на хэндл на пакет — отказные ветки options-симметрии дословно, шовset_evaluateне тронут, subprocess остался ПЕЧАТНЫМ fallback-ом (транспорт опционален, контракт нет), итоговая печать называет фактического продюсера. Довод транзитивности: ворота 27/44 держат «библиотека == живойlawc» байтово, значит сверкаlawref↔ библиотека остаётся сверкойlawref↔lawc. Замер на--only criminal_code(165 сценариев, те же 187 вызовов, машина сопоставимо занята в обоих прогонах): 819 с wall / 663 с CPU → 210,5 с wall / 254 с CPU (3,9×); полный корпус мерился фоном на момент записи, число — в плане. Попутные находки: кросс-архитектурный детерминизм подтверждён байтами (arm64-библиотека == x86_64-CLI на 133 векторах), и вскрыт ~2× налог Rosetta (разложение 4,64 → 2,20 → 1,13 с) — локальный тулчейн переведён на aarch64 отдельной работой. Векторы не тронуты — новой семантики нет;lawref/law-evalне менялись. (пакетkz.corpus.qantar_amnesty,corpus/laws/qantar-amnesty-2022/). Фаза 3 январской работы и пара кkz.corpus.qantar: тот пакет о РЕЖИМАХ января 2022 года, этот — о последствиях.Заголовок акта о январе молчит; привязка живёт в статье 1 и состоит из двух признаков-посылок: деяние совершено «на территории Республики Казахстан с 4 по 7 января 2022 года» и «связано с массовыми беспорядками ЛИБО [совершено] при их пресечении». Связь симметрична, и это содержание, а не оборот речи: в одном перечне из 53 составов стоят хулиганство (ст. 293) и заведомо незаконное задержание (ст. 414), вандализм (ст. 294) и принуждение к даче показаний (ст. 415). Акт амнистирует и участников, и пресекавших, и сцена AMN-02 требует у второго того же ответа, что у первого.
Три закрытых перечня §70, и все три дают проверяемое «НЕТ»: 53 состава статьи 1, восемь изъятий статьи 2 (терроризм, экстремизм, ПЫТКИ, половая неприкосновенность несовершеннолетних, государственная измена, коррупция, организация массовых беспорядков, рецидив) и пять категорий тяжести статьи 3. Состав вне перечня отвечает
FALSE_ONLY, а неNEITHER: без замыкания «состав не назван» было бы неотличимо от «о составе ничего не сказано». Все замыкания над УТВЕРЖДАЕМЫМ фактом — замыкание над выводимым дало быBOTH.Две оговорки об ОДНОМ признаке, направленные в РАЗНЫЕ стороны. Статья 1: «частью первой статьи 272 (Массовые беспорядки), ЕСЛИ ЭТО ДЕЯНИЕ СОВЕРШЕНО НЕСОВЕРШЕННОЛЕТНИМ» — несовершеннолетие ОТКРЫВАЕТ позицию перечня (части вторая и третья стоят отдельной строкой и безусловны). Статья 2 подпункт 7: «совершивших организацию массовых беспорядков, ЗА ИСКЛЮЧЕНИЕМ случая совершения этого преступления несовершеннолетним» — несовершеннолетие СНИМАЕТ изъятие. AMN-04 и AMN-08 подают одно лицо совершеннолетним и несовершеннолетним и получают зеркальные ответы. Оговорка подпункта 4 при этом ДВУСОСТАВНА («несовершеннолетним в отношении несовершеннолетнего в возрасте от четырнадцати до восемнадцати лет»), и одного признака мало: AMN-10 проходит три состояния, изъятие снимается только на третьем.
Изъятие побеждает охват приоритетом §116, а не порядком правил. Статья 2 говорит «действие настоящего Закона НЕ РАСПРОСТРАНЯЕТСЯ» — это отмена, а не сужение, значит дефитер с отрицательной головой и поражаемое правило. ОБА соперничающих правила читают предикаты, ВЫВЕДЕННЫЕ строгими правилами: иначе они уехали бы в разные страты, §116 не применился бы вовсе, и ответ был бы
BOTHпри полностью чистой статике. AMN-06 требует ровноFALSE_ONLY.Компилятор отверг первую редакцию модуля последствий, и был прав. Строгие правила читали
amnesty_appliesголым — пять диагностикLDC-E4103 LATE_STATUS_PRODUCER: статус поражаемого вывода потреблялся бы до завершения продюсеров обеих полярностей (§111). Молчаливое чтение дало бы последствия амнистии лицу, которое статья 2 из неё изъяла. Правила последствий сталиdefeasible; правила с ДЕОНТИЧЕСКОЙ головой под запрет не подпали и остались строгими — различие провёл компилятор, а не автор. AMN-13 закрепляет результат: изъятому не полагается ни освобождения от наказания, ни снятия судимости, ни обязанности прекратить дело.Арифметики сокращения срока нет, и это объявленная граница. Пункт 3 статьи 3 сокращает основное наказание «на три четверти» при тяжких, «наполовину» при особо тяжких и на весь неотбытый срок при остатке до года. Пакет выводит, КАКОЕ сокращение полагается, и не вычисляет новый срок: величина приговора в законе не названа, и умножать её здесь значило бы формализовать калькулятор. Абзац второй пункта 3 работает ПОВЕРХ, а не вместо — AMN-12 требует, чтобы оба вывода стояли на одном деле.
Провенанс. ИПС «Әділет», живая страница (
corpus/tools/fetch_amnesty_2022_text.py, 18 428 байт): акт с момента принятия не изменялся ни разу, поэтому снимок Архива здесь, в отличие от трёх законов пакетаqantar-2022, не нужен.sourceFidelity = pinned_unofficial_copy,verifiedAgainstSource = false.Измерено:
lawc checkчист,lint.py— 0 замечаний, учёт статей 4 из 4, глубина §33.1 — EXECUTABLE 3, ANCHORED 1 (статья 4 адресуема и ничего не выводит: называет способ вступления в силу, а не дату); 21 норма при нуле мёртвых; разметка §218 полная (42 объявления, 21 норма, без остатка); 16/16 сценариев, 4/4 теста §267, 37 evaluate-вызовов байтово идентичныlawref↔lawc;check_stratum_barrier,check_dead_rules,check_dead_symbols,check_label_coverage,check_formalization_depth,check_package_metadata,check_lower,check_registry_indexзелены; индекс реестра пересобран (105 пакетов);doctor.py qantar-amnesty-2022— «пробелов нет». -
Общая авария формализована по всей родословной: Lex Rhodia de iactu → Йорк-Антверпенские правила 2016 (
ga.corpus.general_average,corpus/laws/general-average/). Одна норма — «груз, выброшенный за борт ради спасения судна, возмещается всеми спасёнными интересами пропорционально их стоимости» — прослежена от латыни VI века до действующей рекомендации Международного морского комитета. ЧЕТЫРЕ АКТА, ДЕСЯТЬ РЕДАКЦИЙ, ДЕВЯТЬ РЁБЕРrevision … derived_fromВ ОДНУ ЛИНИЮ. Утверждение «самая длинная родословная корпуса» ИЗМЕРЕНО, а не заявлено, и мерилом взята ДЛИНА ЦЕПИ, а не число рёбер: уus-constitutionрёбер 27, но все они выходят из одной редакции 1787 года к поправкам — самый длинный путь там равен ЕДИНИЦЕ, это веер, а не цепь; уanimal-farmцепь равна четырём. Здесь путьDIGESTA_14_2_LA → ORDONNANCE_1681_FR → CODE_1807_FR → YAR_1890_EN → 1924 → 1950 → 1974 → 1994 → 2004 → 2016даёт девять, и это максимум корпуса.Состав. Дигесты Юстиниана 14.2 «De lege Rhodia de iactu» (латинский подлинник Моммзена и Крюгера, 10 лексов); Ordonnance de la marine, кн. III, тит. VIII (август 1681); Code de commerce 1807, кн. II, тит. XI–XII (французский подлинник «Bulletin des lois», статьи 397–429); Йорк-Антверпенские правила 1890, 1924, 1950, 1974, 1994, 2004 и 2016 годов. Шесть документов закреплены байтово (186 фрагментов §194, покрытие 99,2–99,9 %), три редакции объявлены
ABSTRACT_ONLY.ТРИ РЕДАКЦИИ ЦЕПИ НЕ ПОДДЕЛАНЫ АВТОРСКИМ ИЗЛОЖЕНИЕМ, И ЭТО ГЛАВНОЕ РЕШЕНИЕ ПАКЕТА. Ордонанса 1681 года машинным текстом достать не удалось (Gallica отвечает 403 на
texteBrut, Викитека транскрибировала пять страниц комментария Валена, archive.org недоступен), издания Правил 1924 и 1950 годов ММК не выкладывает. Приёмfaraid/incoterms— написать своё изложение и закрепить его собственные байты — здесь ЗАПРЕЩЁН: он годится доктрине, у которой канонического текста не существует вовсе, а у Ордонанса текст есть, он просто не достался. Дело под такой редакцией отвечает ПОЛОЖИТЕЛЬНО (regime_text_not_pinned), а не молчанием:NEITHERчиталось бы как «право не решает», хотя решает оно прекрасно — это корпус не закрепил байты.ОДНО ДЕЛО — ДЕСЯТЬ ПРАВОВЫХ РЕЖИМОВ, И РЕЖИМ ЕСТЬ ФАКТ ДЕЛА, А НЕ ВЫВОД ИЗ ДАТЫ. Правила не законодательство: они применяются потому, что их назвал коносамент, и редакции 1974, 1994 и 2016 годов «действуют» сегодня одновременно.
under_yar_1974(voyage)и есть оговорка коносамента. Три расхождения дают на ОДНОМ составе разные ответы и проверены сценариями: палубный груз (абсолютный запрет правила I 1890 года против «recognised custom of the trade» с 1974-го), Rule Paramount (введён в 1994-м; до него неразумная жертва, подпадавшая под нумерованное правило, возмещалась вопреки правилу A) и преднамеренная посадка на мель (правило V перевёрнуто: «whether or not she might have been driven on shore»).ДОЛЕВАЯ АРИФМЕТИКА КЛАССА
faraid: ТРИ РАЗНЫЕ ТОЧНЫЕ СТАВКИ НА ОДНОМ ДЕЛЕ. Стоимости объявленыInteger, а неMoney, потому что делениеMoneyтребует политики округления (errata E-0036), а диспашер округляет ОДИН РАЗ в конце. Классический состав даёт 1/13 по Правилам, 10/119 по Дигестам и 20/179 по Кодексу 1807 года; сумма взносов сходится с возмещаемым РОВНО, точным равенствомFraction, во всех трёх. Различия не вкусовые, а текстовые: римский титул фрахт среди участвующих НЕ НАЗЫВАЕТ (D.14.2.2.2 перечисляет груз, судовладельца «pro portione», одежду и перстни), а ст. 401 Кодекса вводит участие судна и фрахта ПОЛОВИНОЙ стоимости, которую Правила 1890 года отменили. Половина считается приведением к общему знаменателю2 × Σ(полные) + Σ(половинные)— целочисленно до последнего деления, ровно тем приёмом, которым диспаша считается на бумаге.Две находки об инструментах, сделанные исполнением. (1)
constraint … require§93.1 не исполняетсяevaluate()вовсе — узлыconstraintчитаютfuzz,impact,layersи вербализация, а оракул на запрос по делу их не смотрит (issuesпуст,truthStatusNEITHER). Полагаться на констрейнт как на «громкий отказ на деле» нельзя; отказ здесь объявлен ДВАЖДЫ — выводимым предикатом для дела и констрейнтом для фаззера. (2)lawref impact-editionsна этом пакете показываетsemanticChange=true, added=7, removed=1(появление Rule Paramount и правила XXIII), но исходы сценариев не меняет — и это следствие решения «режим есть факт дела», а не дефект; отчёт вдобавок называет повисшие ссылкиpriority, связывающие правила разных редакций.Меры. Глубина §33.1 по каждому документу отдельно: Дигесты 9/10 EXECUTABLE (лекс 10 — граница с причиной: три казуса Лабеона о найме судна и фрахте, не о раскладке), Кодекс 1807 — 32/33 (ст. 408, франшиза в один процент, требует суммы по всем интересам — comprehension 0.1 даёт один связыватель), ЙАП 1890 — 18/18, ЙАП 1994 — 31/31, ЙАП 2004 и 2016 — по 32/32. Учёт статей редакции 1974 года объявлен НЕИЗМЕРИМЫМ: ММК выкладывает скан, OCR калечит шесть заголовков из тридцати («RULE L» вместо «RULE I»), и конвенция насчитала бы двадцать четыре правила вместо тридцати — знаменатель врал бы молча. Подгонять конвенцию под опечатки сканера значило бы спрятать авторское чтение в инструмент; таблица искалеченных заголовков лежит ОДНИМ ВИДИМЫМ СПИСКОМ в генераторе фрагментов.
202 правила, ни одного пропускаемого исполнителем; 27 сценариев
.lawtestи 9 сценариев регрессии;check_kz_differential --only general_average— 36 evaluate-вызовов байтово идентичны. Три новые конвенции деления §33.1 (digest_lex,fr_code_article,yar_rule) заведены ПАРАМИ в обеих мерах. -
Формализован правовой каркас январских событий 2022 года (Қаңтар) — СЕМЬ инструментов в одном пакете (
kz.corpus.qantar,corpus/laws/qantar-2022/). Фаза 2 работы, начатой Договором о коллективной безопасности. Состав: срез Закона РК «О чрезвычайном положении» № 387-II (12 статей из 31), указы Президента № 725 (город Алматы) и № 726 (Мангистауская область) от 05.01.2022, срез Закона «О противодействии терроризму» (ст. 12, 15, 15-1 — правовой режим антитеррористической операции), срез Закона «О правоохранительной службе» (ст. 59, 61, 62 — применение оружия) и Закон «О Совете Безопасности» № 178-VI в ДВУХ редакциях. Предмет пакета — ПРАВО, а не события: спорные факты января (организаторы насилия, статус лиц как террористов, законность конкретных применений силы) приходят фактом дела, а не утверждением пакета.ЧЕТЫРЕ ДОКУМЕНТА ЗАКРЕПЛЕНЫ СНИМКАМИ АРХИВА ИНТЕРНЕТА, и это условие правильности, а не удобство. ИПС «Әділет» отдаёт ДЕЙСТВУЮЩУЮ редакцию, а у Закона о ЧП после января 2022 года изменены статьи 4, 15 и 16 — основания введения и ОБА перечня мер, — и добавлены статьи 2-1, 3-5, 14-2, 18-1, которых в январе не было. Разбирать январские дела сегодняшним текстом значило бы применить к событию норму, которой на дату события не существовало, и ни одна из двух мер §33.1 этого бы не показала: обе меряют против закреплённых байтов, а байты были бы «правильные», только не те. Снимки в форме
id_приколочены каждый своей меткой: Закон о ЧП — 2022-01-04 21:05:15 (канун введения режима), Закон о противодействии терроризму — 2022-01-19 07:37:40, Закон о правоохранительной службе — 2022-01-08 04:15:25.Семь расхождений с ходячим изложением, найденных сверкой по байтам. (1) Указов о введении ЧП было СЕМНАДЦАТЬ, а не два и не один: № 725, № 726, № 727 и № 732–745 — по числу областей и городов республиканского значения (14 + 3); общенационального указа не существует. (2) Номера, названные в задании, оказались чужими: № 745 — Северо-Казахстанская область, № 746 не существует вовсе. (3) Режим — с 01:30 5 января до 00:00 19 января, а не до 19:00 и не с 4 января. (4) В пятнадцати единицах ЧП отменено досрочно указами от 12–15 января; в Алматы и Мангистауской области отменяющего указа нет — режим прекратился истечением срока (п. 2 ст. 7), и потому закреплены именно эти два. (5) Режим второго рода называется АНТИтеррористической операцией: «КТО» — термин соседнего правопорядка, и его правовой режим живёт в ст. 15 и 15-1, а не в ст. 13 (та об оперативных штабах). (6) Условия применения оружия стоят в ст. 61 и 62, а не в одной ст. 61. (7) Закон о Совбезе — № 178-VI от 05.07.2018, поправки — Законом от 07.02.2022 № 106-VII.
ГЛАВНАЯ НАХОДКА: ТРИ РЕЖИМА НЕ СОВПАДАЮТ, И РАЗЛИЧИЕ ИСПОЛНЯЕТСЯ. Чрезвычайное положение обязанности предупредить перед применением оружия НЕ снимает — ст. 19 Закона о ЧП говорит прямо, что условия и пределы применения оружия «изменению в условиях чрезвычайного положения не подлежат». Снимает её режим антитеррористической операции, и только при ТРЁХ посылках сразу: зона операции, участие лица в операции, установленный статус террориста (подп. 7) п. 1 ст. 15-1). Отдельно п. 4 ст. 12 разрешает ликвидацию «без переговоров и предупреждения» при явной угрозе охраняемому лицу И невозможности устранить её иными законными средствами И по распоряжению руководителя операции. QAN-14…QAN-17 подают ОДНО применение оружия в четырёх мирах и получают четыре ответа.
Приказ «огонь на поражение без предупреждения» от 07.01.2022 нормой пакета НЕ является. Предикат объявлен, чтобы ДЕЛО могло о приказе сказать, и не читается ни одним правилом: приказ не есть нормативный правовой акт, и вывести из него правомерность применения оружия значило бы приписать ему силу, которой закон ему не даёт. QAN-17 подаёт его вместе со всеми фактами QAN-16 и требует, чтобы ответ НЕ ИЗМЕНИЛСЯ — то есть «приказ ничего не меняет» стало проверяемым, а не заявленным.
Найдено этой формализацией: проекция §31 снимала весь срез законов МОЛЧА. Первый прогон процессного слоя дал «переход недоступен» на каждом шаге при полностью верных фактах. Причина — машина D1 читает только ОТКРЫВАЮЩЕЕ событие lifecycle, а
adopted/publishedприменимости не дают: редакция безin_forceсчитаетсяnot_yetна любую дату, и проекция снимала 126 узлов из 432 — весь срез трёх законов.lawc check,lower, регрессия и differential при этом были зелены, потому что обычныйevaluate()не проецирует вовсе. Починено объявлением окон; верхняя граница окна НЕ объявлена и названа границей: дату, когда январская редакция перестала быть действующей, закрепить нечем — редакционный аппарат портала в закреплённые байты не входит по построению. Вторая находка того же прогона: экземпляр процедуры инструмент утверждаетentity_ref-ом, поэтому журнал, называющий тот же предметconst_ref-ом пакета, не унифицируется, и все переходы остаются недоступными без единого сообщения.Процессный слой О-5 и ось редакций.
lawref process— одна процедура, 7 состояний, 7 переходов, структурных дефектов нет;process-runпо журналу января в Алматы (введение ЧП → режим АТО → обращение к ОДКБ → прибытие сил → объявление о выводе → истечение срока 19.01) даёт вердикт CLEAN с достигнутым терминальным состоянием, а единственный недоступный шаг на последнем кадре — досрочная отмена по ст. 9, чьё условие не наступило.lawref impact-editionsна 2022-01-10 → 2022-03-01: редакция 2018 годаapplicable → closed, редакция 2022 годаnot_yet → applicable, оба указаapplicable → closed; из четырёх сценариев исход меняют три, включая пожизненное председательство Елбасы.Ось редакций держится СТРУКТУРНО, а не датировкой. Обычный
evaluate()редакции не разделяет (фильтрует только явная проекция §31), поэтому каждое расходящееся отношение объявлено дважды с суффиксом редакции — приём, вынесенный изrusskaya-pravda. Одно и то же дело без согласования Председателя даётNEITHERпо редакции 2018 года иTRUE_ONLYпо редакции 2022-го на ПОЛНОМ документе. Совпадающие статьи (2, 3, 5, 6, 8 — сверено срезами побайтно) в охват не входят: формализовать их значило бы удвоить одно и то же без единого различия на делах.Мост в Договор — типизированная межпакетная ссылка, и у мостового правила НЕТ
@source-якоря сознательно. Перечень статьи 14 Закона о ЧП состоит из органов Республики Казахстан (ОВД, национальной безопасности, гражданской защиты, «другие государственные органы», Вооружённые Силы по указу для пяти названных задач, Пограничная служба только для охраны границы); иностранных либо союзных контингентов он не знает вовсе. Основание пребывания коллективных сил лежит в статье 4 Договора, и правило читает ВЫВОД чужого пакета (intl.csto.tashkent_treaty::aggression_established). Якорь наCHP_ART14приписал бы статье 14 то, чего в ней нет, и обе меры §33.1 этого бы не заметили.Измерено:
lawc checkчист,lint.py— 0 замечаний; глубина §33.1 подокументно — Закон о ЧП EXECUTABLE 12 из 12 статей охвата, каждый указ 6 выводимых пунктов и 2 адресуемых из 8, остальные документы по 3 из 3 (в храповике стоит число ПЕРВОГО документа — ограничение меры, названное в титуле); 91 норма, мёртвых 0; разметка §218 полная (160 объявлений, 91 норма, ноль без метки; остаток 6 — профиль процедуры §160); 25/25 сценариев, 4/4 теста §267, 58 evaluate-вызовов байтово идентичныlawref↔lawc;check_lower,check_dead_rules,check_dead_symbols,check_label_coverage,check_stratum_barrier,check_interpretation_gate,check_verbalization_totality,check_package_metadata,check_process,check_registry_indexзелены; индекс реестра пересобран (103 пакета);doctor.py qantar-2022— «пробелов нет». -
Стамбульский проект договора (15.04.2022) формализован целиком — 18 статей из 18, и это ПЕРВЫЙ АКТ КОРПУСА, НИКОГДА НЕ ВСТУПАВШИЙ В СИЛУ ПО СОБСТВЕННОЙ ПРОЦЕДУРЕ (пакет
intl.draft.istanbul_2022). Соседи по статусуnever_enacted—de-legibusиvalikhanov-note— не вступали в силу потому, что не были актами; этот БЫЛ бы актом: у него есть стороны, ратификация, депозитарий, регистрация по статье 102 Устава ООН и собственная лестница вступления в силу (ст. 17). Пакет устроен так, чтобы невступление было ВЫЧИСЛЕНО: ни одна оперативная норма не применяется безbound_by_treaty, выводимого только статьёй 17, и дело без контрфактических фактов подписания не даёт ни одной позиции (сцена IST-01). Разметка спора ИЗМЕРЕНА ПО ФАКСИМИЛЕ, а не прочитана автором. Легенда первой страницы объявляет три класса — красный курсив (позиция РФ, не согласованная украинской стороной), красный прямой (позиция УС), чёрный курсив (вопросы, которые УС отказывается обсуждать);corpus/tools/fetch_istanbul_draft_2022_text.py --checkсчитает долю красных пикселей в рамке каждого слова и сдвиг, максимизирующий вертикальные штрихи (прямое начертание даёт максимум на 0.00, курсив — на 0.24…0.28), и падает, если объявленный разбор разойдётся с измеренным. Найдено так: десять спорных мест в теле договора и состав третьего класса — статьи 6, 7, 12 и 13, набранные курсивом целиком (соседние 11 и 14 на тех же страницах — прямым). Ядро — вето агрессора. В статью 5 красным курсивом вписаны семь слов: «на основе согласованного всеми Государствами-гарантами решения», а Россия — Государство-гарант по той же статье. Пакет не утверждает этого прозой: одно и то же дело (нападение, консультации в трёхдневный срок, официальное обращение Украины) при двух прочтениях даёт обязанность гаранта ACTIVE либо не даёт позиции ВОВСЕ (IST-05/IST-06), а на том же деле с установленным отказом помочь — VIOLATED против пустого множества (IST-08/IST-09). Тем же курсивом помечено «(включая Россию)» в условии вступления в силу (ст. 17 п. 3), тогда как в п. 1 те же слова ЧЁРНЫЕ: спор шёл не об участии России во временном применении, а о её праве заблокировать само вступление договора в силу — второе вето, измеренное типографикой (IST-23/IST-24). Прочтения выражены парами правил с выбором в деле, а неinterpretation§152, и различие содержательное: у соседаminsk-package-2015документ МОЛЧИТ о порядке пунктов, и два прочтения — доктринальные конструкции над одним текстом; здесь в документе стоят ДВА ТЕКСТА, каждый со своим автором, и ни один не является толкованием другого. Приложение 6 (карта) в факсимиле отсутствует, а ссылаются на него четыре нормы (ст. 2 п. 1 «j», ст. 5, ст. 9, п. 3 Приложения 5): объявлено редакциейUNAVAILABLE, принадлежность территории к карте выражена каналом суждения §47.3 с authority — комиссией статьи 14 (орган назван договором, а не выбран формализацией), и запрос даётREQUIRES_JUDGMENT, а не молчание. Измерено: глубина §33.1 — EXECUTABLE 18, ANCHORED 0, SOURCE_ONLY 0; 24/24 сценария, все 24 evaluate-вызова байтово идентичныlawref↔lawc; мёртвых правил 0, мёртвых символов 0 (ворота нашли три объявленных и не читаемых предиката — все три оказались НЕ написанными нормами ст. 1 «а», ст. 1 «b» и ст. 16 п. 1 абз. 2, и написаны); разметка §218 — 160 объявлений и 192 нормы, неразмеченными остаются шесть узлов профиля процедур; одна A3-таблица Приложения 1 (42 строки,unique, безtotal— у семи классов позиции Украины нет вовсе);doctor.pyбез пробелов. Источник — самая тонкая часть. Официального опубликования у неподписанного проекта нет и быть не может; закреплены байты, извлечённые СВОИМ OCR (tesseract 5.5.1, 300 dpi) из факсимиле русского подлинника, опубликованного The New York Times 15.06.2024. Текстового слоя у русских файлов нет — в потоке страницы стоит буквально<3F3F3F3F>, то есть OCR газеты кириллицу потерял. Адреса всех пяти опубликованных документов переговоров названы ТРЕТЬЕЙ стороной (комментарий NIDS № 370 от 15.04.2025) и пиннятся хэшами, поэтому ссылка проверяема независимо от газеты. Квирки OCR сохранены дословно и не правятся ни в одном месте: «Статья12» слитно — свойство ДОКУМЕНТА (воспроизводится всеми режимами tesseract и видно глазом на стр. 8), и ради него в обе меры §33.1 добавлена объявляемая единицаru_article_standalone, требующая заголовка на строке ОДНОГО и без точки: автоконвенция считала бы статьями ЦИТАТЫ чужих законов в Приложениях 2 и 3 («Статья 7. Язык образования») и дала бы знаменатель 25 вместо 18. -
Стамбульское коммюнике 29.03.2022 формализовано целиком — 11 пунктов из 11 — и служит МЕРИЛОМ для проекта договора (пакет
intl.draft.istanbul_communique_2022). Само по себе оно обязательств не создаёт и говорит о себе «Договором предполагается», поэтому почти вся его формализация — институциональные предикаты, а не деонтика; единственная обязанность взята из пункта 10, где сказано о самих сторонах в настоящем времени («Стороны продолжат консультации»). Ценность пакета в ДЕЛЬТЕ, и она измерена дважды. В байтах — воротаcorpus/tools/check_istanbul_negotiation_delta.py(шаг вci/run_all.sh) держат пять правок и пять дословных совпадений: оговорка «на основе согласованного всеми Государствами-гарантами решения» и «(включая Россию)» в условии вступления в силу ПОЯВИЛИСЬ после коммюнике, а переговорное окно по Крыму в 10 (вариант — 15) лет, отказ решать вопрос Крыма военным путём и встреча президентов по оставшимся вопросам ИСЧЕЗЛИ; совпадения (трёхдневный срок консультаций, формула обращения Украины, перечень мер) проверяются наравне с расхождениями — если разойдутся и они, сравнение исходов мерило бы разницу формализаций, а не разницу текстов. В исходах — сцены ICOM-13…ICOM-15 прогоняют ОДНИ И ТЕ ЖЕ факты через ОБА пакета (раннер объявлен на двух CLIR): по коммюнике обязанность гаранта возникает, по проекту при прочтении РФ — нет. То есть вето агрессора не «осталось несогласованным»: его не было 29 марта и оно появилось к 15 апреля, а поимённые меры (закрытие воздушного пространства, предоставление вооружения), стоявшие в СОГЛАСОВАННОМ перечне коммюнике, в проекте помечены как позиция одной стороны — правка в обратную сторону, отзыв согласия. Ещё одна пара, которую видно только рядом: порог срабатывания сузился с трёх оснований (агрессия, любое вооружённое нападение, любая военная операция) до одного.lawref impactздесь неприменим, и это свойство инструмента, а не пробел работы: отчёт О-1 сравнивает два IR ОДНОГО инструмента — сценарий адресует предикаты полным URN, то есть живёт внутри одного namespace, — а коммюнике и проект суть разные документы с разным составом и разными единицами деления; свести их в один namespace значило бы объявить редакциями одного акта два разных документа и получить diff, в котором «удалено всё, добавлено всё». Измерено: глубина §33.1 — EXECUTABLE 11, ANCHORED 0, SOURCE_ONLY 0; 15/15 сценариев; разметка §218 — 56 объявлений и 32 нормы, неразмеченных НОЛЬ; мёртвых правил 0, двенадцать мёртвых констант закрытого перечня §70 вписаны вdead-symbols.jsonс причиной на каждую;doctor.pyбез пробелов. Локатор пункта —article/Nприunit: point: конвенция корпуса (так устроенmartial-law-1941), иpoint/Nне свёлся бы ни у одной из двух мер §33.1 — пакет показал бы «вне пакета 11» при полностью выведенных пунктах. -
Найдено и измерено на нём же: у акта, никогда не вступавшего в силу, проекция as-of §31 пуста на ЛЮБУЮ дату.
impact.edition_projectionснимает нормативный узел, все якоря которого ведут в неприменимые на момент редакции; у этого пакета из 401 узла остаётся 216, снимая ВСЕ 185 заякоренных, и на 2022-04-18, и на 2026-08-29. Это верно о предмете, а не дефект инструмента, но у него есть неочевидная цена, названная теперь прямо: всё, что построено поверх проекции, на таком акте вырождается.lawref process-runпродвигает автомат только по тем гардам переходов, которые дело утверждает ФАКТОМ (выводимое правилами для проекции не существует), аlawref loopholeотвечает «путей к цели без единого VIOLATED не найдено» за два вызова evaluate — не потому, что лазейки нет, а потому, что ищет в мире без норм, где нечего нарушать. Обе находки записаны там, где на них наткнутся: вjournals/counterfactual-ratified.jsonиanalysis/loophole-goal.json(файл сохранён ВМЕСТЕ с отрицательным результатом, а не выброшен). Сама лазейка показана исполнением — сценами IST-08/IST-09, где право берётся не проекцией. -
Учёт статей §33.1 стал зелёным целиком: починены два давно красных пакета (107 пакетов, 167 закреплённых публикаций, нарушений 0).
health-code— официальный API zan публикует статью 270-2 Кодекса о здоровье с заголовком «270-2.», без слова «Статья»; байты не правятся (свойство ПУБЛИКАЦИИ, фрагмент обязан остаться её точной подстрокой, LDC-E5202), а факт этот знали двое из троих: генератор фрагментов и мера глубины (вшитаяHEALTH_CODE_UNNAMED_ARTICLE_RE, применявшаяся к каждому русскому акту), тогда как учёт статей — нет. Две меры §33.1 расходились на единицу (299 против 298), и фрагментarticle/270-2попадал в «фрагменты вне объявленного охвата». Введено полеirregular_headingsвarticles.jsonакта (номер учёта → заголовок, как он набран в публикации) по образцу таблицordinals/headings; читают его ОБЕ меры, вшитая копия удалена, объявление живёт в генераторе (articles.jsonэтого акта — порождаемый файл). Заголовок дописывается и в ОБРЫВ среза — иначе статья 270-1 проглатывала бы 270-2 и получала её признаки.locke-treatise— семнадцать секций объявлены вне охвата при признаках исполнимого содержания в тексте; каждой написанdespite, называющий свой признак и его роль: авторское будущее («we shall find»), логическая и контрфактическая необходимость («there must of necessity be a means to appropriate»), условие довода («as if those who had the greatest privileges…»), чужая речь и риторический вопрос (оговорки Барклая §235, «Must the people then always lay themselves open…?» §233). Где признак указывает на уже формализованную норму,despiteназывает правило (§§214–217,ForceAgainstLawMakesTheRebel§226,ForceWithoutRightMayBeResisted§232,WhereAuthorityCeasesTheKingCeases§239). Канарейка ворот выросла с 7 ступеней до 10. -
Формализован «Комплекс мер по выполнению Минских соглашений» (Минск, 12 февраля 2015 года) — первый акт корпуса, чья главная структура есть ПРОЦЕСС, а не перечень норм (пакет
intl.minsk.package_2015,corpus/laws/minsk-package-2015/; юрисдикцияInternational, НЕ Республика Казахстан). Формализованы все 13 пунктов и примечание к пункту 11; глубина §33.1 — EXECUTABLE 13, ANCHORED 0, SOURCE_ONLY 0; байтовое покрытие 99,9 % (11 856 из 11 872); differential 53/53 байтово.Порядок задан САМИМ документом, и потому восстановим механически. Три фразы внутри его текста — «с первого дня отвода» (п. 3), «в первый день после отвода» (п. 4) и «в первый день после местных выборов» (п. 9) — образуют каркас, и
procedure§160 в08-process.lawего записывает:lawref processвосстанавливает из CLIR семь стадий, шесть переходов и начальную стадиюSignedбез единой структурной находки. Терминальность НЕ объявлена ни у одной стадии: документ конца не называет (пункты 5, 7, 8, 10 и 13 срока не имеют вовсе и «после» границы не встают никуда), иBorderControlRestoredприходит заметкойSINK_STATE— что верно, потому что маркерterminal§160 в узлы CLIR не эмитируется и законность терминала по ним не видна.Спор о последовательности записан ДВУМЯ прочтениями, а не выбором автора, и расхождение ИЗМЕРЕНО тремя инструментами. Пункт 9 ставит восстановление контроля над государственной границей под три условия; пункт 10 (вывод иностранных вооружённых формирований, разоружение незаконных групп) не поставлен ни под какое условие и срока не имеет. Отсюда весь спор — предшествует ли пункт 10 выборам, — и текст не отвечает.
SecurityFirstReadingиLiteralOrderReading(обеstatus disputed, группа сselection any_of) дают ЕДИНСТВЕННЫЙ различающий их предикатelections_precondition_met, которого базовая теория не выводит вовсе. На ОДНОМ И ТОМ ЖЕ деле:local_elections_valid— TRUE_ONLY против NEITHER (сцены KZ-MINSK-33/34),full_border_control_due— TRUE_ONLY против NEITHER (37/38), позицияRestoreFullBorderControl— ACTIVE против ОТСУТСТВИЯ (39/40). На ОДНОМ И ТОМ ЖЕ журнале делаlawref process-runрасходится траекторией:BorderControlRestoredпротив остановки наDialogueOnElections. Профиль аргументации §274 даётSKEPTICALLY_ACCEPTEDпротивNO_ARGUMENT. Всё это сторожитcorpus/tools/check_minsk_readings.py, который вдобавок сверяет, что входы двух прогонов различаются РОВНО опциями: иначе расхождение прочтений можно было бы объяснить разницей фактов. Без выбора прочтения документ молчит — и это его ответ, а не пробел формализации (KZ-MINSK-35).Граница спора измерена, а не объявлена. Второй журнал отличается от первого двумя фактами о пункте 10 — и на нём прочтения СХОДЯТСЯ, оба доводят дело до конца. Спор существует ровно в той области, где пункт 10 не выполнен.
Граница профиля §274 названа прямо. Спросить его о самом пункте 9 нельзя: цепочка до
full_border_control_dueидёт через правила с арифметическими гардами (days_betweenв пунктах 2, 3, 4, 6, 9) и через отрицание по умолчанию (not_knownв примечании к пункту 11), а §274.1 берёт только конъюнкции литералов — 42 правила акта уезжают вskippedRules, и ответ становитсяNO_ARGUMENTпри ЛЮБОМ прочтении. Измерено, а не предположено: спор виден профилю на уровнеlocal_elections_valid, где цепочка чисто конъюнктивна.A3-таблица зоны безопасности,
unique+total: true. Пункт 2 различает три класса тяжёлого вооружения и три ширины зоны (50, 70, 140 км); строки попарно непересекаемы и покрывают область ДОКАЗУЕМО. ПОРОГ КАЛИБРА 100 мм СТОИТ В ГАРДЕ, А НЕ КОЛОНКОЙ, и это решение, а не удобство: колонка Integer приtotal: trueпотребовала бы выдать ствольной артиллерии калибром меньше 100 мм какое-то число, а пункт 2 не устанавливает ей зоны НИКАКОЙ, и ноль был бы выдумкой. Отказ приходит отсутствием вывода (KZ-MINSK-10), а таблица остаётся полной по двум признакам, которые различает сам документ.Три срока из одного пункта считаются ТРЕМЯ разными способами, и смешать их нельзя. «Не позднее второго дня после прекращения огня» отсчитывается от даты, которую называет сам документ, и потому записан ЗАКРЫТЫМ ОКНОМ
[@2015-02-15, @2015-02-18); «завершиться в течение 14 дней» отсчитывается от факта дела и потому записан термомdays_between; «00 ч. 00 м. (киевское время) 15 февраля 2015 года» — МОМЕНТ, литерал §19@2015-02-15T00:00:00+02:00в терм-позиции (второй такой случай в корпусе после часа капитуляции Германии). Смещение +02:00 — не догадка: летнее время в Украине в 2015 году началось 29 марта. Дневные сроки считаютсяdays_between, а неadd_business_days: дневной шаг §86 требует снимок календаря §85 ВСЕГДА (errata E-0029), а календаря нерабочих дней ни для одной стороны Комплекса не устанавливает ни один закреплённый источник. Границы проверены ЗНАЧЕНИЕМ — 14-й день против 15-го, 30-й против 31-го, пятый против шестого.Прекращение огня VIOLATED не бывает, и это сказано прямо, а не обойдено. Воздержание §130 в срезе 0.1 знает только ACTIVE и EXPIRED: обнаружение контрдействия требует событийной модели §79. Сцена KZ-MINSK-05 подаёт применение силы внутри режима, требует ACTIVE и УПАДЁТ, если однажды придёт VIOLATED. Нарушаемость показана там, где она честна, — на достижительных пунктах со сроком: пара KZ-MINSK-30/31 стоит по обе стороны §136 (дело 2 января 2016 года без факта об исполнении даёт UNDETERMINED, то же дело с ОТРИЦАТЕЛЬНЫМ фактом — VIOLATED; EXPIRED у достижительной цели не бывает вовсе).
У большинства пунктов адресат НЕ НАЗВАН, и пакет его не придумывает. Документ написан безличными оборотами («Обеспечить эффективный мониторинг», «Определение модальностей», «Вывод всех иностранных вооруженных формирований»): кто обязан — не сказано ни разу. Носителем таких обязанностей выступает переменная, связанная ЭМПИРИЧЕСКИМ предикатом
implementing_party— фактом ДЕЛА, а не фактом пакета; где адресат назван (ОБСЕ, Верховная Рада Украины, Украина, правительство Украины, Трёхсторонняя контактная группа), там стоит константа. То же и в подписях: трое подписантов названы с должностями, двое — без, и пакет эту неоднозначность документа НЕ ЧИНИТ.Закреплён русский текст документа ООН под символом S/RES/2202 (2015) в формате .doc, а не .pdf, и причина названа в шапке
corpus/tools/fetch_minsk_package_text.py: в PDF текст выключен по ширине разрядкой, иpdftotext25.06.0 ставит пробел ВНУТРИ слова более чем в сорока местах («в отдельных ра йонах», «Луга нской областей»). Это дефект извлечения, а не свойство публикации — в отличие от квирковnpt-1968иrome-statute-1998, где другой копии не существует. Оба шага (загрузка и конвертация LibreOffice 26.2.3.2) измерены на повторе и байтово стабильны. Закрепление объявлено срезом: резолюция 2202 (2015) и приложение II (декларация «нормандской четвёрки») в него не входят — это акты других органов с другим кругом авторов.Метки §218 сверяются с источником подпоследовательностью (
corpus/tools/check_minsk_labels.py, шаг 18/43). На первом прогоне — 19 расхождений: четыре оказались настоящими искажениями цитаты (изменённый падеж, переставленные слова), остальные — метками-ОПИСАНИЯМИ, которые теперь отличаются от цитат формой локатора:Пункт N.объявляет цитату и сверяется,Пункт N —объявляет описание и не сверяется. Сверка здесь надёжнее глаза по отдельной причине: в пункте 8 слово «социально-экономических» несёт МЯГКИЙ ПЕРЕНОС U+00AD, который §13 запрещает вычищать и который не отображается ничем, — перепечатанная руками цитата разошлась бы с источником НЕВИДИМО.53 сценария (
corpus/kz/acts/minsk_package.py), 2 рукописных.lawtest, шесть прогонов журнала и пять вопросов §274 под воротами. Темпоральный статус —in_forceс 12.02.2015 БЕЗ даты конца: акта, прекращающего действие, не существует, и события 2022 года закреплённых байтов не касаются (прецедент осознанного открытогоin_force—victory-day-1945). -
Сторож «заголовок единицы деления не с начала строки» обобщён с одного акта на весь корпус (
embedded_headings()вci/check_source_pinning.py, обещание 4 ворот; канарейка--canaryиз 7 ступеней и строка вci/run_all.shперед шагом 18/43). Обе меры §33.1 узнают единицу ОДНИМ И ТЕМ ЖЕ якорем начала строки, поэтому склейка в закреплённом извлечении («Глава 4. Сделки Статья 147. Понятие сделки» в ГК РК) отнимает единицу у обеих разом: генератор фрагментов не видит границы и отдаёт текст статьи соседке, а учёт не знает о статье вовсе — при зелёномlawc check, покрытии 99,1 % и нулевомmissing. Выражение «якорь снят» ВЫВОДИТСЯ изscanконвенции, а не пишется парой рядом: разойдись копии — сторож искал бы не тот заголовок, который считает учёт, и молчал бы, выглядя работающим. Прогон по корпусу — 168 закреплённых документов, 109 с опознанной единицей, 0 находок; воронка сит 120 → 66 → 23 → 0 (перекрёстные ссылки, цитаты чужих статей в законах о поправках, голые номера). Одиннадцать конвенций объявили отказ ПРИЧИНОЙ в полеno_embedded_probe(маркер — голый номер: «© 2012. РГП…», «the 8. day of May», «Cardiac index less than 1.8 L/min/m2»), аconvention_probe_registry()требует от каждой из 30 конвенций либо якоря^, либо названной причины и сверяется ДО корпуса. Умолчание поля намеренно громкое: новая конвенция получает сторож сама. -
Формализована «Антигона» Софокла (ок. 441 до н. э.) — первый акт корпуса, где ДВА нормативных порядка спорят об одном предикате и ни один не побеждает (пакет
grc.sophocles.antigone,corpus/laws/antigone/; правопорядок самой трагедии —none, указа Креонта —Thebes, диегетический). Формализованы указ Креонта (ст. 21–36, 194–206), его санкция и её замена (35–36, 770–776), отмена (1100–1112) и неписаные законы богов ἄγραπτα κἀσφαλῆ θεῶν νόμιμα (450–460).Коллизия — это ОТВЕТ ДВИЖКА, а не дефект модели, и она сторожится по структуре. Без выбора прочтения вопрос «должно ли Антигоне погрести Полиника» получает
truthStatus: BOTHприevaluationStatus: COMPUTED, а в evaluation-документе стоит записьconflictsсunresolvedReason: INCOMPARABLE, поимённо названными соперниками (OfficiumSepeliendiпротивKerygmaVetatSepelire) и ПУСТЫМИdefeatedCandidates/priorityEdges. Сценарий ANT-02 проверяет все пять условий: ослабь любое — и он зазеленеет на модели, которая коллизию просто не собрала. Контроль ANT-01 держит обратное: на Этеокле оба порядка велят одно,TRUE_ONLY, коллизии нет ни одной.UNRESOLVED_NORMATIVE_CONFLICTздесь НЕ ВОЗНИКАЕТ, и это не пробел. Статус §175 Core возвращает на пути эффектов §127 (несравнимая пара power/immunity), а не на обычном запросе истинности; несравнимость правил сообщается записьюconflicts. Ожидание кода §127 сторожило бы не тот механизм, и это сказано прозой пакета, а не оставлено на догадку.Спор Креонта и Антигоны — спор о МЕХАНИЗМЕ разрешения, и различие измерено. Три прочтения (
interpretationсоstatus disputed, все три вне базовой теории):KreontisRatio— приоритет §116 на основании ст. 666–667 («кого поставит город, того должно слушать и в справедливом, и в противоположном»);AntigonesRatio— НЕДЕЙСТВИТЕЛЬНОСТЬ на основании ст. 453–455 («не думала я, что твои провозглашения имеют такую силу, чтобы смертный мог ими превзойти неписаные законы богов») — правило бьёт по ПОСЫЛКЕ указа, а не по его выводу;HaimonisRatio— та же недействительность с другим основанием (ст. 737: «не город тот, который принадлежит одному»). Различить их по знаку ответа НЕЛЬЗЯ (у Антигоны и Гемона он один), и по записиconflictsтоже нельзя — решённая коллизия из списка уходит совсем, список ведёт только нерешённые (измерено). Различает их посылкаkerygma_obligat: TRUE_ONLY у Креонта против FALSE_ONLY у двух других.Доводы Антигоны и Гемона — ДВА довода, а не один, и это доказано делом. Креонт — гражданин Фив, но Полинику не родич; довод Гемона его указ не связывает, довод Антигоны на нём не применим вовсе. Слейся они — эта пара ответов стала бы одинаковой (ANT-05).
Агон как карта спора §274. Профиль structured argumentation даёт четыре РАЗНЫХ класса ответа §274.6 на один вопрос: базовая теория —
CREDULOUSLY_ACCEPTED(16 допустимых позиций, 8 спорных аргументов: обязанность лишь защитима); прочтение Креонта —REJECTED; прочтения Антигоны и Гемона —SKEPTICALLY_ACCEPTEDпри одной допустимой позиции и пустомgrounded.undec. Класса ответа в baseline-документе нет вовсе:BOTHговорит «оба», класс говорит, ПОЧЕМУ оба.Отмена указа меняет право, но не исход трагедии. Указ заведён ОТДЕЛЬНЫМ
source_workс тремя редакциями на условной шкале (@1000-01-01провозглашение,@1000-01-02замена санкции,@1000-01-03отмена и обратный приказ), неписаные законы — третьим источником сin_force (-infinity, infinity)— прямой записью ст. 456–457 («не ныне и не вчера, а всегда живут они»). Проекция as-of §31 по трём датам (ANT-08): санкция меняется с побиения камнями на замуровывание, запрет живёт, после отмены —TRUE_ONLYбез единой коллизии и новая обязанность освободить замурованную. ANT-08B держит вторую половину утверждения: сняты ИМЕННО нормы указа, а шесть норм двух других порядков остались, — иначе «после отмены запрета нет» доказывалось бы и пустым миром.Условная шкала объявлена условной. Дат до нашей эры язык не выражает (§19 — пролептический григорианский календарь от года 1), и год 1000 выбран как заведомо ни с чем не спутываемый; конвенция записана в
01-sources.law, вlaw.tomlи в титулеPACKAGE_TITLES.Три источника в одном пакете, и у двух из них байтов не существует. Трагедия закреплена ДВУМЯ изданиями (греческий текст Storr, Loeb 1912, и английский перевод Джебба 1891 — оба PINNED_UNOFFICIAL_COPY, оба по КОММИТУ Perseus, а не по ветке); указ Креонта и неписаные законы богов —
ABSTRACT_ONLY: провозглашены устно и дошли только пересказом внутри трагедии. Каждое правило заякорено ДВАЖДЫ — в стих (провенанс и мера §33.1) и во фрагмент редакции своего порядка (датировка): у редакций трагедии lifecycle нет вовсе, поэтому проекция §31 удерживает норму только якорем её собственного порядка.Единица деления — СТИХ, и конвенция заведена под неё (
unit: "line"в обеих мерах §33.1). Охват §33.1 объявлен СПИСКОМ из 83 стихов, а не словомwhole: из 1252 пронумерованных стихов норму говорят 64, ещё 19 называют обстоятельства, к которым нормы применяются. Объявить охватом всю трагедию значило бы обещать формализацию хора и плача. Глубина: EXECUTABLE 61, INTERPRETED 3, ANCHORED 19, SOURCE_ONLY 0, ноль объявленных границ; байтовая доля 6,1 % и обязана быть низкой — она говорит, сколько трагедии есть право.Греческий набор признаков исполнимого содержания заведён в
ci/check_source_pinning.py(OPERATIONAL_MARKERS/DELEGATION_MARKERS, языкgrc): деонтика греческой нормы есть ЛЕКСИКА права и культа (κήρυγμα, νόμος/νόμιμα, χρή/δεῖ/ἀνάγκη, отглагольное на -τέον, θέμις/ὅσιος/ἄγος/μίασμα, κτερίζειν/ἄταφος), а не модальное слово. Императив взят только в неспутываемых формах третьего лица: голое-τωпробовалось и отвергнуто замером — оно ловит дательный двойственного «κασιγνήτω» (ст. 21), то есть объявляло бы признаком деонтики слово «брат». Контроль — десять нормативных отрывков, из которых пакет выводит правила: набор находит признаки во всех десяти и молчит на 90 % стихов.Пропущенную посылку нашли ворота, а не чтение.
ci/check_dead_symbols.pyназвал мёртвым предикатkerygma_novit— и это оказалось не мусором: Креонт спрашивает о знании запрета ОТДЕЛЬНЫМ вопросом перед приговором (ст. 447), значит от ответа что-то зависит. Знание вписано элементом состава обеих санкций, охват расширен на ст. 441–443 и 446–448, добавлена пара дел «знала / не знала» (ANT-06B).Различие МОЛЧАНИЯ и ОТКАЗА на Исмене (ANT-07): позиция у неё та же, что у Антигоны (обязанность перед богами и связанность указом), деяния нет. Побиение камнями даёт
NEITHER— право о ней молчит (первая редакция изъятия не знала); замуровывание даётFALSE_ONLY— Креонт сказал «οὐ τήν γε μὴ θιγοῦσαν», не ту, что не коснулась. Слить эти два ответа значило бы потерять ст. 770–771 целиком.Лазейка Креонта и канал суждения §47.3. Замуровывание с ритуальной пищей «чтобы город избежал скверны» (ст. 775–776, 889) записано НОРМОЙ, а не упрёком: до ответа прорицателя
urbs_pura_est=TRUE_ONLY— лазейка работает. Чистота города объявленаexternal judgment relationс органомMantis: прямой вопрос даётREQUIRES_JUDGMENTс типизированным запросом, ответ прорицателя (ст. 1064–1071) закрывает лазейку по существу —FALSE_ONLY. Тот же результат независимо нашёлlawref loophole: путь к «чистоте» в один шаг с пометкой «существенно окно дат».Известная граница названа и осторожена, а не спрятана (ANT-10): канал §47.3 пробрасывается сквозь тело правила ТОЛЬКО у строгого правила с литеральной головой.
PoenaAntidosisсделанstrictвынужденно;MiasmaNonVitatum(defeasible, отрицательная голова) канал теряет, и сценарий сторожит обе половины — заработай канал через defeasible, тест обязан упасть, чтобы оговорка не осталась устаревшей.Дефект ворот, найденный этим актом и закрытый.
boundaries.pyчитал объявленныйscopeтолько с верхнего уровняarticles.json— у акта в форме{"editions": [...]}охват молча оказывался НЕ ОБЪЯВЛЕННЫМ, и все единицы вне него печатались «кандидатами на формализацию». Цена измерена здесь: 1169 стихов хора и плача выдавались за недоделку при полностью покрытом охвате. Починка попутно вернулаleges-xii-tabularumпять честно объявленных границ, которые тем же образом показывались недоделкой.Ловушка чтения differential, стоившая времени и записанная поимённо. Обёртка
ci/check_kz_differential.pyотказывается сверять вызов, у которогоoptionsпереданы аргументомevaluate, но отсутствуют вcase.options(оракул читает их аргументом,lawc eval— только изcase.options). Ворота честны: пишутFAIL:и возвращают 1. Обманывает последняя строка — «N evaluate-вызовов байтово идентичны» печатается ВСЕГДА, до проверки списка отказов, и на хвосте вывода красный прогон неотличим от зелёного. Здесь так прошли незамеченными 14 вызовов из 38 — все с выбором прочтения и капами §274, то есть ровно те, ради которых пакет заведён. Признак без чтения всего вывода: число сверенных вызовов НЕ РАСТЁТ при добавлении сценариев. Починка на стороне акта —optionsкладутся в обе стороны, как уjapan_constitution_art9.Проверки:
lawc checkиlawc lowerчисты, CLIR байтово совпал с закоммиченным, регрессия 13/13, differential 38 вызовов байтово (lawc eval==lawref),.lawtest4/4, закрепление — 0 проблем,check_dead_rulesиcheck_verbalization_totalityчисты,doctor.py antigone: пробелов нет. -
Формализовано Нахичеванское соглашение о создании Совета сотрудничества тюркоязычных государств (Нахичевань, 3 октября 2009 года) — учредительный договор Организации тюркских государств — в ОБЕИХ закреплённых редакциях (23 статьи из 23 в каждой) вместе с Протоколом от 11 ноября 2022 года (13 статей из 13) (пакет
intl.turkic.nakhchivan_2009,corpus/laws/nakhchivan-2009/, юрисдикцияInternational). Ратифицировано РК Законом от 27.09.2010 № 341-IV, Протокол — Законом от 23.05.2025 № 191-VIII с заявлением о толковании его статьи 10.Первый пакет корпуса с ДВУМЯ ЖИВЫМИ редакциями одного действующего текста. Один
source, дваeditionсо смежными непересекающимися окнами, обе редакции — с официального портала «Әділет». Непересечение окон несущее:boundaries.pyразводит «свои»/«чужие» фрагменты редакций одного work именно пересечением периодов, и общее окно завысило бы глубину §33.1 у обеих молча.Восемь статей расходятся НА ДЕЛЕ, и каждое расхождение проверяется парой сцен на ОДНОМ наборе фактов. Порядок прохождения проекта документа через СМИД и СГГ перевёрнут (ст. 7) и зеркально для Правил процедуры (ст. 18); к статусу наблюдателя добавлен статус партнёра, замкнутый круг «международных форумов» заменён открытым «другие образования» (ст. 16); порог вступления в силу изменён с «третьего» уведомления на «последнее» (ст. 22) — при четырёх подписантах это разные даты; появились неформальные заседания (ст. 5, 6); ст. 1 переписана целиком — «механизм сотрудничества в виде объединения» стал «международной организацией». Различие держится РАЗДЕЛЬНЫМИ отношениями, а не датой дела:
@sourceанкерует узел только дляedition_projection, обычныйevaluate()держит обе редакции разом.Осуществлённое полномочие §127.2 с материализованным эффектом. Ст. 21 даёт Сторонам власть изменять Соглашение протоколами, Протокол 2022 года — её применение, вторая редакция — эффект;
revisionсоединяет их черезcaused_by,urn:proof:effect:GrantAmendmentPowerприсутствует в proof-графе. Дефект модели найден ИСПОЛНЕНИЕМ: пункт 1 ст. 13 Протокола («является неотъемлемой частью») сперва выводил тот же предикат, что и эффект ст. 21, и условие «по взаимному согласию Сторон» становилось невидимым — протокол без согласия всё равно оказывался частью Соглашения. Разведено двумя предикатами: самопровозглашение изменяющего акта не создаёт его действительности.Договор БЕЗ СУДЬИ — и канал суждения §47.3 сознательно НЕ применён. Ст. 20 отдаёт разногласия консультациям и переговорам; органа, разрешающего спор, акт не создаёт ни в одной из двадцати трёх статей.
external judgment relationутверждал бы «отвечает НАЗВАННЫЙ орган», а адресата нет, иREQUIRES_JUDGMENTбыл бы вымыслом — осознанная противоположность Гортинским законам и Конвенции о геноциде. Вместо судьи — обязанность ПРОЦЕССА: Сторона, добросовестно исчерпавшая переговоры и не договорившаяся, ст. 20 не нарушает. Отсутствие инстанции утверждено фактом, иначе молчание пакета было бы неотличимо от недоделки формализатора.Закрыт дефект ворот, найденный этим актом. Разметка заголовков у двух редакций разная: «Статья 1» отдельной строкой в архивной против «Статья 1 Организация тюркских государств» одной строкой в действующей. Вторую форму
ci/check_source_pinning.pyне видел вовсе и находил в действующей редакции НОЛЬ статей, тогда какboundaries.pyнаходил двадцать три, — две меры §33.1 читали один документ разными единицами. Добавлена конвенция под тем же именем языка «ru» (признаки исполнимого содержания берутся по имени, новое уронило бы воротаKeyError-ом), СТОИТ ПОСЛЕ основной формы, поэтому ни одно существующее число корпуса не сдвинулось — проверено сканом всех закреплённых документов корпуса.Четыре закреплённых документа в одном пакете. На странице Протокола опубликованы два акта — сам Протокол (International) и закон РК о его ратификации с заявлением о толковании (KZ). Общий
local_pathне прошёл: учёт статей сканирует весь документ, и у закона все тринадцать статей Протокола оказались бы без фрагмента — ворота назвали коллизию ключа. Закон закреплён отдельным документом, вырезаемым из тех же байтов тем же генератором.Две меры §33.1, по документу на каждую. Редакция 2009 года — EXECUTABLE 19, ANCHORED 4, SOURCE_ONLY 0, покрытие 78,4 %; действующая — EXECUTABLE 20, ANCHORED 3, покрытие 78,7 %; Протокол — EXECUTABLE 10, ANCHORED 3, покрытие 51,5 %. Ноль объявленных границ и ноль необъяснённых
SOURCE_ONLYво всех четырёх документах.Два прочтения ст. 22 части четвёртой. Одна статья называет срок двумя оборотами — «на тридцатый день ПОСЛЕ получения» и «по ИСТЕЧЕНИИ тридцати дней с даты получения», — и прочтений у второго два, с разницей ровно в сутки. Оба записаны
interpretationсоstatus disputed; базовая теория на вопрос НЕ ОТВЕЧАЕТ, потому что акт его не решил.Три оговорки «как правило» (ст. 5, 6, 7) записаны
defeasibleс явным поражающим фактом: без него такое правило ведёт себя какstrictна каждом деле. Правило ст. 8 (председательство) пришлось сделатьdefeasibleне по выбору —strictне вправе читать предикат, производимыйdefeasible(LDC-E4103), а обход черезsupported(...)был бы семантически неверен: он игнорирует поражение.Измерение, поправившее корпусное правило.
MISSING_POLICYсчитался issue уровня ДОКУМЕНТА (вывод, снятый с Договора о космосе). Проба показала иное: без политики §86 запрос, не достигающий календарного терма, чист, а достигающий даётMISSING_POLICYseverity error — различие в ДОСТИЖИМОСТИ терма, а не в движке. Цена не косметическая: дело сcontextProfilesне выразимо поверхностью §267, и подача политики во все дела оставила бы пакет вовсе без.lawtest.Третья мера снята отдельно, и первый её прогон нашёл пробел. Обе меры §33.1 были полны уже при 57 сценариях, но замер по proof-графам показал: из 89 правил применилось хотя бы раз только 55 — полнота покрытия статей говорит о фрагментах и правилах, а не об их срабатывании. Остаток закрыт делами, после чего 86 из 89; три оставшихся — ветви
unlessтрёх оговорок «как правило», которые в proof-графе не появляются по построению (их действие есть отсутствие вывода) и доказываются парами сцен.Проверки:
lawc checkчист,lawc lowerбайтово совпал с закоммиченным CLIR, регрессия 91/91, differential 91/91 байтово (lawc eval==lawref), учёт закрепления — 0 проблем,check_dead_rulesчист. Гейт мёртвых символов нашёл настоящее упущение — двухместноеnotification_received_from, не читавшееся ничем (удалено), и две обещанных комментарием, но не проведённых посылки (связаны).doctor.py nakhchivan-2009: пробелов нет. -
Формализован Договор о коллективной безопасности (Ташкент, 15.05.1992, в редакции Протокола от 10.12.2010) — статьи 1–6 из одиннадцати (пакет
intl.csto.tashkent_treaty,corpus/laws/csto-treaty-1992/). Фаза 1 правового каркаса январских событий 2022 года: международно-правовая сторона. Первый акт корпуса, у которого орган суждения §47.3 назван самим текстом, а не выбран формализатором: статья 3 образует Совет коллективной безопасности в составе глав государств-участников, статья 6 отдаёт им решение об использовании сил и средств системы, — отсюдаauthority CollectiveSecurityCouncil, а не общийCourt(genocide-convention) и не «суды государства» (japan-constitution-art9).Решение СКБ от 06.01.2022 фактом пакета НЕ является, и разрыв записан двумя редакциями одного источника. Текст Решения о направлении Коллективных миротворческих сил в Казахстан не опубликован нигде — ни на сайте Организации, ни в реестре международных договоров РК; публично доступно только ЗАЯВЛЕНИЕ Председателя СКБ того же дня, которое о решении сообщает. Приём Указа № 409 (
semipalatinsk-1991):CSTO_SCB_STATEMENT_TEXT— PINNED_UNOFFICIAL_COPY с закреплёнными байтами заявления;CSTO_SCB_DECISION_TEXT— UNAVAILABLE, фрагмент с локатором и ярлыком, но без текста и безcontent_hash(подPINNED_*тот же фрагмент был быLDC-E5205). Следствие структурное: ни одно правило пакета на решение не анкерено — в сценарий оно приходит adjudicated assertion §73, то есть утверждением ДЕЛА о том, что орган высказался, а не утверждением пакета о том, что́ в решении написано.Два прочтения «агрессии» меняют исход на ОДНИХ И ТЕХ ЖЕ фактах января. Скобочная вставка статьи 4 — «(вооруженному нападению, угрожающему безопасности, стабильности, территориальной целостности и суверенитету)» — допускает две несовместимые линии чтения: ограничивает ли она СУБЪЕКТА нападения (
ArmedAttackByStateReading, довод — отсылка самой статьи 4 к статье 51 Устава ООН) или описывает его ХАРАКТЕР (ExternallyOrganisedAttackReading, допускающее организованное извне нападение негосударственных формирований). Официальная квалификация января 2022 года возможна при втором прочтении, и приписана ему с атрибуцией на закреплённый фрагмент заявления Председателя СКБ, а не на мнение формализатора. Соперничающиеinterpretationнад одним якорем БЕЗinterpretation_group … selection exactly_one(идиомаjapan-constitution-art9: группа блокировала бы весь запрос, включая вопросы по статьям 1, 2, 6). Разница исполняется:armed_attack_onдаётNEITHERпод первым прочтением иTRUE_ONLYпод вторым на одном деле, а профиль §274 даёт разные классы прочности (CSTO-03/04/11).Шесть сценариев из одиннадцати невыразимы на поверхности §267, и это измеренная причина, а не предпочтение. Выбор прочтения §152 из
.lawtestне передаётся вовсе: ось принимается парсером, отбрасывается лоуверингом (LDC-E1307, warning) и раннером.lawtestне показывается ни текстом, ни в--json— тест зеленел бы, исполнив базовую теорию. Поэтому каждый сценарий на прочтение проверяет доезд выбора поmanifest.interpretations, а не по ответу.CSTO-05 держит слепое пятно канала §47.3 на одном деле двумя запросами.
truthк мостовому литералуaggression_establishedдаётREQUIRES_JUDGMENTс типизированным запросом к СКБ;positionsна том же деле отдаёт пустой список приevaluationStatus: COMPUTED— ответ, неотличимый от «право молчит». Мост — СТРОГОЕ правило с литеральной головой: через голову-норму и черезdefeasibleканал невидим обоими способами сразу (измерено на Декларации независимости и Принципах Нюрнберга).Две находки о тексте, которых бриф не содержал. (1) Помощь по статье 4 предоставляется ТОЛЬКО ПО ПРОСЬБЕ пострадавшего — просьба записана посылкой обоих правил абзаца 2, и
.lawtest04 плюс CSTO-08 держат границу: при установленной агрессии и двух участниках позиций помощи нет, пока просьбы нет. (2) Полномочие статьи 6 имеет ДВА основания: «в соответствии со статьями 2 и 4» означает, что решения довольно и при одной УГРОЗЕ, без установленной агрессии, — то есть январское решение можно было обосновать и статьёй 2, тогда как заявление назвало статью 4 (CSTO-09 подаёт нарочно бедное дело: угроза, ни нападения, ни суждения).Границы объявлены, а не обойдены. Расширение среза с названных в задании статей 1–4 до 1–6 записано в трёх местах (
package.law,scope,articles.json): без статьи 6 у решения СКБ нет в пакете основания вовсе — статья 4 говорит, ЧТО государства делают, статья 6 — КТО решает. Состав участников Договора пакетом не утверждается (закреплённый текст подписей не содержит;state_party— факт дела, констант §54 у пакета нет). Окна позиций —[moment, infinity)без вписанной даты: дата вступления в силу в байтах отсутствует. Различие сторон («все остальные государства-участники») — фактом делаparty_other_than, а не!=: сравнение надentity_refдаётTYPE_ERRORпри чистомlawc check.Провенанс. Оба документа — с официального сайта ОДКБ (
odkb-csto.org), закрепленыcorpus/tools/fetch_csto_texts.py(12 760 и 1 072 байта;--checkсверяет байты с сетью, в CI не входит — DECISION-0005 п. 6).materialization_status— PINNED_UNOFFICIAL_COPY: закреплено извлечение со страницы Организации, а не байты депозитарного экземпляра (депозитарий — Генеральный секретарь ОДКБ, ст. 11), поэтомуverifiedAgainstSource = false.Измерено:
lawc checkчист,lint.py— 0 замечаний, учёт статей 6 из 6 в объявленном охвате, глубина §33.1 — EXECUTABLE 6 (ANCHORED 0, SOURCE_ONLY 0, вне пакета 5), 34 нормы при нуле мёртвых, разметка §218 полная (35 объявлений, 34 нормы,unlabelled: 0), 11/11 сценариев, 4/4 теста §267, 16 evaluate-вызовов байтово идентичныlawref↔lawc,check_source_pinningпо пакету чист, индекс реестра пересобран (100 пакетов),doctor.py csto-treaty-1992— «пробелов нет». -
Формализовано высочайшее повеление от 25 июня 1916 года «О привлечении мужского инородческого населения империи для работ по устройству оборонительных сооружений и военных сообщений в районе действующей армии, а равно для всяких иных необходимых для государственной обороны работ» — оба пункта из двух (пакет
ru.empire.requisition_1916,corpus/laws/requisition-1916/). Первый акт Российской ИМПЕРИИ в корпусе. Акт репрессивный и стал непосредственной правовой причиной восстания 1916 года в Средней Азии и Казахстане; формализован ТЕКСТ как он есть, историческая оценка — в комментарии пакета со ссылкой на источник (Котюкова Т. В. (отв. ред.), «Восстания 1916 г. в азиатской России: неизвестное об известном», М.: ИВИ РАН, 2017), тот же принцип, что уmartial-law-1941,molotov-ribbentropиus-emancipation.Три содержательных ответа на один вопрос, и различие между ними правовое, а не техническое. Названное лицо даёт
TRUE_ONLY; прямо изъятое —FALSE_ONLY(оговорка «за исключением» выраженаunless … then not …, то есть акт о нём ГОВОРИТ, а не молчит); лицо, чей сословный разряд «инородец» делом не утверждён, —NEITHER. Третий ответ — не пробел формализации: разряд определён ВНЕ повеления (Свод законов о состояниях, Устав об управлении инородцев 1822 года), предикат объявлен эмпирическим сознательно, и граница проверяется делом REQ-09.Оговорки скоплены по своим подпунктам, и это наблюдаемо на паре дел. Один и тот же бродячий инородец изъят в Тобольской губернии (подпункт «а») и привлекается в Ферганской области (подпункт «б») — подпункт «б» состоит из одного перечня и оговорок не знает вовсе (REQ-06/REQ-07). Признак подпункта стоит в ПОСЫЛКЕ каждого правила-изъятия; убери его — и оба дела дадут одинаковый ответ при чистом
lawc check.Расхождение с обзорами, стоившее второго свидетеля. Езиды, ингилойцы-христиане и абхазцы-христиане Сухумского округа обычно перечисляются среди ИЗЪЯТЫХ; закрывающая скобка подпункта «в» стоит ДО них, и по закреплённым байтам они ПРИЗЫВАЮТСЯ наравне с мусульманским населением Терской и Кубанской областей и Закавказья. Прочтение сверено с независимым изданием (Котюкова 2017, с. 114, со ссылкой на РГВИА ф. 1300 оп. 1 д. 1031 л. 3), а не выведено из пунктуации одной публикации; держат его три дела REQ-11.
Возраст 19—43 работает пределом полномочия, а не призывным возрастом. Пункт 2 передаёт «определение возрастов» соглашению министров внутренних дел и военного, и рамка пункта 1 («согласно предыдущему (1) пункту») — условие действительности §127 у power-нормы: 31 год эффект производит, 50 лет нет, а само полномочие в обоих случаях ACTIVE (REQ-17). Исторические 19—31 назначила циркулярная телеграмма МВД от 27.06.1916 — ОТДЕЛЬНЫЙ акт во исполнение пункта 2, в пакет сознательно не включённый: взяв его, мы получили бы пункт 2, который перестал бы быть делегацией и стал описанием.
Три замыкания §70, и все три над утверждаемым, а не выводимым — иначе положительный вывод пришёл бы от правила, отрицательный от замыкания, и предикат стал бы
BOTH. Замкнуты одиннадцать изъятых местностей, девять областей подпункта «б» и запись о подлежании воинской повинности натурою. Третье понадобилось потому, что оговорка требует ОБЕИХ полярностей одного факта (осетины-мусульмане изъяты, когда подлежат; турки и курды — когда не подлежат), аand notнад эмпирическим предикатом без замыкания даётNEITHER, и правило молча не срабатывало бы никогда. В том же пункте рядом стоит ОТКРЫТЫЙ остаток — «и прочих подобных им инородцев Ставропольской губернии» перечня не образует, и замкнуть его значило бы сузить акт.Заведена двенадцатая объявляемая единица деления §33.1 —
point_paren. Акт нумерует пункты СКОБКОЙ («1)», «2)»), и прежняя конвенцияpoint(ищет «1. ») не увидела бы его вовсе — тот же молчаливый отказ, что уже случался с «26-бап», с топиком Fannie Mae и с римской статьёй договора. Вписана в ОБЕ меры разом (ci/check_source_pinning.pyи.claude/skills/formalize-act/scripts/boundaries.py), выражения обязаны совпадать: буквенные подпункты «а)», «б)», «в)» стоят в тех же байтах и отличаются от единицы одной цифрой, поэтому группа захвата требует ЦИФР. Как одиннадцать прежних объявляемых единиц, в автоопределение НЕ входит.Третья мера снята отдельно, и первый её прогон нашёл пробел. Обе меры §33.1 полны (глубина EXECUTABLE 2 из 2, байтовое покрытие 99,8 %, учёт пунктов 2 из 2 при нуле неучтённых), но полнота их не значит «нормы исполняются»: замер по proof-графам показал 26 применившихся норм из 29, и три §206-расщепления (курды, трухмены, ногайцы) были закрыты ДЕЛАМИ, а не объявлены покрытыми. После — 29 из 29. Фаззер
--targeted 40покрыл 21 правило из 27; шесть непокрытых — ровно те, что требуют скаляров и пакетных констант, и все шесть закрыты сценариями.Источник и его честная граница. Официальная публикация («Собрание узаконений и распоряжений правительства», отд. 1, № 182 от 6 июля 1916 г., стр. 1747) машиночитаемых байтов в открытом доступе не имеет; закреплена вычитанная копия сборника «Восстание 1916 года в Средней Азии и Казахстане» (М.: Изд-во АН СССР, 1960, с. 25—26) по НЕИЗМЕНЯЕМОЙ ревизии Русской Викитеки oldid 5684628 (
corpus/tools/fetch_requisition_1916_text.py) —materialization_statusPINNED_UNOFFICIAL_COPY,verifiedAgainstSource = false. Нормализаций нет ни одной, и это ПРОВЕРЯЕТСЯ, а не декларируется:assert_cleanроняет прогон, появись в источнике мягкий перенос или неразрывный пробел. Странности издания сохранены дословно («Вилюйской—Якутской области», «Енисейской губернии и уезда», «трухмен»).Форма акта названа по нему самому. Это высочайшее ПОВЕЛЕНИЕ («Государю императору благоугодно было… высочайше соизволить повелеть»), а не «царский указ», как его зовут литература и хрестоматии; различие не терминологическое — именно потому, что повеление объявляет министр, пункт 2 передаёт определение возрастов соглашению министров.
legalStatus = historical_monumentпо прецедентуmartial-law-1941: отменяющего акта источник не даёт, а издавший правопорядок прекратил существование. Связь сalash-orda/alashисторически несомненна («Памятная записка о киргизах» Букейханова, Дулатова и Алмасова цитирует именно это повеление), но в пакет НЕ вписана: инструментом её не доказать, аsource-узел был бы утверждением о праве, которого закреплённые байты не дают.Измерено:
lawc checkчист (0 диагностик, 0 × LDC-E5201/E5202),lint.py— 0 замечаний, регрессия 27/27,check_kz_differential --only requisition_1916— 81 вызов байтово идентичен, третья нога контура (Lean) — 81 сертификат оракула и 81 сертификат движка приняты, ни одного отвергнутого,check_lowerOK,check_dead_rules/check_dead_symbols/check_label_coverage/check_verbalization_totalityзелены,doctor.py requisition-1916— «пробелов нет». -
Ф0 галереи (DECISION-0055): индекс реестра догнал корпус с 58 до 95 пакетов, а его ворота перестали верить генератору на слово. Отставание в 37 пакетов из 95 копилось молча, и молчали оба контура сразу — по разным причинам, каждая из которых чинится отдельно.
Локально регенерация была привязана только к полному прогону.
registry/build_index.pyстоит в шаге 4ci/run_all.sh, аrun_all.shпри акт-локальной работе никто не гоняет:check_kz_differentialна полном корпусе — около трёх часов. Скиллformalize-actперестраивал CLIR (gen_kz_clir.py) и не перестраивал индекс, то есть каждая формализация нового акта увеличивала разрыв на единицу. Шаг вписан вverify.pyв обе секции —corpus/(строго ПОСЛЕgen CLIR: индекс производен от него) иregistry/. Сужать до семейства нельзя и не нужно: обратный индекс §194 ходит между пакетами, а весь проход стоит 6,7 с — на фоне суженной KZ-регрессии (6 с) и differential (29 с) это ничто.В GitHub CI проверка идемпотентности была слепа ровно к тому случаю, ради которого стоит. Job
registryв.github/workflows/docs.ymlсверял пересборку черезgit diff --exit-code, а новый пакет добавляет в индекс НОВЫЕ каталогиregistry/index/p/<имя>/— untracked, которыхgit diffне видит. Асимметрия porcelain/diff записана в CLAUDE.md как намеренная в пользу локального гейта, но здесь она обнуляла ворота: 37 новых каталогов не покраснели бы никогда. Заменено наgit status --porcelain.Ворота брали вердикт об анкерах §194 из
health.json— то есть у того самого генератора, который проверяют. Пропуск анкера в обходеbuild_index.pyбыл бы невидим с обеих сторон: класс «обе стороны ошибаются одинаково», только сторона здесь одна. Свойство 9 считает анкеры само, обходом корпуса; свойство 10 (новое) сверяет собственный счёт со сводкой — витрина печатает её как «N URN-анкеров разрешены», и расхождение означало бы обещание проверенности, которой не было. Корпус стал АРГУМЕНТОМcheck(), а не чтением внутри: пока он читался внутри, канарейка могла портить только индекс, и проверка анкеров была непроверяемой в принципе. Класс канарейки «анкер» теперь портит КОРПУС — убирает узел-адресат живого анкера.Выход A3-таблицы красил 36 не-дефектов. Таблица десугаризуется в правила-строки, и в CLIR появляется
symbol_declтолько для её ВХОДА (…:table:<имя>/input); выходной предикат назван единственный раз — вemit.predicatesidecar-файла, а объявления в CLIR не имеет вовсе. Ворота требовали узел для каждой целиproduced/usesи потому краснели на всех 36 правилах-строках Табели о рангах (civil_rank_title,court_rank_title,land_rank_title) — та же ошибка, что мерить кодовые анкеры меркой URN-формы (DECISION-0022 §4). Законная цель — узел ЛИБО объявленный emit; список ТОЧНЫЙ (читается изcorpus/laws/**/*.lawtable.json), а не «всё, что похоже на таблицу», и канарейка «выход A3» опустошает его, требуя покраснения.Регенерация вскрыла настоящий дефект, который прятался за 472 строками шума. После пересборки 476 проблем свелись к четырём, три из которых — ложные (A3 выше), а четвёртая реальна: правило
CivilRightsAndDutyActionIsTransactionГК РК ссылается@sourceна фрагментGK_ART147, которого не существует. Причина — в закреплённом источнике Adilet строка 1147 выглядит как «Глава 4. Сделки Статья 147. Понятие сделки»: заголовок главы склеен с заголовком статьи, нарезка не увидела границу, и текст статьи 147 целиком поглощён фрагментомGK_ART146. Новая словоформа известного класса (аппарат Adilet внутри статей); учёт статей §33.1 занижен на одну единицу. Закрыто 29.08.2026 нормализацией ИЗВЛЕЧЕНИЯ, а не разрезом фрагмента. Обход склейки внутри генератора был отвергнут доводом, который проверяется, а не взвешивается: фрагмент обязан остаться непрерывной подстрокой публикации (LDC-E5202), поэтому текст статьи 147 пришлось бы завести вместе с «Глава 4. Сделки » — а тогда статья 147 так и не стала бы единицей учёта, потому чтоcheck_source_pinning.pyопознаёт статью тем же якорем^Статья N., что и нарезка. Хуже: приscope: "whole"охват выводится ИЗ СКАНА, и фрагмент с локаторомarticle/147упал бы в «фрагменты вне объявленного охвата» — то есть обход менял один красный гейт на другой. Восстановлен перенос строки вsources/civil-code/ru.txt(и в байтово идентичной копииcivil-code-terms, чтобы одна и та же выемка Adilet не разошлась в двух пакетах),content_hash§27.3 обеих публикаций перезакреплён. Решение НЕ редакторское: остальные 23 заголовка главы стоят в этом же документе на отдельной строке — нормализована одна строка к конвенции самого документа. Итог: анкерGK_ART147разрешается, статей под учётом §33.1 стало 425 вместо 424, глубинаcivil-codeEXECUTABLE 413 → 414 (вписана точечно--register, а не--write: база глубины на живом дереве заморозила бы чужие промежуточные значения). Против повторения словоформы — сторож вcorpus/tools/sync_civil_code_fragments.py: генератор отказывает, увидев ЛЮБОЙ заголовок статьи не с начала строки, и называет строку и номер.Канарейка — 10/10 классов (было 8/8). Замеры 29.08.2026: генератор 6,7 с на 94 пакета и 8,1 с на 95, ворота 3,8 с, индекс 45 МБ.
-
Ф1 галереи: лента времени и фасеты как производные артефакты (
registry/index/timeline.json,facets.json). Опорная точка каждого акта берётся из машины редакций §31/D1 —lifecycleузлов источника (adopted/published/in_force/repealed), а не из часов: 73 пакета из 95 датируются, самый ранний — Русская Правда, 1072-05-02.Отсутствие даты — не одно состояние, а два различимых, и различие наблюдаемо, а не додумано. У 13 пакетов узлов источника нет вовсе (конституционные подпакеты: источники вынесены в
kz.constitution.sources) — это АДРЕС, где дата есть. У 9 источник есть, но датировать его нечем (Гортинские законы, Декалог, Яса, XII таблиц, De legibus, Клятва Гиппократа, «Қасым ханның қасқа жолы», «Есім ханның ескі жолы», «Жеті жарғы») — это предмет кураторской датировки Ф3, потому что «около 450 г. до н. э.» есть историография, а не дата в силе. Свалить их в общее «без даты» значило бы назвать пробелом то, что пробелом не является; каждая запись разделаundatedобязана нести причину, и ворота этого требуют.Лента вскрыла дефект данных, который иначе не виден ничем. У четырёх пакетов в
lifecycleстоит дата ФОРМАЛИЗАЦИИ, а не дата акта:incoterms.group_c(редакция 2020 года) иgradus.counterpoint(Gradus ad Parnassum, 1725) датированы 28–29 августа 2026 года, уfaraid.sharesиkz.corpus.tuystyqдаты принятия нет по природе — это доктринальный расчёт и обычай, — и подставленная «сегодняшняя» хуже отсутствия, потому что утверждает то, чего нет. Дата вlifecycleесть вход проекции as-of иdiff-editions, поэтому цена шире витрины. Заведено отдельной задачей; попутно стоит проверить, не бралась ли она из часов машины — тогда это класс, запрещённый determinism-линтами, только в данных, а не в коде.Два новых свойства ворот и четыре класса канарейки (14/14). Лента полна (каждый пакет каталога ровно один раз), упорядочена (витрина не сортирует — инвариант 5, значит порядок обязан быть свойством артефакта) и объясняет пробелы; фасеты полны. Членство в
unfacetedопределяется ПО ФАКТУ непопадания, а не по отсутствию секции[metadata], и разница не теоретическая: уkz.corpus.clir.labor_calendarсекция есть, но фасетных полей в ней нет, и первая редакция генератора роняла его мимо обоих разделов разом — пакет исчезал из навигации, не будучи нигде назван. Поймали это собственные ворота на первом же прогоне.Страницы витрины:
/timeline/и/facets/(registry-app/src/pages/, ссылки в шапкеBase.astro). Лента разложена по векам — XI, XIV, XVII, XVIII, XIX, XX, XXI, и пропуск XII–XIII веков есть правда о корпусе, а не дыра вёрстки; у каждого акта год, число редакций, пометка отмены и полоса действия с явным различением «окно открыто» и «закрыто по такую-то дату». Раздел «Вне оси» подписан по РОДУ пробела, а не списком недостающего: у одних адрес, где дата есть, у других её нет и быть не может. Фасеты — четыре оси карточками с полным перечнем пакетов и разделом «Вне срезов». Обе страницы читают готовые артефакты и не вычисляют ничего (инвариант 5); группировка по векам — раскладка полок, а не суждение о датах, и отрицательные годы учтены сразу, хотя в корпусе пока не встречаются. Сборка витрины — 1045 страниц за 14 с.Фасеты корпуса: 20 юрисдикций (включая исторические политии собственными именами — GoldenHorde, MongolEmpire, KievanRus, RomanRepublic, Gortyn, HolySee, и
noneу восьми норм без суверена), 19 родов инструмента (law, code, regulation, treaty, doctrine, treatise, custom_law, constitution, oath, proclamation…), 9 правовых статусов, 6 степеней верности источнику. Вunfaceted— ровно пять служебных пакетов (три календаря, консолидированный audit-world, учебный срез), то есть именно те, что экспонатами не являются. -
Ф5 галереи: акт как процесс запечён в индекс.
p/<name>/process.jsonпорождает функция оракулаbuild_static_report(О-5 плана LAYERS-NEXT) — стадии, переходы, их условия и заметки статического взгляда. Процедуры §159–§164 есть у шести пакетов из 105: правила ФИДЕ, Стамбульский проект договора, Минский пакет 2015, госзакупки, Кантар и туыстық. Вся стоимость — 0,3 с на весь корпус, потому что дела не исполняются: это устройство процедуры, а не ход дела. Вкладка «Процесс» появляется только у этих шести — у остальных она вела бы на страницу, объясняющую своё отсутствие, а акт без процедуры не обязан оправдываться.Заметки статического взгляда переносятся как есть, включая признание предела.
SINK_STATEговорит «из состояния переходов нет, а законный ли это терминал §160 — по CLIR не видно: маркера терминальности в узлах нет». Достроить его догадкой значило бы объявить процесс завершённым там, где он, возможно, оборван. Ворота 16 держат замкнутость графа: переход в необъявленное состояние обещал бы витрине ход дела, которого в акте нет, а связь «каталог объявляет процедуру» ↔ «файл записан» рвётся молча — пакет просто теряет вкладку.Два дефекта поймано глазами, и текстовая проверка не дала бы ни одного. Заголовок процедуры выходил ПУСТЫМ на
kz.corpus.qantar:qualifierтам — пустая строка, а??пропускает её как значение (нужен||); та же ловушка сидела в двух местах сdisplayName. И подзаголовок ленты печатал «от — года до наших дней», потому что первой записью стала курируемая дата, у которойanchorнет вовсе. Оба — класс «данные другого рода, чем ждёт шаблон», и оба видны только на отрисованной странице.Argmap отложен с названной причиной.
argmap.projectпроецирует ГОТОВЫЙ proof-граф, то есть требует исполненного evaluation-документа: запекание карт спора означало бы прогон сценариев внутри генератора, который сегодня укладывается в 7 с целиком. Отдельная работа с собственным бюджетом — честнее назвать, чем встроить втихую. Диахрония отдельного слайдера не потребовала: вкладка «Редакции» закрывает её с DECISION-0022.Канарейка — 20/20 классов (было 18/18).
-
Ф4 галереи: живые экспонаты — «испытать» ведёт в рабочий стол. Конструктор научился открывать вложенный пакет по адресу (
?sample=<id>), витрина показывает кнопку у пяти вложенных пакетов из 103 и объясняет остальным, почему её нет, приводя список вложенных. Витрина по-прежнему не исполняет ничего (инвариант 5): оба движка живут в конструкторе, где обещание «хост не меняет ответ» держат ворота 26–28/43.Мост держится воротами, потому что рвётся молча. Пакет вложен в рабочий стол оттого, что назван в
constructor/tools/build-samples.mjs, а связь с каталогом идёт через namespacelaw.toml— соединять по имени каталога нельзя, они расходятся втроём (kz-pd↔personal-data↔urn:kz:corpus:clir:personal-data). Переименуй каталог образца — и кнопка «испытать» исчезнет со страницы, не уронив ничего; свойство 15 пересчитывает связь независимо и требует, чтобы число вложенных образцов совпадало с числом связанных пакетов.Публичной ссылки нет, и это сказано словами. Конструктор в артефакт GitHub Pages не собирается — там документация и витрина, — поэтому без переменной сборки
WORKBENCH_URLстраница печатает команду запуска вместо кнопки. Мёртвая ссылка обещала бы работу, которой нет.Параметр снимается с адреса сразу при открытии, и это не косметика. Ссылка одноразовая: оставь её в адресе — и перезагрузка страницы затрёт работу человека повторным открытием пакета, чего он не просил. Тем же снятием вход делается идемпотентным без ref-флага, а тот в StrictMode не спасает — React монтирует компонент дважды, у каждого экземпляра свой ref, и пакет открывался два раза подряд (поймано глазами на живом сервере: два уведомления вместо одного).
-
Ф3 галереи: кураторский слой — второй авторский вход реестра (
registry/collections.toml). Отличается от секции[metadata]не формой, а РОДОМ утверждения, и всё устройство файла из этого следует: метадата говорит об акте («издатель такой-то») и проверяема против источника, зал говорит о МЕСТЕ акта в истории («эти двенадцать актов об одном») и проверяем только согласием читателя. Поэтому файл правится руками, ни один генератор в него не пишет, а автогенерация кураторских текстов запрещена прямо (DECISION-0055, п. 7).У каждой кураторской даты обязательное основание. Поле
basisтребуется воротами непустым и печатается на странице рядом с датой, а не в сноске: «около 450 года до н. э.» без указания происхождения неотличимо от даты, вычисленной из источника, и витрина выдавала бы суждение за факт реестра. Датировано 12 актов, и у восьми из них основание — САМО НАЗВАНИЕ, данное автором пакета: датировка уже заявлена в[metadata].titleи здесь лишь переносится в машинное поле, то есть не сочиняется. Курируемая дата набрана на ленте иначе, чем вычисленная, — различие происхождения видно до чтения пояснения.Вскрылся третий род датировки, которого план не предвидел: условная шкала. У «Антигоны» lifecycle ЕСТЬ, но календарного смысла не имеет: три эдикта Креонта датированы 1000-01-01, -02 и -03, чтобы второй отменял первый, а третий — второй, и неписаный закон объявлен окном без начала и конца. Формализация верна, а лента ставила акт в XI век между Ясой и Русской Правдой. Введён флаг
conventional_scale: поверх вычисленной даты кураторская ложится ТОЛЬКО с ним и с основанием, объясняющим, почему машинная шкала условна; по умолчанию ворота отвергают — кураторская датировка не поправка к машинной, а замена там, где машинной нет. Два акта сознательно оставлены вне оси: у системы родства и у наследственного расчёта нет ни момента принятия, ни издания, и любая точка на ленте утверждала бы событие, которого не было.Шесть залов, храповик и четыре класса канарейки (18/18). «Право степи», «Право войны и мира», «Право распределения», «Норма без суверена», «Учредительные акты», «Право состояний» — 57 актов из 102; зал может пересекаться с другим («Жеті жарғы» — и степное право, и обычай без суверена), и это свойство, а не дефект. Ссылка на пакет, которого нет в каталоге, роняет ворота, но генератор её ПЕРЕНОСИТ в поле
missing, а не выбрасывает: молча выброшенная ссылка показала бы зал полным, лишившись экспоната от одной опечатки. Состав держитregistry/collections-ratchet.json— новый зал обязан быть вписан туда осознанным действием, потому что незаписанный зал не защищён вовсе. Порядок ленты сравнивается теперь по ЧИСЛУ года, а не по строке: «-0450» и «1072» лексикографически сравнимы, а хронологически нет, и до н. э. выстроилось бы задом наперёд — свою же проверку порядка пришлось чинить сразу после того, как она это поймала.Статус содержимого — черновик. Инфраструктура (формат, генератор, ворота, храповик, канарейка, страница
/halls/) от содержимого не зависит и работает на любом наборе; тексты залов и обоснования датировок подготовлены к проверке владельцем и не являются утверждённым кураторским суждением, пока не подписаны коммитом человека. -
Ф2 галереи: страница пакета перестроена из карточки зависимости в экспонат. Новых данных не понадобилось — вся перекомпоновка идёт из уже запечённого (
packages.json,sources.json,coverage.json, дескриптор), и ни одно число на странице по-прежнему не вычисляется в шаблоне (инвариант 5).Этикетка (
PackageLabel.astro). Издатель, юрисдикция, род инструмента, правовое состояние, что именно закреплено под хэшем, и заявлял ли автор ручную сверку текста с источником. Значения — из секции[metadata](DECISION-0051), словари перевода ЯВНЫЕ и неполные по построению: незнакомое значение печатается как есть, потому что молчаливая нормализация чужого словаря была бы догадкой о смысле. Юрисдикцияnoneпечатается словами «без суверена — норма не издана властью»: у клятвы, доктрины и обычая суверена нет, и пустая ячейка на этом месте читалась бы как пробел данных. Пакет без секции получает не пустую этикетку, а объяснение, почему её нет.Состояние сохранности.
materializationStatus§194 объявляет, ЧТО лежит под хэшем редакции, и различия содержательные: закреплённые официальные байты (6 редакций корпуса), неофициальная копия (142), реконструкция по расходящимся свидетельствам (8), только изложение содержания (8) иUNAVAILABLE(6). Последний получает отдельную строку с ПОИМЕННЫМ перечислением утраченного — у Семипалатинского указа это «Русский текст указа, закрытая часть: пункты 3—4 (свободной копии не существует)». Формулировка нарочно прямая: норма, которой нет текста, не может быть ни выведена, ни опровергнута, и сказать это честнее, чем показать пробел.Блок «Сослаться» вместо npm-блока «install». Название акта, работа-источник,
name@versionиcontentHash: адрес указывает не на «последнюю версию», а на конкретные байты — то, чего требует цитирование и чего номер версии не даёт. Проверено на трёх несовпадающих судьбах — утраченный текст, реконструкция, норма без суверена. -
Два новых ворот молчания: приоритет §116 через страту и
includeв толковании (ci/check_priority_strata.py,ci/check_interpretation_gate.py). Оба класса — «правило написано, исполнимо, читается и всё равно ничего не делает», оба до 29.08.2026 молчали при полностью зелёныхcheck,lower,check_dead_rulesи differential.ВСЕ ВОСЕМЬ РЁБЕР ПОЧИНЕНЫ ТЕМ ЖЕ ДНЁМ, реестр долга пуст. ОСМС — три: освобождение от взносов и отчислений не снимало обязанность платить, и это доказано опытом ДО/ПОСЛЕ на одних фактах (сотрудник органов внутренних дел давал
BOTH, стал даватьFALSE_ONLY); двум парам дописан конъюнктnot_known(released_from_*), третьей — приём обратный, потому что уown_payment_dueвторой дефитер стоял в страте 0 верно и поднимать общую норму значило бы сломать работающую пару ради сломанной. «О правовых актах» — два: акт, подлежащий государственной регистрации, вступал в силу и со дня подписания; особый срок структурного элемента не вытеснял срок акта, причём там было ДВА дефекта сразу — разные страты И спор двух ПОЛОЖИТЕЛЬНЫХ голов, который приоритет не разрешает в принципе, а правило вдобавок не исполняло собственной метки («при отсутствии особого срока»). XII таблиц — одно: вещь, переданная с согласия опекуна, давалаBOTH; изъятию дописанin_tutela, и это верное чтение — у весталки, освобождённой V.1, нет ни опекуна, ни запрета. Регламент 261/2004 — два, в том же коммите, что и акт.ВОРОТА ОКУПИЛИСЬ В ТОТ ЖЕ ДЕНЬ, и не на старом долге. Через полчаса после разводки в конвейер приехал новый пакет параллельной сессии (
intl-general-average, Йорк-Антверпенские правила) — и ворота назвали в нём девятое ребро через страту прежде, чем его заметил автор. Случай поучительнее шести прежних: Rule Paramount вытесняет ТРИ правила сразу, два в ранге 0, нумерованный путь в ранге 1. Первая попытка починки подняла дефитер в ранг 1 и разорвала две работающие пары вместо одной сломанной — ворота показали это немедленно. Верным оказалось обратное направление: пятнадцать нумерованных правил былиdefeasibleБЕЗ ПРИЧИНЫ, и их строгость опустила мост в ранг 0. Проверено значением: неразумная жертва даётFALSE_ONLYпри одном узлеdefeat. И тут же сработали соседние ворота: сплошной перевод вstrictзадел правило XXIII с ОТРИЦАТЕЛЬНОЙ головой, которая в строгом замыкании не исполняется вовсе, —check_dead_rulesназвал его поимённо в том же прогоне.ВТОРАЯ ПОЛОВИНА ТЕХ ЖЕ ВОРОТ — то, что §111 запрещает дословно: продюсеры одного предиката РАЗНЫХ ПОЛЯРНОСТЕЙ в разных стратах. Страта фиксирует
TruthStatus(§111 шаг 7), и продюсер противоположной полярности стратой выше отозвать фиксацию не может. Один такой предикат на 95 документов (kz-alash-orda,pay_rate_valid) — и тоже дефект чтения: отрицательное правило не требовало приёма на службу, хотя весь пункт III о жаловании ПРИНЯТОГО милиционера. Починено, сцена достроена до полного дела. Вlawc checkэто сознательно НЕ вынесено:law-hir/src/strata.rsработает по AST и рангов §110 не считает, а считают их два места по CLIR (lawrefиlaw-eval); третья копия ранжирования на третьем представлении разошлась бы с обеими молча — ровно тот класс отказа, ради которого весь куст ворот заведён.Приоритет через страту встречался ПЯТЬ раз, и каждый раз его находили заново, делом (
fnma-income,incoterms-2020,locke-treatise,alash-orda,air-passenger-rights). §111 собирает конфликтные группы для КАЖДОЙ СТРАТЫ ОТДЕЛЬНО, а ранг §110 растёт от чтения поражаемого предиката в теле: норма и её дефитер, разойдясь по стратам, в одну группу не попадают, и объявленное ребро не применяется вообще. Узелpriority_ruleпри этом в CLIR на месте и виденgrep-ом. Ворота обошли ВСЕ приоритеты корпуса разом — 326 рёбер, 318 работают, 8 нет: два были вair-passenger-rightsи починены тем же коммитом, шесть внесены вcorpus/priority-strata.jsonкак ДОЛГ с диагнозом на каждое (какие продюсеры, какие ранги, куда двигать). Чинит владелец пакета: выравнивание страт МЕНЯЕТ ОТВЕТЫ НА ДЕЛА. Ранги считает функция самого вывода —rule_ranksповерхstratify, извлечённой из телаdefeasible_closureбез изменения поведения (селфтест, 312 векторов и differential байтово прежние).Проза §111 половину обязанности уже несёт, а компилятор — нет, и это отдельная находка. Барьер завершения предиката требует, чтобы «все потенциальные producers ОБЕИХ ПОЛЯРНОСТЕЙ
P/not Pзавершились до первого status-sensitive consumer»;law-hir/src/strata.rsреализует только сторону ПОТРЕБИТЕЛЯ (LDC-E4103) и молчит о расхождении самих продюсеров. В четырёх случаях из шести продюсеры разъехались ещё и по полярностям — ровно в конфигурацию, запрещённую дословно. Достройка барьера доlawc checkесть КОМПИЛЯТОРНЫЙ ДЕФЕКТ, а не errata; она покраснит три пакета корпуса до починки их владельцами и потому вынесена отдельным решением.includeв толковании гасит норму молча. §152/§157: правило с непустой интерпретационной принадлежностью активно ТОЛЬКО при выбранном прочтении, и без выбора вычёркивается ДО исполнения. Четыре обязанности Регламента 261/2004 были помеченыinclude-ом как открытые оценочные стандарты («разумное соотношение с временем ожидания», «подходящие альтернативные средства», «эффективные санкции») и перестали существовать на каждом деле. Критерий, ради которого заведены ворота:includeуместен там, где толкование ВЫБИРАЕТ между прочтениями, дающими разные нормы, и неуместен там, где стандарт качествует СОДЕРЖАНИЕ обязанности, а не её существование.corpus/interpretation-gated.jsonтребует причину на каждое включённое правило; 37 правил, стоявших под гейтом раньше, вынесены в замороженныйbaseline— их прочтения автор ворот не проверял и выдавать чужое решение за проверенное не стал.У меры глубины §33.1 появился шестой уровень
INTERPRETED. До негоboundaries.pyо гейте толкования не знал вовсе и считал статьюEXECUTABLEпо наличию правила с якорем на неё — четыре статьи Регламента стоялиEXECUTABLE, пока их норм не существовало ни на одном деле, и лгала мера ГРОМЧЕ прочих чисел отчёта, потому чтоEXECUTABLEесть высший уровень §33.1. Направление храповика 0, как уANCHOREDиEXCLUDED: рост неотличим от тихого бегства из-подEXECUTABLE, падение — от снятия чужого прочтения без проверки. Числа корпуса не сдвинулись ни у одного акта — в каждом пакете с гейтом у гейтованной статьи нашлось и негейтованное правило; уровень заведён СТОРОЖЕМ ровно того случая, на котором попался Регламент, когда под гейт уходят все правила статьи разом. Канарейка: гейт на единственное правило ст. 18 роняет меру с 19EXECUTABLEна 18 + 1INTERPRETED. -
«Семь заповедей» из «Скотного двора» Оруэлла (пакет
eng.orwell.animal_farm) — первый вымышленный правопорядок корпуса под каталожной метадатой (legalStatus = literary,jurisdiction AnimalFarm) и витрина машины редакций §31/D1: пять редакций одного source_work, больше, чем у любого другого акта. Пять состояний стены с полным lifecycle (датировка — конвенция «глава N → 1945-N-01», записана в sources.law), три тайные поправки и переписывание целиком; четыре revision-узла безcaused_by— правящего акта не существует, анонимность перекраски и есть предмет. Все редакцииPINNED_EDITORIAL_RECONSTRUCTION(E-0057): закреплены только надписи стены (~120 слов), собранные из показаний романа-свидетеля и сверенные с ним дословно; сам роман не вендорен (в США охраняется до 2041). Каждая из четырёх границ редакций переворачивает РОВНО ОДИН сценарийimpact-editions: легализация кроватей без простыней, амнистия казней «с причиной», умеренное пьянство, одежда на переписанной стене. Раздельные головы…_original/…_amended(приём Русской Правды) делают поправку видимой парой вопросов к одному делу без проекции; «WITHOUT CAUSE» — презумпция, чьё поражение ВЫВОДИТ «не нарушение» (FALSE_ONLY, сцена гл. VIII дословно); «некоторые равнее» — канал суждения §47.3 (authority Pigs,REQUIRES_JUDGMENT); равенство переживает все пять редакций. Покрытие байтов 91,9–100 % по пяти редакциям, 12 норм (мёртвых 0), разметка §218 полная, 17/17 сценариев, 17 evaluate-вызовов байтово идентичныlawref↔lawc,doctor.pyбез пробелов. Попутно найден молчаливый отказ:impact-editionsпринимает непарсящуюся дату (лексикографическое сравнение, класс E-0048) и выдаёт уверенный вердикт — заведена задача на валидацию. -
Регламент (ЕС) № 261/2004 о правах авиапассажиров формализован целиком (11.02.2004, в силе с 17.02.2005; пакет
eu.transport.air_passenger_rights, юрисдикция EU,in_force) — первый акт вторичного права Европейского союза в корпусе и первый, чьё вычислительное ядро целиком лежит в A3-таблицах решений. 19 статей из 19, глубина §33.1 EXECUTABLE 19 / ANCHORED 0 / SOURCE_ONLY 0, покрытие байтов 99,9 %, 120 правил (мёртвых 0), 4 таблицы A3, 3 замыкания §70, один канал суждения §47.3, одна презумпция §113, шесть точек истолкования; 37 сценариев и 5 тестов §267 зелёные, все 37 evaluate-вызовов байтово идентичныlawref↔lawc, 37/37 сертификатов приняты ядром Lean (и документ оракула, и документ движка), разметка §218 полная,doctor.pyбез пробелов.ЧЕТЫРЕ СЕТКИ — ЧЕТЫРЕ ТАБЛИЦЫ, И ВСЕ
unique+total: true. Суммы 250/400/600 EUR по дальности (ст. 7 п. 1), пороги задержки 2/3/4 часа (ст. 6 п. 1), предел опоздания при маршрутизации (ст. 7 п. 2) и доли возврата 30/50/75 % при понижении класса (ст. 10 п. 2). Разница с тремя правилами, написанными от руки, не в форме записи, а в том, ЧТО доказано:uniqueтребует попарной непересекаемости строк (перекрытие —LDC-E8301),total: true— доказанного покрытия всей области входов (пропуск —LDC-E8302). Пропущенная полоса дальности у правил дала быNEITHER, неотличимый от «компенсация не полагается»; здесь она не соберётся. Границы полос взяты из текста и проверены ЗНАЧЕНИЕМ: рейс ровно 1500 км даёт 250 EUR, ровно 3500 км — 400 EUR. У четвёртой таблицы ТРИ входа: без колонки о французских заморских департаментах рейс туда получил бы 50 % вместо 75 %, которые прямо даёт пункт (c).ЗАДЕРЖКА КОМПЕНСАЦИИ НЕ ДАЁТ, И СЦЕНА СТОРОЖИТ ЭТУ ГРАНИЦУ. Текст связывает ст. 7 только с отказом в посадке (ст. 4 п. 3) и отменой (ст. 5 п. 1 (c)); ст. 6 даёт при задержке лишь содействие и обслуживание. Расширение Суда ЕС по объединённым делам C-402/07 и C-432/07 (Sturgeon, 19.11.2009), приравнявшее задержку от трёх часов к отмене, в закреплённых байтах ОТСУТСТВУЕТ, и дописать его значило бы формализовать судебную практику вместо акта. APR-14 подаёт задержку в четыре часа на рейсе 5000 км и требует
NEITHER— ответ самого Регламента. Тот же приём измерения расхождения акта с его позднейшим прочтением, что уlocke-treatiseиus-declaration.ERRATA E-0058: §84.1 ИЗМЕРЯЛСЯ ТОЛЬКО ЧАСАМИ, И ВСЯКИЙ ПОРОГ КОРОЧЕ ЧАСА БЫЛ НЕОТЛИЧИМ ОТ НУЛЯ.
hours_between(E-0028) отбрасывает дробную часть к нулю, поэтому ст. 3 п. 2 (a) — «не позднее чем за 45 минут до опубликованного времени вылета», УСЛОВИЕ ПРИМЕНИМОСТИ ВСЕГО АКТА — давала ноль и при 45 минутах, и при одной, и при нуле. Величину пришлось бы объявить фактом дела с числом В ИМЕНИ предиката: тот самый признак недоделки, который E-0015, E-0026 и E-0028 закрывали для дней, месяцев и часов, только на четвёртом витке речь не о типе без конструктора, а о РАЗРЕШЕНИИ. Добавлен термminutes_between(from, to) -> Integer; разбор, отказы и знак — ОДНА процедура с часовым (две процедуры чтения одного вида уже стоили erratы E-0048). Ниже минуты язык не пошёл: акта с секундным порогом в корпусе нет, а поверхность без свидетеля — это то, за что E-0037 упрекала перечень §258. Байты корпуса не сдвинулись, differential 130/130.ДОЛГ E-0028 ЗАКРЫТ ТЕМ ЖЕ КОММИТОМ. Обязательство errata E-0028 стояло НЕ исполненным с 27.08.2026:
hours_betweenжил в обеих реализациях, во всех трёх реестрах std и в пяти пакетах корпуса, а conformance-вектора у него не было НИ ОДНОГО — differential молчал не потому, что путь верен, а потому, что по нему никто не ходил (тот же класс молчания, что E-0029 нашла у календарных единиц). ЗаведёнERR-E0028-HOURS-BETWEENпо букве обязательства (ст. 60.7 Конституции РК, обе стороны границы однимcollect: ровно 48 часов — можно, 47 часов 59 минут — нельзя) и парныйERR-E0058-MINUTES-BETWEEN, обе величины которого лежат ВНУТРИ одного часа и потому часовым термом неразличимы. Оба вSUPPORTED.ЕДИНИЦА ИЗМЕРЕНИЯ ВЫБИРАЕТСЯ ПО ПОРОГУ, И ОШИБКА ЗДЕСЬ ИДЁТ В ПОЛЬЗУ ПЕРЕВОЗЧИКА. Окна «две недели» и «семь дней» ст. 5 п. 1 (c) меряются часами (336 и 168 — пороги кратны суткам, отбрасывание работает в верную сторону); допуски маршрутизации «не более чем на два часа раньше» — МИНУТАМИ: в часах вылет на 2 часа 1 минуту раньше даёт 2 и проходит порог, которого текст не даёт. Сцена APR-22 стоит ровно на этой минуте.
ПРИОРИТЕТ §116 ПРИМЕНЯЕТСЯ ТОЛЬКО ВНУТРИ ОДНОЙ СТРАТЫ — пятое подтверждение, и оно стоило пяти красных сцен. Изъятия ст. 3 п. 3, п. 6 и ст. 1 п. 3 читали одни эмпирические факты, а общий вывод о сфере действия — поражаемые
scope_groundиpresented_for_boarding, и уехал стратой выше: объявленный приоритет не применился вовсе, ответBOTHпри полностью зелёныхcheck,lowerи воротах мёртвых правил. Починка — промежуточный предикатwithin_scope_but_for_exclusions, который читают И вывод, И каждое изъятие; приём совпал с верным прочтением (изъятия действуют на того, кто иначе БЫЛ БЫ в сфере действия). То же выравнивание понадобилось ст. 2 (j) и трём изъятиям ст. 5 п. 1 (c).includeВ ИНТЕРПРЕТАЦИИ ВЫВОДИТ ПРАВИЛО ИЗ БАЗОВОЙ ТЕОРИИ — четыре нормы погасли молча. Правило с непустой интерпретационной принадлежностью §152 активно ТОЛЬКО при выборе прочтения. Четыре точки истолкования были заведены сinclude, и четыре обязанности (питание ст. 9, альтернативные средства ст. 14 п. 3, санкции ст. 16 п. 3, семидневное возмещение ст. 8) перестали существовать на каждом деле — при зелёныхcheck,lowerиcheck_dead_rules. Поймал сценарий. Отсюда правило:includeставится ТОЛЬКО там, где интерпретация выбирает между прочтениями, дающими разные нормы; для стандарта, качествующего содержание обязанности, а не её существование, точка истолкования остаётся безinclude. Осталась одна — начало семидневного срока ст. 8 п. 1 (a), которого текст не называет; три сцены подряд показывают, что без выбора прочтения нормы нет вовсе, а с выбором семь дней укладываются, а восемь нет.ВНУТРЕННЕЕ ОТНОШЕНИЕ
mode: rules-ТАБЛИЦЫ НЕ АДРЕСУЕМО С ПОВЕРХНОСТИ, И ЭТО ИЗМЕРЕНО. A3 §A3.3.4 говорит, что положительный факт<id таблицы>/inputприходит «из case input ЛИБО ОБЫЧНОГО ПРАВИЛА», но вторая половина недостижима: StableId кончается на/input, идентификатор со слэшем лексер не берёт, а объявленный грамматикой (spec/grammar.ebnf:936) идентификатор в обратных кавычках лексер не реализует вовсе (LDC-E0101). Следствие: таблицаmode: rulesисполняется ТОЛЬКО из JSON-дела, и.lawtestдо неё не дотягивается. Поэтому суммы проверяются сценами Python, а.lawtestпакета покрывают то, что выразимо. Побочно измерено: три таблицыtabel-o-rangakh-1722— единственные другие в корпусе — не исполнялись НИ РАЗУ (его тесты гоняют только правилаnobility.law), то есть исполняемый путьmode: rulesдо этого коммита не был покрыт ни одним вектором и ни одним сценарием.ВОРОТА
check_dead_symbols.pyНАШЛИ ПРОПУЩЕННУЮ ПОСЫЛКУ И ОШИБКУ ТИПИЗАЦИИ.certified_service_dogбыл объявлен и никем не читаем — а ст. 11 п. 1 называет собаку-проводника ПРЯМО и наравне с сопровождающими людьми; заведено правило.tour_operatorбыл типизированAirCarrier, тогда как ст. 2 (d) определяет туроператора «with the exception of an air carrier», то есть прямо исключает совпадение; заведён свой тип, и ст. 13 стала квантифицировать по нему.ТРЕТЬЯ НОГА КОНТУРА НАШЛА ДЕФЕКТ, КОТОРОГО НЕ ВИДЕЛИ НИ СТАТИКА, НИ DIFFERENTIAL, НИ ТРИДЦАТЬ ПЯТЬ ЗЕЛЁНЫХ СЦЕН. Ядро Lean отвергло сертификат APR-24: «кандидат побеждён по модели §107, но документ его не побеждает». Причина — те же страты, но ВНУТРИ понижения презумпции §113:
presumptionдаёт пару правил с общей головой разной полярности и приоритет между ними, однако тело второго составляет ТОЛЬКО условиеunless, то есть один эмпирический факт. Покаwhenпервого читал поражаемыйregulation_applies, правила стояли в разных стратах, приоритет не применялся, и презюмируемый факт отвечалBOTHтам, где перевозчик извещение ДОКАЗАЛ. Обе реализации были согласны между собой, поэтому differential молчал по построению; сцены спрашивали право на компенсацию, а не сам презюмируемый факт, и потому тоже молчали. Починка —whenчитаетconfirmed_reservation(строго выведенный) вместоregulation_applies; прочтение от этого стало точнее, а не беднее. Заведены сцены APR-36/37, спрашивающие презумпцию напрямую.ЗАКРЕПЛЁН АНГЛИЙСКИЙ АУТЕНТИЧНЫЙ ТЕКСТ страницы EUR-Lex (CELEX 32004R0261, исходная редакция — операционная часть не менялась ни разу),
PINNED_UNOFFICIAL_COPY: байты официального опубликования (OJ L 46, 17.02.2004, с. 1–8) в руках не держали. Заявление Комиссии, напечатанное на той же странице после текста, в закрепление НЕ вошло — оно не принято Регламентом и нормой не является. Заведена двенадцатая объявляемая единица деленияen_article_plain(«Article 7» на строке одна, название на следующей) в обеих мерах §33.1:en_articleтребует двоеточия,en_article_roman— римского номера, аfr_articleсовпадает формой, но объявлен конвенцией ЯЗЫКА «fr» и дал бы английскому тексту французский набор признаков исполнимого содержания. -
de-legibusпочинен: двадцать одна норма стояла с несвязанным носителем. Пакет не компилировался в HEAD, а его закоммиченный CLIR был собран до ужесточения §190 («head variables bound», распространено на переменные в норм-голове) — корпус исполнял свод Цицерона по артефакту, который компилятор уже не воспроизводит. Исходник при этом не менялся ни разу. Диагноз однороден: лекс называет носителя КЛАССОМ («publici sacerdotes expianto», «pontifices sanciunto», «Virgines Vestales custodiunto»), а в модели класс был только ТИПОМ переменной — не конечным положительным источником. Носитель связан членством в том же классе; четыре предиката у пакета уже были и не использовались, семь дописаны в том же роде. Содержание норм не изменилось. Три нормы починены по грамматике лекса: унарный предикат у lex 20 (donis— средство, а не предмет), институциональный факт у lex 25 (manentoобращено к самим священнодействиям — единственная утраченная деонтическая позиция, храповик перезаморожен 108 → 107 при росте объявлений 157 → 165), сохранённая обязанность у lex 26 (minuunto— действие живых, в отличие от двух соседних императивов о состоянии). Дело дополнено в одном месте: у власти авгура предмет был свободной переменной, то есть позиция выводилась без действия. 4/4 сценария зелены, каждый вызов байтово сверен сlawc eval; пин импорта уleges_xii_tabularumобновлён, римская пара 8/8 и 8/8 байтово. -
pubстал настоящей границей: §24 не проверялся в двух случаях из трёх (errata E-0059). Механизм существовал (LDC-E1105, векторT057, DECISION-0011) и включался только при предъявленном составе экспорта зависимости; состав хранилсяVec<String>, и пустой список был неотличим от непредъявленного. Отсюда две дыры: контекст безexportsразрешал ссылку наinternal-символ, а зависимость без единойpub-декларации разрешала ссылаться на что угодно (ровно так вёл себяrom.corpus.de_legibus). Цена лежала в фикстурах репозитория:examples.consumerссылается наexamples.params::mrpбез пометкиpub, а единственные ворота межпакетной ссылки от исходника строили контекст безexportsи §24 не проверяли ни разу. Правка:exportsсталOption<Vec<String>>—None(не предъявлен) → ссылка принимается с новым предупреждениемLDC-W1105«§24 НЕ ПРОВЕРЕН»;Some→ строгая проверка, и пустой список означает «pub-деклараций нет вовсе», то есть отказLDC-E1105. Предупреждение, а не отказ, потому что контекст из одного LockedImport состава знать не может (§11 несёт хэши), — но непроведённая проверка обязана называться. Байты корпуса не сдвинулись (gen_kz_clir.pyпредъявлялexportsвсегда); сдвинулась одна фикстура. Ворота дополнены четырьмя шагами, два вектора, обе половины проверены подменой. -
Римская пара замкнута ИМПОРТОМ:
de-legibusоткрыл первое в своей жизни публичное объявление. До сих пор связь двух римских пакетов держалась измерением (семь из восьми пунктов Tabula X не имеют свидетеля, кроме Цицерона) и держаться иначе не могла —pubу соседа не было ни одного. Теперь есть ровно одно,iura_manium_sancta(lex 26 «Deorum Manium iura sancta sunto»), и модуль12-receptio.lawвыводит от него, что X.3 и X.4 приняты Цицероном в собственный свод, а сквозное правило даёт цепь Афины → Рим 450 года → Цицерон. Основание — слова самого Цицерона в закреплённых байтах СОСЕДА («in XII minuendi sumptus sunt lamentationisque funebris, translata de Solonis fere legibus»). Поверхность §267 этого выразить не может (раннер лоуверит без resolve-контекста,LDC-E1105), поэтому заведён прогонleges_xii: 8/8 сценариев, 8/8 evaluate-вызовов байтово идентичны, три отрицательных случая держат границу рецепции; тесты §267 целы (ворота гоняют их через--programпротив закоммиченного CLIR) — 36/36. -
«А если бы» посчитано
lawref impact, а не оценено: без Цицерона исчезли бы 20 пунктов свода из 101 (без Геллия 14, без Феста 13, без Гая 10). Мир «после» отличается от «до» ТОЛЬКО снятыми фактамиtestis(<пункт>, <автор>); ради ответа заведён предикатtraditusс замыканием §70, иначе «пункт исчез бы» было бы молчанием, а неFALSE_ONLY. Числа «передал» и «исчезло бы» расходятся (23 против 20) — три пункта Цицерона несёт кто-то ещё, и наивный счёт цитат этого не видит. Прогон воспроизводим:corpus/tools/report_leges_xii_witnesses.py. -
zheti-zhargy: байты статьи перестали быть редакцией свода. Энциклопедическая статья виселаedition-ом самого акта, то есть утверждала, что это издание «Жеті жарғы». Разделено по образцуqasqa-zholy: у акта редакцияZHARGY_LOST(UNAVAILABLE, без фрагментов), у статьи — свойsource.sourceFidelityсталunavailable, и расхождение поймали ворота метадаты сами. Регрессия 66/66, differential 66/66 байтово. -
Четвёртый читатель
articles.json, слепой к объявленной единице, — черновиковый верстак MCP.law_measureзвалarticle_convention(document)безunitи не применялconvention.number(): у конвенции с приведением номера сырое совпадение (VIII.2) и локатор фрагмента (8-2) не пересекаются вовсе, то есть верстак объявил бы неучтёнными ВСЕ статьи такого акта, а у латинского черновика возвращал пустой учёт. Починено втроём (единица из декларации;articles.jsonво временном каталоге дляboundaries.depth; приведение номера), незнакомая единица теперь громкий отказ. -
Разрешён незавершённый конфликт слияния в HEAD — маркеры в шести CLIR Конституции и двух исходниках роняли
JSONDecodeErrorвсему, что читает корпус. Сторона «Stashed changes» пуста во всех четырёх местах, выбор механический; исходники компилируются, CLIR пересобраны генератором, потребитель Конституции 12/12 и 15/15 байтово. -
Назван, но не закрыт:
pubне проверяется на межпакетной ссылке. § часть VI требует, чтобы межпакетные references обращались только кpubdeclarations;lawc lower --importsразрешает ссылку наinternal-символ молча (проверено пробой наkz.constitution.court::justice_by_court_only_1995). Дефект ОБЕИХ реализаций против уже написанного prose, не errata. Радиус измерен: 29 настоящих межпакетных ссылок в корпусе, все до одной ведут кpub, — починка сегодня безопасна. -
Законы XII таблиц формализованы целиком (451–450 до н. э.; пакет
rom.corpus.leges_xii_tabularum,RomanRepublic,historical_monument) — и ради них §27.2 получил ШЕСТОЕ ЗНАЧЕНИЕ. У этого акта нет аутентичного текста: бронза форума погибла в 390 г. до н. э., рукописной традиции нет, свод известен ЦИТАТАМИ у Цицерона, Геллия, Феста, Гая, Ульпиана, Плиния. Закреплено то, что есть, — реконструкция редактора (Fontes iuris Romani antiqui I, edd. G. Bruns et O. Gradenwitz, Tübingen 1909, через Bibliotheca Augustana). Прежде такому пакету оставалсяPINNED_UNOFFICIAL_COPY, а это неправда не о качестве закрепления, а об ОТНОШЕНИИ байтов к акту: «копия» утверждает существование оригинала, копией которого она является. Errata E-0057 вводитPINNED_EDITORIAL_RECONSTRUCTIONи ГРУППУ ЗАКРЕПЛЁННЫХ (профили §8.6 читаются по группе, а не по месту в перечне — реализации и раньше считали членство, а не порядок); обязанности §194/§28 действуют полностью. Два вектора, обе половины проверены подменой; байты корпуса не сдвинулись. Побочно:sourceFidelity = "reconstruction"(DECISION-0051) впервые получил опору в источнике. -
Великая Яса переведена на
PINNED_EDITORIAL_RECONSTRUCTION— единственный пакет корпуса, которому новый статус понадобился задним числом. Корпус пересмотрен под E-0057 целиком. Критерий узок и различает: статус говорит об отношении байтов К АКТУ, а не к книге, поэтому реконструкция — это документ, выдающий себя за восстановленный текст акта. Уmng.corpus.yasaзакреплён очерк Г. В. Вернадского, собранный из показаний четверых свидетелей, и шапка пакета сама звала его реконструкцией; прежняя оговорка «статус не может быть ВЫШЕPINNED_UNOFFICIAL_COPY» опиралась на ось, которой у этого различия нет. Сдвинулся один узел из 291 (YASA_VERNADSKY) иsemanticHashпакета; регрессия 16/16, differential 59/59 байтово идентичны, 10/10 тестов §267, выводимостьsourceFidelity = "reconstruction"подтверждена подменой манифеста. НЕ переведены:zheti-zhargy,qasqa-zholy,eski-zholyзакрепляют документ ОБ АКТЕ, а не его текст;russkaya-pravda,gortyn-code,golden-horde-yarliks,karamola,valikhanov-note,decalogueимеют рукописную либо эпиграфическую традицию, и «копия» у них правдива. Замечено, но не исправлено (структурная правка чужих пакетов):zheti-zhargyиyasaвешают байты вторичного текста прямо на редакцию акта, тогда какqasqa-zholyуже показал чистую форму — вторичный текст объявлен своимsource, а редакция актаUNAVAILABLE. Ярус доказательства — обычный факт пакета: различие «слова закона / слова свидетеля» снято МАШИННО, со шрифта издания, и даёт 39 дословных, 9 словарных, 53 пересказа; замыкания §70 обращают «слов не сохранилось» вFALSE_ONLY, а не в молчание. 83 пункта из 101 держатся на одном свидетеле (solo_auctore_traditusназывает его поимённо), а семь из восьми пунктов Tabula X — только на Цицероне, на тех самыхde leg.II §§58–64, которые пакетde-legibusзакрепил и сознательно вывел из своего охвата: римская пара замыкается измерением, синтаксической связи быть не может (уde-legibusнет ни одногоpub). Состав таблиц — гипотеза, и это измерено: закреплены ДВЕ реконструкции, и на 13 из 26 сверяемых пунктов они расходятся о том, на какой доске стояла норма. Заведена конвенцияtabula_itemв обеих мерах §33.1. Найдено при заведении, всё молчаливое: латинского набора признаков исполнимого содержания не было вовсе (OPERATIONAL_MARKERS[language]уронил бы воротаKeyErrorу первой же границы латинского акта —de-legibusбыл от этого в одной границе);boundaries.pyне читалunitиз формы{"editions": […]}, и уalash-ordaобъявленныйsectionне читался ни разу — две меры §33.1 читали разные единицы одного акта; латинские метки правил ни с чем не сверялись, и заведённая проверка нашла шесть расхождений, включая исправленную по памяти опечатку издания и две нормы, приписанные не своему пункту. 101 пункт из 101 при пяти объявленных границах, глубина §33.1 EXECUTABLE 96 / ANCHORED 0 / SOURCE_ONLY 5, покрытие байтов 72,4 %, 156 правил (мёртвых 0), разметка §218 полная, 36 тестов §267 зелёные, 131 латинская метка сверена с изданием; differential и Lean вне KZ-machinery, как уstatutes-of-apparel-1574. -
Указ Президента Казахской ССР от 29.08.1991 № 409 «О закрытии Семипалатинского испытательного ядерного полигона» — ВТОРАЯ несущая межпакетная ось корпуса после
peaceful-assemblyи первая, ведущая не в Конституцию, а в международный договор (пакетkz.decree.semipalatinsk1991, юрисдикция KZ,in_force). Заведён 29 августа 2026 года — ровно тридцать пять лет спустя; резолюцией 64/35 ГА ООН (02.12.2009, по инициативе Казахстана) эта дата объявлена Международным днём действий против ядерных испытаний. Формализованы преамбула и пункты 1—2, глубина §33.1 EXECUTABLE 2 из 2 доступных пунктов, покрытие байтов 100 %; 9 сценариев и 3 теста §267 зелёные, все 14 evaluate-вызовов байтово идентичныlawref↔lawc; мёртвых правил 0, разметка §218 полная,doctor.pyбез пробелов.ПЕРВЫЙ ПАКЕТ КОРПУСА, ЗАКРЕПЛЯЮЩИЙ ЗАВЕДОМО НЕПОЛНЫЙ ДОКУМЕНТ, И ЭТО СКАЗАНО МЕХАНИЗМУ, А НЕ ЧИТАТЕЛЮ. У указа ЧЕТЫРЕ пункта; свободной копии пунктов 3 и 4 не существует. Указа нет в ИПС «Әділет» (404 на
U910000409_, полнотекстовый поиск даёт ноль, перебор всех восемнадцати буквенных префиксов находит только постановление Кабмина № 409 от 5.07.1991 — другой документ), нет в изданиях Национального ядерного центра РК, в Викитеке, в Google Books, на e-history.kz и kazneb.kz. Единственная база с текстом — ИС «Параграф», и она отдаёт его в демонстрационном режиме: страница САМА объявляет состав документа вg_VPsInfo— восемнадцать абзацных блоков, в разметке присутствует шесть. Закреплён не живая страница, аid_-форма снимка Архива Интернета от 02.02.2019: живая страницаprg.kzсегодня обрывается ПОСЛЕ ПУНКТА 1, снимок отдаёт ещё и пункт 2, — закрепление живой страницы потеряло бы норму молча.РАЗРЫВ ВЫРАЖЕН ВТОРОЙ РЕДАКЦИЕЙ
UNAVAILABLE, А НЕ ОГОВОРКОЙ. У источника две редакции:D409_RU_PINNED(PINNED_UNOFFICIAL_COPY, пять фрагментов с текстом, собирающие закреплённый файл байт в байт) иD409_RU_WITHHELD(UNAVAILABLE, фрагментыarticle/3иarticle/4с локатором и меткой, но безtextи безcontent_hash). Приём взят уkz.corpus.qasqazholy, где так записан утраченный свод целиком; подPINNED_UNOFFICIAL_COPYтакой фрагмент был быLDC-E5205. Пункт 3 дословно процитирован в прессе, пункт 4 известен только пересказом — ни то, ни другое вtextне перенесено: цитата в газете не есть воспроизведение акта.ОБЕ МЕРЫ §33.1 К ЭТОМУ РАЗРЫВУ СЛЕПЫ ПО ПОСТРОЕНИЮ, И ЭТО ИЗМЕРЕНО, А НЕ ПРЕДПОЛОЖЕНО. Учёт статей меряется ПРОТИВ ЗАКРЕПЛЁННЫХ БАЙТОВ, а недостающих пунктов там нет вовсе:
check_source_pinning.pyчестно печатает «охват 2 из 2»,boundaries.py—EXECUTABLE 2, и оба числа верны и оба обещают больше сделанного. Отсюда новый сторож:corpus/tools/fetch_semipalatinsk_1991_text.py --audit(в сеть не ходит, ворота вci/run_all.sh) сверяет РАЗБИЕНИЕ, а не вхождение — падает, если текст недостающего пункта допишут в закреплённый файл, не переселив фрагмент; если снимут редакциюUNAVAILABLE; если впишут газетную цитату текстом недоступного пункта; или если фрагменты перестанут собирать файл байт в байт (§194 сдвига границы среза не видит — цитата остаётся подстрокой). Все четыре канарейки проверены правкой и падают.СВЯЗЬ С
intl.disarmament.nptНЕСУЩАЯ, И ЭТО ДОКАЗАНО ПАРОЙ ДЕЛ, А НЕ ЗАЯВЛЕНО. Ст. IX п. 3 ДНЯО замыкает перечень государств, обладающих ядерным оружием, датой 1 января 1967 года; указ своей преамбулой говорит, чего Договору не хватает: испытания шли «на территории Казахской ССР», а обеспечивали они «стратегический военный паритет между СССР и США». ПравилоClosureByNonWeaponStateHostчитает ДВЕ ссылки в договорный пакет РАЗНОЙ ПОЛЯРНОСТИ — положительную о союзном операторе и отрицательную о принимающем государстве, — и вторая работает только потому, что перечень замкнутclosure§70 сderive_explicit_negative true. Сценарии SEMEY-04 и SEMEY-05 отличаются ОДНИМ фактом дела (кому приписан взрыв 29.08.1949 — Союзу или самой республике), и квалификация закрытия переворачивается сTRUE_ONLYнаNEITHER, притом что ни один из двух пакетов не меняется ни строкой.nuclear_weapon_stateпомеченpubвnpt-1968осознанным действием — первый национальный потребитель осевого вывода Договора. Ни один акт не выводится из другого: Договор не знает про Семипалатинск, указ не упоминает ДНЯО, и участником Договора Казахстан на 29.08.1991 не был (присоединение — 14.02.1994).АСИММЕТРИЯ ПУНКТОВ 1 И 2 ВИДНА ИСПОЛНЕНИЕМ. Закрыть полигон республика постановляет ОДНА — SEMEY-01 отвечает без единого союзного факта. Распорядиться им — только «по согласованию» с Министерством обороны СССР и Министерством атомной энергетики и промышленности СССР: пока молчит хотя бы одно, обязанности преобразования нет (SEMEY-07 против SEMEY-08). Перечень согласующих закрыт указом, поэтому правило перечисляет их КОНЪЮНКЦИЕЙ ПО КОНСТАНТАМ: «согласовали все» есть агрегат по предикату (барьер полноты §111), «не осталось несогласовавшего» есть отрицание по ВЫВОДИМОМУ предикату и без замыкания даёт NEITHER — правило прошло бы
checkиlowerи не сработало бы никогда. Вторая форма была написана и переписана до первого исполнения; запись оставлена в файле, чтобы её не написали снова.У ДОСТИЖИТЕЛЬНОЙ ЦЕЛИ СТАТУСА
EXPIREDНЕТ ВОВСЕ, И ЭТО НАШЛОСЬ ИСПОЛНЕНИЕМ. «В 1991 году разработать и утвердить статус центра» — единственная деонтика пакета с закрытым окном[@1991-08-29, @1992-01-01). ОжиданиеEXPIREDна деле 1992 года было написано и упало:EXPIREDсуществует у семейства полномочий (§127/§128/§125) и у запрета (§130), а достижительная цель после окна отвечает по §136/§138. Пара SEMEY-06/09 показывает обе стороны: без установленного неисполнения —UNDETERMINED(истёкший срок сам по себе нарушения не доказывает), с установленным отрицательным фактом —VIOLATED. Соседняя обязанность преобразовать имеет открытое окно и не может быть нарушена никогда.const_refАДРЕСУЕТСЯ ИМЕНЕМ ОБЪЯВЛЕНИЯ, А НЕ ЦЕЛЬЮentity_ref.const SemipalatinskSite: TestSite = entity_ref("…#SemipalatinskTestSite")понижается вconst_refс id…#SemipalatinskSite; запрос по цели даётNEITHERбез единой диагностики. Первая редакция раннера спрашивала по цели у всех четырёх констант, и три сценария из девяти краснели по этой причине.ВОРОТА
check_dead_symbols.pyНАШЛИ ДУБЛИРУЮЩЕЕ ОБЪЯВЛЕНИЕ.consent_required_fromс двумяassert-ами выражал то же, что уже выражено правилом согласования, и снят: два способа сказать одно расходятся при первой правке, и расходятся молча. Оставшиеся два мёртвых символа (SemipalatinskSite— константа закрытого перечня;testing_conducted_since_year— год из преамбулы, которая излагает основание, а не условие) записаны вcorpus/dead-symbols.jsonс причинами. -
Гортинские законы формализованы целиком (Крит, ок. 450 г. до н. э.; пакет
grc.gortyn.code) — первый акт корпуса, который сам называет границу вычислимого. § 16 («Duty of judge») делит все вопросы тяжбы на два класса: те, для которых закон назвал связывающее судью средство — свидетелей либо клятву отрицания (δικάδδεν), — и «прочие», решаемые судьёй под собственной присягой (κρίνεν ἀπομνύντα). Первый класс ложится на обычные правила, второй — наexternal judgment relationс органомDikastas; во всех прочих пакетах эту границу проводит формализатор, здесь — источник. 20 секций из 20, покрытие байтов 99,6 %, глубина §33.1 EXECUTABLE 20/20, 171 правило, 10 шаблонов норм, 27 замыканий §70, один канал суждения §47.3, 26 сценариев и 3 теста §267 зелёные, все 26 evaluate-вызовов байтово идентичныlawref↔lawc, мёртвых правил 0, разметка §218 полная,doctor.pyбез пробелов.ОДИН ПРЕДИКАТ, ДВА КЛАССА ОТВЕТА, И ВЫБИРАЕТ ИСТОЧНИК. § 1: спор о том, чей раб. При одностороннем свидетельстве
slave_adjudged_toдаёт TRUE_ONLY приCOMPUTED; при свидетельствах «за обоих» либо «ни за кого» — NEITHER приREQUIRES_JUDGMENTс органомDikastas. Обе ветви стоят в тексте § 1 подряд, § 16 объявляет их общим правилом, и модель не выбирает ничего. Проверено с обеих поверхностей — сценами Python и тремя.lawtest.ЗАВЕДЕНА ОДИННАДЦАТАЯ ОБЪЯВЛЯЕМАЯ ЕДИНИЦА ДЕЛЕНИЯ
paragraph_sign(«§ 1.» … «§ 20») — вci/check_source_pinning.pyи вboundaries.py, одним выражением на обе меры §33.1; генератор фрагментов ИМПОРТИРУЕТ его из ворот, а не повторяет. Единица принадлежит публикации, а не камню, иarticles.jsonговорит это прямо, цитируя самого переводчика.ЗАМЫКАНИЕ §70 НАД ВЫВОДИМЫМ ПРЕДИКАТОМ ДАЁТ
BOTH. Измерено на первой редакции § 16, где замыкался выводимыйmode_written:decided_by_witnesses= TRUE_ONLY,mode_written= BOTH, вся цепь молча останавливалась на NEITHER. Отсюда правило раскладки пакета: замыкаемые предикаты утверждаются (пакетом либо делом) и никогда не выводятся, а вывод стоит уровнем ниже — на связи «вопрос → вид вопроса».!=НАД ССЫЛКАМИ НА СУЩНОСТИ НЕ РАБОТАЕТ, И ОТКАЗ ВИДЕН НЕ ВЕЗДЕ.lawc check/lawc lowerчисты; evaluation-документ §170 несёт issueTYPE_ERRORseverityerror(«терм ‘entity_ref’ вне v1-подмножества»); раннер.lawtest§267 диагностик не показывает ВОВСЕ — поляissuesв его выводе нет, и NEITHER неотличим от «условия дела не подошли». Проверено пробой на минимальном пакете. Практическое следствие для корпуса: пакет, проверяемый только.lawtest-ами, такой отказ не увидит. -
Великая Яса Чингисхана формализована — первый акт корпуса, у которого источник НЕ ТЕКСТ, А ПОКАЗАНИЯ НЕСКОЛЬКИХ СВИДЕТЕЛЕЙ (пакет
mng.corpus.yasa, юрисдикцияMongolEmpire,historical_monument). Аутентичной Ясы не существует, и закреплённый источник говорит это сам первой же строкой. Соседи по этому свойству — «Қасқа жол», «Ескі жол» и «Жеті жарғы» — известны по ОДНОМУ рассказу об акте; здесь свидетелей ЧЕТВЕРО, они названы поимённо у каждого фрагмента (Аб-уль-Фарадж, Григор из Акнера, Джувейни, Макризи), и их показания РАСХОДЯТСЯ. Закреплена реконструкция Г. В. Вернадского («Монголы и Русь», текст 1947 г.; сетевая публикация «Библиотеки сайта XIII век»),PINNED_UNOFFICIAL_COPY,verifiedAgainstSource = false. 26 фрагментов, покрытие байтов 41,3 %, 47 правил (мёртвых 0), 2 закрытия §70, 4 приоритета, 6 толкований в 3 группах; 16 сценариев и 10 тестов §267 зелёные, все 59 evaluate-вызовов байтово идентичныlawref↔lawc, разметка §218 полная,doctor.pyбез пробелов.ЛОКАТОР ФРАГМЕНТА — ЗАПИСЬ ПОКАЗАНИЯ, А НЕ НОМЕР СТАТЬИ. Нумерация в закреплённом тексте есть, но принадлежит СВИДЕТЕЛЯМ, и у каждого своя:
witness/maqrizi/20,witness/abulfaraj/5-7,witness/abulfaraj-9-juvayni-10(одна норма у двоих),vernadsky/…(сводка реконструктора, а не цитата). Единой шкалы статей акта не существует даже в принципе, поэтомуunitвarticles.jsonсознательно отсутствует и учёт §33.1 возвращаетunmeasured— как у Декларации независимости США.РАСХОЖДЕНИЕ СВИДЕТЕЛЬСТВ СТАЛО ВЫВОДИМЫМ ФАКТОМ, А НЕ ЗАМЕЧАНИЕМ В КОММЕНТАРИИ. Подкреплённость нормы считается §59 по числу свидетелей (
corroborated/rests_on_single_witness), аdivergent_on_normative_forceвыводится там, где один свидетель передаёт ПРИКАЗ, а другой описывает СВОЙСТВО ГОСУДАРЯ. Отдельно выводитсяtransmitter_without_attribution: Рашид ад-Дин назван передатчиком Ясы, но ни один фрагмент среза на него не возведён — его ордонансы реконструктор относит к «биликам». Слабость опоры Макризи (знает о списке с чужих слов, «очертил лишь часть кодекса») ассертится как утверждение источника, а не как оценка формализатора.ТРИ РАЗВИЛКИ, И БАЗА НЕ РЕШАЕТ НИ ОДНОЙ. (1) Веротерпимость: Макризи — «приказал уважать все религии», Джувейни — «не предпочитал одну веру другой»; из приказа следует нарушение, из описания нельзя нарушить чужую биографию. (2) Объём связанной службы: Джувейни — «нет различия», Макризи — изъятие священников, врачей и учёных; реконструктор сводит их сам («Однако существовали и исключения»), и этот шаг анкерован ОТДЕЛЬНЫМ фрагментом, потому что примирение принадлежит историку, а не свидетелю. (3) Конокрадство: два абзаца ОДНОЙ реконструкции дают каскад «штраф, иначе смерть» и перечень трёх исходов подряд. Каждая развилка проверена в обе стороны на одном деле: чиновник, выказавший предпочтение (
NEITHER/TRUE_ONLY/FALSE_ONLY); священник против простолюдина (расходятся только классы изъятия); вор, который штраф УПЛАТИЛ. Правило всеобщности службы ПОВТОРЕНО в обоих прочтениях, а не вынесено в базу: вынести его значило бы сделать базой чтение Джувейни и решить спор молча.ВЫБОР ТОЛКОВАНИЯ НЕДОСТУПЕН С ПОВЕРХНОСТИ ТЕСТОВ §267, И ЭТО ОПРЕДЕЛИЛО РАСКЛАДКУ ПАКЕТА.
context { interpretation X; }в.lawtestпринимается, молча отбрасывается и не сообщается:lower_case_body(law-hir/src/lower/case.rs) кладёт warningLDC-E1307(«ось контекста … вне v1-среза case-документа»), но раннер тестов диагностик лоуверинга не показывает ни текстом, ни в--json, и тест исполняет базовую теорию. Differential слеп по построению:.lawtestразбирает толькоlawc, раннера уlawrefнет. Поэтомуtests/*.lawtestдержат базовую теорию, а все развилки — JSON-дело вcorpus/kz/acts/yasa.py; по той же причине группы объявленыany_of, а неexactly_one(замерено, чтоexactly_oneработает и даётINTERPRETATION_REQUIREDна весь документ — но тогда ни один авторский тест не выражал бы ничего).ДВА КЛАССА МОЛЧАЛИВОГО ОТКАЗА НАЙДЕНЫ ИСПОЛНЕНИЕМ ПРИ ЗЕЛЁНОМ
check. (1)priority_declвspec/grammar.ebnfдопускает РОВНО ОДНУ пару «prefer … over …», парсер принимает несколько, а lowering сохраняет ТОЛЬКО ПОСЛЕДНЮЮ — без диагностики; пока три изъятия стояли в одном блоке, священник получалBOTH, и верно вёл себя лишь последний по тексту класс. В корпусе таких блоков больше нет ни одного, но грамматику парсер шире. (2) Негативная голова в СТРОГОМ правиле не исполняется вовсе (негативный head в strict closure), и прочтение Джувейни давалоNEITHERтам, где обязано даватьFALSE; чинитсяdefeasible, какUnarmedMayNotVoteв «Жеті жарғы».ЧТО НЕ ФОРМАЛИЗОВАНО И ПОЧЕМУ. Почтовые станции, подати и смотрины источник только НАЗЫВАЕТ, без слов показания, — они существуют как
Provisionс атрибуцией, но правил не дают. Неприкосновенность послов не выражена вовсе, потому что источник прямо говорит: «Не существует… прямого выражения такового в существующих фрагментах Ясы» (вместо нормы — фактknown_but_not_attested). Обобщение «смертная казнь почти за все виды преступлений» осталось ФАКТОМ, а не правилом: слово «почти» стирать нельзя, и самое тяжкое деяние как раз в исключении («Убийство каралось штрафом»). Глубина §33.1 неприменима:boundaries.pyопознаёт три римских заголовка Вернадского как единицы и печатает 0 из 3 при 25 исполняемых правилах базы — артефакт соглашения об именовании якорей, названный вarticles.jsonи README пакета. -
Постановления II Всеказахского съезда (Оренбург, 5—13 декабря 1917) формализованы целиком — учредительный акт «Алаш» с ЧИСЛАМИ (пакет
kz.corpus.alash_orda, юрисдикцияRussianRepublic,historical_monument). Пара кkz.corpus.alash: там ПРОЕКТ ПРОГРАММЫ партии (октябрь 1917) — намерение, здесь решение съезда — совет из 25 членов с квотой 10 мест неказахским народам, милиция в 13 500 человек с разверсткой по шести областям и смета шестью статьями расхода. ДВА постановления в одном пакете: об образовании автономии (римские I—X) и правила о народной милиции (римские I—XIII), у каждого своя нумерация. Обе меры §33.1 полны и считаются раздельно по каждому документу: учёт единиц 10 из 10 и 13 из 13, глубинаEXECUTABLE10 из 10 (автономия) и 13 из 13 (милиция, по явной паре аргументовboundaries.py); покрытие байтов 99,6 % и 99,5 %; 92 узла-правила CLIR, 8 norm_template, 25 фрагментов, 3 замыкания §70, 1 приоритет §116; 92 сценария, все зелёные, все 92 evaluate-вызова байтово идентичныlawref↔lawc; в proof-графах появляются 84 узла-правила из 92, остальные восемь (пять обязанностей §123 и три власти §127) проверены запросомpositionsи материализацией эффекта — непроверенных норм не осталось; 6 тестов §267tests/*.lawtest; разметка §218 полная;doctor.pyбез пробелов.ЧИСЛОВАЯ КВОТА ПРЕДСТАВИТЕЛЬСТВА — АГРЕГАТ ПО ЭМПИРИЧЕСКИМ ОТНОШЕНИЯМ, И ИНАЧЕ НЕЛЬЗЯ. «25 членов, 10 мест из которых предоставить русским и другим народам» считается
count(collect seat: Seat where …); и место в совете, и признак «место отдано неказахскому народу» строго эмпиричны, потому что агрегат по ВЫВОДИМОМУ предикату даёт барьер §111 на весь пакет, а проекция в одноместное не спасает. Квота прочтена как РОВНО десять (распределение мест, а не нижняя граница) — выбор с правовым последствием, названный в шапке пакета; недобор мест, недобор квоты и перебор квоты разведены тремя нормами (§206), чтобы отчёт называл, ЧТО именно нарушено.РАЗВЕРСТКА МИЛИЦИИ ОСТАЛАСЬ НОРМАМИ, А НЕ СТАЛА A3-ТАБЛИЦЕЙ. Матрица «область → численность» просилась в
*.lawtable.json, ноLiteralTermсхемыdecision-table— только typed value literal: ниconst_ref, ниentity_refона не знает, а ключ разверстки есть доменная константа. Text-колонка с именами областей перенесла бы идентичность значения со символа на строку, и опечатка перестала бы быть ошибкой. Шесть чисел — обычныеassert, закрытость шестёрки —closure§70. Внутренняя сверка акта при этом сходится: 1000 + 2000 + 3000 + 4000 + 1500 + 2000 = 13 500.АКТ ПРОТИВОРЕЧИТ САМ СЕБЕ ДВАЖДЫ, И ОБА РАСХОЖДЕНИЯ ИЗМЕРЕНЫ, А НЕ СГЛАЖЕНЫ. (1) Пункт I правил о милиции в закреплённых байтах требует возраста «от 30 до 35 лет», пункт VI того же документа допускает заместителя «в возрасте 20—35 лет»: двадцатипятилетний прямо в милиционеры не принимается, но заместителем взятого по жребию быть может. Вся историческая литература (Қазақ ұлттық энциклопедиясы; Мизимбаев по сборнику Мартыненко) называет возраст призыва 20—35, то есть читает «30» опечаткой издания, — здесь формализованы БАЙТЫ, а расхождение оставлено открытым вопросом к типографскому экземпляру ЦГА РК. (2) Сыр-Дарьинская область входит в автономию по пункту I постановления и НЕ входит в разверстку милиции по пункту XII правил; замыкание §70 отвечает установленным
FALSE, а не молчанием открытого мира §69.ПРИОРИТЕТ §116 ДЕЙСТВУЕТ ТОЛЬКО ВНУТРИ ОДНОЙ СТРАТЫ И МОЛЧИТ ЗА ЕЁ ПРЕДЕЛАМИ. Пункт VII («принимается на службу лишь один член семейства») есть изъятие из пункта II (приём по жребию); без приоритета пара давала
BOTH. Записанныйpriorityэффекта не дал: правило-изъятие читало меньше выводимых предикатов и попадало в страту НИЖЕ соперника —priority_ruleв CLIR стоял, узлаdefeatв proof-графе не было, статус оставалсяBOTH, и ни одной issue при этом не приходило. Починка — выравнивание тел (изъятие действует на ЗАКОННЫЙ жребий), а не другая форма приоритета.ДВА ДОКУМЕНТА С ОДИНАКОВЫМ ИМЕНЕМ ФАЙЛА ТЕРЯЮТ ОДИН УЧЁТ МОЛЧА. Первая раскладка пакета держала оба текста в разных каталогах под именем
ru.txt;ci/check_source_pinning.pyключуетaccounting_by_editionпоPath(rel).name, ключ совпал, и отчёт напечатал «учёт статей: охват 13 из 13» (милиция) рядом со строкой «глубина §33.1 — EXECUTABLE 10» (автономия): две меры §33.1 говорили о РАЗНЫХ документах под одним заголовком, и это читалось как три неформализованные единицы. Починено в пакете — разные имена файлов включают штатную форму{"editions": […]}; остаток (глубина уcheck_source_pinningсчитается одна на пакет) назван вarticles.jsonи в шапке пакета вместе с точной командой. -
Ярлыки Золотой Орды формализованы — первый акт корпуса, закреплённый НА ЯЗЫКЕ ПОДЛИННИКА, а не в переводе (пакет
horde.corpus.yarliks, юрисдикцияGoldenHorde— историческое государство собственным именем,historical_monument). Два акта Улуса Джучи: тарханная грамота Тимур-Кутлуга Мухаммеду (6 шаабана 800 г.х. = 24.04.1398) и сборник ханских ярлыков русским митрополитам краткой редакции — шесть грамот 1267–1379 гг. и заключение составителя. Тюркский текст уйгурского письма (chg, чагатайский) закреплён ОТДЕЛЬНОЙ редакцией §27 наравне с построчным русским переводом, и нормы анкерованы на обе; тюркских подлинников шести ярлыков митрополитам не сохранилось ни одного, поэтому сборник объявленofficiality translation. 55 фрагментов, 3 публикации, 58 норм; покрытие байтов 100,0 % / 99,2 % / 99,7 %; глубина §33.1 по сборнику — EXECUTABLE 6 из 7; 16 тестов.lawtestи 14 сценариев регрессии зелёные, все 82 evaluate-вызова байтово идентичныlawref↔lawc, Lean-сертификаты 82/82 по обеим ногам, разметка §218 полная,doctor.pyбез пробелов.ИММУНИТЕТ §128 НЕ БЛОКИРУЕТ САМ СОБОЙ. Замерено пробой: при равной силе правил Power и Immunity остаются непобеждёнными и несравнимыми, документ получает
UNRESOLVED_NORMATIVE_CONFLICT, и запрет грамоты «пусть не берут» не срабатывает; блокировка появляется только от явногоpriority§116 иммунитета над полномочием взимать. СценарийGHY-03сторожит это по КОДУ issue — снятие приоритета иначе прошло бы молча, потому чтоcheck,lowerи ворота мёртвых правил остаются чистыми.ГЛАВНЫЙ РЕЗУЛЬТАТ — РАСХОЖДЕНИЕ ШЕСТИ ГРАМОТ ЗА 112 ЛЕТ, ИЗМЕРЕННОЕ. Перечни освобождаемых платежей разные (1267 — семь, 1347 — два, 1351 — шесть, 1357 — семь, 1379 — восемь), «запрос» есть в трёх поздних и отсутствует в перечне 1267 года. Один и тот же поп, одно и то же должностное лицо, один и тот же платёж: по грамоте 1267 года взыскание состоится, по грамоте 1379 года — блокировано. Отдельно измерено различие перечня и общей оговорки у Тимур-Кутлуга: непоимённое взимание освобождается только после доказательства, что оно есть «забота, побор или чрезвычайный налог», — перечень переносит бремя, а не дублирует оговорку.
ДАТА ПО ИСТОЧНИКУ, А НЕ ПО ПРИВЫЧКЕ: закреплённая публикация датирует ярлык Тимур-Кутлуга 24 апреля 1398 года; историографическое «1397» идёт от чтения Радлова (1888) и в закреплённых байтах отсутствует. Аппарат издания ПРП 1955 (надстрочные номера комментария, приклеенные к слову, номера страниц внутри предложений, дублирующий номер грамоты перед инципитом) снят на фазе 0 с записанными причинами. Обе страницы-источника невоспроизводимы без нормализации: narod.ru подмешивает рекламный
<script>со случайным идентификатором, vostlit.info — пустой контейнер слота, чей префикс меняется ОТ СЕССИИ К СЕССИИ, а не от запроса к запросу (парная проверка «скачать дважды подряд» этот класс не ловит). -
«Қасым ханның қасқа жолы» (1510-е) и «Есім ханның ескі жолы» (нач. XVII в.) формализованы — первые два акта корпуса, у которых НЕ СОХРАНИЛОСЬ НИ СТРОКИ СОБСТВЕННОГО ТЕКСТА (пакеты
kz.corpus.qasqazholyиkz.corpus.eskizholy, юрисдикция KZ территориально,historical_monument). С ними линия ханского права стоит в корпусе целиком: «Қасқа жол» → «Ескі жол» → «Жеті жарғы» (kz-zheti-zhargy) → «Қарамола ережесі» 1885 года (kz-karamola). Закреплены байты не акта, а РАССКАЗА об акте — по две энциклопедические статьи на свод (kk и ru Википедия, сoldid, извлечение воспроизводимоextract_source_text.py, фрагменты —sync_khan_codes_fragments.py, шаг 1 конвейера); редакция самого акта объявленаmaterialization_status UNAVAILABLE, откудаsourceFidelity = "unavailable"— значение §27.2, которого не было ни у одного пакета корпуса. 27 и 10 фрагментов; покрытие байтов kk 56,2 % от файла и 95,2 % от тела статьи (ru 33,6 % / 45,2 %) и kk 33,1 % / 79,2 % (ru 38,4 % / 72,5 %); 15 и 4 правила, 5 и 3 закрытия, 94 и 37 фактов; сценариев 15/15 и 11/11, все 26 evaluate-вызовов байтово идентичныlawref↔lawc; разметка §218 полная.«ТЕКСТ НЕ СОХРАНИЛСЯ» — ВЫВОД
FALSE, А НЕ МОЛЧАНИЕ.NEITHERозначал бы «формализация не знает» — сообщение о себе;FALSEозначает «источники говорят, что не сохранился» — сообщение о предмете. Держит разницу закрытие §70 над ПУСТЫМ множеством положительных фактов. Два свода утрачены на разную глубину, и это читается из CLIR: у «Қасқа жолы» редакция акта несёт пять узловfragment(section/1…section/5— имена разделов известны, текста нет ни у одного), у «Ескі жолы» — ни одного, потому что ни один источник не называет его структурных единиц.ОДНО «Т.Б.» ИСТОЧНИКА ДАЁТ ДВА РАЗНЫХ ОТВЕТА. Скобки после четырёх разделов «Қасқа жолы» кончаются, после военного — сокращением «и другие». О предмете, не названном в закрытой скобке, свод отвечает «не мой» (
TRUE), о таком же применительно к открытой — молчит (NEITHER). Зеркально в «Ескі жолы»: перечень предметов открыт, перечень субъектов власти закрыт, и пятый субъект получаетFALSE. Расхождение закреплённых источников о природе «Ескі жолы» («дошёл без изменений, лишь переименован» против «формально это было дополнением») тоже ВЫВОДИТСЯ; каждое чтение — отдельныйinterpretation, группаany_of, выбор не сделан.НАЙДЕНО ИСПОЛНЕНИЕМ. Агрегат по ВЫВОДИМОМУ отношению молча даёт
NEITHER(§111): правило «пять плюс два есть семь» третьим слагаемым считало союз разделов, где предикат выводится правилами, —checkчист,lowerчист, мёртвых правил нет, диагностики нет. Счёт по заявленным множествам работает; непересечение держат закрытия. Транзитивное замыкание линии пишется ТОЛЬКО черезsupported(...): голый рекурсивный атом даётLDC-E4102(§110), monotone-ребро §65/§103 проходит. -
Мера §33.1 объявляла статьёй сноску Википедии (
.claude/skills/formalize-act/scripts/boundaries.py). Последняя конвенцияARTICLE_CONVENTIONS—[N], единица деления De legibus, — намеренно не якорится на начало строки (14 маркеров из 69 стоят посреди абзаца) и потому ловила «…деп аталды.[1]»: акт без всякого деления входил в меру глубины строкой{'—': 1}вместо честного «мера неприменима», ни ворота, ни отчёт об этом не говорили. Теперь перед скобкой обязан стоять пробел либо начало строки. Радиус измерен, а не оценён: число измеряемых единиц не изменилось ни у одного из 68 остальных актов под мерой, включая все 69 маркеров De legibus. -
Валиханов, «Записка о судебной реформе» (28.02.1864) формализована целиком — первый документ корпуса, который НИЧЕГО НЕ УСТАНАВЛИВАЕТ, а доказывает (пакет
kz.corpus.valikhanov, юрисдикция KZ территориально — как у «Қарамола ережесі»,never_enacted). Служебная записка генерал-губернатору Западной Сибири за сохранение суда биев против введения мирового суда; предложение принято не было — Временное положение 1868 года ввело ровно то, против чего она возражает. 133 фрагмента, покрытие текста 98,2 %, 29 норм, сценариев 17/17, все 70 evaluate-вызовов байтово идентичныlawref↔lawc, разметка §218 полная,doctor.pyбез пробелов. Учёт статей §33.1 —unmeasured(нумерация «1)…7)» покрывает один раздел из десяти), глубина по единицам неприменима: заголовок «полная формализация» в смысле обеих мер для пакета недостижим по построению — как у Декларации независимости США и Клятвы Гиппократа.ТРИ РАЗНЫХ КЛАССА ОТВЕТА §274.6 НА ОДНОМ ВЫВОДЕ. Собственный довод записки лежит в профиле
law.argumentation/0.2(05-argument.law) и доступен только видом запросаargumentation. Полный довод —SKEPTICALLY_ACCEPTED, 4 аргумента за, 149 всего, 26 атак (10 подрывов, 16 опровержений). Изъять четыре факта о ходе опроса — шестнадцать абзацев разбора того, кто в действительности давал показания, — и вывод падает доREJECTED. Изъять вместо них два ответа о выборах — взаимное побеждение, два расширения,CREDULOUSLY_ACCEPTED. Пустое дело —NO_ARGUMENT, а неREJECTED. Приоритета в главном доводе нет ни одного: все ответы записки суть подрывы §274.3, она бьёт по посылке, а не по выводу («всю фальшивость и ложность знаменитых народных мнений»). Единственныйpriorityпакета — уступка об уголовных делах, и она узка: убийство даётREJECTED, баранта —SKEPTICALLY_ACCEPTED.ПРОТИВОРЕЧИЕ ЗАПИСКИ ПРЕДЪЯВЛЕНО, А НЕ СПРЯТАНО. Выборность судьи она считает вредной (родовая интрига и подкуп), выборность административной власти — правом, которым нельзя не дорожить, «хотя пользуемся им теперь и дурно, и нечестно». Оба вывода выводятся и предъявляются в одном ответе (VAL-10); разрешать пришлось бы правовым суждением о том, чего в тексте нет. То же со вторым мнением того же опроса: просьбу о браках записка поддерживает, мнения о судебной реформе объявляет фальшивыми — видно лишь потому, что это разные константы (VAL-08).
НАЙДЕНО ИСПОЛНЕНИЕМ.
strict-правило с отрицательной головой не исполняется вовсе:lawc checkчист, evaluation-документ несёт warningNON_EXECUTABLE_RULE(«негативный head в strict closure — v1-ограничение, барьеры §111 не реализованы»), и правило молча не даёт ничего. Тот же класс, что «зелёный lowering, мёртвое право».НОВЫЙ СРЕЗ ИСТОЧНИКА.
extract_source_text.py --shoqan-work-bodyрежет тело произведения по однозначным маркерам и снимает аппарат портала: номера сносок и переводы иноязычных выражений размечены<button>ПОСРЕДИ предложения, и обычное извлечение рвёт абзац на три строки — текст фрагмента перестаёт быть подстрокой публикации ещё до §194. Срез останавливается, если в теле встретится кнопка иного рода. Генератор фрагментов требует разбиения БЕЗ ОСТАТКА: всякая строка закреплённого среза обязана попасть либо во фрагмент, либо в поимённый список аппарата — иначе выпавший абзац снизил бы единственную работающую меру §33.1 молча. -
Грамоты имп. Анны Иоанновны хану Абулхаиру от 19.02.1731 формализованы целиком — первый СИНАЛЛАГМАТИЧЕСКИЙ акт подданства в корпусе: две из четырёх обязанностей лежат на СЮЗЕРЕНЕ, а санкции нет ни одной (пакет
ru.empire.gramota_1731, юрисдикция RU,historical_monument). Два документа одного дня, не редакции друг друга (довод Реймса и Карлсхорста): № 28 «о принятии их в российское подданство» (ПСЗ I, т. VIII, № 5704) и № 29 об отправлении посольства М. Тевкелева. Закреплены байты академического сборника «Казахско-русские отношения в XVI—XVIII веках» (Алма-Ата, АН КазССР, 1961, док. № 28 и № 29) —PINNED_UNOFFICIAL_COPY,verifiedAgainstSource = false: отпуски в АВПР и сканы ПСЗ машиночитаемыми байтами не располагают. Извлечение —fetch_gramota_1731_texts.py, фрагменты порождаетsync_gramota_1731_fragments.py(15 абзацев, ворота шага 1). Text coverage 99,8 % и 99,9 %.ЧТО ЭТОТ АКТ ДАЁТ КОРПУСУ, ЧЕГО В НЁМ НЕ БЫЛО. Грамота принимает в подданство «на вышеизображенных ТРЕБУЕМЫХ ВАМИ пунктах», то есть делает условия просителя содержанием пожалования. Из четырёх пунктов два обязывают ИМПЕРИЮ (не допускать обид и разорения от своих подданных; защищать от неприятелей — обязанность, рождающаяся нападением), один обязывает кайсацкую сторону (верная служба и ясак), четвёртый взаимен внутри себя (ясыри возвращаются в обе стороны). До сих пор ни один акт корпуса не выражал отношение подданства как двустороннее: сценарии GR1731-05…07 и GR1731-13 падают ровно тогда, когда его записывают односторонней жалованной грамотой.
ЯСАК БЕЗ СТАВКИ — ФОРМА ПУНКТА, А НЕ ПРОБЕЛ. «платить ясак так, как служат башкирцы»: мерило задано отсылкой к режиму другого разряда подданных, числа в грамоте нет ни одного. Пакет выводит
yasak_measured_as(who, Bashkirs)и НЕ заводит ни ставки, ни A3-параметра.ПОДДАНСТВО НЕ ОБУСЛОВЛЕНО ИСПОЛНЕНИЕМ — ИЗМЕРЕНО ПО ТЕКСТУ. Ни резолютивного условия, ни санкции, ни оговорки о лишении в закреплённых байтах нет: за «принять вас в подданство» идёт «и потому надлежит вам». Правило принятия поэтому
strict, а вывод обрывается на констатацииacted_contrary_to_charter(«учинил запрещённое»), которая выводится ОБЫЧНЫМ правилом от факта деяния, потому чтоprohibitionв срезе 0.1 не становится VIOLATED никогда (§79/§130). GR1731-12 — сторож против дописывания санкции: набег учинён, констатация выведена, подданство ЦЕЛО.ГРОМКАЯ ГРАНИЦА, НАЙДЕННАЯ СБОРКОЙ:
activationНЕ ПОНИЖАЕТСЯ. Поле есть в грамматике §123 (duty_item),lawc checkо нём молчит, аlawc lowerопускает его с предупреждениемLDC-E1305«вне DutyPayload-среза». Четыре условные обязанности пакета были записаны через него и не доехали бы до CLIR ни в одной реализации; условность перенесена вwhenправила, где она настоящая.18/18 сценариев регрессии, 20 evaluate-вызовов байтово идентичны (
lawc eval==lawref), 10 рукописных.lawtest§267,check_dead_rulesчист. Глубина §33.1 по статьям неприменима (заголовков «Статья N» нет; четыре пункта «Первое…Четвертое» делят одно перечисление, а не документ) — как у Декларации независимости США, указа от 8.05.1945 и Клятвы Гиппократа;articles.jsonсознательно не заводится, учёт статей отчитывается маркеромunmeasured. -
Контрапункт строгого письма по Фуксу (Gradus ad Parnassum, 1725) формализован целиком — авторское изложение установившейся педагогической доктрины (не перевод трактата, не воспроизведение чьего-либо перевода), пакет
gradus.counterpoint,kind doctrine,jurisdiction "none",sourceFidelity = "authored_exposition"— как уfaraid. Запрет параллельных и скрытых совершенных консонансов (ст. 4) выражен ОДНИМ общим правилом — «совершенный консонанс не приближается прямым движением»; параллельные квинты и октавы лишь именованный частный случай этого правила, не отдельная норма. Разрешение диссонанса — проходящим/вспомогательным тоном (ст. 7) либо задержанием с приготовлением и обязательным нисходящим разрешением (ст. 10), оба оформленыconstraint … requireнад положительными институциональными отношениями, без отрицания невыведенного предиката. Пять видов (ст. 6, 8, 9, 11, 12) — нота против ноты, две/четыре ноты против одной, синкопа, украшенный контрапункт — на общей инфраструктуре консонанса, вида движения и ступени/скачка. 12 статей, 11 EXECUTABLE (ст. 1 — предмет и метод, вне меры сознательно), покрытие байтов 80,2 %. Найдено: унарный минус надInteger-литералом (iv == -24) не парсится —LDC-E0201, хотя грамматика объявляетunary_expressionс префиксом-(§58); обход —(0 - N). Разряд интервала классифицируется явным перечислением знаков в пределах двух октав, а не остаткомmod(не реализован — тот же дефект, что уcalendar-act-1750) и не черезabs(уlaw-evalIntegerне назван в сопоставлении типов терма). Границы: только двухголосие (расширение на 3+ голоса вне среза), nota cambiata третьего вида названа в тексте и не формализована. Измерено:lawc check/lowerчисты (182 узла CLIR),lint.py0 замечаний, 15/15.lawtestчерезlawc test(позитивные и отрицательные контроли на параллели/скрытые консонансы, диссонанс первого вида, проходящий/вспомогательный тон, приготовление и разрешение задержания в обе стороны, начало/окончание упражнения), разметка §218 полная (47 объявлений/109 норм, ноль без метки).LOWERED_ACTS/label-ratchet/formalization-depth/PACKAGE_TITLESвписаны,doctor.pyбез пробелов; дифференциал сlawrefи Lean-сертификаты не прогонялись — пакет вне KZ-machinery, тем же путём, чтоstatutes-of-apparel-1574иpoor-settlement-1691-1697. -
Договор о космосе (1967) формализован целиком — первый акт корпуса, различающий «all States» и «States Parties to the Treaty» одним и тем же гейтом связанности, и первый с проверяемым порогом «пять правительств, включая всех трёх депозитарных» (пакет
intl.space.outer_space_treaty, jurisdictionInternational,legalStatus = "in_force"). Преамбула и 17 статей из 17; глубина §33.1 — EXECUTABLE 16, ANCHORED 1 (ст. II — безусловныйassert not, не правило), SOURCE_ONLY 0; байтовое покрытие 57,9 % (24 фрагмента страницы UNOOSA — текста резолюции ГА ООН 2222 (XXI), а не PDF официальной регистрации UNTS vol. 610, No. I-8843: в последнем между абзацами преамбулы линеаризуется постраничная сноска-реестр дат ратификации, добавленная составителями Treaty Series ПОСЛЕ вступления в силу, — дефект линеаризации конкретного PDF, не текста Договора). 22 сценария (corpus/kz/acts/outer_space_treaty.py), 22 evaluate-вызова байтово идентичныlawc eval==lawref. Три отказа нашлись ИСПОЛНЕНИЕМ, неcheck: (1) эффектimmunity/powerневидим прямомуtruth-выводу (DECISION-0021 §4.3) — свобода доступа ст. I и спасительные исключения ст. IV проверяются запросомpositions, не голым предикатом; (2) агрегатcountкворума большинства ст. XV не проходит барьер §111 даже через 1-местную ПРОЕКЦИЮ выводимогоbound_from(NON_EXECUTABLE_RULEна каждом запросе пакета) — починка: общее число государств-участников дело подаёт фактом, а не агрегатом; (3)add_calendar_periodст. XVI безdeadlinePolicyдаётMISSING_POLICYуровня ДОКУМЕНТА (errata E-0029) на любом запросе пакета, не только считающих срок выхода. Ст. IV — два устройства перечня в одном абзаце: запрет ОМУ сам закрывает список («in any other manner»), список военной деятельности закрыт closure §70 буквально. Ст. IX — duty/power пара на одном понятии «potentially harmful interference», развёрнутом в две стороны убеждённого государства. -
«Русская Правда» формализована ПОЛНОСТЬЮ — 158 из 158 статей обеих редакций (Краткая 43/43, Пространная 115/115), машина редакций §31 доказана на настоящей исторической границе (пакет
rus.corpus.russkaya_pravda, jurisdictionKievanRus). Третья обычноправовая система корпуса послеzheti-zhargy/karamola, первая с НАСТОЯЩЕЙ осью редакций: одинsource_work, дваeditionс реальным lifecycle — Правда Ярославичей (май 1072, перенесение мощей Бориса и Глеба) и Устав Владимира Мономаха (4.05.1113, «по Святополце, созва дружину на Берестовемь» — датировка самим текстом).lawref impact-editionsна реальном IR и датах 1100→1150: semdiff added=21/removed=23, 5/5 сценариев меняют исход, вердикт SEMANTIC-CHANGE,--jsonбайтово детерминирован между прогонами. Институциональная (не только числовая) ось: ст. 2 Пространной отменяет кровную месть прямым текстом, и правилоQualifyingKinMayAvenge(заякорено только на Краткую) снимается проекцией §31 целиком на дату Пространной.НАЙДЕНА И ИСПРАВЛЕНА УТЕЧКА СКВОЗЬ РЕДАКЦИИ (методологическая находка дня, [[multi-edition-package-shared-relation-leak]]): общее отношение
status_tariffна обе редакции позволяло Пространная-правилу без гарда по обстоятельству убийства читать факт, заведённый Краткой, и подтверждать виру там, где Краткая прямо говорит о правомерном убийстве без виры (ст. 20) —@sourceанкерует узел для проекции §31, но не ограничивает круг фактов при обычном (непроецированном) исполнении. Исправлено структурным разделением отношений во всех восемнадцати модулях пакета.Модули: вира по статусу (ст. 1, 18–24К/1–3, 9–14П), увечья и поклёпная/дикая вира (ст. 2–9К/15–25, 60–61П — та же рука: 40 гривен единой суммой против 20+10 расщеплённых; 7 послухов, вервь платит либо не платит по обстоятельству), уроки скоту (ст. 25–26К/40–41П — кобыла оценена РАЗНО, 60 резан/7 кун, курса акт не даёт), Устав о резах и множественность кредиторов (ст. 47–51П — предел «два взимания гасят долг, три лишают его целиком»; князь первым, гость прежде местных), татьба и групповое хищение (ст. 10–17, 27–40К/26–40, 62, 74–78П), задница целиком (ст. 85–98П — статус решает САМ ПОРЯДОК наследования, завещание, опекунство, доля матери), закуп и холопство целиком (ст. 52–59, 102–115П — сердце Устава Мономаха: закрытый перечень «холопьство обельное трое», защищённые основания бегства закупа, ответственность господина, розыск чужого холопа), свод (ст. 12–15К/29, 31–33, 35П — цепочка владельцев до звена, не назвавшего источник, и свод челядина «по языку»), судебные пошлины и железный урок (ст. 41–43К/82, 99–101П), пытка без слова княжа (ст. 31–32К/71–72П), испытание по цене иска и свидетельство холопа (ст. 17К/17, 81–82П), Покон вирный и урок мостникам/городникам (ст. 42–43К/7–8, 90–91П — расхождение вирника, 60 против 8 гривен, названо, не сглажено), особые случаи убийства — поджог, порча скота, убийство жены, холоп без вины (ст. 79–84П).
169/169 сценариев, 169 evaluate-вызовов байтово идентичны
lawc eval/lawref. Найден и заведён отдельной задачей дефектboundaries.py(не этого пакета, [[boundaries-cross-edition-depth-leak]]): группировка фрагментов «своя редакция/чужая» поsource_workвместоeditionдаёт наведённый шум для акта с двумя ВРЕМЕННЫ́МИ редакциями одного work — при полном 100 %-охвате последствие мало, фикс не сделан. Сознательно оставленные границы (не пробелы): повторное поручение закупа (ст. 53–54, 57 — вменение сформулировано как ответственность, не как процедура маршрута); тончайшие развилки вдовьей доли (ст. 88, 95) и отчимьей задницы по вине (ст. 97) сведены к заголовочной норме без исчерпывающего перебора под-случаев. -
Конвенция о предупреждении преступления геноцида и наказании за него (09.12.1948, ООН) формализована целиком (пакет
intl.humanrights.genocide_convention, юрисдикция International, 19 статей из 19). Закрывает пробел, названный самимrome-statute-1998(тот сознательно не формализует состав геноцида). Закреплён русский аутентичный текст (ст. X, пять равно аутентичных языков) со страницы un.org,PINNED_UNOFFICIAL_COPY, независимо сверен с сертифицированной копией UN Treaty Series (том 78, № 1021). Ст. II — ДВОЙНОЕ closure §70 (виды группы × виды деяния): политическая группа и уничтожение имущества группы дают проверяемоеFALSE_ONLY, а не молчание. Специальный умысел «уничтожить как таковую» — канал суждения §47.3 с общимauthority Court. Ст. IV — второе closure по трём категориям должностного положения. Ст. XIV (срок/денонсация/продление по умолчанию) — арифметика §86, проверенная сценамиcorpus/kz/acts/genocide_convention.py(поверхность.lawtestпередатьdeadlinePolicyне умеет). Глубина EXECUTABLE 18/ANCHORED 1 (ст. XIII — 90-дневный срок объявлен границей, тот же выбор, что уnpt-1968), покрытие байтов 99,8 %, 10/10 evaluate-вызовов байтово идентичныlawc eval/lawref. -
Указ Президиума ВС СССР от 8.05.1945 № 121/57 «Об объявлении 9 мая праздником Победы» формализован целиком (пакет
su.decree.victory_day_1945, юрисдикция SU). Два предложения, ни единицы деления — мера глубины §33.1 по статьям неприменима (как у Декларации независимости США), покрытие байтов 99,9 %. Единственный акт из недавнего списка с живым потомком в корпусе:kz.corpus.holidays(2001, Закон РК № 267-II) независимо утверждает тот же день государственным праздником — историческое совпадение, а не формальная source-связь (её нет и не заведено, тот же принцип, что у Реймса/Карлсхорста вde.surrender.act1945). Вместо прозы —lawref impact-editionsна паре дат 1945-05-07 → 1945-05-08 даёт SEMANTIC-CHANGE (редакцияnot_yet → applicable, сценарийNEITHER → TRUE_ONLY): собственное вступление указа в силу доказано инструментом дат-проекции §31, а не рассуждением. Нерабочий статус 9 мая снят Указом от 23.12.1947 № 111/53 (не формализован здесь, назван сноской источника) — отсюдаlegalStatus = historical_monument, неin_force. Найден и воспроизведён наholidays.lawтот же зазор: bare-constидентификатор без явнойentity_ref-декларации не создаёт адресуемый узел CLIR, и.lawtest-запрос к нему молча получаетNEITHER; починка — явныйconst. -
Прокламация об освобождении рабов (01.01.1863) формализована целиком — пакет
us.emancipation, 14 сценариев, differential байтовый. Источник — Национальный архив США,PINNED_UNOFFICIAL_COPY; единицы деления нет (учёт §33.1 —unmeasured, покрытие байтов 99,7 %), как у us-declaration. ГЛАВНЫЙ ЮРИДИЧЕСКИЙ ФАКТ: акт освобождает не всеобщим образом, а закрытым географическим перечнем с вырезами — десять штатов «в состоянии мятежа», у двух из которых (Луизиана, Вирджиния) перечень несёт изъятия до 24 поимённых приходов и графств (включая одну коллективную константу на «сорок восемь графств, называемых Западной Вирджинией» — акт не называет их поимённо ни разу). Два независимых closure §70 (штаты / изъятые части). Сценарии EP-03/EP-04 исполнимо показывают, чего акт НЕ сделал: лицо в изъятом приходе и лицо в никогда не обозначенном пограничном штате дают одинаковый ответ на освобождение (правило не сработало) и разный — на замкнутый перечень изъятий, видимый на уровне МЕСТА (excepted), а не производной позиции лица (первая версия пакета ошибочно ждала третьей статусной оси на лице — найдено исполнением, поправлено). Обязанность воздержания от насилия (кроме необходимой обороны) держит известную границу v1: forbearance-позиции никогда не получаютVIOLATED(только ACTIVE/EXPIRED), и сценарий-сторож это проверяет явно. Обязанность приёма годных лиц на военную службу — за каналом суждения §47.3 (органMilitaryAuthority), поскольку его исход определяет самоё существование позиции. НАЙДЕНО ИСПОЛНЕНИЕМ: text block §17 не переживает фрагмент, кончающийся кавычкой источника (цитата предварительной прокламации от 22.09.1862) — генератор фрагментов переключает форму литерала на экранированную строку именно для этого случая (sync_emancipation_fragments.py, по образцуsync_leviathan_fragments.py, с добавленным экранированием переноса строки). -
Договор об Антарктике формализован срезом «заморозки притязаний» — статья IV из 14 (пакет
intl.antarctic.treaty, юрисдикция International). Технически самое трудное место среди международных актов корпуса: статья почти целиком — норма о том, ЧЕМ ФАКТЫ НЕ МОГУТ СТАТЬ. П. 1 (a)/(b)/(c) — толковательная оговорка (immunity§128, БЕЗ конкурирующего правила: текст исключает одно прочтение самого себя, не постулирует то, что исключает); п. 2 — заморозка легального эффекта деятельности (заявить/поддержать/отрицать притязание, создать право суверенитета — все четыре блокированы) плюс запрет новых и расширенных притязаний (prohibition). Объявленный срез — приёмrome-statute-1998: закреплены байты всех 14 статей, формализована одна ("scope": ["4"]). ЗАВЕДЕНА КОНВЕНЦИЯunit: "en_article_roman"в ОБЕИХ мерах §33.1 (ci/check_source_pinning.pyиboundaries.pyскилла formalize-act — правлены обе копии соглашения): заголовок «Article IV» (римский номер по-английски) не опознавала ни одна прежняя конвенция — договор был бы невидим молча, тот же класс отказа, что «26-бап» и римская статья Пакта Молотова–Риббентропа. НАЙДЕНЫ И ПОЧИНЕНЫ ДВА ДЕФЕКТАlawref, НЕ ОБОЙДЕНЫ. (1)NON_EXECUTABLE_RULEнаstrict-правилах с отрицательной головой (then not …): v1 строгого замыкания принимает голову только позитивной полярности (strict_rule_status,lawref/lawref/evaluator/strict.py); исправлено сменой силы наdefeasible— конкурента нет, статус не отличим от строгого. (2)KeyError: 'args'вnorm_lifecycle(lawref/lawref/evaluator/norms.py): сбор посылок нормы-позиции звалsubstitute_literalна КАЖДОМ конъюнкте тела, включаяguard(терм-сравнение без"args"литерала) — первый норм-шаблон корпуса со сравнением в теле. Исправлено:guard/quantified-конъюнкты собирают посылки черезguard_value/quantified_value, как уже делаетsolve().lawc evalне падал изначально; differential после починки байтовый.vectors/run_vectors.py(317, 308 runnable) иlawref/selftest.pyпрогнаны целиком после правки — регрессий нет. Источник — English Wikisource (oldid 15600468, закреплена ревизия, не страница;PINNED_UNOFFICIAL_COPY). Измерено: 6 фрагментов, покрытие текста 7,3 % (знаменатель — весь договор), учёт 1 из 14, глубина §33.1 — EXECUTABLE 1, разметка §218 полная (22/16, ноль без метки), 12/12 сценариев регрессии, 12 evaluate-вызовов байтово идентичны междуlawrefиlawc,doctor.pyбез пробелов. -
Публикация OPTN переведена на извлечение с сохранённой раскладкой — и таблица 8-7 стала читаемой целиком. Заведён
corpus/tools/extract_pdf_layout_text.pyс ОБЪЯВЛЕННЫМ контрактом нормализации, отличным от плоского: горизонтальные пробелы сохраняются (в них и живёт связь «строка ↔ колонка»), хвостовые снимаются, серия пустых строк схлопывается в одну, колонтитулы отсекаются тем же структурным признаком. Два прогона на одних байтах дают идентичный результат. Все 43 классификации таблицы 8-7 восстановились без пропусков против одиннадцати в плоском тексте. ПУБЛИКАЦИЯ ОДНА, А НЕ ДВЕ, И ЭТО СКАЗАЛ КОМПИЛЯТОР. Первая попытка завела layout ВТОРОЙ публикацией той же редакции рядом с плоской. Отвергнуто громко: §194 сверяет фрагмент со ВСЕМИ публикациями его редакции, а не с одной названной, — фрагмент принадлежит РЕДАКЦИИ, и две разные раскладки одной редакции сосуществовать не могут по построению (LDC-E5202на четырёх фрагментах разом). Layout ЗАМЕНИЛ плоскую: он несёт ту же информацию плюс структуру колонок, и терять на нём нечего. СВЕРКА ПОЛОС CPRA СТАЛА СТРОЖЕ ПОБОЧНЫМ ЭФФЕКТОМ. В плоском тексте полоса и очки стояли на разных строках, и проверить можно было только их наличие ПОРОЗНЬ — таблица с переставленными очками прошла бы. В layout они стоят в одной строке, и генератор проверяет теперь именно СВЯЗЬ полоса ↔ очки. КОНВЕНЦИЯpolicy_sectionНАУЧЕНА ОТСТУПУ — ВСЕМИ ТРЕМЯ РЕГУЛЯРКАМИ. Заголовки разделов в layout поехали вправо вместе со всем текстом, и якорь^нашёл бы ноль заголовков, молча отключив учёт разделов. Первая правка расширила только сканер, и ворота упали громко и правильно: «заголовок распознан учётом, но срез пуст — scan и article_text конвенции разошлись». Сканер, головной шаблон среза и терминатор следующего заголовка обязаны понимать один маркер; исправлено согласованно в обеих копиях соглашения (ci/check_source_pinning.pyиboundaries.py). Корпусных FAIL в закреплении осталось 17 — ровно столько же, сколько было. Классификации таблицы 8-7: 1–16 из 43. 67 норм в пакете, покрытие текста 2,5 %, учёт разделов 2 из 149, глубина EXECUTABLE 2, восемь.lawtest— 8/8, differential байтовый,doctor.pyбез пробелов. С двенадцатой таблица требует ТОЖДЕСТВА групп крови, а не допустимости, — различие выражено отдельным предикатом и держится тестом KA-07: донор A и кандидат AB допустимы по таблице 8-6, но классификации 12 не получают. ГРАНИЦА ПЕРЕЕХАЛА ИЗ ИСТОЧНИКА В ОНТОЛОГИЮ. Классификации 17–43 различают конкретные группы крови в ОБЕИХ ролях («кандидат группы B при доноре группы O», «донор A2 или A2B») — это отдельный словарь, которого в пакете нет; подменить его имеющейся допустимостью значило бы сказать не то, что говорит таблица. Отдельно названо: сырой балл EPTS считается формулой с логарифмом, которого нет в замкнутой поверхности §58, поэтому принадлежность к верхним 20 % приходит фактом — тем же приёмом, что день недели вus-federal-holidaysи MELD вus-liver-status. -
Таблица 8-7 почечного распределения: классификации 1–11 из 43, и граница ИЗМЕРЕНА, а не выбрана. В
us.optn.kidney_allocationдобавлен05-classifications.law— 61 норма против прежних 50, покрытие текста 1,0 %, шесть.lawtest— 6/6, differential байтовый,doctor.pyбез пробелов. ГДЕ ЗАКАНЧИВАЕТСЯ ВОССТАНОВИМОСТЬ ИЗ ЗАКРЕПЛЁННЫХ БАЙТОВ. Плоское извлечение (extract_pdf_text.py) схлопывает горизонтальные пробелы — этого требует общий контракт нормализации §13, — и вместе с ними исчезает СВЯЗЬ КОЛОНОК многоколоночной таблицы. Классификации 1–11 выходят цельными блоками «номер → критерии → расстояние → группа крови» и читаются однозначно. С двенадцатой связь разрушена: байты дают номер 12, его критерии, затем ПОДРЯД шесть пар расстояние/группа, принадлежащих строкам 12–17, затем голые номера 13–17 и лишь потом их критерии одним блоком. Сказать, какое расстояние у какой строки, можно только позиционным сопоставлением — догадкой о поведении извлекателя, а не чтением байтов (§249). Проверено, что это НЕ свойство источника:pdftotext -layoutна том же PDF восстанавливает таблицу полностью. Но layout-текст обязан сохранять пробелы, чего нормализация §13 не допускает, — значит это ДРУГАЯ публикация той же редакции, со своим закреплением. Работа названа и не сделана, а не забыта. ТАБЛИЦА ЕСТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ ПРИОРИТЕТОВ, А НЕ РАЗБИЕНИЕ. Один кандидат отвечает условиям классификаций 1, 2, 3 и 4 сразу — каждая следующая мягче предыдущей; ответом служит наименьшая. Но минимум по ВЫВОДИМОМУ предикату есть агрегат, который отвергает барьер полноты §111, поэтому нормы выражают «каким классификациям кандидат отвечает», а выбор наименьшей живёт запросом — приёмcorpus/laws/faraid/03-residue.law. Держит это тест KA-06: сузь любое из четырёх правил лишним условием, и вложенность множеств пропадёт. КЛАССИФИКАЦИИ 1–7 ЗАМКНУЛИ КОНТУР С 8.4.C. Это в точности полоса, которую04-ranking.lawсортирует срочностью вперёд. До этого файла номер классификации приходил голым фактом дела; теперь для доноров с KDPI ≤ 20 % его можно проверить выводом. Пятая классификация читает ВЫВЕДЕННУЮ 8.4.E («прежний прижизненный донор»), а не факт, — цепочка «условия → классификация → место в листе» замкнулась целиком. ЧЕГО НЕ ДОПИСАНО. Классификация 7 («Medically Urgent») условия по группе крови в таблице не несёт — и правило его не добавляет: дописать «и группа крови допустима» было бы правдоподобно и неверно, таблица в этой строке молчит. -
Статья 9 Конституции Японии заведена узким срезом — глава II «Отказ от войны» целиком (промульгация 03.11.1946, в силе с 03.05.1947),
jp.constitution.article9: первый японский акт корпуса. Источник — e-Gov (elaws.e-gov.go.jp, API XML, не HTML-скрейп),PINNED_UNOFFICIAL_COPY. Единица деления НЕ ОБЪЯВЛЕНА (маркер «第N条» вне конвенцийboundaries.py) — честная «мера неприменима»; покрытие байтов 99,1 %. Две соперничающиеinterpretationБЕЗinterpretation_groupнад запретом «戦力» (идиомаorgan-allocation): NecessaryMinimumSelfDefenseReading (правительство, с 1954) против LiteralPacifistReading (большинство конституционалистов) — в отличие от organ-allocation, ОБЕ ИСПОЛНЕНЫ 13 сценариями, не только structurally-checked; ключ —optionsявным 4-м аргументомevaluate(), не полеcase["options"]само по себе. Канал суждения §47.3 внутри первого прочтения (exceeds_necessary_minimum_for_self_defense, authorityCourtsOfJapan) отражает реальную историю: суды уклонялись от ответа по существу доктриной «государственного акта» (Сунагава 1959, Наганума 1973/1976). Реинтерпретация 2014–2015 (коллективная самооборона) названа границей, не выражена — пороги живут в другом источнике. Найден и задокументирован приём тестирования: ссылка дела на пакетную константу черезentity_refвместоau.constдаёт тихий пустойsolve()без issue на правиле со второй сущностью ([[case-const-ref-must-match-package-const]]в памяти проекта). Измерено: 13/13 сценариев, differential — 13 evaluate-вызовов байтово идентичны (lawc eval==lawref),check/lowerчисты,doctor.py— пробелов нет. -
Statutes of Apparel 1574 формализован целиком — прокламация “Enforcing of Statutes of Apparel” (Гринвич, 15 июня 1574),
eng.corpus.statutes_of_apparel_1574: матрица “ранг × предмет” английского закона против роскоши, все 14 клауз мужского гардероба и все 13 женского (три чисто интерпретирующие клаузы пинованы, не нормированы), плюс операционная часть преамбулы. Decision table A3 отклонена осознанно (доменные константы запрещены в ячейках.lawtable.json—references/a3-surfaces.md); матрица выражена обычными правилами по прецедентуzheti-zhargy(estate_multiplier→ здесьrank_precedence), генерализация по ярусу предмета — квантификациейfor i: ApparelItemпо институциональной реляции членства. Пять независимых каналов допуска: рождение (пятипороговая лестница, мужская и женская параллельно), богатство (£100/год, £40/год, 300 марок земли наследника), должность (клауза 11 — четыре офицера; клауза 12 — пространный судейско-городской список), родство (дети/сыновья/дочери/наследники пэров) и придворная служба. Два нюанса «исключение уже яруса, не вровень с ним»: гартеровский (клауза 1 — только пурпур) и придворный (клауза 9 — общий ярус, но не позолоченные шпоры). Текстовый курьёз сохранён, не исправлен: женская клауза 9 не несёт независимого пути по рангу пэрессы, клауза 11 для того же яруса его добавляет. Найден дефект исполнения:rule … strict { … not_known(exempt(p)) …}проходитcheck/lower/check_dead_rules.pyчисто, но на исполнении не даёт вывода вовсе (truth_status—NEITHERнезависимо от факта);strict→defeasibleчинит все правила (см.[[strict-rule-not-known-silently-inert]]в памяти проекта). Измерено: 28/28 сценариев (lawc test),check/lowerчисты (98 правил, 33 фрагмента),lint.py0 замечаний, 0 мёртвых правил; дифференциал и Lean-сертификаты не прогонялись — пакет вне KZ-machinery, какpoor-settlement-1691-1697. Источник — веб-транскрипция elizabethan.org (PINNED_UNOFFICIAL_COPY), сверенная пофразово с Folger/Shakespeare’s Globe, не с изданием Hughes & Larkin. Три обязанности приведения в исполнение заведены, но не доведены до VIOLATED — нужен closure §70, не построенный. Полный разбор границ —README.mdпакета. -
Calendar (New Style) Act 1750 (24 Geo. 2 c. 23) формализован целиком — первый акт корпуса о самом календаре, а не о людях:
gb.corpus.calendar_act_1750, преамбула и 6 статей из 6, покрытие байтов 67,1 %,legalStatus = in_force(правило високоса ст. 2 — действующее британское право, не памятник, проверено на всех семи годах, названных самим Актом). НЕСУЩАЯ НАХОДКА:Dateв этой системе — proleptic-григорианская ось без разрывов; ст. 1 объявляет 2 и 14 сентября 1752 года юридически соседними («the natural day next immediately following»), а движок между ними вычисляет 12 дней, не 0, — ровно на одиннадцать больше единицы, той самой цифрой Акта. Величина утверждена не прозой, а правиломEngineCountsAcrossTheGapи проверена сценарием CAL1750-01; сам разрыв (несуществование 3–13.09.1752) нигде не выражен — названная, не молчаливая граница поверхности §58/§86. Попутно найден и задокументирован (не починен — errata-класс) дефект:modобъявлен в §58/grammar.ebnf, но не реализован в lexer’еlawcни разу (прямая проба:LDC-E0201наy mod 400внутриwhen); обход через/→Rationalзакрыт тоже (roundотвергаетRational) — классификация «кратен ли год четыремстам» подана фактом, не вычислена правилом. Измерено: 7/7 сценариев, differential — 7 evaluate-вызовов байтово идентичны, Lean-ядро (lawcheck) — 7/7 сертификатов на обеих ногах контура (оракул и движок),doctor.pyбез пробелов. -
civil-procedure: покрытие регрессии поднято с 21/670 до 594/670 правил (3 % → 88,7 %). Обе меры §33.1 у ГПК РК (
kz.corpus.civil_procedure, 490 статей, 670 правил в 46 файлах) были чисты и раньше (boundaries.py488 EXECUTABLE/2 SOURCE_ONLY,check_source_pinning.py97,9 %), но не видят, что правило СРАБАТЫВАЕТ — третья мера (ci/report_norm_graph.py) показала, что регрессия исполняла только 21 правило из корневых файлов, а все 58chapters/*.lawне исполнялись НИ РАЗУ. Девятью параллельными агентами дописаны сценарии по всем 46 правило-несущим файлам, каждый интегрирован и перепроверен по отдельности —corpus/kz/acts/gpk.py9 → 174 сценария, 0 отказов, 597 evaluate-вызовов байтово идентичныlawc eval==lawref. Манифест иscenario-ratchet.json.kz.gpk(9 → 174) обновлены точечно. Попутно закрыт латентный дефект тестового хелпераfact()(id ассерции не зависел от содержимого аргументов — двусмысленность в proof-графе, truth status не затронут:SupportStoreиндексирует по содержимому литерала, не по id). Остаток 76/670 — поимённо дублирующие альтернативные ветви к уже покрытым выводам (в основном исключения из судебного иммунитета иностранного государства, ст. 477–494). Отдельно найдено и НЕ тронуто: 44 отношения (пятая часть всех 217 в корпусе) кодируют процессуальный срок величиной в имени вместо календарного терма — пакет не несёт ни одногоInstant-поля ни для одной процессуальной сущности, закрытие требует нового временного слоя, а не починки констант. -
Почечное распределение OPTN отвечает теперь «кто выше в листе», а не только «сколько очков». В
us.optn.kidney_allocationдобавлены Policy 8.4.C (сортировка внутри классификации), 8.4.D с таблицей 8-6 (группы крови) и 8.4.E (прежние прижизненные доноры) — 50 норм против прежних 22, охват разделов 2 из 150, глубина §33.1 EXECUTABLE 2, покрытие текста 0,8 %, пять.lawtest— 5/5, differential байтовый. ЛЕКСИКОГРАФИЧЕСКИЙ ПОРЯДОК ВЫРАЖЕН ЯРУСАМИ НИЧЬЕЙ (приёмcorpus/laws/uefa): срочность → время в срочном статусе → очки → дата регистрации, а для прочих классификаций — очки → дата. Какой из двух порядков применяется, выводится из полосы KDPI донора (≤ 20 % — таблица 8-7, > 20 % и < 35 % — 8-8, ≥ 35 % и ≤ 85 % — 8-9, > 85 % — 8-10) и номера классификации.Instantв сравнении дат регистрации работает; тест KA-03 проходит цепь насквозь — разорвись она на любом ярусе, ответ стал бы NEITHER. НАЙДЕНА ОШИБКА МОДЕЛИРОВАНИЯ, КОТОРУЮ DIFFERENTIAL НЕ ЛОВИТ ПО ПОСТРОЕНИЮ. Источник говорит о МНОЖЕСТВЕ («for candidates within classifications 1 through 7 … candidates are sorted»), а факт дела — упорядоченная пара. Пока нормы читали эмпирическийsame_classificationнапрямую, запросranks_above(B, A)при поданномsame_classification(A, B)давал NEITHER: срочный кандидат не поднимался над несрочным,checkбыл зелёным, а обе реализации молчали ОДИНАКОВО. Симметрия принадлежности выражена явно — двумя правилами замыкания в институциональныйin_same_classification, — и держится тестом KA-04. ТАБЛИЦА 8-6 ПРОТИВ КАЗАХСТАНСКОЙ — ИЗМЕРЕННОЕ СРАВНЕНИЕ, А НЕ РИТОРИКА. Один предмет, два нормативных порядка: приложение 3 к приказу № ҚР ДСМ-120/2020 даёт четыре строгих правила без единого исключения, OPTN — восемь, из которых три суть исключения. Базовая совместимость у OPTN УЖЕ (O идёт только в O, B только в B), зато есть дефитер, которого у казахстанского акта нет вовсе: для предложений в категориях нулевого несовпадения ABDR почки O и B идут кандидатам иных групп (тест KA-05). И условная ветвь A non-A1 / AB non-A1B → B при трёх требованиях к программе. 8.4.E ПРЕВРАТИЛ ФАКТ В ВЫВОД.prior_living_donorбыл чистым фактом дела — балл начислялся по значению, которое кто-то подал; теперь классификация выводится из четырёх условий (пожертвование одного из пяти органов на территории США плюс три сообщённых врачом сведения), и подать её мимо них нельзя. ЕДИНИЦА ДЕЛЕНИЯ ПОТРЕБОВАЛА СВЕСТИ ТРИ ФРАГМЕНТА В ОДИН. Соглашение якорей §33 читает номер регуляркойART-N[-_N]и буквенного суффикса не берёт:KA_ART8_4Cне разрешается в единицу вовсе, и три отдельных фрагмента остались бы вне ОБЕИХ мер §33.1 молча. Подразделы C, D и E в закреплённых байтах смежны, поэтому один фрагмент 8347–8424 покрывает их без разрывов; 8.4.A (EPTS) и 8.4.B (KDPI) в него не входят — их формулы содержат логарифм, которого нет в замкнутой поверхности §58, и оба балла приходят фактом. -
Табель о рангах 24 января 1722 года (ст. ст.) и пороги потомственного дворянства 1845/1856. Пакет
ru.empire.tabel_o_rangakh: сетка чинов — A3-таблица 14×3 (сухопутные, статские, придворные; гвардия, артиллерия и флот вне среза), порог дворянства — три поколения правил (воинские 14→8→6, статские и придворные 8→5→4). Манифест 11.06.1845 (ПСЗ II № 19086) и указ 09.12.1856 (ПСЗ II № 31236) — отдельныеsource_work, неrevisionТабели. ЮрисдикцияRU,historical_monument.evaluateчитает окнаeffective;impact-editions— lifecycle редакции (TOR-22/23: состояния и снятые узлы, не переворот исхода на замороженном legalTime). Даты юлианские. Измерено: 23/23 сценария, 21 evaluate-вызов байтово, три.lawtest— 3/3. Глубина по умолчанию EXECUTABLE 2 (манифест 1845); пункты 11/15 Табели — 2; указ 1856 — 1; сетка unmeasured. Найдено:effectiveбез интервала —LDC-E1305наlower; wiki-парсер сдвигал колонки класса 11 и клеил|}к чину XIV; вход A3 — полный StableId. -
Кэш programHash §170 с плановой сверкой (DECISION-0054): 77 % вызова оракула считало не право, а хэш.
build_manifestпересчитывалsemantic_hash(ir)на каждомevaluate, хотя это чистая функция от неизменного за прогон IR: профиль kz-criminal-code — 2,12 с хэша из 2,83 с вызова при 0,25 с самого вывода права. Тихо закэшировать было нельзя: пересчёт работал детектором мутации входного IR (докстрингcheck_kz_differential.py; прецедент_conjunctsрезультатов не менял и ловился ТОЛЬКО этим путём). Кэш поid(ir)с сильной ссылкой (довод_IR_DIRS) и LRU-64; детектор заменён сверкой по расписанию степеней двойки — мутация между первым и вторым вызовом ловится всегда, цена O(log N), расписание детерминировано и на байты не влияет; новый детектор работает и в прогонах без differential, где у старого не было второй стороны сравнения. Канарейка в селфтесте обязана падать на подложенной мутации (первая версия проверки сама же упала — мутированный вызов пришёлся вне расписания, что подтвердило точность окна). Замерено до/после на одном семействе:--only entrepreneurial_code— 1778 с → 371 с, 4,8×; differential--only personal_data— 31 вызов байтово идентичен, determinism-линт зелёный. -
Декалог: Исход 20:2–17 и Второзаконие 5:6–21 (KJV) — две рецензии десяти слов в одном пакете. Пакет
he.torah.decalogue. Дваsource, не двеeditionодного work: Исход и Второзаконие — два места Торы, сравнение слотов (remember/keep, творение/исход, порядок вожделения) живёт соседством в CLIR. Знаменатель §33.1 — стих, не заповедь: три традиции нумерации — фактыcommandment_number, и объявить единицуcommandmentодной традиции сделало бы её мерой полноты. Заведена конвенцияunit: "verse"в обеих мерах §33.1, не угадываемая: маркерN:Mесть в цитатах Писания внутри любого акта. Номер учёта —20-2(двоеточие якорь §33 не берёт). Источник — транскрипция KJV (Gutenberg #10),PINNED_UNOFFICIAL_COPY;kind doctrine, юрисдикции нет,in_forceнет. Исх 34 назван вне охвата. Вожделение и имя всуе — ANCHORED, не притворно-исполнимый запрет. Меры (Исход): EXECUTABLE 12, ANCHORED 4 из 16, SOURCE_ONLY 0; Второзаконие той же глубиной 12/4. Сценариев 25/25, differential 25/25 байтово, шесть.lawtest— 6/6,doctor.pyбез пробелов. Найдено исполнением:LDC-E4101на бинарном действии запрета (унарная форма); шесть тестов в одном файле не лоуверятся (LDC-E1315);result_kind POSITIONSне из словаря §174.1 (NORM_POSITION). -
Печёночные статусы OPTN формализованы в ДВУХ редакциях сразу — первый пакет корпуса, заведённый ради оси редакций. Пакет
us.optn.liver_status: Policy 9.1.B (педиатрический статус 1A) и 9.1.C (статус 1B) в редакциях 16.03.2023 и 13.11.2025. Обе публикации закреплены и обе нормативны — у всех прежних пакетов публикация одна, а прошлая редакция была самое большее упоминанием в комментарии. ЧЕТЫРЕ ИЗМЕНЕНИЯ, И ВСЕ ЧЕТЫРЕ СВЕРЯЮТСЯ С БАЙТАМИ ВОРОТАМИ (check_criteriaгенератора отказывается писать, если формулировка нашлась не в той редакции): порог INR стал нестрогим («greater than 2.0» → «greater than or equal to 2.0»); появилась полоса INR 1.5–2.0 при энцефалопатии в течение 56 дней; из статуса 1B убраны ворота «calculated MELD or PELD greater than 25»; окно кровотечения расширено с 30 мл/кг за 24 часа до 30 за 96 или 20 за 24, а критерий Glasgow coma score снят.impact-editionsОТВЕЧАЕТ ИЗМЕРЕНИЕМ: редакция 2023applicable → closed, редакция 2025not_yet → applicable, семантический diff added=5/removed=4, и из девяти сценариев шесть меняют исход — включая ОБРАТНЫЙ переворот (glasgow-only-loses-status: TRUE_ONLY → NEITHER: снятый критерий лишает статуса). Три сценария исход не меняют — это контрольная группа, критерии которой в обеих редакциях дословно совпадают. Покрытие полное: каждая норма поздней редакции доказанно применилась хотя бы в одном сценарии. ДВА МЕХАНИЗМА ДАТИРОВКИ НЕ СКЛАДЫВАЮТСЯ — измерено, а не предположено.effectiveна правиле читает ТОЛЬКО исполнитель; проекцияimpact-editionsего не видит вовсе, она снимает узел по жизненному циклу редакции, в которую ведут его якоря. Жизненный цикл читает ТОЛЬКО проекция:evaluate()§31 не применяет, и при полном CLIR нормы обеих редакций применимы разом. Покаeffectiveстоял на правилах, НИ ОДНА датаlegalTimeв сценарии не делала отчёт верным — инструмент двигает проекцию, но не дело; первый прогон девяти сценариев показал это прямо, перевернувventilator-dependentиrequires-dialysis, критерии которых дословно одинаковы, и НЕ показав настоящих изменений. Датировка переведена на якоря: правило, текст которого совпадает в обеих редакциях, якорится в оба фрагмента и переживает обе проекции. Цена названа в шапках модулей: прямой запрос к полному CLIR датировки не имеет вовсе, и спрашивать пакет следует у проекции. ЗАВЕДЕНЫ ОТДЕЛЬНЫЕ ВОРОТАci/check_liver_edition_impact.py(шаг конвейера + канарейка, которая снимает жизненный цикл ранней редакции и ОБЯЗАНА упасть). Причина: у этого пакета обычные меры почти ничего не проверяют — единица деления политики OPTN («9.1.B») не опознаётся ни одной из десяти конвенций §33, поэтому учёт разделов честно печатает «НЕ ИЗМЕРЕН», а глубина §33.1 неприменима. Всё содержательное утверждение пакета живёт в отчёте, и ворота проверяют его ПОИМЁННО: состояния редакций, состав перевёрнутых сценариев в обе стороны, контрольную группу и полноту покрытия. Меры и прогоны: 4 фрагмента из двух публикаций, покрытие 0,7 % и 0,6 % (закреплены обе политики целиком, формализован срез из двух разделов), разметка §218 — 35/35 и 14/14 норм, два.lawtest— 2/2, differential байтовый,doctor.pyбез пробелов. Попутно подтверждено на живом акте:notнад ЭМПИРИЧЕСКИМ предикатом требует установленного отрицательного факта — отсутствие утверждения ложью не является, и без него правило молчит при зелёномcheck(тест LS-02 держит это). -
Laws of Chess ФИДЕ (в силе с 01.01.2023) формализованы срезом процедурного оверлея — 6 статей из 12. Пакет
fide.laws.chess: первый акт корпуса, который есть регламент международной спортивной федерации и не шахматный движок. Доска, очередь хода, геометрическая легальность, флаг взятия на проходе, счётчик 50 ходов и число повторений позиции приходят фактами протокола (какmatch_won_byу УЕФА). Право решает рокировку (3.8.2), окно en passant (3.7.3), заявки ничьей (9.2/9.3/9.6), два невозможных хода (7.5.5), «тронул — ходи» (4.3) и канал арбитра (предисловие 0.2, ст. 12). Объявленный срез: статьи 3, 4, 5, 7, 9, 12. ЮрисдикцияInternational, неFIDE— FIDE издатель, не правопорядок. Заведена единица деленияen_article(«Article 3: Title») в обеих мерах §33.1. АвтоматNotStarted → Playing → Ended; цвет хода не в состояниях (DECISION-0013 §2.2); ход — self-loopPlayMove. Полуход ≠ календарный день: флаг EP — факт кадра. Измерено: 7 фрагментов, покрытие текста 55,6 % (19 282 из 34 673 байт), учёт 6 из 12 при нуле неучтённых, глубина §33.1 — EXECUTABLE 6, ANCHORED 0, SOURCE_ONLY 0, разметка 68 объявлений / 47 норм (без метки 6 — профиль процедуры, E-0044), сценариев 16/16, differential байтовый (16 evaluate-вызовов), три.lawtest— 3/3,doctor.pyбез пробелов. Найдено исполнением:authority Arbiterстолкнулся бы сentity Arbiter;not legal_moveбез биндера —LDC-E4101; «король не ходил» в открытом мире —NEITHER(closure §70, неnot_known); канал §47.3 снова только на строгом мосте (FIDE-15). Геометрия 3.1–3.6 и приложения A–G вне среза; счётчики не выводятся из журнала (барьер §111). -
Клятва Гиппократа формализована целиком — 9 абзацев из 9. Первое в корпусе самообязательство БЕЗ СУВЕРЕНА. Пакет
grc.hippocrates.oath, вид источникаoathзаведён этим актом,jurisdiction "none". Отсутствие суверена — не оговорка о древности, а свойство каждого узла: держатель полномочия §127 и его предмет — одно лицо (holder who; over who; ни у одной другой нормы корпуса они не совпадают), мерило исполнения дважды отдано суждению самого клявшегося (канал §47.3 с органомOwnAbilityAndJudgementвместоCourt— внешнего носителя власти у акта не существует), а санкция девятого абзаца остаётся институциональным фактом: кто воздаёт и как, Клятва не определяет (прецедент «deus ipse vindex erit» у Цицерона). Меры: 15 фрагментов (по ОГОВОРКАМ, не по абзацам — абзац 2 несёт шесть обязанностей, абзац 9 две противоположные судьбы), 51 правило, 22 шаблона норм (12 duty, 9 prohibition, 1 power), 2 канала суждения, 1 замыкание §70, 1 приоритет §116; покрытие текста 97,0 % (1916 из 1975 байт — непокрытое посчитано поимённо: 42 байта разделителей оговорок, 16 разрывов абзацев, 1 хвостовой перевод строки); сценариев 20/20, все 25 evaluate-вызовов байтово идентичны; мёртвых правил ноль, мёртвых символов ноль; разметка §218 полная (63 объявления, 73 нормы, en и ru совпадают числом); три рукописных.lawtest§267 — 3/3, плюс 25 эмитированных; третья нога контура зелёная (25 сертификатов оракула и 25 сертификатов движка проверены Lean-ядром, отказов ноль, висячих посылок ноль);doctor.pyбез пробелов. Вместо неприменимой меры измерено по фрагментам: правил 51, у каждого стоит@source, и на каждый из 15 фрагментов приходится хотя бы одно правило — фрагментов, из которых ничего не выводится, ноль. Это сопоставление якорей со списком фрагментов, а не уровни §33.1: их выставляет только измерение, и оно здесь возвращаетunmeasured. Учёт §33.1 —unmeasured, и это верный ответ, а не пробел: единицы деления нет вовсе (девять абзацев без номеров), глубина по единицам неприменима,ci/formalization-depth.jsonдержитnull. Заголовок «полная формализация» в смысле ОБЕИХ мер для пакета недостижим по построению; сценарии здесь не регрессия поверх меры, а её единственный носитель — тот же класс, что Декларация независимости США. Найдено исполнением и квалифицировано: эффект power §127.2 невидим поражаемому слою. Факт, порождённый материализацией эффекта, виден строгим правилам и не виден поражаемым — вместе со всем, что из него выведено. Замер прямой: один и тот же вопрос приbound_by_oathиз эффекта даёт NEITHER, фактом дела — FALSE_ONLY (три правила с отрицательной головой); замыкание §70 при этом успевало вывести отрицание раньше положительного вывода и давало BOTH. Обе реализации согласны байтово (25 вызововlawc eval==lawref), то есть differential здесь слеп по построению. Это не дефект и не граница языка, а ограничение v1, записанное DECISION-0021 §4.3 («круг заканчивает L1-стадию целиком до публикации»; эффекты §127 названы там же вне модели круга); в коде видно прямо — послеmaterialize_effectsдвижок зовёт толькоstrict_closure. Обойдено строгим правилом рядом с полномочием: узелpowerостаётся утверждением о самообязательстве, а правило доставляет вывод туда, куда эффект в v1 не доходит; парность их условий закреплена сценой HO-02. Измерено на этом акте: из трёх видов цели нарушение наблюдается ровно у ОДНОГО, и причины у двух других разные. (1)maintenance§124.2 видит контрпример: разглашение тайны даёт VIOLATED (HO-15) — ради этого тайна записана обязанностью, а не запретом. (2)forbearanceне даёт VIOLATED НИКОГДА: HO-09 требует ACTIVE при деле, содержащем применение ножа, и обязан упасть, когда появится событийная модель §79; нарушение выводится девятью обычными правилами от факта деяния (приём Локка). (3)achievement§136.3 требует неисполнения ПОСЛЕ окна, а Клятва не назначает срока ни одному своему обещанию — «to fulfill his needs when required» говорит, ОТ ЧЕГО возникает обязанность, и молчит о том, к какому дню она исполняется. Окна открыты справа, просрочка не наступает: дело с ЯВНЫМ отрицательным фактом («нужда не восполнена») оставляет позицию ACTIVE и на нижней выразимой дате, и на 2026 год (HO-20). Обещание без срока просрочить нельзя — свойство ТЕКСТА, а не среза языка, и причина, по которой Клятва обходится санкцией девятого абзаца вместо сроков. Отсюда третья граница: неисполнение положительной обязанности в преступление клятвы НЕ выводится (текст об этом молчит), и врач, не восполнивший нужду учителя без единого запрещённого деяния, сохраняет награду (HO-16) — граница формализации, а не утверждение Клятвы о таком враче. Замыкание и открытый перечень стоят рядом и оба читаются из текста: «but to no others» абзаца 2 закрывающие слова несёт —closure§70 отвечает FALSE_ONLY (HO-06); «including the seduction of women or men» абзаца 7 вводит пример, а не исчерпание — ответ NEITHER (HO-14). Различия «женщина или мужчина», «свободный или раб» в правиле НЕТ намеренно: перечисляя их, Клятва говорит, что они не имеют значения, и HO-13 задаёт один вопрос о свободном и о рабе, требуя одного ответа. Источник — ПЕРЕВОД, и статус это говорит. Michael North, NLM, 2002 (17 U.S.C. §105, общественное достояние); аутентичного текста у Клятвы не существует, поэтомуmaterialization_status—PINNED_UNOFFICIAL_COPYнеснимаемо,officiality unofficial,verifiedAgainstSource = false(сверять не с чем).adoptedне объявлен: дат до нашей эры язык не выражает, окна позиций идут от@0001-01-01— нижней выразимой границы, а не даты Клятвы (HO-19 требует того же ответа на 2026 год). Где перевод сужает греческое чтение, это названо: «I will not give a lethal drug to anyone if I am asked» ставит просьбу условием, и безусловный запрет из этих байтов не следует. Старый адрес NLM (hmd/greek/greek_oath.html), на который ссылается литература, отдаёт заглушку с редиректом — закреплён живой раздел «Ancient Greek Medicine».legalStatus = "historical_monument"относится к закреплённым байтам: классический текст сегодня не приносится (это говорит сама страница NLM), а живущие переработки в пакете не закреплены. НЕ ПРИГОДЕН ДЛЯ КЛИНИЧЕСКОГО ПРИМЕНЕНИЯ. -
Universi Dominici Gregis (22.02.1996) — первый акт Святого Престола в корпусе, срез: порог избрания Римского понтифика. Пакет
vat.canon.universi_dominici_gregis: юрисдикцияHolySee, видconstitution. Слоган «одни бюллетени — разный папа»: 60 из 115 при исчерпанных сериях n. 74 избирают абсолютным большинством на 19.04.2005 и молчат после motu 26.06.2007. Две трети —votes * 3 >= present * 2без формулы «плюс один»; порог не в A3 (сменилось правило, не ставка). n. 75 с текущей vatican.va в срез не входит (консолидация Normas nonnullas 2013) — рецитация 1996 и замена 2007 живут в motu proprio Бенедикта XVI (Sala Stampa 26.06.2007). Правило 1996 несётeffective [@1996-02-22, @2007-06-26), потому чтоevaluateне проецирует редакции. Closure наpope_electedне ставится. Заведена единицаpointв обеих мерах §33.1. Измерено: 7 фрагментов, покрытие конституции 4,2 % (3006 из 70850) и motu 51,2 % (1308 из 2554), учёт 5 из 92, глубина EXECUTABLE 2 / SOURCE_ONLY 3, разметка 6/6 и 2/2, сценариев 6/6, differential байтовый (6 evaluate-вызовов), шесть.lawtest— 6/6. Найдено источником: две трети стоят в безымянном продолжении n. 62; HTML<sup>снимать до тегов, иначе конвенцияpointтеряет номер. -
Римский статут МУС (17.07.1998, в силе с 01.07.2002) формализован срезом юрисдикции и допустимости — 6 статей из 128. Пакет
intl.icc.rome_statute: первый акт корпуса о комплементарности двух порядков. Соседun.ilc.nuremberg_principlesописывает международное уголовное право без остаточной роли национального суда; здесь Суд действует по делу, только если национальное преследование отсутствует либо не является подлинным. Это не выключатель Статута: составы ст. 5–8 bis в срез не входят, ст. 17 — затвор на полномочие ст. 13 (§127). Объявленный срез Части 2: статьи 11, 12, 13, 17, 19 и 20. Закреплён русский подлинник (ст. 128);officiality officialо тексте стоит рядом сPINNED_UNOFFICIAL_COPYо байтах портала ООН (A/CONF.183/9) — та же пара, что у ДНЯО. Конвенциюunit: "article"объявлять нельзя: это умолчание автоопределения обеих мер §33.1, не ключDECLARED_CONVENTIONS. Меры: 6 фрагментов, покрытие текста 99,97 % (17 348 из 17 354 байт), учёт 6 из 6 при нуле объявленных границ, глубина §33.1 — EXECUTABLE 6, ANCHORED 0, SOURCE_ONLY 0, разметка §218 полная (57 объявлений, 49 норм), мёртвых правил ноль, восемь.lawtest§267 — 8/8, сценариев 16/16, все 16 evaluate-вызовов байтово идентичны междуlawrefиlawc. Канал суждения §47.3 с органом из текста («Суд определяет»). Except-clause ст. 17 нельзя записать поражаемым правилом с суждением в дефитере: DECISION-0025 оставляет defeasible внеjudgment_blockers, и это молча объявило бы дело недопустимым. Мост строгий, голова литеральная. Открытый мир не выводит допустимость из молчания о национальном производстве (RS-04). Ст. 12 п. 2 не применяется к передаче СБ (ст. 13(b)). Полномочие спрашиваютpositions, не слабым разрешением §126 (RS-15 / SAM-21). Найдено исполнением: defeasible-отрицание юрисдикции ratione temporis закрывало путь строгому полномочию (LDC-E4103);not gravity_justifies…без положительного связующего —LDC-E4101. Параметр дела —matter, никогдаcase(hard keyword). Квирк извлечения закреплён: у ст. 19 пункт 1 потерял номер «1.». Границы названы: ст. 5–8 bis, ст. 14–16 и 18, пункты 4–11 ст. 19. -
Déclaration des droits de l’homme et du citoyen (26.08.1789) формализована целиком — 17 статей из 17. Пакет
fr.declaration.rights_1789: первый французский акт корпуса и первый, у которого замыкание §70 ставит САМ ИСТОЧНИК, а не формализатор. Статья 5 — три нормы, не одинclosure: (1) закон вправе воспрещать только вредное обществу — канал суждения §47.3; (2) незапрещённое нельзя остановить —closureнаforbidden_by_law; (3) к неповеленному нельзя принудить — отдельныйclosureнаcommanded_by_law. Чтение «Loi» — изолированный пакет (запреты этого акта, не всего французского права).legalStatus = "in_force": bloc de constitutionnalité (преамбула 1958, 71-44 DC 1971). Заведена единица деленияfr_article(«Article 1er» → 1) в обеих мерах §33.1. Измерено: 18 фрагментов, покрытие текста 99,6 % (5005 из 5023), глубина §33.1 — EXECUTABLE 17 / ANCHORED 0 / SOURCE_ONLY 0, учёт 17 из 17, разметка §218 полная (99 объявлений, 51 норма), сценариев 19/19, differential байтовый (19 evaluate-вызовов), семь.lawtest— 7/7. Найдено исполнением:exactне строит контрапозицию (§151) — отрицание ст. 16 записано отдельными правилами; канал §47.3 снова проходит только через строгий мост. -
Гоббс, «Левиафан» (1651), главы XIV–XV: девятнадцать естественных законов — формализация ЦЕЛИКОМ, обе меры §33.1 полны. 58 из 58 единиц деления
EXECUTABLE, покрытие байтов 99,5 % (53 264 из 53 533; непокрытые 269 — РОВНО 134 разделителя\n\nмежду блоками плюс завершающий перевод строки, посчитано, а не сказано на глаз), 15/15 сценариев регрессии, 6/6 рукописных тестов §267, differential байтовый (33 evaluate-вызова,lawc eval==lawref). Восьмая объявляемая единица деления §33.1 —marginal, заметка автора на полях: номера у неё в тексте нет вовсе, есть фраза, и таблица заголовков принадлежит АКТУ (articles.json), как уword«Қара сөз» иordinalАтлантической хартии; без неё обе главы были бы для мер невидимы молча. Несущее в акте — учение о двух forum’ах (единица 55):binds_in_foro_externoстоит посылкой в каждом из девятнадцати законов, поэтому снятие безопасности гасит шестнадцать обязанностей ДЕЙСТВИЯ разом и оставляет обязанности СТРЕМЛЕНИЯ; обе меры §33.1 этой потери не увидели бы, её держат LEV-11 и LEV-12. Довод против Дурака (§274) — первый в корпусе БЕЗ единого узлаpriority: первая редакция ставила три, компилятор отверг все три (LDC-E4107, головы о разных предикатах), и диагностика указала на устройство самого довода — Гоббс не опровергает вывод Дурака, а ПОДРЫВАЕТ его посылку (§274.3), поэтому приоритет не нужен вовсе. Замкнутое и открытое в одном предложении: перечень девятнадцати замкнут §70 по ОТКРЫТОМУ предикату законов природы (двадцатый закон получаетFALSE_ONLYс сертификатом), а закон против невоздержности, который Гоббс тут же допускает, — честноеNEITHER. Расхождение глав XIV и XV не сглажено: несправедливость главы XIV выводится без государства, «несправедливость на самом деле» главы XV требует принуждающей власти; сгладить было бы легче всего и было бы неправдой (LEV-06). Три дефекта закреплённой копии задевают единицу деления и названы поимённо: две маргиналии вклеены публикацией в абзац (единицы 15 и 31), третья разорвана пополам (единица 55); знаменатель поэтому 58, а не 60, и восстанавливать перенос строки, которого в публикации нет, запрещено тем же правилом, что и исправление байтаëв De legibus. -
Дефект
lawc, найденный формализацией:protected_effect terminate(…)отвергался, и уже закоммиченная Декларация независимости перестала понижаться. Признаком суффикса имени поля служилcontains('_'), аprotected_effect— каноническое имя изgrammar.ebnf(immunity_item), никакого вида эффекта оно не называет; подразумеваемым выходилcreate, и самая частая форма иммунитета падалаLDC-E1305.lawc checkпри этом чист — отказ приходит только наlower. Квалификация: дефектlawc, не SPEC и неlawref. Вектор T147 этого не ловил и поймать не мог: у иммунитета он проверяет толькоprotected_effect create(…)— единственный вид, при котором подразумеваемыйcreateСЛУЧАЙНО совпадает с конструктором. Правка: сравнивать суффикс с конструктором только там, где суффикс действительно назван (_terminate|_modify|_create). -
Errata E-0052:
Decimalне канонизировался — дефект ОБЕИХ реализаций, невидимый для двух гейтов сразу. §208 задаёт каноническую форму дословно («без leading zeros, trailing fractional zeros и negative zero») и даёт пример («source12.50,1.25e3normalizes в12.5,1250) — не делала этого ни одна реализация. Цена на деле: фактassert price(t, 110000.00 USD)НЕ совпадал с гардомwhen price(t, 110000 USD)—NEITHERпри полностью зелёномcheck. Механизм найден, а не предположен: факты индексируются каноническими байтами (lawref/evaluator/solver.py:520), поэтому нереализованная канонизация ломала равенство напрямую, аsemanticHash§209 зависел от того, как автор набрал число. Квалификация: дефект обеих реализаций, не SPEC; именно из-за одинаковости ошибки молчали иcross_canon(G-M1a), и differential. Правка в трёх местах, и все три обязательны:law_canon::canonical_decimal+ проход по документу вcanonical_bytes; зеркалоlawref.canon.canonical_decimal; канонизация литерала при понижении вlaw-hir(Decimal, Money, Quantity, percent) — без последнего.lawir.jsonпродолжал бы нести110000.00, и равенство при исполнении осталось бы ложным. Радиус измерен до и после: 74 значения в трёх пакетах корпуса (us-fnma-income,kz-social-code,kz-internal-affairs) и демо «Лилипутия»; состав узлов не сдвинулся, прочих расхождений ноль. Голдены сдвинуты ТОЧЕЧНО, с предохранителем: запись разрешалась, только если множество разошедшихся путей ⊆ {resultHash,proofGraph.proofHash,manifest.programHash,manifest.semanticHash,manifest.caseHash,manifest.queryHash} — 13 голденов прошли, ни один не отказал, ни одного расхождения вresults,proofGraph-структуре илиissues. Инвариант 3 не нарушен: поведение неподвижно, сдвинулись хэши исправленного ВХОДА. Векторы ERR-E0052-DECIMAL-CANON (evaluate, вSUPPORTED) и ERR-E0052-DECIMAL-CANON-HASH (hash-compare). Найдено при заведенииincoterms.group_c. -
Errata E-0053: проверяющий обход не заходил в константу вовсе.
DeclKind::Constне встречался вlaw-hir/src/types.rsНИ РАЗУ, и молчали обе половины декларации:const R: Date = 110 percent;проходилcheckчисто и понижался в узел сreturnType: Dateиvalue.type: Decimalодновременно (проверено на семи типах подряд), аconst B: Decimal = 1 + "текст";проходил тоже — хотя тот же терм в теле правила даётLDC-E2108. Квалификация: дефектlawc. Правка добавляет обход:check_type_refна объявленном типе,check_termна инициализаторе и сверка вида новым кодомLDC-E2111; послабление §49 (Integerкак безразмерный скаляр при объявленномMoney/Decimal/Rational/Quantity) остаётся законным,Unknownне отвергается. Радиус латентный, измерен дважды: 0 расхождений в 222 константах корпуса и ни одного нового отказа приlawc checkпо всем 55 пакетам. Вектор ERR-E0053-CONST-TYPE (static) требует ОБА кода в одном файле: вектор с одной половиной прошёл бы при реализации, которая сверила бы тип и по-прежнему не заглядывала внутрь значения. -
OPTN Policy 8 (почечное распределение США) заведена срезом рядом с казахстанской — и сравнение закрывает вопрос, оставшийся открытым в ней. Пакет
us.optn.kidney_allocation: Policy 8.2 «Kidney Allocation Score» и три таблицы очков (8-1 составляющие, 8-2 CPRA, 8-3 близость к больнице донора), редакция 13.11.2025. ГЛАВНОЕ — КОНТРАСТ. Вkz.corpus.organ_allocationпришлось выразить два соперничающих прочтения именно потому, что приложение 3 публикует веса и молчит о композиции. Policy 8.2 ту же самую фразу пишет: «Candidates receive an allocation score according to the TOTAL of all points assigned in Table 8-1». Казахстанский пробел перестал быть догадкой формализатора и стал измеренным фактом: соседний правопорядок это предложение произносит. ПРОВЕНАНС НОВОГО РОДА. Прямой адрес OPTN отвечает 403 вне браузера, поэтому закреплён НЕИЗМЕНЯЕМЫЙ снимок Internet Archive (web/20251124175225, PDF sha256 460cb4ba…) — тот же приём и по той же причине, что триoldidВикитеки уmartial-law-1941. Извлечение штатнымextract_pdf_text.py, два прогона байтово идентичны; публикация 682 337 байт, sha256 bebb21b9… ЗАВЕДЕНА ЕДИНИЦА ДЕЛЕНИЯpolicy_section— «8.2 Kidney Allocation Score»; ни одна из девяти прежних конвенций такого заголовка не опознаёт. Точка заменяется подчёркиванием (article/8_2): соглашение якорей §33 читает номер какART-N[-_N]и точки не допускает. Конвенция вписана в ОБЕ меры —ci/check_source_pinning.pyиboundaries.py(вторая делегируется первой, и одной копии мало). ИСПОЛНЕНИЕ, а не только сборка: CPRA 98 → 24.4 очка; 730 дней ожидания → ровно 2 (точная дробьdays * (1/365),Rational: записать коэффициент как 0.00274 значило бы дать 2.0002); двоичные строки таблицы 8-1 → 6. Все три байтово идентичны междуlawc evalи живымlawref. A3-ТАБЛИЦА НЕ ЧИТАЕТСЯ ИЗ РУКОПИСНОГО ПАКЕТА НИ В ОДНОМ ИЗ ДВУХ РЕЖИМОВ — измерено. Таблица 8-2 была написана как.lawtable.json(19 полос,hitPolicy unique), закреплена вlaw.lock0.2, и обе реализации согласились на её semantic hash (sha256:a0f3f728…) — машинерия A3 согласована. Ноmode: functionдаётLDC-E2105при вызове порождённой функции из правила, аmode: rulesпонижает строки в 19 правил, телом которых стоит порождённое входное отношение с idurn:…:table:CpraPoints/input, тогда как голое имя в.lawпонижается вurn:…#CpraPoints_input— ДРУГОЙ символ. Оба существуют в одном CLIR,checkиlowerзелёные, 19 правил на месте, и ни одно не может сработать никогда: запрос вернул пустой результат в обеих реализациях при нуле issues. Второй отказ МОЛЧАЛИВ — класс, ради которого заведены воротаcheck_dead_rules. До errata таблица развёрнута в правила генератором, который сверяет каждую полосу и каждое значение очков с закреплёнными байтами. НАБЛЮДЕНИЕ, НЕ КВАЛИФИЦИРОВАННОЕ И ПОТОМУ НЕ ОБЪЯВЛЕННОЕ ДЕФЕКТОМ (инвариант 8). Таблица 8-3 задаёт очки за расстояние двумя линейными формулами: внутри 250 морских миль — от 2 очков в нуле до 0 на границе; за 250 милями — от 4 на границе до 0 на 2500. На 249 милях кандидат получает 0,008 очка, на 251 — 3,998: функция немонотонна, и скачок в пользу более ДАЛЁКОГО кандидата больше, чем даёт прижизненное донорство. Живо ли это, зависит от классификационных таблиц 8.4.A–8.4.L (у классов 1, 2, 5–9 в колонке расстояния «250NM», у 3 и 4 — «Nation»), а они в срез не входят. ЧЕГО НЕТ, И ЭТО НАЗВАНО: классификационные таблицы вне среза, поэтому пакет отвечает «сколько очков у кандидата» и НЕ отвечает «кто выше в листе»; глубина §33.1 показывает EXECUTABLE 0 при верном учёте (охват 1 из 150, с фрагментом 1, неучтённых 0) — причина не найдена; тестов §267 нет: написанные два вернули NEITHER и были СНЯТЫ, а не оставлены красными в общем дереве. Попутно известный дефект канонизацииDecimalпроявился на живом акте — правило несёт из таблицы24.40, на сравнение приходит24.4. -
«Второй трактат о правлении» Локка формализован (главы V и XIX) — первый текст корпуса, который НИКОГДА И НИГДЕ НЕ БЫЛ ПРАВОМ. Пакет
locke.second_treatise: глава V «О собственности» (§§25–51) и глава XIX «О распаде правления» (§§211–243) — 60 секций из 243, 51 правило, 5 норм, 2 канала суждения §47.3, 5 узлов приоритета. У Цицерона и Абая силы закона тоже нет, но «О законах» ОПИСЫВАЕТ право римской общины, а «Қара сөз» — назидание; здесь чистый ДОВОД о том, откуда власть берётся и когда кончается, правовой лишь по предмету. Отсюда две особенности, которых у прочих пакетов нет: окна всех позиций открыты от даты ИЗДАНИЯ (1690), потому что вступления в силу у трактата не бывает; и закреплены байты ВСЕГО трактата (243 секции) при объявленном охвате в 60 — знаменатель обеих мер §33.1 берётся изarticles.json, а не из документа.Канал суждения §47.3 с органом «народ», и рядом — его отказ. §240 задаёт вопрос дословно («Who shall be judge, whether the prince or legislative act contrary to their trust?») и отвечает: «The people shall be judge». Записано
external judgment relationсauthority ThePeople, двумя каналами по числу подлежащих; запрос без решения даётREQUIRES_JUDGMENTс типизированным запросом (LOCKE-12). Отдельно записан ОТКАЗ канала: §242 — если князь уклоняется от суда народа, «the appeal then lies no where but to heaven», а §241 — «every man is judge for himself». Это выведенный предикат, а не отсутствие вывода (LOCKE-14): назвать небоauthorityзначило бы сказать, что решение придёт.Три истолкования, меняющие ответ на дела и не меняющие ни одного числа в мерах. Каждое названо в
00-package.lawи проверяется сценарием. (1) Оговорка «enough, and as good» §27 — ГАРД, а не дефитер: §27 ставит её условным оборотом, а §33 доказывает её выполненность отдельно. Дело без неё даёт молчание открытого мира, а не «нет» (LOCKE-03); дефитер дал быFALSE_ONLY, и ни один другой гейт этого не заметил бы. (2) Предел порчи §31 — ЗАПРЕТ, а не второй гард приобретения: §37 называет испортившего нарушителем («he offended against the common law of nature, and was liable to be punished»), а нарушить можно лишь то, что имеешь. (3) «Длинный ряд злоупотреблений» §225 — ОПИСАНИЕ, а не условие права.Измеренная разница между Локком и Декларацией независимости. У Локка право возобновить власть возникает из ОДНОГО нарушения доверия (§222), без порога; §225 отвечает на возражение («this hypothesis lays a ferment for frequent rebellion») и говорит, когда народ ФАКТИЧЕСКИ поднимается. Декларация делает из той же фразы условие права («But when a long train of abuses and usurpations… it is their right, it is their duty»), то есть СТРОЖЕ Локка. Сценарий LOCKE-17 подаёт дело с установленным нарушением доверия и без длинного ряда: власть народа возникает, а «народ поднимается» не выводится. Прочтение §225 условием сломало бы именно этот сценарий.
Запрет §31 нарушенным не становится — и это граница языка, названная вслух.
forbearanceв 0.1 не знает статуса VIOLATED никогда: обнаружение совершённого действия требует событийной модели §79, которой в срезе нет (lawref/evaluator/norms.py, ветка forbearance даёт ACTIVE либо EXPIRED). Нарушение при этом ВЫРАЖЕНО — потому что его выразил сам Локк отдельным предложением §37, и записано оно обычными правилами. Текст XVII века дал то, чего деонтический аппарат среза дать не может; LOCKE-06 держит и запрет, и оба вывода о нарушении, и падёт, если VIOLATED когда-нибудь появится.Два дефекта поиска, найденные исполнением. Первый: правило §47 было записано стрелкой ЗАДОМ НАПЕРЁД — «деньги ⇒ вещь не портится». Движок отверг его как мёртвое (негативный head в strict closure — ограничение v1), и отказ оказался удачей: правило было неверно и по существу. Локк выводит не долговечность из денег, а ДЕНЬГИ из долговечности («came in the use of money, some lasting thing that men might keep without spoiling»). Второй: приоритет §38 МОЛЧА не срабатывал —
property_ofвыходилBOTHпри чистомcheck, без единого issue и без записи вconflicts. Причина — §116: приоритет действует только ВНУТРИ страты, а правило, тело которого зависит от ПОРАЖАЕМО выведенного предиката, стоит стратой выше того, кого должно побеждать. Диагноз подтверждён контрастом внутри пакета, а не догадкой: приоритет §35 работает, и его тело читает СТРОГО выведенное.Новая единица деления
numbered_sectionв обеих мерах §33.1. Трактат делится на 243 сквозные секции («Sect. 25.»), и ни одна прежняя конвенция их не видела:pointищет «25. » без слова,sectionиarticle_roman— римскую цифру,principle— слово перед римским номером,word/ordinal— числительное прописью. Форма маркера в конвенции ШИРЕ очевидной, и это не небрежность: в закреплённой дигитализации два заголовка из 243 набраны с дефектом («Sect, 10.» с запятой, «Sec. 219.There» с сокращением и без пробела), байты не исправляются, и узкая форма^Sect\.молча выбросила бы §219 — норму о брошенной исполнительной власти — из ЗНАМЕНАТЕЛЯ обеих мер. Отчёт печатал бы «покрыто 59 из 59» вместо «59 из 60».Обе меры §33.1 названы порознь, как требует скилл: учёт статей — охват 60 из 243, с фрагментом 60, неучтённых 0; глубина — EXECUTABLE 31, ANCHORED 0, SOURCE_ONLY 29, и у всех 29 причина объявлена в
articles.json(постановка вопроса, довод в пользу правила, пример к нему либо заключение; отдельно §213 — посылка, записанная гардом шести правил, и §§236–238 — латинские цитаты Барклая, чьё содержание выведено §239). Сценариев 22, differential байтовый: 62 evaluate-вызоваlawc eval==lawref. Мёртвых правил 0, разметка §218 — 90 объявлений и 56 норм, ноль без метки. Третья мера, которой не дают ниboundaries.py, ниcheck_source_pinning.py, снята отдельно — КАКИЕ правила задеты делами: при 17 зелёных сценариях вышло 36 из 51 (три способа §§215–217 из четырёх и канал суждения КНЯЗЯ стояли непроверенными), пять сценариев довели до 51/51. Обязательство осталось одно и не по вине пакета: семейство вписано вscenario-ratchet.json, но не вscenario-manifest.json— манифест пишется только полным прогоном, а полная KZ-регрессия на 29.08.2026 падает первой же строкой (as-of проекция, 110 неразрешённых конституционных якорей). Отказ предсуществующий: воспроизведён на чистом worktree HEAD и держится после полной цепочки генераторов ворот 4. -
Правила распределения донорских органов формализованы — первый акт корпуса о распределении дефицитного ресурса между людьми. Пакет
kz.corpus.organ_allocation: объявленный срез приказа МЗ РК от 25.11.2020 № ҚР ДСМ-207/2020 — пп. 43–47 главы 3 (подбор реципиента для органа посмертного донора) и приложение 3 (индикаторы подбора пары донор-реципиент). Акт выбран потому, что закрывает измеренный пробел: соседнийhealth-code(ст. 203–219, 78 объявлений) говорит, КТО МОЖЕТ ОТДАТЬ орган — согласие, смерть мозга, запрет торговли, лицензирование, — и слов «очерёдность», «приоритет», «лист ожидания» не содержит ни одного; кто ПОЛУЧИТ, устанавливает подзаконный акт. Главная находка: акт публикует веса, но НЕ ГОВОРИТ, КАК ИХ СКЛАДЫВАТЬ. Приложение 3 даёт для каждого показателя приоритет, код и вес (почка — десять показателей от 160 000 000 до 1, сердце и лёгкие — три, печень — три), а о композиции во всём акте одна фраза: «набравших наибольшее количество баллов» (п. 46). Показатели при этом неоднородны: шесть двоичны по формулировке, четыре — величины со своими опубликованными шкалами (индекс совместимости 0–26 таблицей на 27 строк, группа антител 1–5 таблицей зависимости от PRA, проценты антител, число совпадений в сплите). Прочтений два, и они дают РАЗНЫЙ ПОРЯДОК КАНДИДАТОВ. При прочтении «показатель как признак» веса реализуют объявленный приоритет ТОЧНО — каждый вес строго больше суммы всех младших, во всех девяти границах. При прочтении «показатель как величина» приоритет нарушается дважды: индекс совместимости при весе 10 000 даёт до 260 000 против веса совместимости групп крови 100 000, то есть приоритет 7 перебивает приоритет 6. Расхождение показано ИСПОЛНЕНИЕМ. Два подбора по почке, различающиеся двумя фактами: X — группа крови совместима, индекс 0; Y — группа крови НЕсовместима, индекс 26. Прочтение «признак»: X = 100 000, Y = 10 000, выше совместимый. Прочтение «величина»: X = 100 000, Y = 260 000, выше НЕСОВМЕСТИМЫЙ. Порядок переворачивается. Выбирать за источник запрещено, поэтому оба прочтения выражены соперничающимиinterpretationнад якорем приложения 3, а сама неопределённость названа ФАКТОМ (score_composition_not_determined, правилоScoreCompositionUndetermined) — идиомаzheti-zhargy, где неоценённый источником калым объявлен, а не оставлен молчанием. Меры: учёт пунктов — охват 5 из 122 при нуле неучтённых и нуле объявленных границ; глубина §33.1 — EXECUTABLE 4, ANCHORED 0, SOURCE_ONLY 1 (п. 45: «проводится в соответствии с очерёдностью в МИСУДР» — содержание пункта и есть упорядочение, а упорядочение по выводимому баллу живёт запросом, барьер §111); байтовое покрытие публикации 4,8 % (5 742 из 119 857 — закреплена страница целиком, формализован срез); разметка §218 полная (48 объявлений, 13 норм, ноль без метки); три.lawtest§267 — 3/3; differential 4/4 байтово идентичен (lawc evalпротив живогоlawref). MELD ПРИХОДИТ ВХОДОМ, и это граница языка, а не упрощение. Печёночная таблица называет MELD показателем с весом 100, но формулы не даёт; MELD есть сумма натуральных логарифмов, а арифметика замкнута списком §58 (+ - * / mod min max abs pow) — логарифма в нём нет и быть не может, семантические крейты запрещают плавающую арифметику. Акт сам MELD не вычисляет, и пакет поступает так же. Канал суждения §47.3 записан в САМОМ АКТЕ. Балл никого не выбирает: п. 46 даёт список двадцати, а решение принимает консилиум центра трансплантации по результатам осмотра и определения противопоказаний (пп. 46, 47). Тест OA-03 требуетREQUIRES_JUDGMENT, а не «нет». Две вещи найдены исполнением, а не чтением. (1)interpretation_groupсselection exactly_oneблокирует ВЕСЬ запрос, а не только норму под группой: вопрос о заключении консилиума получалINTERPRETATION_REQUIREDвместоREQUIRES_JUDGMENT, то есть неопределённость композиции балла делала неотвечаемыми вопросы о кросс-матче и о суждении. (2) Выбрать прочтение из.lawtestНЕЛЬЗЯ — выбор живёт только вoptions.selectedInterpretationsдела-JSON, поверхности §267 для него нет; пакет с группойexactly_oneштатными тестами корпуса не покрывается вовсе. Группа снята, прочтения остались. Юридическая оговорка вынесена в шапку пакета и вPACKAGE_TITLES: пакет описывает опубликованную политику в закреплённой редакции и НЕ ПРИГОДЕН ДЛЯ КЛИНИЧЕСКОГО ПРИМЕНЕНИЯ; реальное распределение выполняет МИСУДР, алгоритм которой не опубликован, и совпадение с нею не проверялось и проверено быть не может. -
corpus/emit_lawtests.py --only <семейство>: эмиссия тестов §267 по величине правки, а не корпуса. Полный проход перед эмиссией гонит ВСЮ регрессию — 4300+ сценариев, десятки минут, — тогда как правка одного акта затрагивает одно семейство; ради 21 нового сценария FNMA пересчитывался весь корпус. Отбор идёт по семействамACT_RUNNERSи прокидывается в уже существующий--onlyKZ-прогона (corpus/kz/run.py); замер на живом пакете — 12 секунд против ~30 минут, 73 теста FNMA вместо 39. Отличия частичного прохода от полного названы в шапке модуля и печатаются им самим, а не подразумеваются: конституционный и UEFA-раннеры при--onlyне запускаются (отбора они не умеют, и полный прогон конституции ради одного семейства стоил бы ровно то, ради чего отбор заводится) — пропуск печатается строкой; мусор не собирается — каталог теста есть каталог ПАКЕТА, а пакеты делят семейства (official_calendar— десять,budget— семь), и снос каталога уничтожил бы чужие тесты, поэтому прежний индекс сохраняется и дополняется, а число нетронутых записей печатается; прежний файл затронутого каталога, которого проход не воспроизвёл, называется поимённо как кандидат в протухшие. Защиту покрытия--onlyне отключает: пропажу и переименование сценария ловит РАНЬШЕ манифестcorpus/scenario-manifest.json— раннер краснеет, и до эмиссии дело не доходит; остаток, который манифест не видит, назван прямо — сменаqueryIdоставляет старый файл до следующего полного прохода. Вci/run_all.shдопускается только полная форма. Обе ветки проверены: частичный проход поholidaysне тронул 287 чужих записей и 73 теста FNMA, полный — снимает свои файлы по индексу ровно как прежде. -
Договор о нераспространении ядерного оружия (01.07.1968) формализован целиком — 11 статей из 11. Пакет
intl.disarmament.npt: первый ДЕЙСТВУЮЩИЙ международный договор корпуса — соседи по кусту (united-nations-1942,molotov-ribbentrop,surrender-1945,nuremberg-principles) описывают инструменты, действие которых кончилось, а этот 11 мая 1995 года продлён бессрочно решением конференции по ст. X п. 2, отсюдаlegalStatus = "in_force". Закреплён РУССКИЙ ПОДЛИННИК, а не перевод: ст. XI объявляет английский, русский, французский, испанский и китайский тексты равно аутентичными, поэтому §194 сверяет байты самого инструмента. Отсюда пара утверждений, которая у актов РК обычно совпадает по знаку, а здесь обязана разойтись:officiality official(о ТЕКСТЕ — он подлинник) приmaterialization_status PINNED_UNOFFICIAL_COPY(о БАЙТАХ — закреплено извлечение с портала ООН, а не том 729 UNTS). Заведена единица деленияunit: "article_roman"объявлением вarticles.json: статьи нумерованы римскими цифрами, русская автоконвенция берёт только арабский номер, и без объявления Договор был бы для обеих мер §33.1 невидим молча. Меры: покрытие текста 99,9 % (28 364 из 28 379 байт, 15 фрагментов), учёт 11 из 11 статей при нуле объявленных границ, глубина §33.1 — EXECUTABLE 11, ANCHORED 0, SOURCE_ONLY 0, разметка §218 полная (66 объявлений, 54 нормы, ноль без метки), мёртвых правил ноль, девять рукописных.lawtest§267 — 9/9, сценариев регрессии 13/13, и все 13 evaluate-вызовов байтово идентичны междуlawrefиlawc. Осевое правило стоит не в статье определений. Ст. IX п. 3 придаточным предложением посреди статьи о вступлении в силу вводит различение, на котором держится весь инструмент: обладающее ядерным оружием — государство, «которое произвело и взорвало … до 1 января 1967 года». Дата вынесена в ТЕЛО правила сравнениемd < @1967-01-01, а не спрятана в имя предиката, иначе главный вывод Договора сообщало бы дело. Класс замкнутclosure§70 — замыкание здесь применяет САМ ИСТОЧНИК, а не формализатор, — и потому взрыв 1974 года даёт FALSE_ONLY с сертификатом закрытия, а не молчание: статус не приобретается никем и никогда сверх пяти. Отдельной сценой проверено, что ОБЛАДАНИЕ к статусу отношения не имеет: факт о размещённом на территории оружии подан делом и статуса не меняет — признак п. 3 к нему не относится.authorityканала суждения §47.3 взят ИЗ ТЕКСТА, а не назначен автором. Различить запрещённое ст. II и защищённое ст. IV вычислением нельзя — обогащение есть обогащение, различает их цель; Договор сам называет орган и предмет проверки (ст. III п. 1: гарантии МАГАТЭ «исключительно с целью … не допустить переключения ядерной энергии с мирного применения на ядерное оружие»). Оговорка ст. IV «в соответствии со статьями I и II» выражена парой побеждаемых правил с приоритетом: право, объявленное НЕОТЪЕМЛЕМЫМ, уступает запрету, и поражение приходит вычисленным. Найдено исполнением, а не чтением — три вещи. (1) Правило ст. IX п. 1 с единственным негативным литералом не range-restricted:LDC-E4101на первой же сборке, переменная связана доменом перебора. (2) Вето ст. VIII п. 2 не срабатывало с классическимnot approved_by(...): подача голоса — факт ОТКРЫТОГО мира, перечня непроголосовавших не существует, и поправка выходила утверждённой при молчащем обладателе ядерного оружия при полностью зелёномcheck; переписано наnot_known§113, после чего вывод виден прямо — у каждого ЯОГ вето на любую поправку, и Договор практически неизменяем. (3) Канал §47.3 снова не прошёл через поражаемое правило (COMPUTEDвместоREQUIRES_JUDGMENT) — тот же дефект обеих реализаций, что зафиксирован на Принципах Нюрнберга; признание деятельности мирной разведено в отдельный строгий шаг, и запрос к судье спрашивается у него. Границы названы прямо, а не обойдены. Срок в 180 дней (ст. III п. 4) НЕ вычисляется: дневной шаг живёт вadd_business_days, который требует снимок календаря §85 всегда (E-0029; проба вернулаMISSING_CALENDAR), календаря на 1970 год в корпусе нет, а пустой утверждал бы о нерабочих днях 1970 года то, чего не устанавливает ни один источник — предельный день объявлен нормативным фактом §71 приёмомus-federal-holidays. Восемнадцатимесячное плечо той же нормы, три месяца ст. X п. 1, пять и двадцать пять лет ст. VIII и X ВЫЧИСЛЯЮТСЯ (add_calendar_period, календаря не читает). Ст. VI — обязанность §123 БЕЗ вычислимого нарушения: канал §47.3 требуетauthority(LDC-E0201, проверено пробой), а Договор органа, судящего о добросовестности переговоров, не назначает нигде; обязанность ACTIVE у каждого участника, VIOLATED не наступает — и полвека спора о ст. VI ровно об этом. -
Закон «О порядке организации и проведения мирных собраний» (333-VI) в истолковании НП КС № 61-НП — первый акт корпуса, у которого связь с Конституцией НЕСУЩАЯ. Пакет
kz.corpus.peacefulassembly: срез статей 8, 10, 11 и 14 (охват объявлен полемscopeвarticles.json, глубина §33.1 — EXECUTABLE 4 из 4, SOURCE_ONLY 0) плюс нормативное постановление Конституционного Суда от 20.01.2025 № 61-НП — второй инструмент в том же CLIR, по тому же доводу, что уunited-nations-1942: истолкование Суда меняет условия применения подпункта 10) пункта 1 статьи 14, и вывод пересекает границу документов. Чем отличается от трёх прежних мостов (брак, ОСМС, персональные данные): те устроены одинаково — нульарныйassert constitutional_X_guarantee()и правило, которое его читает, — и убери мост, ни один исход не изменится. Здесь пакет читает ДВА вывода конституционных пакетов:kz.constitution.court::required_constitutional_interpretation_applied(ст. 75 — обязательность истолкования, при котором норма признана конституционной) иkz.constitution.rights::assembly_restriction_constitutionally_valid(ст. 32 — допустимость ограничения права на мирные собрания). Оба помеченыpubосознанным действием; оба читаются ТИПИЗИРОВАННО, впервые в корпусе —for act: kz.constitution.court::LegalAct, а не нульарной ссылкой. Проверяется парами дел, различающимися одним фактом. KZ-PA-NP61-05 против 06: одно и то же дело (отказ по занятости специализированного места, предложения об изменении места и времени не вносилось) с решением от 10.12.2024 даётrefusal_lawful= TRUE_ONLY, с решением от 10.06.2025 — FALSE_ONLY: правило постановления с отрицательной головой побеждает основание статьи 14 поpriority … reason lex_superior(нормативное постановление КС имеет силу нормы Конституции — ст. 5 п. 2 Закона «О правовых актах»). Дата берётся не из воздуха: пункт 3 постановления («вступает в силу со дня принятия») закреплёнassert resolution_in_force_from(@2025-01-20), и правило читает эту константу. 06 против 07: то же дело после постановления, но предложение вносилось — основание Закона снова работает. 09 против 10:refusal_upheldтребует сверх основания ещё и конституционной допустимости ограничения, и при ограничении, не установленном законом, отказ не устоял ПРИ ЖИВОМ основании статьи 14. Десять сценариев семействаpeaceful_assembly, differential байтовый (14 evaluate-вызовов), два теста §267,corpus/tools/doctor.py peaceful-assemblyбез пробелов. Датировка редакций §31 включена, и она вскрыла пробел конституционного пакета.evaluate()применимость редакций не применяет — это отдельный шагlawref.impact.edition_projection, и без него мир отвечает от ВСЕХ редакций сразу. В пакете прав шестнадцать задокументированных расхождений редакций и восемь голов, которые выводят обе; сильнейшее (ст. 12 п. 4 ред. 1995 против ст. 15 п. 4 ред. 2026 — иностранцы) имеет ПРОТИВОПОЛОЖНЫЕ тела при одной голове, то есть без проекции даёт тавтологию, а не просто неверную ссылку. Проекция включена в прогоне вместе с пакетом ИСТОЧНИКОВ Конституции: без его узлов якоря правил не разрешаются, и она отказывает молча — измерено, 164 неразрешённых якоря и ноль снятых узлов против нуля и 161 снятого. Включение немедленно показало, что мост «конституционен в истолковании» (ст. 75) заякорен ТОЛЬКО в редакцию 2026 и на деле 2025 года снимается вместе с ней — то есть до этой правки пакет давал верный исход по норме, которой на дату дела не существует. Заведён двойникConstitutionConformingInterpretationRequired1995вkz.constitution.court, заякоренный в статью 74 редакции 1995 (её пункт 2 даёт утрату силы со дня решения либо с установленной судом даты, пункт 3 — вступление решения в силу со дня принятия и общеобязательность); само постановление № 61-НП ссылается именно на эту нумерацию — «руководствуясь пунктом 3 статьи 72 и пунктом 3 статьи 74 Конституции». Правило постановления расщеплено по редакциям каноническим приёмом §206, приоритетов тоже два:priorityназывает ПАРУ правил, и пропуск второй пары оставил бы истолкование наравне с буквой Закона. Одиннадцатый сценарий (KZ-PA-CONST-11) утверждает саму датировку — ноль неразрешённых якорей, ноль недатированных узлов и отсутствие правила чужой редакции в proof; без него отказ проекции остался бы молчаливым. Найдено исполнением, а не чтением. Первый прогон дал два FAIL одного класса:not <выводимый предикат>в открытом мире не берётся никогда — «ответа органа нет» и «предложение не вносилось» обязаны приходить УСТАНОВЛЕННЫМ фактом дела. Обе нормы переписаны на отрицание ЭМПИРИЧЕСКОГО предиката (reply_dispatchedсделан входным, правило постановления отрицает подпункт 3) части первой пункта 1 статьи 11 — тот самый, который постановление называет во взаимосвязи), и это не стилистика: до правки правило постановления не срабатывало бы НИКОГДА при зелёномcheckи зелёномlower. -
Датировка редакций §31 включена у отраслевых пакетов: брак и ОСМС проецируют мир на дату дела. До этого её не применял НИ ОДИН потребитель конституционного пакета, а
evaluate()применимость редакций не применяет сам — это отдельный шаг. Цена молчания измерена: вrights.lawшестнадцать задокументированных расхождений редакций и восемь голов выводят обе, причём у сильнейшего (иностранцы, ст. 12 п. 4 ред. 1995 против ст. 15 п. 4 ред. 2026) тела ПРОТИВОПОЛОЖНЫ при одной голове — без датировки голова становится тавтологией, то есть это неверный ОТВЕТ, а не неверная ссылка. Заведены три конституционные гарантии в редакции 1995 (ст. 18 — частная жизнь, ст. 27 — брак и семья, ст. 29 — охрана здоровья) и двойники мостов в трёх отраслевых пакетах, расщеплённые по редакциям §206: без них ОСМС, считающий взносы на 30.06.2025 и 30.06.2026, с включённой датировкой остался бы вовсе без конституционного основания. Шов один на корпус —kz.linking.dated_world, — и он ОТКАЗЫВАЕТ, когда мир обещал датировать пространство и не разрешил в нём якоря: первая же его версия была тотальной, упёрлась вKZ-MARRIAGE-CODE-ART-11и этим показала разницу между «якорь не разрешился» (законно у актов без закреплённой модели источника) и «обещали развести редакции и не развели». Проверено исполнением: у ОСМС на 30.06.2025 живёт мост редакции 1995 и снят мост 2026, на 31.12.2026 — наоборот; 39/39 сценариев брака, ОСМС и мирных собраний, differential 71 вызов байтово. -
Пакет персональных данных под датировку НЕ ПОСТАВЛЕН, и это измеренное решение. Включение роняет 13 сценариев из 21: у Закона № 94-V своя ось редакций — границы поправок 326-VI, 350-VI и 311-VI проверяются сценариями PD-09, PD-13, PD-14, — и с проекцией она не совмещается без разбора. Причина записана в самом раннере, а не забыта: пакет остаётся в прежнем состоянии, где конституционное основание берётся из обеих редакций сразу (обе дают одну голову, поэтому исход не меняется — врёт только ссылка на статью).
-
Расхождение
lawc checkиlawc lowerна одном пакете.check corpus/laws/constitution/rightsдаёт триLDC-E4101(норм-голова использует несвязанные переменные, §190), аlowerтого же каталога проходит с кодом 0 и выдаёт 382 узла — то есть правило, которое проверка называет не range-restricted, всё равно попадает в CLIR. Найдено 29.08.2026 при попытке пересобрать конституционный пакет; не квалифицировано (дефектlawcлибо намеренная разница путей — prose §190 о том, обязана ли проверка стоять на пути понижения, не читалась), поэтому и не чинилось. Записано здесь, чтобы не потеряться: пока это так, зелёныйlowerне доказывает, что пакет прошёл быcheck. -
Дефект измерителя глубины §33.1:
part/Nв локаторе давал фантомную статью.LOCATOR_REв.claude/skills/formalize-act/scripts/boundaries.pyсобирает совпадения черезfindallи не требовала границы слова, отчегоartсовпадал ВНУТРИp·art: локаторarticle/11/paragraph/1/part/2давал не только статью 11, но и статью 2 — и чужая статья становиласьSOURCE_ONLYпри живом пакете, то есть мера показывала пробел формализации там, где акт не заявлял ничего. Дефект латентный: ни один локатор корпуса до 28.08.2026 не начинался сpart/(пятнадцать единиц в ходу,partсреди них не было), и проявился он на первом же акте, где норма адресует ЧАСТЬ пункта. Правка —(?<![a-z])перед альтернативой; радиус измерен поимённо, а не обещан: разбор изменился ровно у трёх локаторов, все три в новом пакете, счёт остальных актов не сдвинулся ни на единицу. -
Цена проверки правки развязана с размером корпуса: акт-локальная петля, статический учёт покрытия. Правка одного акта стоила полного прохода по всему корпусу, и это росло вместе с корпусом без предела. Замеры, из-за которых сделано:
lawc eval— одноразовый процесс, заново разбирающий весь IR пакета на КАЖДЫЙ вызов; цена линейна по размеру IR (22 КБ → 0,15 с; 5,7 МБ → 2,88 с; 6,7 МБ → 3,41 с), а вызов с ПУСТЫМ делом наkz-criminal-codeстоит 3,1 с, из них 2,1 с — одна загрузка (lawc canon): считается не право, а JSON. При 4400 сценариях (из нихentrepreneurial_code1700 на 6,7 МБ иsocial_code1148 на 4,9 МБ) полныйcheck_kz_differentialтребует около трёх часов (прогон не уложился в 50 мин,exit=124), сама регрессия — более 70 минут; профиль: 80 % времени вlawc eval. Остальные корпусные ворота вместе — около пяти минут (check_label_coverage0,8 с,check_dead_rules1,0 с,check_formalization_depth30 с,check_fmt46 с,check_lower51 с,check_source_pinning165 с): дорогих ворот ровно два, и оба исполняют сценарии. Что мешало сузить: храповик покрытия считался ПОБОЧНЫМ ЭФФЕКТОМ прогона, поэтому частичный проход неотличим от потери покрытия, а отключать храповик на нём нельзя —--onlyстал бы способом обойти защиту. Развязка: учёт вынесен из прогона и сделан статическим —corpus/scenario-manifest.json(порождаемый артефакт, пиннит СОСТАВ: раннер → семейство → id) плюс воротаci/check_scenario_manifest.py, сверяющие его с храповиком без исполнения за 0,04 с, канарейка на пять ступеней. Полный прогон дополнительно сверяет исполненное с манифестом; частичный (--only <семейство>) сверяет состав СВОЕГО семейства, поэтому снятый или переименованный сценарий затронутого акта виден и без полного прохода. Гарантия усилилась: храповик держит ЧИСЛО, и замена одного сценария другим его не двигает — такая подмена была невидима; манифест её ловит, а вместе с ней третий случай — семейство, объявленное в храповике и пропавшее из манифеста (на живом дереве ворота немедленно нашли шесть таких). Замер петли наpersonal_data: 6 с вместо >70 мин и 29 с вместо ~3 ч. Сужение включается само:act_scopeвverify.pyвыводит семейства из изменённых путей и добавляет--only; правило консервативное — затронутый пакет ПЛЮС зависимые по замыканию импортов (kz.corpus.budget← 6 семейств,kz.constitution.rights← 4), а правкаlawc/,lawref/,spec/,vectors/, общей машинерии, дел или ожиданий сужение отменяет. Правка сценариев (corpus/kz/acts/*.py) даёт только своё семейство и НЕ разворачивает замыкание по пакетам: замерено, что иначе правкаacts/pd.pyтянула девять семейств — всех, кто делит с ЗПД снимок календаря §85. Вci/run_all.sh--onlyне допускается — там всё полностью. Частичная запись манифеста — СЛИЯНИЕ, а не замена: первый заход запрещал--write-manifestпри--onlyдоводом «неполный состав запишется как полный», и довод для слияния неверен — оно не может потерять, только добавить или обновить. Запрет при этом стоил дорого: завёл акт — жди полного прогона ради одной строки, а полный проход в общем дереве может и не сойтись (две попытки не дошли: тринадцать процессов регрессии от параллельных сессий морили друг друга, и корпус менялся быстрее, чем шёл проход). Полный прогон остаётся авторитетным — только он ЗАМЕНЯЕТ раздел и потому умеет удалять; дыру слияния (семейство убрали из раннера, запись осталась и прошла бы по числу) закрывают ворота сверкой каждого семейства манифеста с реестром раннеров — шестая ступень канарейки. Проверено лечением: семь отставших семейств освежены одним суженным прогоном, ворота позеленели — 4659 сценариев в 61 семействе за 0,07 с. Попутно закрыт дефект, который эта же правка и вносила:main()без аргументов уходил бы вsys.argvВЫЗЫВАЮЩЕГО гейта, роняяreport_norm_graph.py --json <файл>на «unrecognized arguments»;Noneтеперь означает пустой список, аsys.argvподставляет только скриптовый вход. Решение и его границы —ci/README.md, раздел «Стоимость проверки»; методика — раздел «Цена фазы 4» в скиллеformalize-act. -
Пакет
incoterms.group_c: торговые термины группы C (CPT, CIP, CFR, CIF), редакция 2020 года — ПЕРВЫЙ АКТ КОРПУСА С ДВУМЯ КРИТИЧЕСКИМИ ТОЧКАМИ У ОДНОЙ ОТПРАВКИ. Место перехода риска и предел несения расходов на перевозку — разные величины, и в группе C они не совпадают никогда: риск переходит в месте отправления (передача первому перевозчику при CPT/CIP, борт судна в порту отгрузки при CFR/CIF), расходы продавец несёт до места назначения. Ни один акт корпуса до сих пор не требовал их различать; модель с одним отношением «поставка» молча дала бы неверный CIF — самую частую ошибку торговой практики. Поэтомуrisk_transfer_placeиcarriage_paid_to_place— разные отношения, а ст. 3 выводит их расхождение самостоятельным утверждением. Источник — авторское изложение СТРУКТУРЫ (kind doctrine,jurisdiction "none",PINNED_OFFICIAL_BYTESна собственный файл репозитория), по образцуfaraid: текст Международной торговой палаты защищён авторским правом и в открытом доступе не издаётся, закрепить его §194 нельзя; структура терминов есть факт, а факт не охраняется. Цена выбора названа в шапке: внешнего оракула ожиданий у пакета нет, в отличие отuefa. Три замыкания §70 (состав группы, обязанность страховать, применимость по виду транспорта) плюс закрытый перечень изъятий ст. 11: снятый редакцией 2020 DAT даётFALSE_ONLYс сертификатом, а не молчание; «CIF аэропорт назначения» — тоже. Меры: закрепление 71,2 % (5374 из 7544 байт, 10 фрагментов), учёт 12 из 12 статей при двух объявленных границах, глубина §33.1 — EXECUTABLE 8, ANCHORED 2, SOURCE_ONLY 0. Двенадцать рукописных.lawtest§267, 12/12. Две вещи найдены исполнением, а не чтением. Первая: пара «покупатель по общему правилу / продавец при отнесении договором перевозки» с приоритетом второго над первым НЕ РАБОТАЕТ — приоритету нечего побеждать,unloading_cost_borne_by(c, продавец)и…(c, покупатель)суть разные литералы, а §106/§107 разрешает конфликт литерала с его отрицанием. Изъятие переписано отрицательной головой по образцу ОСМС; до правки дело с установленным отнесением давало обоих плательщиков сразу при полностью зелёномcheck. Вторая:any_mode_term/sea_mode_termбыли объявлены, ассертированы для всех четырёх терминов и НЕ ЧИТАЛИСЬ НИ ОДНОЙ НОРМОЙ — ограничение вида транспорта статей 6 и 7 отсутствовало молча, пока его не назвали поимённо воротаci/check_dead_symbols.py. -
Дефект
lawc: конструкторlegal_effect§127 не понижался —effect create(P)давал предикат с именемcreate. Грамматика несёт продукцию (legal_effect = "create","(",proposition,")" | "terminate",… | "modify",…,",",… | expression), prose §127 пример пишетeffect create(valid(permit));, парсер форму принимает намеренно — аlaw-hirзнал только альтернативуexpressionи заворачивал атом целиком:{kind:"create", after:{predicate:"…#create", args:[<вызов P>]}}. Молчание тройное:checkчист (три имени — hard keywords §15, символ не резолвится и не жалуется),lowerбез предупреждений, на исполнении позиция ACTIVE,valid_whenистинен и следствия нет. Квалификация: дефектlawc, не SPEC и неlawref— продукция нормативна, парсер её пропускает, понижение теряет;lawrefповерхность не разбирает. Вектор раньше кода (инвариант 7):T147(lower-shape) утверждает пять вещей порознь — свой атом уcreate, свой вид уterminate, ОБА поляbefore/afterуmodify(§202 LegalEffect), неизменность голой формыeffect Pи общий кодprotected_effect§128; до правки красен, после зелен. Конструктор распознаётся ПО ИМЕНИ, а не по разрешению символа:relation create(...)не разбирается вовсе, поэтому условная резолюция молча меняла бы смысл файла от того, что объявлено рядом. Неверная арность и расхождение суффикса поля с ключевым словом больше не понижаются молча —LDC-E1305. Радиус измерен:ci/check_lower.py109/109 байтово идентичны, демо 8/8 — конструкторной формой в корпусе не пользовался никто. Заодно у lower-shape-векторов появился путь ВНУТРЬ узла ("payload.effect.kind"): требование кLegalEffectесть утверждение о трёх полях вложенного объекта, и выразить его верхним уровнем можно было бы только сравнением payload целиком — вектор пинил бы заодно holder/exercise/validWhen и краснел на правках, к требованию отношения не имеющих. -
Процессный слой О-5: акт стал спрашиваемым как процесс (
lawref/process.py, DECISION-0052). Профильprocedure§159–§164 реализован с 27.08, живые пакеты процедуры несут — а входа к этому знанию не было. Инструмент трека О даёт две половины, ни одной строки семантики (инвариант 5). Статика без движка: автомат восстанавливается из УЖЕ порождённых десугаризацией узлов —<P>/initialдаёт начальное состояние,<P>/<T>/valid— источник и гарды,<P>/<T>/enters— цель; разбор идёт по ПРЕДИКАТАМ профиля, поэтому несколько процедур в пакете (квалификаторP__, DECISION-0013 §2.3) разделяются. Проверка графа ловит то, что не ловилось ничем:LDC-E1311–E1313локальны (одноinitial, ссылки на объявленные состояния, выход изterminal), а достижимость — свойство ГРАФА. Динамика через движок: журнал дела{"instance", "steps": [{date, attempt?, facts?}]}исполняется кадр за шагом, право каждого кадра — его дата (окна §87 читает движок, редакции §31 снимает проекция D1); кадр называет пройденные состояния, судьбу каждой попытки §164, позиции §134 и нарушения §140; на последнем кадре — доступные шаги с разбором блокеров §185 и календарь сроков по окнам §124. Ручное измерение получило держателя. Утверждение DECISION-0013 §4 («попытка заключить договор минуя вскрытие заявок правового эффекта не порождает» — институт несостоявшихся закупок) существовало прозой и воспроизводилось только повтором трёх ручных прогонов оракула; теперь его прогоняют ворота на живом пакете. Терминальность объявлена границей, а не додумана: маркерterminal§160 в CLIR не попадает, отличить законный терминал от тупика по нему нельзя, поэтому состояние без выхода — ЗАМЕТКА, а не находка. Обратный выбор дал бы громкую ложную находку на КАЖДОМ корректном акте (Concludedу закупок,NekeZhasaldyу «Туыстық жүйе»). Найдено исполнением, до заведения ворот: первая редакция исключала из «доступных шагов» всякий переход, чья попытка уже была, — и теряла разбор блокеров ровно для того перехода, ради которого он нужен. Исправлено: выпадает переход, уже породивший ЭФФЕКТ. Перепроверка слоя нашла два дефекта в нём самом, оба закрыты воротами. (1) Отказ движка выдавался за юридический факт. При отказе на КАЖДОМ вызове отчёт печаталATTEMPT_WITHOUT_EFFECT— то есть утверждал о праве («переход не породил эффекта» §164), не вычислив ничего; журнал без попытки в тех же условиях давалCLEANи код 0. ВведеныREFUSED_STATUSES(ERROR,BUDGET_EXHAUSTED) и полеcomputedу попытки; находкаEXECUTION_REFUSEDназывает отказ поимённо;ATTEMPT_WITHOUT_EFFECTэмитируется ТОЛЬКО из вычисленного ответа;STUCKне утверждается при непосчитанных шагах, усечении бюджета и любом отказе. Та же подмена нашлась и повторно — в перспективе рабочего стола и в прозе MCP, где «не посчитано» рисовалось как §164; исправлено в обоих. Штатного входа, роняющего движок на всех запросах, нет, поэтому ворота подменяют шовrun_scenarioпрямо. (2) Две процедуры в пакете утверждались разделяемыми и не проверялись ничем. Проверено на настоящемlawc lower: разделение работает, но имена стадий несли квалификаторP__в лицо юристу. ДобавленоdisplayName— обратная операция к квалификации §24 (снимается только известный префикс и только своей процедуры;nameостаётся тем, что в CLIR), журнал принимает переход всеми тремя именами. Оба случая заведены проверками ворот; на всём корпусе (65 пакетов) инструмент даёт НОЛЬ ложных находок. Воротаci/check_process.py(шаг 43/43) держат канареечный принцип в обе стороны — сломанный близнец фикстуры обязан дать три находки поимённо, исправный ноль — и проверяют ДВЕ оси времени порознь. Доведено до MCP:law_processиlaw_process_run, инструментов на сервере 18. -
Разрешён конфликт слияния, закоммиченный в корпус (найдено при заведении О-5). Пять CLIR-пакетов Конституции и два исходника (
constitution/court/court.law,constitution/kurultai/kurultai.law) лежали в HEAD с маркерами<<<<<<< Updated upstream. Цена: MCP-сервер не поднимался вовсе — любой инструмент, читающий корпус, падал наJSONDecodeError, и контрактmcp/test_server.pyбыл красен целиком. Сторона «Stashed changes» в обоих исходниках ПУСТА, сторона upstream несёт объявления, без которых файл не компилируется (for raised/held/waitиспользуются теломTrustVoteTimingAndAnnualCap), — то есть разрешение механическое, а не выбор редакции. Проверено дважды:lawc checkна обоих пакетах чист, и регенерацияgen_constitution_semantics.pyнезависимо воспроизвела ровно числа узлов стороны upstream (130 / 387 / 202 / 529 / 2851). -
Дефект обеих реализаций закрыт erratой E-0050: нижняя граница окна нормы вычислялась и выбрасывалась. Окно гасило позицию только СВЕРХУ (
legal_time > end→EXPIRED), а снизу не гасило вовсе — норма, вступающая в силу завтра, отвечалаACTIVEвчера, без единой issue. Причина не в прозе:startвычислялся и не использовался ни разу, а в Rust-порте был назван_start/_p_start— подчёркивание глушило предупреждение компилятора. §134 при этом перечисляетpendingровно междуcreatedиactive, схема несётPENDINGв enumNormativeStatus, и ни одна реализация его не порождала: значение было объявлено и мертво. Найдено предметом, а не тестом. Обе меры §33.1 и differential были зелёными — differential молчит по построению, когда обе реализации ошибаются одинаково. Поймала гипотеза от акта: Турция присоединилась к Декларации ОН 24 февраля 1945 года, значит на 1 января 1943-го обязанности у неё быть не должно;positionsотдавал 47 связанных вместо 26 на любую дату. Правка симметрична в двух реализациях: обязанность и запрет до окна —PENDING, полномочие, иммунитет и свобода —CREATED(§134 даёт им свою таблицу kinds безpending),startInclusiveчитается из интервала, позиция по-прежнему создаётся — норма, вступающая в силу позже, обязана быть видна и называть свой срок. Проверка стоит ПЕРЕД разбором condition: §136 и §137 говорят об исполнении и контрпримере «в window», и без этого порядка контрпример до вступления нормы в силу объявлял бы её нарушенной. Вектора T146 (обязанность до окна →PENDING) и LAY-L3-LIBERTY-NOT-YET (свобода до окна →CREATED) написаны ИЗ ПРОЗЫ и до правки падали; их голдены СОЗДАНЫ с предохранителем — запись разрешалась только при совпадении статуса с прозой. Радиус для замороженных голденов нулевой: ни один существующий вектор поведения не сменил, инвариант 3 не затронут. Вектора три, а не два: кT146иLAY-L3-LIBERTY-NOT-YETдобавленLAY-L2-WEAK-PERMISSION-NOT-YET— следствие правки в ДРУГОМ виде запроса: универсум слабого разрешения §126 уже отбрасывал истёкшие запреты («истёкшие/снятые не применимы»), а симметрии снизу у него не было, и полёт объявлялся запрещённым за четыре месяца до появления запрета. Правка нашла один настоящий дефект ожидания в чужом акте:HP-10-VIOLATION-TRIGGERS-SANCTIONспрашивал санкционную обязанность п. 25 закупа (окно[@2027-02-01, @2027-12-31]) на 2026-06-01 — за восемь месяцев до вступления — и закреплялACTIVE. Сценарий переписан и держит теперь оба конца окна. Регрессия корпуса: одно падение из 4427, и оно было именно этим. -
Lean-ядро научено считать A3-параметры:
checker/LawCore/A3.lean. Объявить границу («терм головы вне ядра») было лечением симптома — допущение и есть непроверенное место ровно там, где считаются деньги. Новый предпроход по образцуLawCore.Const(§54):const_refна A3-символ раскрывается в значение НА ДАТУ ПРАВА дела (case.context.legalTime) — деревоifпо датам, вызов функции строки расписания, раскруткаResult/Ok;MissingParameterValueзначения не даёт, и ссылка остаётся ссылкой. Подставляются ТОЛЬКО узлы с маркером происхожденияa3Kind(parameter-dataset/parameter-row) — произвольные функции §47.1 ядро не вычисляет; программа без A3-узлов возвращается побайтово той же. Поддержаны обе формы интервала: открытый (одно сравнение) и закрытый (конъюнкция). ОСМС: доказанных шагов правил 156 → 303, допущений 336 → 189, отказов 0. Проверка, а не доверие: подделка суммыContributionBase(450 000 → 450 001) отвергается ядром; выбор строки по дате держит сам корпус (OSMS-02 — одно дело на 2025 и 2026 годах). Селфтест ядра дополнен §A3.2 (пять проб) и краснеет при подмене ветвиelseнаthen; вci/check_proof_certificates.pyзаведена проверка обратной ошибки — непрозрачный операнд головы обязан быть принят, НЕ засчитан доказанным и назван. -
Lean-ядро называло ложной ошибкой то, чего не умеет считать: частично непрозрачный терм головы (A3-параметр). Точечная сверка сертификатов ОСМС дала 24 отказа из 27 —
ОШИБКА: … заключение не совпадает с головой правила ContributionBase под предъявленной σ, и то же уDeductionBase. Квалификация (инвариант 8): не дефектlawcи не дефектlawref— обе реализации согласны байтово и дают одинаковый сертификат; не дефект SPEC — §205/§208 не требуют, чтобыconst_refна A3-символ был ground-константой. Дефект третьей ноги:decodeAExprотдаёт.opaqueнаconst_refA3-параметра (это generated-функция наlegalTime,symbolKind: "function"), и головаmin(доход, МЗП × ContributionBaseCap)декодировалась как ВЫЧИСЛИМАЯ —evalAвозвращалnone, совпадения не было, и ядро объявляло сертификат неверным. Терм, непрозрачный ЦЕЛИКОМ, этой участи избегал (Term.computed→ допущение), а частично непрозрачный — нет. ЗаведенаAExpr.hasOpaque(checker/LawCore/Arith.lean), и проверка головы вchecker/LawCore/Check.leanпризнаёт границей обе формы: узел становится ДОПУЩЕНИЕМ с названной причиной («терм головы вне ядра v1 (деление/агрегат §59, A3-параметр)»), а не отказом. Проверка арифметики там, где ядро СЧИТАТЬ УМЕЕТ, не ослаблена:check_proof_certificates— 2/2 подделок суммы по-прежнему отвергнуто, всего 23/23 подделок, селфтест ядра OK. ОСМС после правки: 51 сертификат оракула и 51 движка, отказов 0 (было 27 проверено / 24 отказа). Дефект пришёл с переездом ставок в A3 и существовал до этой работы — проверено прогоном на CLIR из HEAD, числа совпали. -
Errata E-0048:
Instantсравнивался как строка, а измерялся как момент — порядок и равенство мгновений приведены к §84.1. Найдено вектором T145 на фазе 1 формализации акта о капитуляции. §57 перечисляет равенство по видам и обInstantговорит одно — что он не сравнивается сDate; порядка САМИХ мгновений проза не задавала ни строкой, и обе реализации заполнили пробел одинаково:instantлежал в общем множестве упорядоченных рядом сdateиtextи сравнивался БАЙТАМИ записи. Дефект самопротиворечив внутри одного файла —hours_between(E-0028) разбирает те же строки в моменты, потому что §84.1 объявляет разность двух мгновений физической длительностью, «а не разностью настенных показаний». Одна пара значений давала два несовместимых ответа о том, что раньше:hours_between(23:00+03:00, 22:00Z) = 2при23:00+03:00 > 22:00Z = True, а2301+01:00и22:01Z— один момент при== False. Расхождением реализаций это не было (differential молчал по построению: неправы обе), границей среза — тоже. Три ноги контура молчали каждая по своей причине: позитивного вектора наInstantв терм-позиции не существовало (T024 закрывает только отрицательную сторону), в корпусе все литералы мгновений стоят в провенансе, Lean сравнения термов не пересчитывает. Радиус измерен ПЕРЕД правкой: во всём корпусе и всех векторах ровно ОДИН узел сравнения с операндомInstant— узел самого T145; ни один замороженный голден не сдвинулся,check_differential123/123 байтово. -
Акт о военной капитуляции Германии формализован ЦЕЛИКОМ — оба инструмента (
corpus/laws/surrender-1945, пакетde.surrender.act1945). Реймс 07.05.1945 (пять статей) и Карлсхорст 08.05.1945 (шесть) закреплены как ДВАsourceв одном пакете, по образцу пакта Молотова–Риббентропа: редакцией друг друга они себя не объявляют, иprevious/nextсказали бы от имени источников то, чего те о себе не говорят. Обе меры §33.1 полны и ПРИМЕНИМЫ (в отличие от Декларации независимости, у которой единицы деления нет вовсе): учёт — 5 из 5 и 6 из 6, неучтённых ноль; глубина — EXECUTABLE 5 и EXECUTABLE 6, то есть из КАЖДОЙ статьи обоих актов что-то выводится; байтовая доля 99,0 % и 99,3 % (непокрытое — переводы строк между абзацами). 24 правила, 16 норм-шаблонов, 18 фрагментов, разметка §218 полная (38 объявлений, 40 норм, без метки ноль). СценарииSUR-01…SUR-08— 8/8, differential 23 вызова байтово. Предмет пакета — расхождение двух текстов, и оно ИСПОЛНЯЕТСЯ, а не описано. Час прекращения огня в обоих один и тот же (2301 Central European time 8 мая), но обязанность разоружиться и сдать оружие есть только у Карлсхорста, а запрет порчи у Реймса ограничен имуществом судов и самолётов против «всякой технической техники ведения войны» у Карлсхорста. Первая редакция пакета ставила оба запрета на один предикат — расхождение оставалось в МЕТКЕ и не проверялось ничем; исправлено предикатом узкого класса (vessel_or_aircraft_material), и SUR-05 теперь ломается, если два запрета уравнять. Час капитуляции — первое в корпусе мгновение §19 в терм-позиции. Все прежние 132 литералаInstantстоят вcomplete_as_ofиretrieved_at, то есть в провенансе, где их никто не сравнивает. Выразим он потому, что пояс называет САМ АКТ («Central European time»): E-0028 отказала шагу по часам ровно из-за невозможности назначить пояс за норму, а здесь назначать нечего. Отсюда проверяемое машиной следствие (SUR-02): 2301 CET 8 мая есть 9 мая по московскому времени, и сила, доложившая «01:05 9 мая», опоздала на четыре минуты, а не на сутки. Статья 6 Карлсхорста («The English and Russian are the only authentic texts») — тот редкий случай, когдаclosure§70 назван замкнутым в самом тексте, а не выбран формализатором. Предикат пришлось сделать УНАРНЫМ: двухместный проходитcheckиlowerчисто, а на исполнении даётNON_EXECUTABLE_CLOSURE, то есть статья молчит при зелёных воротах. Источник — вычитанные транскрипции фотографий подписанных экземпляров (en.wikisource, пространствоPage:, пять закреплённых ревизий поoldid); нумерация статей восстанавливается из разметки и СВЕРЯЕТСЯ с объявленными<ol start="N">(corpus/tools/fetch_surrender_text.py), фрагменты режутся из закреплённых байтов (corpus/tools/sync_surrender_fragments.py). -
Каталожная метадата пакета: секция
[metadata]вlaw.toml(DECISION-0051), первый носитель — «Туыстық жүйе». До неё пакет не сообщал о себе НИЧЕГО сверх четырёх обязательных полей §10: юрисдикция, правовая природа, статус действия и качество источника жили в единственном месте — словареPACKAGE_TITLESвmcp/law_mcp/core.py, то есть в Python чужого инструмента. Цена измерена на живом ответе:law_packagesпечатал «юрисдикция: Республика Казахстан. Нормы других стран здесь отсутствуют» над сводом, чей источник объявляетjurisdiction "none", в двух строках от его же титула «Памятник обычая, а не действующее право РК» — заголовок противоречил титулу под собой, а второе его предложение было ложным о девяти пакетах сразу (США, Рим, Англия, СССР, УЕФА, РФ, международные договоры, фараид, FNMA). Собственный контрактmcp/test_server.pyэту ложь ЗАКРЕПЛЯЛ проверкой на подстроку. Восемь полей:title,primarySource,jurisdiction,issuer,instrument,legalStatus,sourceFidelity,verifiedAgainstSource. Три решения приняты отдельно: юрисдикция, издатель и применимое право — РАЗНЫЕ поля (одно заставляло писатьjurisdiction UEFA, что в корпусе уже случилось: УЕФА — издатель, а не правопорядок;noneзаконно и означает отсутствие правопорядка, а не «неизвестно»); чисел в метадате нет (глубина и сценарии живут в генерируемых JSON под храповиками, а замороженное в строке число протухает — наблюдалось на одиннадцати титулах, носящих «EXECUTABLE N» в Python при мере в JSON);legalStatus— об акте ЦЕЛИКОМ, постатейные различия выражает мера глубины. Метадата проверяема, а не декларативна:jurisdiction,instrument,sourceFidelityиprimarySourceвыводимы из source-деклараций, и воротаci/check_package_metadata.py(шаг 29/41) читают CLIR и отвергают расхождение — канарейка на подделанной юрисдикции краснеет; руками объявляется только невыводимое, и каждое такое поле у первого пакета снабжено записанной причиной выбора.sourceFidelityшире §27.2 на два значения —reconstructionиauthored_expositionговорят о ПРОИСХОЖДЕНИИ текста, а не о закреплении байтов («Жеті жарғы» закрепляет реконструкцию, tuystyq — авторское изложение, оба при этом честноPINNED_OFFICIAL_BYTES), и ворота требуют под ними статус не нижеPINNED_UNOFFICIAL_COPY. Секция включена в валидацию, а не оставлена незнакомой:lawcпропускает незнакомые секции намеренно, аlawref.parse_manifestотбрасывал неперечисленные имена ДО схемы — то есть по умолчанию новая секция невидима обеим реализациям, ровно тот молчаливый класс, против которого устроен репозиторий; имя добавлено в список, поля описаны вpackage-manifest.schema.jsonаддитивно (release/не тронут), опечатка в поле и значение вне словаря отвергаются обе. Байтовый контракт цел:semanticHashпакета не изменился,git diffCLIR пуст,lawc checkчист,law.lockсекцию не пинует по построению. Храповикcorpus/metadata-ratchet.jsonдержит множество пакетов с метадатой от убывания — требовать её сразу у всех пятидесяти значило бы завести ворота, красные с первого дня. Потребитель перестроен:law_packagesпечатает правовую природу ИЗ пакета («вне юрисдикции государства; обычай; издатель: казахский обычай; с официальным текстом НЕ сверен») и отдаёт секцию полемmetadata; пакет без секции строки не получает — «не объявлено» обязано отличаться от объявленного. Заголовок каталога приведён к правде, назначение барьера против подмены нормами другой страны сохранено; пин теста снят с квалификацией «дефект утверждения» — он закреплял ложное предложение и тем защищал его от исправления, взамен проверяются четыре вещи. Индекс реестра — второй потребитель:registry/build_index.pyпереносит секцию в запись каталогаpackages.jsonи берёт из неё ЗАПАСНОЙ заголовок. Прежнее правило «название = official-метка первой работы-источника» не ошибочно, оно неприменимо к целому классу: официальной метки нет у доктрины, обычая, авторского изложения и частного документа, потому что официального названия у них не существует, — и такой пакет приезжал в витрину сtitle: null, попадая вhealth.packagesWithoutTitleкак недоделка, которой не было (список сократился с 15 до 14). Рядом печатаетсяtitleSource(source-label|manifest): чьё это имя — вопрос провенанса.health.packagesWithoutMetadataсчитает пробел поимённо (57 из 58). В дескрипторp/<name>/<version>.jsonметадата НЕ идёт — он держит формуLockedPackageсadditionalProperties: false. Долг назван явно:law_askпо-прежнему помечает каждый ответ глобальной константой — у ответа бывает несколько пакетов, и правило соединения их юрисдикций решается отдельно. -
Закон «О защите прав потребителей» № 274-IV: третья мера полноты, вычисляемые сроки, бремя доказывания и полная разметка (28.08). Пакет проходил обе меры §33.1 (96,7 % байтов, 59 статей из 59) при том, что 31 правило из 78 стояло в proof-графе, а 38 поверхностных норм из 69 не срабатывали ни одной веткой — включая выводы, которые протокол сверки уже обещал (возврат при отсутствии товара для обмена, тридцатидневный возврат несоответствующего и контрафактного товара, окна по сроку годности и двухлетнее, сроки замены, экспертизы и ремонта, двухмесячное обращение в орган). Обе меры §33.1 этого не видят по построению: они считают НАЛИЧИЕ правила у статьи, а не то, что правило срабатывает. Заведено 26 сценариев (
CP-11…CP-36), закрывших все 38 норм и все пятнадцать §206-расщепленийor; 85 правил CLIR из 85 живы, мёртвых ноль, differential 77 вызовов байтово. Вместе с ними закрыты три класса: (1) бремя доказывания — ст. 30 п. 5 (продавец не снял бремя по гарантийному товару) и зеркальный п. 4 (потребитель доказал допередаточный недостаток, отсутствие гарантии — КЛАССИЧЕСКОЕnot§66, а неnot_known: при умолчании распределение бремени определялось бы записью дела); (2) три постулируемых окна стали вычисляемыми — два года ст. 17 п. 2, два месяца ст. 42-5 п. 2 и десять дней ст. 42-4 п. 2 (по СДАЧЕ ответа на почту, как велит часть третья пункта), плюс просрочка новых сроков свыше десяти дней ст. 34 п. 5, у которой нормы не было вовсе; каждое окно проверяется сценарием ДВАЖДЫ — внутри и снаружи, иначе вывод нормы неотличим от повторения входа; (3) разметка §218 доведена до 190/190 объявлений и 85/85 норм (было 45/188 и 25/78 — пятое место с конца по корпусу). Долгcorpus/dead-symbols.jsonпо пакету обнулён:warranty_setожил нормой п. 4, остальные 39 объявлений разобраны поимённо — девятнадцать из них каталоги главы 4 и обзорных статей, то есть машинно видимая мера того же пробела, который §33.1 показывает как «ANCHORED 47». Закон «О защите прав потребителей» доформализован до предела текста (29.08): 48 статей из 59 вEXECUTABLE, 11 вANCHORED— глубина §33.1 по пакету прошла путь 12/47 → 48/11 за одну работу. Заведены ст. 6-2 (государственный контроль: три способа вручения рекомендации §206, сроки десять и пять рабочих дней, интервал полгода), 6-3 (Единая информационная система), 42-8 (досудебное урегулирование), 2 п. 3 (приоритет международного договора), 7, 9, 10, 11, 12, 13, 16, 18, 20, 21, 42-2. Приём квантора по каталогу повторился четырежды — 26 сведений ст. 25, 36 правомочий объединений ст. 41, 14 прав потребителя ст. 7 и 12 видов условий ст. 8-1: одно правило вместо N копий, позиция на каждый пункт, и мёртвые словариrequired_item_information,association_power,consumer_right,prohibited_contract_termполучили потребителя. Проверяются они только счётом СЫРЫХ позиций:_positionsвозвращает множество пар и одинаковые по статусу экземпляры схлопывает — первая версия проверки показывала «одну позицию» и выглядела верной. Остаток из одиннадцати статей — не долг, и это измерено: детектор ворот находит признаки исполнимого содержания только у двух, и оба ложные (ст. 22 исключена, «деонтика» пришла от заголовка главы 4; ст. 44 вводит Закон через три месяца после первого опубликования, даты которого в закреплённом тексте нет). Остальные девять — определения, принципы, компетенции органов и исключённые статьи. Итог: 49 сценариев, 241 правило CLIR из 241 в proof-графе, differential 146 вызовов байтово, ядро Lean 146/146 при нуле висячих узлов, разметка 393/393 и 366/366, долг мёртвого словаря нулевой. Глава 5 «Выполнение работы (оказание услуги)» закрыта (29.08): ст. 36–39 — смета, материалы и оплата, шестнадцать норм. Носитель — исполнитель, предмет — договор, окно от начального срока работы; связывание поwork_contract/contract_startоживило двух сирот. Две позиции носит ПОТРЕБИТЕЛЬ — оплата материала исполнителя (ст. 37 п. 2) и правомочие отказа при превышении сметы (ст. 36 п. 2); деонтическая форма это различает, плоское отношение нет. Три случая умолчания §113 подряд, все из текста: запрет сверхсметных требований действует, пока исполнитель не показал согласие потребителя (ст. 36 п. 2); ответственность за утрату материала — правило, предупреждение об особых свойствах — исключение (ст. 38 пп. 3–4); форма оплаты диспозитивна и вытесняется установленным законом порядком (ст. 39). Глубина §33.1 25/34 → 29/30, то есть половина статей акта теперь выводит. Итог: 45 сценариев, 187 правил CLIR из 187, differential 105 вызовов байтово, ядро Lean 105/105 при нуле висячих узлов, разметка 329/329 и 278/278. Глава 4 «Права и обязанности продавца» закрыта целиком (29.08): все одиннадцать статей (23–33-2) перешли вEXECUTABLE, глубина §33.1 12/47 → 25/34. Форма — нормативные позиции §127, и решение это техническое: обязанности главы БЕЗУСЛОВНЫ, «продавец обязан обеспечить безопасность товара» не имеетwhen, и плоское правило потребовало бы выдумать условие, которого в тексте нет. Прецедент формы — internal-affairs (одна обязанность на одну единицу текста). Существующиеseller_must_*не переписаны: они последствия КОНКРЕТНОГО требования, а не стоящие обязанности, и слои разделены явно. Окно позиции —[purchased, infinity), а не дата вступления Закона в силу: ст. 44 п. 1 вводит его «по истечении трёх месяцев после первого официального опубликования», а даты публикации в закреплённом тексте нет. Форма окупилась немедленно: запросpositionsдаёт СТАТУС каждой позиции, то есть ответ «какая именно обязанность не исполнена», которого плоский предикат дать не может. Двадцать шесть сведений ст. 25 записаны ОДНИМ правилом с квантором по каталогуrequired_item_information— по позиции на сведение, и каталог перестал быть мёртвым словарём. Три исключения потребовали трёх разных форм, и выбор менял ответ: отсылка к другим актам — положительным сертификатом; факт внутри дела (ст. 29 п. 2 «если не исключено характером товара») — умолчанием §113, потому что классическоеnotдало бы обязанность почти нигде; освобождение от ответственности за вред (ст. 31 п. 6) — формой несённого бремени. Клаузаexcept_when§149 для этого не годится: она парсится и типизируется,lawc checkчист, но ПОНИЖЕНИЕ её теряет — в узле CLIR не остаётся ни следа, и правило ведёт себя так, будто исключения нет; в корпусе её не использует ни один пакет. Итог по пакету: 43 сценария, 169 правил CLIR из 169 в proof-графе, differential 96 вызовов байтово, ядро Lean приняло 96 сертификатов оракула и 96 движка при нуле висячих узлов, разметка 301/301 и 245/245. Отдельно формализована ст. 8-1 — двенадцать видов условий, нарушающих права потребителя, стояли фактами и не читались ничем: заведены пять норм (пп. 1–4), включая единственный подпункт с величиной — «несоразмерно большая сумма (свыше тридцати процентов стоимости)», долю считает норма, а исключение (туристское обслуживание, невозвратный авиабилет) предъявляется положительным сертификатом. Статья перешла изANCHOREDвEXECUTABLE— единственное движение глубины §33.1 за работу (12/47 → 13/46), остальные нормы ложились на уже исполнимые статьи. Итог по пакету: 37 сценариев, 90 правил CLIR из 90 в proof-графе, differential 83 вызова байтово, ядро Lean приняло 83 сертификата оракула и 83 движка при нуле висячих узлов, разметка 201/201 и 90/90, долг мёртвого словаря нулевой (38 разобрано поимённо). Фаззер--targeted 40конфликтов §115 и контрпримеров §93.1 не нашёл. Стоило времени:add_calendar_periodтребует политику срока §86 (include_end=true,roll=no_roll) и без неё отвергает вычислениеMISSING_POLICYпри чистомcheckи корректном lowering — политика подаётся профилем контекста дела, а не декларацией акта. -
Указ ПВС СССР от 22.06.1941 № 8/160 «О военном положении» — пакет
su.decree.martial_law_1941, десять пунктов из десяти. Второй советский пакет корпуса и первый ОПЕРАЦИОНАЛЬНЫЙ акт этой юрисдикции: 19 power-норм §127, две обязанности §136, иммунитет §128, семь замыканий §70, один канал суждения §47.3; правил 76, узлов CLIR 294. Три конструкции, которых в корпусе не было. (1) Держатель полномочия ВЫВОДИТСЯ. Пункт 2 отдаёт все функции органов власти в трёх названных областях военным советам, «а там, где нет военных советов, — высшему командованию войсковых соединений»: у семнадцати норм из девятнадцати держатель один и тот же, и кто он в данной местности — вывод, а не факт дела. Оговорка «где нет советов» записана ЗАМЫКАНИЕМ §70, а неnot_known: первая редакция через умолчание уронилаlawc lowerкодомLDC-E4103 LATE_STATUS_PRODUCER(defeasible-продюсер роняет всякого строгого потребителя, §111), а лечить это цепьюdefeasibleзначило бы объявить безусловные нормы указа поражаемыми ради ограничения v1 — обе ветви осталисьstrict, и это ещё и вернее по праву: указ говорит о ФАКТЕ отсутствия совета. (2) Замкнутый перечень и открытый остаток в одном тексте. Пункт 3 (восемь предметов) и пункт 7 (восемь категорий дел, оборот «а именно») замкнуты; последний абзац пункта 7 границы не имеет — «и иных преступлениях, предусмотренных уголовными кодексами союзных республик, если КОМАНДОВАНИЕ признает это необходимым», — и ответ отдан суждению самого командования (authority MilitaryCommand). Одно дело о спекуляции даётFALSE_ONLYпо перечню иREQUIRES_JUDGMENTпо остатку. (3) Потолок, ограничивающий не деяние, а нормотворчество: «до 6 месяцев» и «до 3000 рублей» пункта 4 «а» стоят при ПОЛНОМОЧИИ устанавливать наказания, записаны величинами с единицей (6 calendar_month,3000 SUR) и проверяются вычислением. Измерено: 9659 закреплённых байт по трём неизменяемым ревизиям страниц сканированного свода 1956 года, 10 фрагментов, учёт единиц 10 из 10, глубина §33.1 EXECUTABLE 10, разметка §218 полная (161 объявление, 98 норм), сценариев 49/49, KZ-differential 114 вызовов байтово идентичны. Все 76 правил акта ДОКАЗАННО применились на деле — 22 норм-правила создали свою позицию, 54 обычных сработали: третья мера (не «сколько статей покрыто», а «сколько норм сработало») закрыта целиком, чего у большинства пакетов корпуса нет. Секция[metadata]§10 заведена сразу (второй пакет послеtuystyq);legalStatus = "historical_monument", а неrepealed, — отменяющего акта закреплённый источник не называет. -
Дефект ОБЕИХ реализаций: два эффекта полномочия в одном деле роняли документ (
lawref/lawref/evaluator/effects.py,lawc/crates/law-eval/src/effects.rs).urn:proof:effect:<хвост позиции>:<seq>брал от позиции только номер приложения, аseqсчитался локально вызова материализации — тогда как цепочка норм §143 зовёт её на КАЖДОЙ итерации. Два эффекта разных полномочий с разных итераций получали одинurn:proof:effect:0:0, и документ не собирался вовсе:CanonError: nodes: дубликаты stable ID(§208). Не неверный ответ — отказ. Квалификация: дефект обеих реализаций, не SPEC и не расхождение;law-evalздесь дословный порт, обе падали одинаково, и differential был зелен ровно потому, что обе были неправы одинаково. Достаточно пары полномочий, где эффект первого включает второе. Правка: идентификатор стал функцией ПОЗИЦИИ (urn:proof:effect:<rule>:<n>, тем же видом, чтоurn:proof:norm:), а не порядка материализации; уникальность гарантирована стражем_effect_done— эффект у позиции ровно один. Оракул правлен первым (инвариант 6), порт дословен, differential байтовый. Радиус нулевой:urn:proof:effect:не встречался ни в одном замороженном голдене — и это вторая находка, а не удача: материализация эффекта §127.2 не была покрыта ни одним conformance-вектором вовсе (T018/T019/T031 проверяют случаи, когда эффекта НЕТ). Дыра закрыта векторомLAY-L2-POWER-EFFECT-CHAIN(§127/§143/§208): два полномочия, эффект первого — условие возникновения второго, поэтому вторая итерация цепочки возникает по построению. Вектор красен ДО правки (CanonError) и зелен после; вписан в три реестра, differential байтовый. -
Errata E-0049 и ворота
ci/check_schema_refs.py(шаг 4/41): нормативные схемы проверены сами. Схемами проверялось всё дерево, а их самих не проверял никто. Цена молчания:evaluation.schema.jsonс ПЕРВОГО своего коммита (a773237) держала три$refна два несуществующих определения —NormativeStatusSupport.valid→#/$defs/TemporalInterval,ExecutionReceipt.resourceUsageи.signature→#/$defs/JsonObject. Висячая ссылка при этом проверку не ослабляет, а ОТМЕНЯЕТ вместе с ответом:Draft202012Validatorна такой ветви поднимаетPointerToNowhere— ни «валидно», ни «невалидно». Три нормативных поля не проверялись ничем. Почему было нем: ветвей не достигает ни один документ — во всех 289expected.jsonвекторов 122 суть evaluation-документы, записейnormativeStatusSupportsв них 24, с полемvalidноль, объектов receipt ноль. Квалифицировано как дефект СХЕМЫ: проза полна и правки не требует (§134 называет «valid interval», §170 печатаетresource_usage { ... }, §2.18 части I относитsignatureкExecutionReceipt), реализации ни при чём — ни одна из трёх полей не излучает, differential не двигается. Правка аддитивная: оба определения добавлены ЛОКАЛЬНО, а не межсхемными ссылками, —evaluation.schema.jsonсамодостаточна по построению (своиDate,Instant,Digest,StableId,JsonValue) и не содержит ни одной ссылки вовне; висячие суть остаток этого дублирования. Ворота разрешают каждый$refкаждой нормативной схемы тем же механизмом, что оракул (referencingRegistry), реестра файлов не ведут (глоб + нижняя граница + сверка сNORMATIVE_SCHEMASв обе стороны) и краснеют на доправочном дереве ровно тремя строками с полными JSON-указателями — проверено прогономgit show HEAD:, а не рассуждением. Канарейка сверяет ОТПЕЧАТОК сообщения: её первая редакция писала ссылки кириллицей, и все четыре пробы ловила мета-валидация (is not a 'uri-reference'), а разрешение ссылок не исполнялось ни разу; мутаций десять, каждая роняет свою сверку.KNOWN_DANGLINGшага 27/41 опустошён и оставлен как счётчик: безусловный запрет не может стоять заpnpm. Кодогенератор выпускал для трёх полейunknownи теперь выпускает типы. Смежное названо и НЕ закрыто: блокexecution_receipt§170 перечисляет шесть полей, иsignatureсреди них нет, — правка прозы требует своей квалификации. -
Ворота молчания словаря:
ci/check_dead_symbols.py(шаг 6, вторая пара). Объявление, которого не читает ни одна норма, было невидимо тройне, и каждый слой слеп по своей причине:lawc checkчист — объявление корректно; обе меры §33.1 считают СТАТЬИ и ФРАГМЕНТЫ, а не словарь (у независимости стояло «EXECUTABLE 18/18, неучтённых 0» при мёртвомcapital_city);check_dead_rules.pyсмотрит ПРАВИЛА и мёртвого объявления не видит по определению — правила там нет вовсе; вербализация молчит, потому что метка §218 у объявления есть и тотальность §3.3 удовлетворена. Находка, ради которой ворота заведены, показывает цену класса: в independence единственный мёртвый символcapital_cityоказался пропущенным closure §70 по ст. 17 — «столица - город Алма-Ата» есть определённое описание, и без закрытия вопрос о другом городе давалNEITHERвместо «нет». То есть мёртвое объявление указало на потерянную НОРМУ, а не на мусор в словаре. Первый прогон по корпусу: 587 мёртвых объявлений из 16 902 в 38 пакетах, 280 из них ассертятся — акт утверждает факт, который не потребляет ни одна норма. Три решения: множества берутся глобально, а не пофайлово (audit-world повторяет узлы дословно — тот же урок, на котором спотыкались первые ворота dead-rules, переиспользован, а не воспроизведён);assertionпотребителем НЕ считается, потому что «ассертится и не читается» и есть искомый признак, и его число печатается отдельно; реестрcorpus/dead-symbols.jsonразделён наdocumented(разобрано, id → причина) иbaseline(долг, замороженный как есть) — слитые, они выдавали бы реестр за перечень осознанных решений, каким он не является. Мёртвое объявление НЕ обязано быть дефектом (бывает законный входной предикат), поэтому ворота требуют не отсутствия таких символов, а того, чтобы каждый был назван. Оба пути отказа проверены прогоном: незнакомый мёртвый символ и ожившая запись роняют ворота. Вписаны вci/run_all.sh— проверка вci/считается заведённой только строкой в нём — и вci/README.md. -
Принципы Нюрнберга формализованы целиком — 7 из 7, 18 сценариев, differential байтовый. Новый пакет
un.ilc.nuremberg_principles(КМП ООН, 1950): второй международный акт корпуса и первый акт международного уголовного права. Измерено: 28 правил, 10 фрагментов, сценариев 18/18, все 18 evaluate-вызовов байтово идентичны между реализациями, глубина §33.1 — EXECUTABLE 7 / ANCHORED 0 / SOURCE_ONLY 0, учёт 7 из 7, покрытие текста 78,3 %, разметка §218 полная. Заведена единица деленияprincipleв обеих мерах §33.1. Четыре сцены проверяют границы, а не выводы: незамкнутость перечня преступлений, отсутствие соучастия в соучастии, молчание при приказе без суждения, несущность условия связи в (c). Найден и квалифицирован общий дефект обеих реализаций: канал суждения §47.3 не проходит через поражаемое правило (изолировано тремя прогонами; переменная — режим правила, не полярность головы). -
Конструктор законов реализован: оба движка исполняются в браузере, differential сошёлся байтово. Новый монорепозиторий
constructor/— рабочий стол формализации по плануspec/CONSTRUCTOR.ru.md(решение DECISION-0050). Пять перспектив одного пакета (Текст · Логика · Проверка · Анализ · Редакции), ось юридического времени в шапке, полоса ворот. Измерено: палитра операций §225 из WASM-сборки совпала с нативнымlawc … --jsonна 24/24 случаях байтово; e2e Playwright — 32/32, включая тест, в котором ядро на Rust подwasm32и оракул на Python под Pyodide отвечают в ОДНОМ браузере одними каноническими байтами §208. Тело операции одно, хостов трое. Палитраparse | check | layer | features | lower | expand | test | explain | why-not | graphвынесена из армовmainв библиотекуlaw-cli(pkg.rs+ops.rs) и оттуда отвечает терминалу, раннеру векторов §267 и браузеру через новый экспортlaw_opвlaw-wasm. До этого третий хост мог только ПОВТОРИТЬ тела — то есть завести второе описание того, что печатает компилятор. Голденыcheck_cli_jsonпри переносе не сдвинулись ни на байт. Новый крейтlaw-vfs— файловый ввод за швом. Подwasm32-unknown-unknownфайловой системы нет вовсе, а компилятору она нужна: пакет §22 — это каталог, §194 закрепляет байты публикации поlocal_path, A3-ресурсы лежат рядом,law.lockдержит их хэши. Выключить эти проверки в браузере значило бы получить ДРУГОЕ право («hash mismatch» и «файл не прочитался» — разные ответы, E-0013). Вызовыstd::fsна пути компилятора заменены свободными функциямиlaw_vfs; без подложенного контекста они идут вstd::fsбайт в байт как раньше. Одно отличие намеренное:read_dirсортирует записи — порядок обхода каталога наблюдаем (он задаёт порядок диагностик) и обязан не зависеть от ФС (§211). Ворота 26/43check_wasm_differential. Сверка идёт с ЖИВЫМ CLI, а не с голденом: голдены пинует шаг 25/43, и вторая сверка с ними краснела бы за чужую работу. Внутри канарейка, которая обязана срабатывать: тот же запрос с ИСПОРЧЕННЫМ пакетом даёт другой ответ — иначе ворота проходили бы и на реализации, которая присланные файлы не читает вовсе. Четыре случая, не переносимые в браузер, объявлены с причинами. Ворота 27/43check_constructor. TS-типы протокола порождаются изspec/schema/*.jsonкодогенератором (14 схем → 202 типа), и прогон обязан не менять дерево; сверка идёт САМИМ прогоном, а не сравнением с HEAD. e2e в PR-гейт не входит и объявлен отдельной командой: браузер на 94 МБ не помещается в бюджет 15 минут. Найдено попутно: вspec/schema/evaluation.schema.jsonтри висячих$ref(#/$defs/TemporalInterval,#/$defs/JsonObject×2). При достижении этих ветвейDraft202012Validatorне валидирует, а падает (PointerToNowhere), — то есть поляNormativeStatusSupport.valid,ExecutionReceipt.resourceUsageи.signatureсхемой фактически не проверяются. Закрыто тем же днём: определения восполнены в схеме,KNOWN_DANGLINGпуст, безусловный запрет вынесен вci/check_schema_refs.py(шаг 4/41) — свойство нормативных схем не может зависеть от наличияpnpm. Перепроверка нашла пять дефектов, переживших зелёный билд и зелёный e2e. Все на пути ВВОДА — там, где UI строит документ для движка, — и все невидимы для браузерного сценария, потому что он гоняетfaraid, где параметры доменных типов и целые ветви кода не исполняются. (1) Тип значения выбирался ВИДЖЕТОМ, а не декларацией: виджетnumberобслуживаетInteger,NaturalиDecimal, и сборщик звал целым любое число;typeписался строкой вместо объекта{name},Decimal/Money/Quantityтеряли строковое значение, валюту и единицу. (2) «3.5» в позиции целого приводилось молча — теперь неразбираемый ввод отвергается поимённо. (3) Момент §35 шёл БЕЗ смещения при том, чтоInstantStringего требует, а движок принимал такой вход молча; смещение берётся у базы IANA на выбранную дату, зона показана в шапке. (4)why_notспрашивался путём к ПАКЕТУ, тогда какops::why_notпринимает каталог вектора — панель молча показывала «разбор не запрашивался»;why_notесть ВИД запроса §172, и теперь идёт второй прогон движка с различениемNOT_SATISFIED(опора против) иUNDETERMINED(опоры нет). (5) Тест §267 писался ВЫДУМАННЫМ форматом и не прогонялся — файл не разобрался бы ни одним компилятором; теперь эмиттер пишет поверхностный вид, снятый с корпуса, и результат обязан пройти контрольный прогон в wasm, а непроходящий файл в рабочую копию не едет. Побочно: роли дела ключевались ТИПОМ, из-за чего два параметра одного типа склеивались в одну сущность —limited_by(general: Instrument, act: Instrument)задавался только как отношение акта к себе; таких предикатов в корпусе 201 из 5067. Ключ теперь — позиция параметра. Заведены 31 модульных тестов формы значения (pnpm test, шаг 27/41) — именно потому, что e2e этот класс не ловит; e2e расширен до 32. Добавлены виды запросовcollect(§52.1 — «какие значения», свободная позиция не вводится) иwhy_not; остальные семь из десяти ОБЪЯВЛЕНЫ вQUERY_KINDS.deferred, а не умолчаны. План закрыт целиком — Ф0…Ф8, и каждая позиция названа тем, чего стоила. Разметка спанов сделана на tiptap: выделение →content_hash§194 по СЫРЫМ байтам → заготовка фрагмента И заготовка нормы с якорем на него; приведения текста нет ни одного, потому что любое (сжатие пробелов, кавычки-ёлочки) сломало бы вхождение §194 молча. A3-поверхности показывают параметры и таблицы решений со значением на выбранной дате — у параметра своя ось времени, и «взнос 5 %» есть функция отlegal_time; ПРАВКИ у них нет намеренно: ресурс закреплён вlaw.lockпоcontentHash, и правка из браузера рассогласовала бы их молча (LDC-E8704). Ассистент §9 собирает черновики из словаря САМОГО пакета и прогоняетcheckв wasm ДО показа, как требует план; не прошедший показывается вместе с кодом отказа, а ошибки, бывшие в пакете и до предложения, ему не приписываются. Передача в реестр выгружает канонические байты §208 под именем, которое ищетregistry/build_index.py, и НАЗЫВАЕТ команды: индекс строит Python, запустить его из браузера нечем, а кнопка, обещающая публикацию, которой не произошло, хуже её отсутствия. Дописаны: официальные тексты пакета (и фрагмент без единой нормы назван), Spotlight по декларациям и файлам, go-to-definition по дереву (F12), quick-fix «окно кgoal» иvalid_when, кнопкаimpact-editions, Lean и покрытие в полосе ворот,.docxНАСТОЯЩИМ OOXML (прежняя выгрузка была HTML-документом с расширением.doc— на экране то же, но это файл, который читатель принимает за формат), TanStack Query с ключом «операция × отпечаток входа × дата × отпечаток сборки движка», двуязычие ru/kk с проверкой полноты словаря в воротах. Подсветка переведена на Lezer-грамматику, и это потребовало отдельных ворот. Полный порт 964 строк EBNF дал бы второе описание языка, расходящееся с компилятором молча, поэтому грамматика описывает ровно нужное редактору — лексику, заголовок декларации и баланс скобок, — а расхождение ловит новый шаг 28/43: она гоняется по ВСЕМ.lawкорпуса, векторов, примеров, демо и релиза (на 29.08 — 1266 файлов, 42043 декларации), и отвергнуть вправе только то, что отвергает иlawc parse --json(T085, T086). Спрашивается компилятор, а не список исключений. Что нашла разработка грамматики: токен текстового блока, записанный рекурсивно, из-за longest-match Lezer проглатывал ЧЕТЫРЕ ТЫСЯЧИ символов до последнего ограничителя в файле вместе с чужими фрагментами, а ошибка всплывала на закрывающей скобке объемлющей декларации — за сотню строк от причины; та же ловушка была у блочного комментария. Две границы оставлены и сказаны словами: Lean в браузере не исполняется (полоса ворот показывает третье состояние — «проверяется воротами репозитория», — а не зелёную галочку: отметка означала бы проверку, которой не было), и покрытие в полосе — то, что видно из CLIR, тогда как полная мера §33.1 считается по ОБЪЯВЛЕННОЙ границе воротами репозитория. Разбор — DECISION-0050 §5б. Восьмая находка — уже в самом приложении, и её дала не сюита, а расследование её красноты (29.08). Полный прогон валил тест, который в одиночку проходил всегда: панель отвечала «дело не собрано — не назван идентификатор сущности» про поля, где идентификатор стоял НА ЭКРАНЕ.useSnapshotотдавалdocument: nullна один кадр при всякой смене ключа входа (правка, сдвиг даты, дебаунс), а из документа собраны роли и факты: поля дела исчезали и возвращались пустыми, унося набранное молча — и отказ обвинял автора в том, чего он не делал. Починка —placeholderData: keepPreviousData: прежний снимок держится на экране, пока считается новый; свежесть носит ОТВЕТ (обнуляется по ключу, полоса ворот говорит «идёт проверка»), а не форма. Вывод общий: краснота сюиты, которую не удалось объяснить, есть находка, а не помеха — соблазн поставитьwaitForTimeoutи получить зелёный прогон закрыл бы дефект, который на человеке выглядит как «я это ввёл, а оно пропало». Побочное обязательство починки уплачено явно: раз прежний снимок держится на экране, ворота обязаны сказать, что показанное посчитано по ДРУГОМУ входу — на время пересчёта они говорят «CLIR пересчитывается» (состояниеrunning), а покрытие добавляет «вход изменился: число относится к прежнему снимку». «CLIR собран» во время пересчёта было бы выдачей устаревшего за текущее. Вторая перепроверка (29.08) спросила уже не о пути данных, а о том, держат ли ворота то, что о себе говорят, — и нашла семь дефектов, все переживавшие зелёный прогон. Ворота грамматики обещали в заголовке сверку числа деклараций с компилятором (parse --ast --json) — такого флага нет, AST наружу не выходит, а в коде стояла одна проверкаdeclarations === 0: грамматика, нашедшая ОДНУ декларацию на весь корпус, прошла бы. Заменено на нижнюю границу по свидетелям (строки с ключевым словом декларации в колонке 0 вне комментариев и текстовых блоков — гашение обязательно, у Локка официальный текст начинается со словpropertyиsupport); правило держится на всём корпусе с единственным исключением T078, снятым спросом у компилятора. Комментарийcheck_constructorприписывал регулярному выражению проверку паритета словарей — на деле её держит типизация (KK: typeof RU, удаление ключа даётTS2741), а выражение печатало «N × 2 языка», сложив ключи обоих словарей в одно множество. У галереи возможностей не было сверки на дрейф: правка руками уехала бы в сборку, потому что приложение импортирует JSON с диска. Разбор матрицы ломался на экранированной черте (calendar_month\|calendar_year) — две возможности теряли пометку «подтверждено байтово»; заголовок матрицы называет числа сам (305 и 128), и теперь разбор обязан с ними сойтись — до починки давал 126. В перспективе «Проверка» стоялоstale: snapshot.key !== snapshot.key— тождественно ложное сравнение, из-за которого «устарело» не загоралось НИКОГДА, а рядом эффект обнулял ответ вместо пометки; принцип 3 говорит «правка МЕТИТ ответ», и теперь ответ остаётся помеченным. Ещё два жёсткихstale: falseпривязаны к настоящему признаку. И главное: ассистент не давал ни одного компилирующегося черновика — 0 из 9. У правила не было силы §100 (LDC-E0201первым отказом) и связывателейfor; обязанность выписывалась декларациейnorm, которой в языке нет (LDC-E1321), вместо деонтической головы правила; у закрытия стояла дата вместоInstant; посылка выбиралась по АРНОСТИ и ловилаLDC-E2104«неявных конверсий нет» (§48). Формы сняты с корпуса и проверены компилятором, посылка ищется по подписи — стало 6 из 9, остальные отказывают по существу (стратификация §110). Там же закрыт разрыв с планом, требующим «check И differential до показа»: прошедший check черновик лоуверится, и его байты §208 сверяются с оракулом; состояний четыре, включая отдельное «CLIR не собрался» — отказlowerна чистом check не есть расхождение движков, которых даже не спрашивали. Общий вывод: все семь — один класс, текст рядом с кодом обещает больше, чем код делает; он не ловится ни типами, ни differential, ни e2e, и у каждой починки здесь есть канарейка, проверенная падением. Границы соблюдены буквально. Семантики в приложении нет ни строчки (инвариант 5): формы из CLIR — структурная проекция объявлений, не вычисление; вербализация §218 и аналитика трека О зовутся ТОЛЬКО у оракула (инвариант 6), и без него панель говорит об этом, а не пересказывает нормы своими силами; расхождение движков открывает форму квалификации (инвариант 8), а кнопки «принять ответ такого-то движка» в интерфейсе нет. Prose, схемы и голдены не тронуты — семантика 0.1 заморожена (инвариант 9). -
Атлантическая хартия и Декларация Объединённых Наций формализованы одним пакетом: первый международный акт корпуса и первый вывод, пересекающий границу двух инструментов. Новый пакет
intl.wwii.united_nations— два закреплённых документа (Хартия 14.08.1941, 2 350 байт; Декларация ОН 01.01.1942 с перечнем 21 присоединившегося, 2 197 байт), 17 фрагментов, 23 правила, 8 норм-шаблонов, 1 приоритет, 84 факта. Сценариев 15/15, авторских тестов §267 6/6, глубина Хартии EXECUTABLE 7, ANCHORED 1 из восьми пунктов, покрытие 96,4 % и 99,6 %, разметка §218 полная (56 объявлений, 31 норма, ноль без метки). Почему один пакет, а не два. Декларация начинается словами «Having subscribed to a common program … known as the Atlantic Charter» — то есть включает Хартию отсылкой. В разных пакетах на этом месте стояла быexternal-граница; здесь ребро ИСПОЛНЯЕТСЯ правилом, и сценарий UN-09 проводит вывод от пункта 1 Хартии («their countries seek no aggrandizement») к заключению преамбулы Декларации. Другого вывода через границу инструмента в корпусе нет. Три механизма, которых в корпусе не было. (1) Гард по ПАРЕ, а не по держателю: обязательство (1) действует «against those members of the Tripartite Pact and its adherents with which such government is at war», и обязанность существует у пары (правительство, противник). Ради этих шести слов документ и подписуем: СССР воевал с Германией и не воевал с Японией. UN-03/04/05 подают одну и ту же норму трём мирам — 1942 год с одной войной, 1942-й с вопросом о Японии, 9 августа 1945-го с двумя, — и текст нормы между ними не меняется ни на букву. (2) Ось редакций из РАСТУЩЕГО множества адресатов при неизменном тексте: запрет сепаратного мира связывает 26 → 47 правительств за 38 месяцев, и окно каждой нормы открывается датой, когда связан ИМЕННО ЭТОТ адресат (Турция — 24.02.1945, СССР — 01.01.1942). Все прежние оси редакций приходили от поправок к тексту. (3) Полномочие с условием, для которого текст не называет решающего органа: «rendering material assistance» не поручено никому, канал суждения §47.3 требуетauthority, и выдумать его значило бы приписать документу орган, которого в нём нет. Условие оставлено эмпирическим: при недоказанном условии ответ NEITHER, а не «нет» (UN-07/08). Заведена конвенцияunit: "ordinal"в обеих мерах §33.1 (ci/check_source_pinning.py,boundaries.py): Хартия делится на восемь пунктов «First,» … «Eighth,», нумерации цифрами в ней нет, и ни одна из шести прежних единиц её не видела. Какpoint,section,clause,word,principleиarticle_roman, конвенция НЕ угадывается и включается только объявлением акта; таблица числительных принадлежит акту. Проверено, что ни у одного другого акта корпуса мера от этого не изменилась. Единица деления у Декларации объявлена ОТСУТСТВУЮЩЕЙ, и это решение, а не пробел. Нумерованных пунктов в ней два, а нормы несут четыре места — оба пункта, оговорка о присоединении и посылка о подписке на Хартию. Мера по двум пунктам напечатала бы «2 из 2» и умолчала, что полномочие присоединения в знаменатель не входит вовсе: ровно тот отказ, ради которогоboundaries.pyпереписан с «затронуто/нет». Находка, квалифицированная и НЕ закрытая: окно нормы несёт дату, но не запирает статус позиции. Подстановка работает — у Турции окно начинается 24.02.1945, — аpositionsна 01.01.1942 отдаёт 47 связанных вместо 26. Обе реализации на этом входе дают БАЙТОВО один документ (сличениеlawc evalпротивlawref.evaluate), значит дефектаlawcилиlawrefздесь нет; §135 п. 3 требует «context/time scope удовлетворены», но нигде не сказано, чтоwindowшаблона нормы и есть этот time scope, а §137 трактует окно как период оценки цели. Решение — errata или уточнение прозы — за человеком; пакет делает пробел громким канарейкой UN-14, которая краснеет в день изменения поведения. Мёртвая норма при чистомcheck, пойманная сверкой CLIR. Полномочие присоединения было сначала написано формойeffect create(un_adherent(n))— грамматика её несёт (legal_effect = "create","(",proposition,")"),lawc checkиlawc lowerмолчат, а в CLIR приезжает литерал с предикатом…#create, которого в пакете не объявлено, и ВЫЗОВОМun_adherentвместо аргумента. На исполнении: позиция ACTIVE,valid_whenистинен, эффекта нет, ни одной issue. Наличие позиции этого не ловит — поймано прямым чтениемpayload.effectв CLIR. Переписано голой формой (effect un_adherent(n)), которой пользуется весь корпус, и закреплено сценарием UN-15, спрашивающим САМ эффект и его каскад вun_participant: осуществлённое полномочие делает государство участником, при недоказанном условии — NEITHER. Квирк публикации закреплён, а не исправлен: Avalon печатает «Tripartite Pact :and its adherents» с лишним двоеточием, которого нет в «Pillars of Peace» (1946), и «Mr. Churchill ,» с пробелом перед запятой. Правка сделала бы hash-стабильную копию недостижимой из настоящей страницы — тот же случай, что латинская p уindependenceи «Brittish» уus-declaration. -
Пакт Молотова–Риббентропа формализован целиком: ничтожность ab initio впервые отличается от прекращения исполнением, а не комментарием. Новый пакет
su.pact.molotov_ribbentrop— четыре закреплённых инструмента (договор о ненападении 23.08.1939, секретный дополнительный протокол, разъяснение 28.08.1939, постановление СНД СССР № 979-1 от 24.12.1989), 15 917 байт, 32 фрагмента, 40 правил, 6 норм-шаблонов, 4 приоритета, closure §70, канал суждения §47.3. Сценариев 16/16, тестов §267 9/9, глубина договора EXECUTABLE 7 из 7, покрытие 99,4–99,8 % по каждому из четырёх документов. Ради чего пакет существует. Два инструмента, подписанные в одну ночь одними людьми, имеют РАЗНЫЕ истории существования, и разводит их третий акт полвека спустя: п. 4 постановления прекращает договор 22 июня 1941 года, п. 7 отнимает у протоколов действие с момента подписания. Выражено не фактом, а поражением презумпцииInstrumentInForceFromSignatureдвумя правилами с объявленным приоритетом §106/§107:in_force_on(Treaty1939, @1940-06-01)→ TRUE_ONLY,in_force_on(Protocol1939, @1940-06-01)→ FALSE_ONLY,in_force_on(Treaty1939, @1941-07-01)→ FALSE_ONLY. Второй и третий ответы одинаковы по виду и получены разными путями — путь виден в proof-графе. Коллизия пп. 4 и 7 внутри одного акта (п. 4 относит «другие советско-германские договорённости» к утратившим силу, то есть до 1941 года действовавшим) разрешается специальностью, и приоритет объявлен явно. П. 7 выводится из пп. 5–6, а не объявлен фактом; MR-05 показывает избирательность вывода — у договора ничтожности нет. Заведена конвенцияunit: "article_roman"в обеих мерах §33.1 (ci/check_source_pinning.py,boundaries.py): русская автоконвенция берёт только арабский номер статьи, и договор со статьями I…VII был бы невидим молча — класс отказа «26-бап до конвенции kk». Как и пять прежних объявляемых единиц, не угадывается: русские акты цитируют римские статьи чужих договоров внутри своего текста. Четыре находки об инструментах, полученные сборкой: (1) отчёт учёта единиц ключуется по BASENAME документа — четыре файлаru.txtсхлопывали четыре измерения в одно молча; (2) ворота глубины берут первую по алфавиту карту статей, и пакет, у которого первой оказалась карта без единицы деления, выпадал изci/check_formalization_depth.pyцеликом (depth→ пустые строки →continue); (3)MISSING_POLICY— issue уровня документа, а не запроса: один термadd_calendar_periodкрасит каждый запрос пакета, и без политики §86 краснели 10 сценариев из 13, ни один из них срока не спрашивая; (4) поверхность §267 политику §86 передать не умеет (deadline_policyвcontextне разбирается), поэтому срок статьи VI в.lawtestМОЛЧИТ приCOMPUTED— заведены два сценария-сторожа на NEITHER. Правовое решение не принято и названо: статья VI о начале течения срока молчит, а ответ от политики зависит —same_dayдаёт 1949-08-23 / 1954-08-23,next_day— 1949-08-24 / 1954-08-25. Обе формы прогоняются (MR-09/MR-10), чтобы разница осталась записанной. Байты закрепляются из НЕИЗМЕНЯЕМЫХ ревизий Викитеки поoldid(corpus/tools/fetch_molotov_ribbentrop_text.py), фрагменты режутся генератором (sync_molotov_ribbentrop_fragments.py); редакционные сноски участников Викитеки в срез не входят, неразрывные пробелы постановления (125 штук) перенесены как есть. -
Довод Декларации независимости разобран профилем §274: вывод неуязвим, и держится он на ОДНОМ абзаце эпилога. Новый файл
corpus/laws/us-declaration/05-argument.law— 5 поражаемых правил и один узелpriority; сценарииUSD-13…USD-16(прогон вырос 12 → 16, differential 56 вызовов байтово, включая все четыре запросаargumentation, — значитlawcсчитает 212-аргументный граф так же, какlawref). Файл отделён от 02–04 не по вкусу: те записывают, что акт УСТАНАВЛИВАЕТ, этот — что он ДОКАЗЫВАЕТ, и доказательство живёт не в baseline, а в отдельном виде запроса. Baseline не тронут, и это проверено не рассуждением: восемь прежних сценариев прошли без единой правки ожидания. Структура спора — собственная структура акта. Большая посылка «a long train of abuses … evinces a design to reduce them under absolute Despotism» записана поражаемым правилом с допущениемnot_known(light_and_transient_causes); возражение, которое акт называет сам («Prudence, indeed, will dictate…»), — вторым поражаемым правилом; ответ на возражение («Our repeated Petitions have been answered only by repeated injury») — третьим, с отрицательной головой. На полном тексте: 212 аргументов, 83 атаки (2 rebut + 81 undermine), 82 из них побеждения, grounded out — РОВНО ОДИН аргумент (довод о благоразумии), одно preferred extension, класс ответа SKEPTICALLY_ACCEPTED при 27 аргументах за цель — по одному на каждый представленный факт: множественность и есть «a long train». Находка, которой не даёт чтение текста. USD-14 изымает ровно один факт —petitioned_for_redress, читаемый только правилом ответа на возражение, — и вывод падаетSKEPTICALLY_ACCEPTED→REJECTED, 81 аргумент уходит в out: рушится вся цепь «умысел → непригодность правителя → необходимость отделения». Двадцать семь обвинений сами по себе довода не держат; его держит один абзац эпилога. Класс при этом именно REJECTED, а не NO_ARGUMENT — аргументы за цель существуют и остаются 27, они перестают быть защитимыми, и различие проверяется отдельно. USD-15 отделяет «открытая точка подрыва» от «подрыв состоялся»: без заявленного возражения атак ноль, а допущение остаётся допущением. Границы названы, а не обойдены. Профиль не видит НИ ОДНОЙ нормы пакета — у власти, иммунитета, свободы и обязанности голова не Literal (§274.1), и все семь стоят вskippedRulesпоимённо с причиной. Довод кончается там же, где кончает его акт: на необходимости отделения; дальше начинается провозглашение. УмолчаниеmaxArguments= 64 этим актом превышается, и USD-16 закрепляет, что отказ ГРОМКИЙ: fatalRESOURCE_LIMIT, ни одного результата, никакого частичного вывода (§238); капы подняты осознанно, потому что занижение спрятало бы ровно ту множественность, ради которой акт и представил список. Единственное истолкование пакета — узелpriority PetitionsAnswerPrudence— названо прямо в шапке файла и проверяемо: снимите его, и оба довода побеждают друг друга взаимно. Две карты спора не совпадают, и это про инструменты, а не про акт. О-трековыйlawref argmap(L4-lite, проекция §107/§185 из proof-графа) на том же деле показывает 1 атаку — только rebut, снятый приоритетом; профиль §274 показывает 83. Причина: подрыв допущенияnot_known§113 defeat-узла в baseline не порождает, и проекции его взять неоткуда. Исход обе карты дают один (довод о благоразумии — out), но 81 из 83 атак видна только профилю. -
Ядро Lean отвергает сертификаты у пакетов с ОБЪЯВЛЕННОЙ константой §54 — дифференциал этого не видит. Найдено на прогоне сертификатов нового пакета:
CHECKED 0, все вызовы отвергнуты сообщением «литерал листа не совпадает с assertion байт-в-байт (§208)». Узелassertionхранит литерал как написано (const_ref), лист proof-графа — после разрешения константы (entity_ref), и §208-совпадение недостижимо по построению. Дискриминатор проверен исполнением, а не рассуждением: ломает именно ОБЪЯВЛЕННАЯconst X: T = …;karamolaс 2 430 листамиconst_refот НЕОБЪЯВЛЕННЫХ имён зелена (89/89), пакеты без констант тоже (independence47/47). Затронуты ровно четыре:criminal-code(117 констант / 120 утверждений),us-declaration(38/35),zheti-zhargy(34/33),state-duty(7/7). Сломалось коммитом f12168b (E-0032 п. 2) того же дня — до лоуверинга констант объявленная константа в assertion-узел не попадала.ci/check_kz_differential.pyпри этом зелёный: обе реализации разрешают константу в листе одинаково, байты сходятся — расхождение видно ТОЛЬКО третьей ноге контура, ровно тот случай, ради которого она заведена. Не чинится здесь: требуется квалификация (дефект движков / дефект ядра / дефект SPEC), подгонка сторон друг под друга запрещена инвариантом 8. -
ОСМС: третья мера полноты закрыта — шестнадцать норм, не стоявших ни в одном proof-графе, оживлены сценариями. Обе меры §33.1 у пакета были полны (42 статьи из 42, байтовая доля 97,3 %, границ ноль) и слепы к тому, что 30 правил из 46 под делом: молчали вся сфера действия (ст. 2), конфликт источников (ст. 3) вместе с приоритетом
TreatyOverThisLaw, просрочка и пеня (ст. 30, 31), полномочие §127 о порядке закупа (ст. 34) и ответственность (ст. 39) — шесть «исполнимых» статей из четырнадцати. Статических отказов при этом не было (check_dead_rulesмолчал верно), дыра была в сценариях. ЗаведеныOSMS-17…OSMS-23(16 → 23): приравнивание к гражданам по трём основаниям, обе ветви §206 в определении члена семьи иностранца, победа международного договора над Законом (FALSE_ONLY, а не молчание), два подпункта местного бюджета ст. 26-1 с изъятием §113, пеня 9 000 × 0,0004 × 1,25 × 13 = 58,5 → 59 ₸ (HALF_UP §50), полномочие ст. 34 сPOWER_INVALID_EXERCISEпри неустановленномvalid_when, бланкетная связка ст. 39. Прогон 23/23, differential пакета байтовый, мёртвых правил 0 из 46, узловdefeat5 → 8. Попутно исправлена висячая аннотация@source(LAW_405_ART12), привязывавшая понятие ст. 3regulated_matterк статье 12; метка §218 добавлена мостуConstitutionalHealthProtectionBridgeи его предикату (неразмеченных норм 0); раскладка приведена кdocs/PACKAGE-LAYOUT.ru.md(00-package.law→package.law,13-sources.law→sources.law), у пакета впервые заведена поверхность §267 —corpus/laws/osms/tests/(приравнивание ст. 2, ответственность ст. 39, пеня ст. 31; оба тулчейна дают PASS). -
Храповики, разошедшиеся с CLIR при переезде ОСМС на A3, пересняты точечно. Свёртка четырёх правил-редакций предельной величины в два уменьшила число норм (48 → 46), и это уронило числа в трёх реестрах, а перезаморожен был только
label-ratchet:corpus/dataset/norm-coverage.jsonдержал 32 при факте 30 (check_datasetчитал бы это как «покрытие усохло — сценарий выпал из прогона»),ci/formalization-depth.jsonдержалEXECUTABLE 13 / ANCHORED 29при факте 14/28 и печатал «РЕГРЕСС ГЛУБИНЫ» на РОСТЕ глубины. Сняты текущие значения:norm-coverageosms 32 → 46,formalization-depth13/29 → 14/28,scenario-ratchetosms 16 → 23,label-ratchet111/46 → 112/47. -
Декларация независимости США (1776) формализована; первый в корпусе акт БЕЗ ЕДИНИЦЫ ДЕЛЕНИЯ, и одна из двух мер §33.1 у него неприменима — сказано прямо, а не спрятано. Новый пакет
us.organic.declaration(corpus/laws/us-declaration/, 34 фрагмента, 21 правило, 7 шаблонов норм, 3 канала суждения, 2 замыкания). Байты закреплены со страницы Национального архива США процедуройcorpus/tools/fetch_declaration_text.py(9 151 байт,sha256:49966…, извлечение идемпотентно, повторный--checkпротив живой страницы сходится); фрагменты порождаютсяcorpus/tools/sync_declaration_fragments.py, структура среза проверяется генератором (33 абзаца акта, 18 претензий «He …» и 9 подпунктов «For …», 71 строка подписей), а не глазами. Байтовое покрытие 99,6 % — непокрытые 34 байта РОВНО переводы строк между абзацами, текста акта вне фрагментов ноль.materialization_status—PINNED_UNOFFICIAL_COPY, и выше он не поднимется: NARA публикует транскрипцию ГРАВЮРЫ СТОУНА, то есть третий шаг от пергамента. Публикация Управления по пересмотру законодательства (Organic Laws) из этой сети недостижима, на govinfo Декларации в пакетах USCODE нет — обе проверки записаны в докстринге, чтобы их не повторяли. Что выведено. Право этого акта живёт в 158 словах постановляющего абзаца и в части абзаца оснований; сценарииUSD-01…USD-12(12/12, differential 52 вызова байтово) держат: статус свободных и независимых государств и два его следствия; четыре ПОЛНОМОЧИЯ §127 по названному перечню, ЗАМКНУТОМУ closure §70; ОТКРЫТЫЙ остаток «all other Acts and Things which Independent States may of right do» — каналом суждения §47.3 с органомLawOfNations, потому что закрывать его значило бы объявить от имени Декларации то, чего она о себе не говорит; иммунитет §128 на неотчуждаемые права (protected_effect terminate(…)— неотчуждаемость И ЕСТЬ защита от прекращения); правомерность власти из согласия управляемых; власть изменить или упразднить правление и СВОБОДУ §126 в выборе формы нового; право И долг сбросить правление, где долг переходит ACTIVE → SATISFIED от факта. Оба суждения о правлении отданы органуThePeople— акт сам называет того, кто оценивает, и вычислимым предикатом эта оценка не притворяется. Чего не выведено, и это половина текста. 27 обвинений королю — 655 слов из 1 334 — констативны: обвинения в прошлых фактах против одного поимённо названного лица, из которых норма не следует ни для кого. Они закреплены нормативными фактами §71 (каждое своим фрагментом) и замкнуты closure §70 по собственным словам акта «To prove this, let Facts be submitted to a candid world»; выводится из них ровно то, что акт о них сам говорит, — что каждое имеет прямой целью установление тирании. Правила «N обвинений ⇒ длинный ряд злоупотреблений» НЕТ: такого порога в тексте нет, а выдуманный порог заставил бы меру покрытия врать. Мера, которой нет, названа по имени. У Декларации нет единицы деления — ни статей, ни пунктов, ни разделов, ни одного маркера, за который могла бы взяться конвенция.check_source_pinning.pyвозвращаетunmeasured,boundaries.py— «мера по статьям неприменима», и обе строки ВЕРНЫ (тот же класс, что английский акт 1691 года). Объявлятьunitнельзя, придумывать позиционную нумерацию абзацев §33.1 запрещает прямо. Следствие записано в шапке пакета: заголовок «полная формализация» для него недостижим по построению, и утверждение «из акта что-то выводится» обеспечено ТОЛЬКО сценариями — они здесь не регрессия поверх меры, а единственная мера. -
Канал суждения §47.3 не проходит через голову-НОРМУ и через запрос
positions— найдено исполнением, закрыто мостовым предикатом. Строгое правило читаетexternal judgment relation, голова —power: ожидалсяREQUIRES_JUDGMENT, полученCOMPUTEDс пустымjudgmentRequests, и позиция просто не появилась — то есть различие «право молчит» против «это решает орган», ради которого §47.3 существует, исчезает без единого признака. Причина:whynot.judgment_blockersразбирает недостижимость ЛИТЕРАЛА, а у нормы литерала нет. Рядом:effect create(P)полномочия в базу фактов не попадает, иtruthнаPдаётNEITHERвсегда. Приём, который работает и применён во всех трёх суждениях пакета: между суждением и нормой ставится обычный литерал-МОСТ,truth-запрос к нему даётREQUIRES_JUDGMENTс типизированным запросом и органом, а норма читает уже мост. Расширяет п. 8 списка «зелёный check, мёртвое право»: там условие было «правило должно быть строгим», здесь строгости мало. Побочно: запрет метки §218 уexternal judgment relation, записанный 28.08.2026, устарел — метка проходитcheckиlower(живой прецедентcorpus/laws/fnma-income/02-ontology.law:444), и разметка нового пакета от этого полная: 83 объявления, 28 норм, без метки ноль. -
Госпошлина перецелена на действующий Кодекс: закрепление нашло не расхождение чисел, а расхождение ПРЕДМЕТА. Пакет
kz.corpus.statedutyгод моделировал государственную пошлину за регистрацию актов гражданского состояния — ставки 1 / 2 / 2 МРП с якоремKZ-TAX-CODE-ART-537. Фаза 0 закрепила байты Налогового кодекса № 214-VIII от 18.07.2025 (sources/tax-code/ru.txt, 4 520 904 байта, извлечение идемпотентно) и показала, что такой пошлины в законе нет: перечень объектов взимания ст. 664 состоит из шестнадцати позиций, и регистрации актов гражданского состояния среди них не значится. Во всём Кодексе это словосочетание встречается дважды, и оба раза в консульском канале — ст. 675 п. 7 (объект консульского сбора) и ст. 671 (освобождение при обращении через загранучреждения). Ставки восходили к Кодексу 2008 года, пережившему две отмены. Молчание держалось на двух дырах сразу: закрепления не было вовсе, а якорь@source("KZ-TAX-CODE-ART-537")не разрешался никуда — в файле не было ни одного узлаsource, и ссылка в пустоту не роняла ниcheck, ниlower, ни один прогон. Прогноз по прецедентуbudget-2026(там закрепление исправило три числа из четырёх и номер статьи) подтвердился в худшем виде: там разошлись величины, здесь — предмет регулирования.Пакет перецелен на ст. 664, 666 и 669 главы 71: объекты взимания, семь ставок при выдаче виз, выезде на ПМЖ, оформлении гражданства и виде на жительство (0,5 / 7 / 30 / 1 / 0,5 / 1 / 4 МРП) и однократное освобождение кандасов и потомков вынужденно покинувших страну в периоды массовых репрессий. Срез узкий и покрыт целиком:
boundaries.pyдаёт 3 EXECUTABLE, 0 ANCHORED, 0 SOURCE_ONLY; ст. 665, 667, 668, 670 и 671 вscopeне вписаны и границами НЕ объявлены — там прямое исполнимое содержание, и назвать его «нечего исполнять» было бы неправдой. Виды действий сталиconstсentity_refвместо голых имён: голое имя понижается вconst_refпо имени и не требует существования символа — той же формой пользовалась прежняя редакция пакета. Сценариев 6 вместо 3 (храповик поднят), все зелёные; из них три новых: SD-04 держит под делом умножениеQuantityнаIntegerв ставке «0,5 МРП за каждого приглашаемого» (§49, безразмерный скаляр — форма проходитcheckиlowerнезависимо от исполнимости и молчала бы до первого дела), SD-05 — ограничение ст. 669 п. 2 «предоставляется один раз», записанное положительным фактом реестра, а не отрицанием:not_knownв строгом теле барьер §111, а default negation §113 подняла бы пакет на L1, которым он не был; SD-06 — граница самого освобождения. Ст. 666 пп. 4 назначает приобретению, восстановлению и выходу из гражданства одну ставку, и склеить их одной константой было соблазнительно, но ст. 669 освобождает ТОЛЬКО от пошлины за приобретение — склеенная константа дала бы кандасу нулевую ставку и при выходе из гражданства, вывод, которого в законе нет. Константа расщеплена, ставка осталась общей. Потребители поправлены вместе с актом: комментарийkz.corpus.marriageо пошлине за регистрацию брака снят, сценарийBGT-02перецелен со ставки за развод (её в Кодексе нет) на визу въезда-выезда, 7 МРП. -
«О государственной независимости»: деонтика и закрытый перечень ст. 6 — 33 нормы из 33 под доказанным применением. Продолжение разбора, начатого мерой применения: после того как все 18 статей получили дела, осталось измерить, что именно ИЗ статей выражено. Внутри статей нашлись положения без единого символа, и они разделились надвое. Выражены три правомочия и обязанность, у которых есть вывод: ст. 12 абз. 1 «ВПРАВЕ создать» финансово-кредитную и денежную системы —
power§123 (налоговая и таможенная сюда не вошли: их Республика «организует», иная модальность); ст. 16 предл. 1 «имеет ПРАВО на создание собственных вооружённых сил» —power, где названная в статье цель стоитvalid_when, а не рядом с правомочием; ст. 15 абз. 1 «принимает меры по охране независимости» —dutyсgoal maintenanceтого же строения, что ст. 8. Отдельно ст. 6 абз. 1: «народ… является ЕДИНСТВЕННЫМ носителем суверенитета» закрытclosure§70 — тем же приёмом, что перечень ст. 9. Без closure слово «единственный» пропадает: остался бы факт о народе, из которого не следует отрицание ни для кого другого; теперь проверенный претендент вне перечня получаетFALSE_ONLYс сертификатом закрытия, непроверенный — честный открытый мир. НЕ выражены осознанно конститутивные утверждения («независимое, демократическое и правовое государство», «является субъектом международного права», «имеет своё гражданство»): правило без посылок придало бы статье вид формализованной при пустом содержании — тот же отказ, что у нормы о недискриминации B3-3.1-01. Правил 30 → 33, norm_template 1 → 4, closure 1 → 2, мёртвых 0; сценариев 34 → 41, differential 41 из 41 байтово, вербализация 0 пробелов (модальностьpowerв пакете появилась впервые). Помощникexpect_positionsпереведён со словаря «шаблон → статус» на мультимножество «шаблон:статус → сколько»: правомочие ст. 12 создаёт по позиции НА СИСТЕМУ, и две такие позиции в словаре схлопывались бы в одну — пропажа любой прошла бы молча. Заявление в шапке акта «непокрытое целиком рамка портала» снято как не подтверждаемое замером: рамки 6 056 байт из 6 876, а 809 — текст самого акта (заголовки семи глав и подпись), против его байтов покрытие 93,6 %. Тем же кругом закрыты ОБА перечня ст. 17 — «герб, флаг, гимн» и «столица… - город Алма-Ата»: перечисление и определённое описание стояли открытыми, вопрос о символе или городе вне перечня получалNEITHERвместо «нет». Закрывается предикат, который СПРАШИВАЮТ (symbol_of_republic), а не тот, который ассертят: строгое правило отрицания не переносит, и closure наstate_symbolоставил бы вопрос по-прежнему без ответа. Столица закрыла заодно последнее объявление пакета, которое не читало ни одно правило, — мёртвых символов 0 из 76. Наконец, 809 байт текста акта, не лежавшие ни под одним фрагментом, закреплены восемьюkind section(семь заголовков глав и подпись) — генераторsync_independence_fragments.pyрасширен, фрагментов 19 → 27, покрытие 63,6 % → 67,8 %, и непокрытое теперь ПО ЗАМЕРУ рамка портала: 1 770 шапка + 4 287 подвал + 26 разделителей строк, ни байта акта. Глубина §33.1 не сдвинулась (18/0/0): главы не статьи, и мера их не считает — ровно поэтому пробел и был невидим. Итог: правил 33, closure 1 → 4, фрагментов 27, сценариев 34 → 47, differential 47 из 47 байтово.scenario-ratchet34 → 47,norm-coverage30 → 33,label-ratchet74/31 → 88/37. -
§90 исполняется:
scopeобъединяется сwhen, а не отменяет правило. §90 говорит дословно, чтоscopeсемантически объединяется сwhenи хранится отдельно в IR ради indexing, analysis и объяснений. Слово «объединяется» не исполняла НИ ОДНА реализация: нетривиальныйscopeдавалNON_EXECUTABLE_RULE«за пределами v1» — у оракула (strict_rule_status,defeasible_rule_status,whynot._skip_reason) и у движка (strict.rs,defeasible.rs,whynot.rs) одинаково. Квалификация по инварианту 8 — дефект обеих реализаций, не SPEC: прозе они не противоречили, а честно ОТКАЗЫВАЛИ, поэтому errata не заводится (прецедент — порт Decimal-деления). Цена измерена исполнением: в корпусе молчали 14 норм Закона «О правовых актах» — статьи 3, 55 и 57 целиком, плюс по норме статей 4, 5, 11, 34, 45 и 65, — среди них пункт 1 статьи 5 о том, что никакой акт не может противоречить нормативному постановлению Конституционного Суда. Молчание уже роняло регрессию (LEG-03-OUTSIDE-HIERARCHY-SILENT), аci/check_dead_rules.pyбыл красным: 14 из 15 непрописанных правил всего корпуса приходились на этот пакет. Правка сделана в реализациях, а не в акте, и это принципиально:scopeтам поставлен осознанно (§91 и §91.1 — два независимых статуса, присутствие акта в деле есть условие применимости, а не срабатывания), и перенос конъюнкта вwhenбыл бы подгонкой права под реализацию. Общийscope_conjuncts(lawref/evaluator/rules.py,law-eval/src/solver.rs) разбирает scope ТЕМ ЖЕflatten_bodyи ставит его конъюнкты ПЕРЕД телом — порядок значим связыванием, а не семантикой. Закрыт заодно норм-путь §135, гдеscopeне читался вообще, то есть условие применимости молча отбрасывалось и норма создавалась шире написанной (латентно: таких правил в корпусе нет). ВекторT144держит обе стороны границы одним документом: в scope и с телом — выводится, вне scope — нет, в scope без тела — нет; реализация, отбросившая scope, вернёт второго, потерявшая тело — третьего. До порта вектор падал наlawc eval, после —resultHashиproofHashсовпали байтово.check_differential122/122, оракульный selftest OK, 285 runnable-векторов зелены, замороженные голдены неподвижны,cargo clippy/testчисты. По пакету: применённых правил 64 → 77, статей без единого доказанного применения 50 → 43,LEG-03зелёный. -
Девять статей «О правовых актах» перестали выглядеть недоделкой:
SOURCE_ONLY 9→EXCLUDED 9. Две обязательные меры полноты читают РАЗНЫЕ поля одного понятия: учёт статей (ci/check_source_pinning.py) —declaredс проверяемой по тексту причиной, глубина (boundaries.py,ci/check_formalization_depth.py) — списокexcluded. У пакета стояло только первое, и статьи 21, 33, 33-1, 33-2, 38, 39, 41, 44 и 63 — те, чьё содержание исключено изменяющими законами и от которых в закреплённых байтах остался ОДИН ЗАГОЛОВОК, — попадали в глубину как «текст сохранён, но не формализован». Добавлено полеexcluded(прецедент —health-code);declaredсохранён, потому что именно он несёт причину и держит границу честной. -
ЗПД (
kz.corpus.personal_data) введён под обе меры §33.1 и размечен §218 целиком. Проверка полноты нашла не пробел в акте, а пробел в измерении, и притом двойной. (1)boundaries.py::known_actsищетsources/**/articles.json, а у ЗПД рядом лежалtarget-articles.json— имя, которого инструмент не знает; акт выпадал из--allи, как следствие, из базыci/formalization-depth.json(20 актов, ЗПД среди них не было), то есть храповик глубины его не защищал вовсе: снятие правила или переезд якоря не уронили бы ничего. (2)check_source_pinningпечатал «учёт статей: НЕ ОБЪЯВЛЕН (статей 38, фрагментов 38) — полнота не измеряется». Обе слепоты были ЗАПИСАНЫ в STATUS.md как остаточные и с 27.08 не закрывались. Заведёнarticles.json— форма плоская, а не многоредакционная, и это не косметика: ворота глубины читаютdeclaredс верхнего уровня payload, тогда какaccounting_declarationумеет обе формы, поэтому в записи{"editions": [...]}границы были бы видны учёту статей и невидимы храповику — статья ушла бы изUNEXPLAINEDв одной мере и осталась бы в другой (проверено:declaredвышел пустым). Пять остальных закреплённых документов оставлены без учёта СОЗНАТЕЛЬНО: 326/311/350-VIII — омнибусные законы «о внесении изменений в некоторые акты», их собственная нумерация к ЗПД отношения не имеет, а фрагменты пакета адресуют статьи ИЗМЕНЯЕМОГО закона; у Правил № 395 и приказа № 190 в одном файле ДВЕ последовательности «N.», иunit: "point"слил бы их в одно множество при локаторахrules/иorder/. Измерено после правки: охват 38 из 38, с фрагментом 38, границ с причиной 2, неучтённых 0; глубина EXECUTABLE 27, ANCHORED 9, SOURCE_ONLY 2 при нуле необъяснённых. Разметка §218 доведена с 23/278 словаря и 0/108 норм до 278/278 и 108/108: до этого пакет стоял в нижнем ярусе корпуса рядом с ГПК, и вербализация звала нормы идентификаторами («активируется …Article9CitizenBankruptcy»). Храповикcorpus/label-ratchet.jsonподнят на достигнутое. Цена измерена, а не предположена: метки семантический хэш НЕ двигают (E-0010 подтверждена опытом), сдвигsemanticHashпакета целиком объясняется одним добавленным якорем §194. -
Сроки и пороги ЗПД стали ВЫЧИСЛЯЕМЫМИ; приоритет международного договора выражен — форма выбрана тремя замерами. Во всём пакете было ноль сравнений: тринадцать сроков и порогов стояли булевыми предикатами с величиной В ИМЕНИ, а шесть закреплённых величин не читало ни одно правило — дело сообщало вывод, ради которого норма существует. Теперь величины закреплены
Quantityс единицей §86 и читаются нормами переменной, дело сообщает ДАТЫ и ЧИСЛА. Правил 108 → 125, сценариев 20 → 21, байтовый differential по пакету 29 вызовов, 0 расхождений (включая читающие снимок календаря §85), доказанное применение 26/108 → 33/125. Политика §86 — вход дела, а не норма ЗПД: Закон сроки называет, порядка исчисления не устанавливает; взят общий порядок ГК ст. 173/176. Перевод нашёл содержательную ошибку модели: подпункт 9-4 ст. 9 отсчитывает три года НАЗАД («за период до трех лет, ПРЕДШЕСТВУЮЩИХ применению процедуры банкротства»), а модель говорила «со дня ЗАВЕРШЕНИЯ процедуры» — другая точка отсчёта и другое направление, то есть другая норма; булев предикат с величиной в имени это скрывал. Ст. 4 п. 2 (приоритет договора): дефитер оказался невозможен, и это свойство языка стоит записи. (1) Дефитер надprocessing_permittedдалdefeat … "reason": "strict-opposition"— голова закрытаderive_explicit_negative, замыкание выводит отрицание СТРОГО, defeasible против строгого не стоит; перевод правила вdefeasibleМОЛЧА ИНВЕРТИРОВАЛ ответ на положительном пути при чистомcheck. На голове, закрытойderive_explicit_negative, дефитер невозможен в обе стороны. (2) Полнота проверки, сделанная выводимой, отняла у пакета отрицательные ответы ЦЕЛИКОМ (PD-06: NEITHER вместо FALSE_ONLY): домен такого замыкания обязан быть АССЕРТИРОВАННЫМ — sandwich-порядок v1. (3) Негативная посылка внутри нормы дала BOTH: зависимость от закрытого предиката ставит норму позже замыкания. Итоговая форма — идиома самого пакета (scope_inclusion_established): дело сообщает положительный фактstatutory_rules_operative, а вытеснение пакет высказывает отдельной нормойTreatyRulesApply. Договор действует → NEITHER плюсtreaty_rules_apply(PD-21); FALSE был бы прямой ошибкой — «Законом не разрешено» там, где разрешить может договор. -
Единственное правило корпуса без анкера §194 закрыто — и это подняло глубину.
kz.corpus.personal_data#ConstitutionalPersonalDataProtectionBridgeбыл один из 1920 правил корпуса без@source: страница символа §194 показывала пустой раздел «Анкеры», то есть на вопрос «откуда это в праве» пакет не отвечал. Анкер — ст. 4 п. 1 («законодательство ОСНОВЫВАЕТСЯ на Конституции»), то самое положение, которое вводит конституционную гарантию в мир пакета. Следствие оказалось не косметическим: ст. 4 перешла изANCHOREDвEXECUTABLE(27/9 вместо 26/10) — до анкера из неё не выводилось ничего, хотя правило про неё существовало. Анкер, в отличие от метки, ВХОДИТ в преобраз §209:semanticHashпакета сдвинулся, и это единственная причина сдвига. Консьюмеров сдвиг не задел —kz.corpus.personal_dataне импортирует ни один пакет корпуса. -
law.verb.ru@0.6.1/law.verb.kk@0.2.1— правка формулировок §186. Цель контрфактического разбора и его ограничения суть статус-формулы §67 и САМИ начинаются словом «установлено», отчего фразы 0.6.0 давали «…дало бы установлено, что…» и «…только если сверх цели установлено: установлено, что…». Смысл был верен, чтение — нет, а подписывает юрист текст. Стало: «какое наименьшее изменение дела привело бы к тому, что …» и «Кроме цели, изменение обязано сохранить: …»; по-казахски исправлена та же стыковка («анықталса ғана … екені анықталған» → «Мақсаттан бөлек, өзгеріс мынаны сақтауға тиіс: …»). Правка текста — новый файл, а не правка существующего: иначе строкаlaw.verb.ru@0.6.0означала бы два разных текста иstale_verbalization§3.6 перестал бы срабатывать там, ради чего заведён. Состав ключей не менялся — это проверяет selftest отдельным утверждением. Семь консьюмеров переведены, векторVER-RU-L0-COUNTERFACTUALперезаморожен на 0.6.1;mcp/test_server.pyдержал версию пака строкой (law.verb.kk@0.1.0) и падал на подъёме по причине, к контракту отношения не имеющей — теперь версия читается из пина сервера, как реестрCONSUMERSчитает пин у владельца; три остальных вектора остались на 0.6.0 по прецеденту 0.4.0 → 0.5.0 — вектор доказывает, что рендерит ЕГО пак, а не что пак самый свежий. -
Оферта «Самоката» доведена: 32 правила → 53, 14 сценариев → 49, и обе меры §33.1 на ней ЗАГОВОРИЛИ. Проверка полноты пакета нашла не пробел в акте, а пробел в измерении: у оферты нет статей — она делится ПУНКТАМИ («5.3.2.», глубина номера до четырёх уровней), и ни одна из шести конвенций деления такой единицы не знала. Обе меры молчали по-разному и обе выглядели благополучно:
check_source_pinningпечатал «учёт статей НЕ ИЗМЕРЕН — конвенция деления не опознана»,boundaries.py— «заголовков „Статья N“ нет: мера по статьям неприменима». Заведена конвенцияunit: "clause"— по образцуpointиsection, то есть НЕ угадываемая: маркер «N.M.» в начале строки есть в любом кодексе, где это нумерация пункта ВНУТРИ статьи, и автоопределение подменило бы чужому акту знаменатель молча. Попутно закрыт зазор, который не проявлялся, пока такой единицы не было: подсчёт формализованных единиц брал префиксarticle/КОНСТАНТОЙ, поэтому акт с локаторамиclause/…получил быformalized = 0при 36 фрагментах — отказ громкий, но ложный. Префикс переехал в саму конвенцию (ArticleConvention.locator). Измерено после правки: охват 57 пунктов из 110, с фрагментом 34, границ с причиной 24, неучтённых 0; глубина EXECUTABLE 33, ANCHORED 0, SOURCE_ONLY 1; байтовая доля 23,6 % → 33,4 %. ЕдинственныйSOURCE_ONLY— п. 7.5.1, и он объявлен с причиной: норма там не написана НАМЕРЕННО, её отсутствие и есть weak permission §126. -
Перечень запретов п. 5.3 дописан целиком: 4 подпункта из 12 → 12 из 12. Восемь недостающих (5.3.1, 5.3.3, 5.3.5, 5.3.6, 5.3.8, 5.3.10, 5.3.11, 5.3.12) не были ни формализованы, ни объявлены границей — они просто отсутствовали, и не видел этого никто: учёт пунктов не измерялся, а
check_dead_rulesловит статический отказ исполнителя, а не ненаписанную норму. Оговорки записаны структурно: «кроме случаев, когда размещение было письменно одобрено» (5.3.5) и «без их личного согласия» (5.3.6) — тем жеnot_known§67, что и 5.3.4, и по той же причине (§105.1). Полнота перечня открытости его НЕ отменяет: она идёт от содержания 5.3.9, и на 5.3.11 («Вау-поиск» — ни оценки, ни открытой формулы) это видно яснее всего. -
Двенадцать норм, которые в акте были, а в пакете отсутствовали. Кроме перечня 5.3: право на лицензию Сервиса (2.1), право менять соглашение односторонне (2.2, 2.4), запрет и обязанность при несогласии (2.6), две обязанности о достоверности сведений (3.3 — цели достижения и поддержания, §124), права и обязанность Пользователя (5.1.1, 5.1.2, 5.2.1), заверение о ненарушении прав (7.3.4.2) и обязательство не размещать запрещённый контент (7.4.1). У пакета впервые появились деонтические позиции, не являющиеся запретом: три
dutyс целью поддержания, одна с целью достижения и одна с целью воздержания. Попутно исправлен якорь:BreachOfWarrantyMakesUserLiableбыл заякорен на п. 7.3.4.1 при заголовке «Пункт 7.3.4.3» — подпункт с нормой фрагмента не имел вовсе, а чужой фрагмент нёс чужую норму. Иuser_warrants_authorshipперестал быть эмпирическим фактом дела: заверение ВЫВОДИТСЯ размещением, как и говорит шапка п. 7.3.4 («размещая … заявляет, гарантирует и подтверждает»), — прежде предикат стоял в словаре и не читался ни одним правилом. -
Покрытие норм доказанным применением: 21 из 32 → 53 из 53. Одиннадцать правил компилировались, проходили
lawc check, не числились мёртвыми — и не стояли ни в одном proof-графе, то есть не отвечали никогда и ни на что. Мера вcorpus/dataset/norm-coverage.jsonпечатала это одним числом без имён, и «21 из 32» читалось как достижение, а не как список из одиннадцати молчащих норм. Заведено 35 сценариев; каждый несёт утверждение, а не отметку о покрытии, — контрастные пары (SAM-18/19 — изъятие владельца снимает запрет; SAM-33/34 — письменное одобрение; SAM-39/40 — запрет наступает последствием, а не действием; SAM-15/16 — один факт даёт два самостоятельных вывода). Итог прогона: 49/49 PASS с байтовым differential внутри. -
run_samokat_scenarios.pyвписан в храповик сценариев — шестой раннер был вне него. Прогон печатал «N/N PASS» по тому, что до него дошло: выпади сценарий, уменьшились бы и числитель, и знаменатель, и потеря покрытия осталась бы невидимой. Разделrunners.samokatвcorpus/scenario-ratchet.json, сверка — общей копией соглашенияcorpus/ratchet.py, проверена мутацией в обе стороны (48 против 49 и исчезнувшее семейство). Вне храповика остаются ещё три раннера:faraid,de-legibus,uefa. -
ru-samokat-eulaназван в каталоге MCP. Строки вPACKAGE_TITLESне было, и пакет отвечал на запросы своим ключом. Без титула остаются ещё семь пакетов корпуса. -
Найдено сценарием, не чтением: молчание судьи §47.3 читается запросом §126 как отсутствие запрета. SAM-21 спрашивает слабое разрешение на размещение контента, который владелец НЕ признавал нежелательным (п. 5.3.9), и получает
trueсо статусомCOMPUTED. На том же молчании запрос об истинности (SAM-05, SAM-06) даётREQUIRES_JUDGMENT, а не «нет оснований». Обе реализации отвечают байтово одинаково, поэтому это не расхождение и не дефект реализации: §126 говорит про rule universe, snapshot, interpretation и closure policy — и ничего не говорит про неотвеченный канал суждения. Квалификация (дефект SPEC либо намеренное поведение) не выносится: она за человеком. Сценарий заведён, чтобы поведение не могло измениться молча. -
Ст. 46 Конституции 2026 заформализована целиком: правил на статью 9 → 32. Четырнадцать подпунктов (1, 5, 6, 7, 9, 12–16, 19–22) не имели НИ ОДНОГО узла, при том что мера §33.1 показывала статью
EXECUTABLE— якорь стоит на статью, и семь правил из двадцати двух подпунктов от двадцати двух неотличимы. Записаны 22 нормы-компетенции §127 (power), одна норма-статус (Верховный Главнокомандующий — та же форма, что у статусов ст. 42) и два закрытых перечня. По пакету: правил 91 → 114, норм-шаблонов 17 → 39, нормативных фактов 26 → 43, объявлений словаря 209 → 293. Двадцать пять сценариев нового семействаKZ-CON-POW-01…25; регрессия 115/115 → 140/140,corpus/scenario-ratchet.jsonпополнен строкойPOW: 25— семейство обязано быть вписано осознанно, и храповик это потребовал сам. Разметка §218 не просела:unlabelled159 → 159 приlabelled66 → 168 и нормах 84 → 129. -
Закрытый перечень нельзя выразить перечислением: enum в 0.1 — чистый словарь. Первая редакция ст. 46 п. 5 объявляла десять должностей через
enumи полагалась на типизацию. Проверено исполнением — не работает ни на йоту: на месте должности из перечня одинаково проходят должность вне перечня,Integer,Dateи произвольная сущность, и ни одного issue при этом не звучит. Причина названа в DECISION-0047: у перечисления нет потребителя в семантике 0.1 («вlawref/…/evaluator/словаenumнет»), а утверждения дела не типизируются вовсе. Перечни подпунктов 5 (десять должностей) и 14 (семь видов отличий) переведены на константы §54 плюс нормативный факт принадлежности, который правило обязано прочитать:MinisterOfSportтеперь даётNEITHER, аProsecutorGeneral—TRUE_ONLY. Перечисления оставлены только там, где перечень открыт (вид органа п. 21) либо не меняет последствия (действие п. 6), и в коде прямо сказано, что они несут словарь, а не ограничение. Побочно: это второй за сессию случай, когда конструкция принимается компилятором и ничего не делает на исполнении — первым было отрицание §118. -
valid_whenу полномочия — не формальность. Двадцать две новые нормыpowerнаписаны с непустымvalid_whenпо прямой причине:powerбез него даёт чистыйlawc checkиLDC-E1305наlower. Там, где Конституция условия осуществления не ставит (помилование, гражданство, приём грамот), условием стоит должность носителя — как это уже сделано уReferendumPower; там, где ставит, стоит условие статьи (подчинённость органа Президенту п. 6, принадлежность должности перечню п. 5, статус Верховного Главнокомандующего п. 9). -
Подсказка расширения при наведении показывает норму, а не только её вид. Карточка декларации вынесена в
editors/vscode/lib/hovercard.jsи печатает то, что компилятор уже клал в узел AST, а подсказка выбрасывала: метки §218 (что норма значит по-человечески; официальные раньше переводов), вид отношения §45 иkey(…)§51,effective/governs§31, поля §35, варианты enum, тип результата функции,severityограничения, аннотации §15, комментарий автора над объявлением и срез исходника самого объявления — а главное, официальный текст статьи §28:@source(X)разрешается в фрагмент того же пакета §22, и закреплённый текст читается прямо в подсказке, не открывая файл источников. Объявление из соседнего файла показывается вместе с именем файла и числом вхождений — переход ради одной строки больше не нужен. Своей семантики в карточке нет (инвариант 5): печатается либо поле AST как есть, либо срез авторского текста; выражения (when/then) в текст НЕ пересобираются — их печатаетlawc fmt, и второй принтер разошёлся бы с ним молча. Прежняя короткая карточка осталась подlaw.hover.detail: "compact", длина среза —law.hover.maxLines. Комментарий берётся консервативно: рамка раздела (// --- Жарғы 7 … ---) и комментарий, оторванный двумя пустыми строками, к объявлению не прилипают, одна пустая строка (блок аннотаций между) — прилипает. -
Вербализация снова тотальна:
law.verb.ru@0.6.0иlaw.verb.kk@0.2.0; шаг 35/39 стоял красным. Замер на HEAD в чистом worktree — 36 маркеровLDC-E8201в пяти пакетах корпуса, красных пять консьюмеров из шести (зелен был только паспорт Конституции: его семь пакетов новых видов узла не несут). Все три вида узла стояли в реестре ОСОЗНАННЫХ исключенийlawref/selftest.pyс причинами вида «объявление границы, тела не несёт» — и реестр перестал быть верным ровно тогда, когда корпус ими воспользовался: канал суждения §47.3 привёлexternal_decl(8 в пяти пакетах), мост параметров A3 —function_decl(21), «Жеті жарғы» —counterfactual_decl§186. Закрыто фразами четырёх узлов, трёх термов (условный §56,variant_valueсо словарёмstdVariants, нульарный вызов — у него в тексте стояли пустые скобки) и булевой формулы §90. Замер после: 52 документа, 38 357 подписываемых блоков, ноль пробелов на обоих языках. Differential не затронут: вербализация живёт только в оракуле, её контракт — VER-голдены. -
Найдено попутно и хуже исходного: область применения §90 пропадала из ревью-документа МОЛЧА. Слова
scopeвverbalize.pyне было вовсе, поэтому у 14 правилkz.corpus.legal_actsтекст утверждал норму ШИРЕ, чем она есть: «Всегда „акт является нормативным“» вместо «Правило применяется к случаям, когда акт рассматривается в деле». Тотальность §3.3 такого не видит по построению — она считает маркеры, а у пропущенного ПОЛЯ маркера нет. Квалификация опирается на prose: §90 хранитscopeотдельно «для indexing, analysis и объяснений», а вербализация и есть канал объяснений (тот же довод, что закрыл цель воздержания §124.3 в 0.4.0); §91 против §91.1 держит различие применимости и срабатывания, ради которого поле отделено. Теперь область применения — отдельное предложение, а младший пак получает ВИДИМЫЙ маркер:VER-RU-GAP-SCOPEзамораживает маркер, которого раньше не было, — то есть 0.5.0 стал честнее, а не беднее. -
Пустое условие правила больше не читается «если условие выполняется всегда».
bodyиscopeобязательны в схеме узла, поэтому ненаписанное автором условие приезжает константойtrue; 11 правилkz.corpus.legal_actsиз-за этого несли маркер «формула boolean». Рендерер отличает константу компилятора от написанного условия и берёт фразу «Всегда X», которая лежала в паках с 0.1.0 и не срабатывала ни разу. -
Два консьюмера вербализации стояли на паке 0.1.0, и обоих не мерил никто. (1) Умолчание CLI оракула —
python3 -m lawref verbalize|diff|approveбез--pack: команда из документации отдавала юристу самый слабый текст, который проект умеет, аapproveпривязывает утверждение §3.6 ровно к нему. (2)ci/check_argmap.pyвербализовал карту спора §274 тем жеpack.json. Оба подняты до текущего пака, умолчание вынесено вDEFAULT_VERB_PACK, CLI вписан седьмым консьюмером ворот (MIN_CONSUMERS6 → 7) — пин читается из его собственной константы, поэтому откат краснеет. -
Пять векторов VER (14 → 19 в семействе):
VER-RU-L1-SCOPE(область применения §90 отдельным предложением, различие §91/§91.1),VER-RU-GAP-SCOPE(тот же CLIR под 0.5.0 — маркер вместо прежней тишины),VER-RU-L0-JUDGMENT(§47.3: назван орган, названо полномочие §242, сказано, что до решения ответ «не решено», а не «нет»),VER-RU-L0-FUNCTION(§47.1/§56 с телом; форма моста A3 — цепочка по дате сResult/OkиMissingParameterValue— приходит от генератора параметров, поэтому узел кладётся поверх выхода компилятора, как толкования §152 вVER-RU-L3-INTERPRETATION),VER-RU-L0-COUNTERFACTUAL(§186: текст первым словом называет разбор ненормативным). Одиннадцать прежних голденов не сдвинулись ни на байт — новые ветки рендерера закрытыctx.has, поэтому младшие паки отдают ровно прежние байты. -
Реестр непокрытого мерится текущим паком, а не паком дня заведения.
lawref/selftest.pyсверял виды деклараций схемы с покрытием 0.4.0; теперь с текущим, а сам реестр сжался с семи видов до четырёх (anchor,evidence_item,query,support_edge— входы дела и вопрос к праву, а не текст акта). Тем же движением паритет казахского пака мерится парой «текущий ru — текущий kk»: пара, зафиксированная в день заведения, зелена ровно оттого, что смотрит не туда. -
Ст. 43.3, 43.4, 44.3, 50.2–50.4 Конституции 2026 формализованы: правил 67 → 91, величин 21 → 26. По статьям: ст. 43 — 4 → 11 правил, ст. 44 — 4 → 12, ст. 50 — 5 → 14. Мера §33.1 при этом не сдвинулась ни на единицу (11 EXECUTABLE / 1 ANCHORED и до, и после) — и это её честное свойство, а не сбой: якоря корпуса стоят на СТАТЬЮ, поэтому ст. 46 с семью правилами из двадцати двух подпунктов и ст. 46 с двадцатью двумя выглядят одинаково. Прирост виден только счётом правил на статью. Образцы взяты у пакета редакции 1995, где аналоги ст. 41.3, 41.5, 42 и 47 уже стояли; две вещи сделаны иначе, и обе не вкус: срок ст. 43.3 ВЫЧИСЛЯЕТСЯ шагом §86 (у 1995 дата приходила фактом — до E-0026 календарных месяцев не было), а стадия «решение по вопросу» ст. 50.3 заведена отдельно (пакет сливал два разных большинства в одно: текст даёт ЧЕТЫРЕ порога — 1/3, большинство, большинство, 3/4 — а правил было три). Двадцать сценариев
KZ-CON-PRES-09…28, каждая норма проверена парой по обе стороны условия; конституционная регрессия 95/95 → 115/115,corpus/scenario-ratchet.jsonPRES 8 → 28, реестр величин 73 → 78 читаемых. Разметка §218 не просела:unlabelled159 → 159 приlabelled22 → 66 и нормах 60 → 84. -
Дыра иммунитета ст. 48.3 закрыта выводом ст. 44.3.
PresidentialOfficialImmunityFormerчитал ЭМПИРИЧЕСКИЙformer_president, поэтому иммунитет экс-Президента доставался любому, о ком дело так заявит, — включая отрешённого от должности, которому ст. 44.3 звания экс-Президента прямо не даёт. Теперь иммунитет читает выводимыйex_president, а тот выводится по ОСНОВАНИЮ прекращения полномочий. Проверено запросомpositions: у ушедшего в отставку позицияFormerPresidentImmunityForActsInOfficeсоздаётся, у отрешённого — нет. -
Отрицание §118 названо по имени и обойдено пять раз.
not p(x)в этом языке требует УСТАНОВЛЕННОГО отрицательного факта: умолчания замкнутого мира нет (§5.1), и правило с отрицанием при отсутствии факта не срабатывает вовсе — при чистомlawc checkи нулевых пропусках вcheck_dead_rules. Обнаружено вызовом: четыре первых редакции новых норм давалиNEITHERтам, где ждался вывод. Четыре из пяти переписаны ПОЛОЖИТЕЛЬНО — недопустимость даты ст. 43.3 выводится из двух оснований вместо «в срок и без совпадения»; звание экс-Президента ст. 44.3 — из перечня оснований вместо «кроме отрешённых»; отклонение обвинения ст. 50.3 — сравнением дат и фактом непринятия решения. Пятое (гард ст. 50.4) отрицание сохранило осознанно: цена — дело об отрешении обязано заявить, что вопрос о роспуске Курултая не рассматривается, зато барьер РАБОТАЕТ, а отказ безопасен в правильную сторону. Альтернатива названа в коде: смоделировать инициативу полномочием и вернуть иммунитет §128. Побочно измерено: пакет редакции 1995 используетnotв четырёх местах, и ни одно не покрыто сценарием — тот же класс латентного молчания. -
Ст. 50.4 не ложится на иммунитет, и компилятор это говорит. Первая редакция барьера повторяла форму ст. 62.3 — иммунитет плюс приоритет — и получила
LDC-E4105: приоритет над strict-правилом запрещён (§114, приоритеты живут между defeasible). Причина глубже кода: иммунитет блокирует ЭФФЕКТ ПОЛНОМОЧИЯ (§128), аimpeachment_initiative_valid— обычный литерал, блокировать нечего. Барьер выражен собственной нормой плюс гардом. -
«О государственной независимости» (1991): 30 норм из 30 под доказанным применением (было 12). Обе меры §33.1 у пакета полны с первого дня —
boundaries.py18/18EXECUTABLE,check_source_pinning.pyучёт 18 статей из 18 при нуле объявленных границ, — и при этом восемнадцать правил из тридцати не стояли в proof-графе ни одного дела, а спрашивались сценариями шесть статей из восемнадцати (6, 7, 9, 11, 15, 18). Обе меры не видят этого по построению:EXECUTABLEговорит, что на статью ССЫЛАЕТСЯ правило, а не что правило СРАБАТЫВАЕТ. Видит третья —corpus/dataset/norm-coverage.json; её число (12) стояло в репозитории верным и непрочитанным. Причина в отборе, и она та же, что у «Қара сөз»: круг IND-01…10 писался станциями верстака под самые злые запросы — презумпция↔дефитер ст. 18 и ст. 6, closure-отрицание ст. 9, default negation ст. 7, — а такой отбор оставляет без дела всё, что находкой не является. Дописано 24 сценария (IND-11…34), прогон 34/34, differential 34 из 34 вызовов байтово, пропускаемых правил 0 из 30. Отдельно закрыта ЕДИНСТВЕННАЯ деонтика акта: обязанность ст. 8 (§123, duty / goal maintenance) головы-предиката не имеет, поэтому запросомtruthнедостижима — она существовала в CLIR, проходилаlawc checkи не проверялась ничем. Добавлен вид запросаpositions: факт национальности даётACTIVE, УСТАНОВЛЕННЫЙ контрпример условия —VIOLATED(§136/§137), без факта позиция не возникает вовсе; сверка идёт равенством словаря позиций, а не вхождением, иначе лишняя позиция прошла бы молча. В покрытие нормCultureDutyпопадает черезnorm_creation§127, а неrule_application—fired_rulesеё не видит, и «29/30» без этого выглядело бы недоделкой. Четыре контрастные пары держат прочтения, которые иначе ослабли бы молча: непризнанная норма международного права по ст. 4 не действует (NEITHER— ради этого признание стоит в теле правила, а не в голове); интересы диаспоры по ст. 8 без договора с государством гражданства не защищаются; охрана имущества иностранных лиц по ст. 11 без законности деятельности не следует; конституционный надзор ветвью власти в ст. 9 НЕ назван, хотя ст. 10 сопоставляет ему орган, — и это свойство закреплённого текста, а не пробел формализации.corpus/scenario-ratchet.json10 → 34,norm-coverage.json12 → 30. -
Selling Guide B3-3: 15 топиков из 15 выводятся нормами (было 9). Пакет
us.fnma.selling_income— 148 правил против 57, 243 объявления словаря против 72, 40 сценариев против 19, 65 фрагментов против 20; доля закреплённого текста под фрагментами 19,0 % → 59,5 %. Расширение начато не с плана, а с меры, которой не было: топиковая глубина §33.1 не видит, что происходит ВНУТРИ топика, и «EXECUTABLE 9» уживалось с тем, что нормами покрыта треть текста тех девяти (11 404 из 34 967 байт; дно — B3-3.2-01, шесть килобайт топика на одно правило). Шесть объявленных границ сняты сменой вопроса, а не смягчением критерия: прежняя формулировка спрашивала, лежит ли величина в выгрузке VOIE, — а руководство само велит кредитору задокументировать 200-дневную среднюю цену акции, доступные ликвидные резервы и дату подписания формы 4506-C, то есть все они в досье наравне с paystub. Прибавились нормами: семь способов проверки занятости с тремя единицами срока (10 и 15 рабочих дней, 35 и 120 календарных) под одной головой расщеплением §206; стандарты документирования и четыре условия приемлемости стороннего провайдера; занятость у родственника с порогом< 25 percent; доход из-за рубежа; оферта будущей занятости с несимметричным окном (30 дней до ноты / 90 после) и обеими опциями; военный доход с обеими сторонами оговорки о понижении надбавок; акции с ограничением целиком, включая делитель 12–24 месяцев; временный отпуск с восполнением из резервов и потолком черезmin; форма 4506-C и Income Calculator. Остаток назван на месте каждой такой нормы: величины разделов B3-4, B3-3.5–B3-3.7, B3-3.4-17 и B1-1-03 не выводятся — их текста в закреплённом документе нет вовсе, поэтому нормы требуют факта документирования, а сумму не считают. Норма о недискриминации по гражданству (B3-3.1-01) осталась невыраженной осознанно: её предмет — ДРУГИЕ НОРМЫ, а не факты дела, и правилоnon_citizen_same_requirementsдало бы топику вид формализованного при пустом содержании; соблюдена она построением — гражданства не читает ни одно правило. Пропускаемых исполнителем правил 0 из 148, differential пакета 92/92 байтово,scenario-ratchetfnma 19 → 40,label-ratchet72/57 → 243/148. -
PACKAGE_TITLES: вписаныus-fnma-incomeиus-federal-holidays. Оба пакета отвечали на запросы и стояли в каталоге MCP безымянными — своим ключом, потому что титула у них не было. Пробел общий: без титула остаются ещё восемь пакетов корпуса. -
«Қара сөз»: 120 норм из 120 под доказанным применением (было 60). Обе меры §33.1 у пакета были полными с первого дня —
boundaries.py45/45EXECUTABLE,check_source_pinning.py100 % байтов и учёт 45 статей из 45, — и при этом ровно половина правил не стояла в proof-графе ни одного дела, а 14 слов из 45 не были показаны ни разу. Пробел не в охвате, а в применении, и обе меры не видят его по построению: они мерят адресуемость и НАЛИЧИЕ правила у единицы, а не то, что правило работает. Видит третья —corpus/dataset/norm-coverage.json; её число (60) стояло в репозитории верным и непрочитанным. Причина в отборе: первый круг QS-01…QS-29 писался под находки — цепь слова 3, расхождение счёта слова 38, неразрешимая ссылка слова 32, — и такой отбор оставляет без дела всё, что находкой не является. Дописано 55 сценариев (QS-30…QS-79), по одному-двум на слово, каждый с посылками из закреплённого текста; прогон 85/85, differential 85 из 85 вызовов байтово,deadRulesпусто. Ожили все четыре приоритета §119 — было два:QojganNormaOverEkiShart(слово 12 бьёт само себя при тех же двух соблюдённых условиях) иUjatOverImanTuri, которому нужен состав сozin_andydy, иначе первым срабатываетSalgyrttynImanyZhoqпо своему приоритету — исход делаFALSE_ONLYи названное правило те же, и подмена приоритета осталась бы невидимой. Три контрастные пары держат прочтения, которые иначе ослабли бы молча: шесть условий слова 32 против пяти (NEITHER), смех при уместном действии против смеха без него (not_knownв теле), тәклиди со стойкостью против тәклиди без неё.corpus/scenario-ratchet.json30 → 85,norm-coverage.json60 → 120. -
ci/formalization-depth.json: вписанqara-soz. До этого ворота печатали «новый акт под мерой» и 45/45EXECUTABLEбыли измеримы, но ничем не защищены от просадки. Запись сделана точечно, значения взяты из самогоmeasure(), а не набраны руками;--writeне запускался сознательно — он перезаморозил бы заодно чужой регрессconstitution(EXECUTABLE86 → 5) и шесть актов, пропавших из меры. -
Декларация о суверенитете: 68 правил из 68 наблюдаемы сценариями (было 58). Замер по proof-графам живого прогона, а не по именам правил в раннере. Среди десяти непокрытых были единственная обязанность акта (
StatehoodProtectionDuty, п. 2) и оба безусловных запрета §130 (NuclearTestProhibited,WmdRangeProhibited, п. 11) — то есть все три нормы, ради которых у пакета есть головы §122–§130 и которые не покрывает ни одна другая проверка:check_rule_executabilityдевять норм-голов называет «вне меры»,check_dead_rulesвидит только статические пропуски, фаззер--targeted 40дал 65/68. Два правила п. 3 абз. 2 не демонстрировало ничто — ни сценарий, ни фаззер: тело требует согласованной тройки «деяние — субъект — категория», которую генератор миров подбирает независимо. Дописано 14 сценариев (SOV-36…SOV-49) и помощникexpect_position: головы-НОРМЫ спрашиваются запросомpositions, потому что у них нет выводимого факта-эффекта, аstatehood_measures_takenиnuclear_test— входы дела. Пять сценариев отрицательные и каждый называет цену прочтения: окно §124.2 без периода обязанности не создаёт; безличное «на территории Республики запрещаются…» носителя не отменяет; перечень источников ущерба п. 11 закрыт шестью; надзор п. 7 привязан к должности, а не к высоте органа. Прогон 49/49, differential 49 вызовов байтово — включая четыреpositions-запроса, вид которых пакет под байтовый контракт до этого не отдавал.corpus/scenario-ratchet.json35 → 49. Обе меры §33.1 были полными и до правки (учёт 17 из 17, глубина EXECUTABLE 17): пробел был не в охвате, а в наблюдаемости, и ни одна мера покрытия его не показывала. -
Три пропуска содержания Декларации о суверенитете закрыты; правил 68 → 70, сценариев 49 → 57. (1) П. 10: «национальный банк, ПОДЧИНЁННЫЙ Верховному Совету Республики» — причастный оборот стоит при банке и ни при одном из остальных четырёх институтов перечня, поэтому правило именует банк, а не перебирает
named_financial_institution; подчинение привязано к существующему банку, а не к оговорке, и возникает вместе с эффектом полномочия §127 (SOV-50/51/52). (2) П. 9 абз. 2: «…и гарантируется ИХ защита» — «их» указывает на формы собственности, а не на имущественные права Союза и иностранцев из абзаца третьего; заведено отдельноеownership_forms_protected(SOV-53). (3) П. 4: «на основе Конституции Казахской ССР» записано конъюнктом обоих правил осуществления власти — ПРОЧТЕНИЕ, меняющее ответы, и выбрано оно по согласованности акта с самим собой: тот же оборот Декларация ставит ещё дважды (п. 5 «в рамках Конституции», п. 6 «в рамках Союзного договора») и оба раза уже прочтён ограничительно. Цена выписана парой SOV-56/57: без действующей Конституции ни один канал осуществления не выводится, но народ ОСТАЁТСЯ источником государственной власти — различие «быть источником» и «осуществлять» до этой пары не наблюдалось. Альтернативное описательное прочтение записано в комментарии правила. Прогон 57/57, differential 57 вызовов байтово, Lean 57 сертификатов при нуле отказов,check_lowerвоспроизводит CLIR байтово; храповики 49 → 57 и разметка §218 140/77 → 142/79. -
Проект программы «Алаш» (1917) формализован целиком: 10 из 10 разделов
EXECUTABLE. Было — раздел I и девять разделовSOURCE_ONLY, все девятьUNEXPLAINED. Стало 140 правил поверхности (109strict, 31defeasible) → 143 узла-правила CLIR и 35 norm_template (12 power, 10 immunity, 9 liberty, 4 duty), 34 фрагмента вместо 17 — по абзацу, как в разделе I. Байтовое покрытие не изменилось (99,8 %): фрагменты режут те же байты мельче. KZ-регрессия 42 сценария вместо 14, мёртвых правил ноль. Первое живое применение E-0028 и E-0038 в корпусе: часовой срок раздела III считаетсяhours_between, недельный —add_calendar_period(day, 1 calendar_week), и различие семейств видно исполнением, а не на словах — календарная неделя снимка §85 не спрашивает, дневная форма того же срока ответила быMISSING_CALENDARна том же деле (E-0029). Правило счёта акт не даёт, поэтому политика §86 приходит из контекста дела: приstart_count: next_dayсрок от 02.03.2026 истекает 10.03.2026 (ALASH-20/21). -
Три находки о продукциях, каждая из исполнения. (1)
constraint_declпринимаетсяcheck, понижается в узелconstraint— и не читается ни одной реализацией при вычислении (lawref/lawref/evaluator/и семантическая частьlaw-evalсловаconstraintне содержат; толькоcounterfactual.rs). Дело, нарушающее ограничение, проходит без issue, аci/check_dead_rules.pyэтого не видит: он классифицирует правила, не ограничения. (2)classification_declдаёт предикат по имени классификации и берёт одно условие, поэтому не выражает «два вида → один класс»; в «Алаш» это превратило бы два класса раздела X в четыре предиката. (3)role_declв грамматике 0.1 не имеет тела и потому не принимает метку §218 — любое его применение уменьшает разметку пакета, тогда как соседниеevent_decl/action_declтело имеют, аenum_declметку получил erratой E-0042. Кандидат в errata того же образца; квалификация дефекта не делалась. -
Обе меры §33.1 научились видеть акт, который делится разделами, а не статьями.
ci/check_source_pinning.py: опт-ин конвенцияunit: "section"для римских разделов (I. Мемлекет қалпы) с арабским номером учёта — тем же, каким считаетboundaries.py, иначе две меры называли бы одну единицу по-разному. Автоопределением конвенция не включается сознательно: строка вида «V. …» стоит в библиографии и внутри цитат. До этогоarticle_conventionвозвращал для «Алаш»None, срез любой единицы выходил ПУСТЫМ, а пустой срез в этом коде — «молчаливое согласие с любой причиной»: любая объявленная граница по акту прошла бы ворота не глядя. -
Набор признаков исполнимого содержания
kkдополнен оптативом. Прежний набор собран под настоящее страдательное «Жеті жарғы» (салынады,төленеді); «Алаш» ставит норму формой на «-у болу» / «-лу» (республика болу,қаралу,таратылу) и отрицательной на «-маушылық» / «-мау» (аттамаушылық,келмеу). Набор не находил признаков ни в одном из десяти разделов — включая раздел I, из которого уже было выведено 29 правил. Контроль на заведомо исполнимом тексте и есть проверка самой проверки: набор, молчащий на нём, не измеряет ничего. Теперь признаки находятся во всех десяти. -
alash-programвернулся под ворота глубины.boundaries.act_source()находит текст внутри пакета только ЧЕРЕЗarticles.json, и без него акт стоял вci/check_formalization_depth.pyстрокой «акт пропал из меры»: храповик девятиUNEXPLAINEDразделов не держал ничего. Акт объявил единицу деления вarticles.json; база глубины поднята точечно (1/9/9 → 10/0/0), без--write, чтобы не заморозить чужие регрессы. -
LDC-E0207: одиночное_больше не имя и не терм; errata E-0041 и два вектора.identifier§14 требует XID_Start, а подчёркивание в него не входит —grammar.ebnfставит_ТОЛЬКО вpattern§55.1. Лексерlawcтем не менее принимал его началом обычного идентификатора, и в позиции аргумента_проходил весь конвейер как имя: резолвер объявления не находил, но и не жаловался (необъявленная константа в аргументе законна — так в корпусе названыTheftDispute,BasTogyzи ещё 839 индивидов, E-0032), и_понижался вconst_refна#_. Отказ был ДВУСТОРОННИМ и полностью беззвучным, обе половины измерены прогоном наkz-karamola: в положительном гарде литерал не выполняется никогда (обязанность доставить вызов по ст. 68 «Қарамола» не возникала ни в одном деле — приcheck ok:trueи при том, что ворота глубины §33.1 числили статьюEXECUTABLE, потому что мера структурная), а подnot_known§113 выполняется всегда («ни за кем не замужем» означало «неизвестно о браке с константой_», и санкция ст. 30 применялась к замужней потерпевшей наравне с незамужней). Проверка стоит вParser::nameи в ветви идентификатораprimary; путь образцаmatchразбирает_раньше обеих и не задет — T067/T068/T105/T106 остаются приняты. Анонимной переменной_НЕ становится: это была бы новая поверхность, а семантика 0.1 заморожена.Второй половиной той же errata закрыто обратное расхождение:
formula_primaryдопускалcomparisonтолько по пяти операторам, тогда какComparisonFormulaвlegal-ir.schema.jsonдопускает семь, обе реализацииeq/neисполняют, а в закоммиченном CLIR корпуса стоят 28 таких узлов в шести пакетах. Введёнcomparison_operator = relational_operator | "==" | "!="— в формулу и НЕ вrelational_expression, где равенство уже разбираетequality_expression. Обязательство держатERR-E0041-EQUALITY-IN-FORMULA(исполняемый; оба оператора несущи — выпади любой, вывод исчезает целиком, а поверхность закрываетci/check_lowerбайтовым совпадениемlower(source.law)сir.json) иERR-E0041-UNDERSCORE-NOT-A-NAME(LDC-E0207ровно дважды; третьим вхождением был бы законный образецmatch, и счётчик держит именно это). -
A3-поверхности впервые применены в корпусе — ставки и пределы ОСМС стали данными (
corpus/laws/osms, 6 ×*.lawparam.json+law.lock0.2). Графики из закреплённого текста перенесены в parameter datasets со строками, якорёнными в фрагменты статей: ставка отчислений ст. 27 п. 1 (1 % → 1,5 % → 2 % → 3 % по датам), ставка взносов работников/ГПХ ст. 28 п. 1 (1 % → 2 %), ставки ИП и самостоятельных плательщиков ст. 28 пп. 3–4 (5 %), кратности предельной величины объекта (10 МЗП до 01.01.2026 с якорем в ст. 29 п. 3; 40 и 20 МЗП с 01.01.2026 с якорями в ст. 27 п. 2-2 и ст. 28 п. 5-2). Мост «правило читает параметр» оказался уже построенным, отдельной поправки компилятора не потребовал: голое имя в терме правила лоуверится вconst_ref, а оба движка разрешаютconst_refна A3-символ вызовом generated-функции наcontext.legalTimeс раскруткойResult/Ok(lawref/values.py,law-eval/values.rs) — вне покрытия громкийMISSING_PARAMETER_VALUE, не ноль. Обратная сторона того же механизма: опечатка в имени параметра остаётсяconst_ref-ом в никуда при чистомcheck(классLDC-E1322, известный по definition) и всплывёт только на исполнении как TYPE_ERROR. Четыре правила-редакции пределов свёрнуты в два (DeductionBase,ContributionBase) с двойным@source: редакционный разрез 2026 года уехал из парыeffective-правил в строки параметров, и proofGraph называет выбранную строку и её якорь на каждой дате (2025-06-30 →r-until-2026/ст. 29; 2026-06-30 →r-from-2026/ст. 27–28). Выбор строки идёт поcontext.legalTime— продолжение принятой пакетом семантики «как было тогда»; альтернативное прочтение «ставка следует расчётному месяцу, а не дате взгляда» — открытая точка истолкования, в сценариях корпуса они неразличимы (legalTime = расчётный момент). КанарейкаLDC-E8704проверена вживую (правка sidecar без lock останавливает сборку),lawc checkпакета чист, сценарии OSMS-01…16 зелёные без единой правки, differential 35/35 вызовов байтово (lawc eval==lawref), генератор идемпотентен. Не переведены и названы границами: ставка взносов государства ст. 26 п. 2 (нет потребителя-вычисления — остаётся нормативным фактом OSMS-14), взносы с единого платежа ст. 27 п. 1-1 / ст. 28 п. 1-1 (режим не формализован),minimum_wage(2026, …)— жёсткий год МЗП как был.label-ratchetдля osms правлен осознанно: +18 generated-символов без носителя метки §218, нормы 48 → 46 сворачиванием. Таблицам решений в ОСМС честного носителя не нашлось: естественное конечное измерение (вид плательщика) — entity-константы, а условия ячеек A3 принимают только typed value literals; это граница схемы, не повод для таблицы с фиктивным входом. -
Восемь недоделок компилятора, найденных формализацией обычая, закрыты — ярусы 1 и 2 разбора
corpus/laws/tuystyq. Разбор пакета против матрицы деклараций (docs/GRAMMAR-CAPABILITIES.ru.md) дал не список пожеланий, а перечень мест, гдеlawc checkчист, а право не работает. Шесть из восьми были МОЛЧАЛИВЫ. Каждая правка проверена различающей пробой: форма до и после, а не чтение кода.Ярус 1 — снятие молчания (диагностики и резолвер, семантику не трогают).
LDC-E1322(новый): голое имя в телеdefinition§151, не являющееся её параметром и не объявленное символом пакета. У определения НЕТ биндера (грамматика §529), поэтому такое имя — свободная переменная, а лоуверинг молча делал из неёconst_refна несуществующую константу:checkчист, правило мертво навсегда. Приём и пост-проход те же, что уLDC-E1317(comprehension), — второе место, где голое имя различимо.LDC-E1323(новый): имя события вon§160 до CLIR не доезжает. Найдено различающей пробой — две процедуры, отличающиеся ТОЛЬКО именем события, лоуверятся в байтово одинаковый CLIR. Отложено это было сознательно (событийная модель §79 вне среза, о чём говорит комментарий вast::ProcedureTransition::on), но автору не сообщалось ничем, а §210.1 требует именованной диагностики вместо молчания. Предупреждение, а не ошибка: форма законна и остаётся объявлением намерения.LDC-E2114(новый): арность закрытого предиката §70 проверяется наcheck. Оба движка отвергают неунарное замыкание на ИСПОЛНЕНИИ (NON_EXECUTABLE_CLOSURE), аlawc checkдавал rc=0 — и запрос отвечалNEITHERвместоFALSE, что неотличимо от честного открытого мира. Бинарное препятствие («между этими двумя») — естественная форма для права, поэтому в ловушку попадал типовой замысел.definitionстал виден другим файлам пакета.SymbolTable::buildсобирал предикаты изrelationиclassification, но не изdefinition, хотя §151 объявляет предикат так же. Следствие было не косметическим: правило соседнего файла получалоLDC-E2102, иdefinitionоставался пригоден только для терминов, не покидающих свой файл, — то есть практически непригоден в многофайловом акте §22.
Ярус 2 — выразимость.
- §206-развёртка
orвнутриdefinition. Условие клалось в тело КАК ЕСТЬ, и определение с дизъюнкцией давало правило, которое оба движка отвергаютNON_EXECUTABLE_RULE(flatten_bodyзнает толькоand). Перечисление альтернатив — самая частая форма легального определения («признаётся A, B либо C»), поэтому молчаливо мёртвым оказывался типовой случай.necessary-ограничение сохраняет исходную формулу целиком: требование §93.1 — произвольная формула, дизъюнкция в нём законна. - Профиль процедуры объявляет свои состояния и переходы сам. Он
порождал
const_refна каждое имя, но узла-объявления не создавал: уtuystyqэто давало 11 вхождений на 5 имён, ни одно из которых не разрешалось. Ручной обход из пакета снят; сборщик A3 ловит столкновение имён громко (A3 StableId collision), что и подтвердило правку. - errata E-0044: носитель метки у константы §54 и членов процедуры
§160. Тот же класс, что E-0042, с другой стороны перечня §218: у
enumтело было и метку отвергала грамматика, уconstи состояния тела не было вовсе. Цена была мала, пока таких узлов были единицы; loweringconst§54 (E-0032 п. 2) дал законную форму 3025 именам, и безымянными оказались бы они все. Носитель у членов процедуры СВОЙ, а не конверт §202: метка процедуры, разлитая на все порождённые узлы, назвала бы каждое состояние её именем. Метка перехода доезжает до обоих его правил (/validи/enters), правило/initialберёт метку начального состояния. ВекторыERR-E0044-CONST-LABELиERR-E0044-PROCEDURE-LABEL— исполнено; плюс два крейт-тестаlaw-syntax.
Петля G-M1b поймала пробел, которого не было в плане. Первый прогон
ci/check_lowerдал байтовое расхождение наERR-E0044-CONST-LABEL:lawc lowerразмеченной константы давал метку в CLIR, а рендерер ir→law терял её обратно. Рендерер дополнен — ровно тот же сторож, что снимала E-0042 у перечисления.Проверено на живых пакетах.
tuystyq— 38/38 сценариев, висячихconst_refноль (было 11), разметка 100 из 106 объявлений и 93 из 93 норм (было 88 из 93), мёртвых правил 0;procurementиprocurement_l2— 10/10 и 3/3. KZ-differential: 134 вызова, расхождений 0 — обе реализации байтово согласны после правки лоуверинга.Обходы, которых больше нет, из пакета сняты тем же заходом. Держать правку компилятора и её причину порознь значило бы оставить в исходнике комментарий, объясняющий несуществующее ограничение.
agaиepkeвернулись из пары relation + rule вdefinition … exact— их удерживала снятая кросс-файловая граница; перечень ст. 12 стал ОДНИМ определением сorвместо трёх рукописных правил с общей головой. Второе не косметика: рукописная развёртка несла только достаточную сторону, а определение несёт и необходимую — старшим родственником нельзя оказаться помимо перечня. -
E-0045: пять partial-областей Core 0.1 закрыты до исполнимых контрактов.
roleпонижается вLegalRoleconstant; bare/explicit functions проходят общий транзитивный purity graph; external ограничен snapshot/judgment/opaque и работает только с pinned datasets; decisions поддерживают шесть hit policies с общей A3-статикой; counterfactual получилCounterfactualDecl, две нормативные схемы, одинаковый конечный solver вlawc/lawrefи replay certificate. Итоговая карта:CLIR=37,input=6,partial=0,opaque=0. Runtime I/O и молчаливое понижение не вводились. -
E-0042 и DECISION-0047: перечисление научилось нести метку §218, а значение варианта — говорить, что оно вне среза. Обе находки — одна декларация, но разной природы, и потому закрыты разными инструментами.
Метка — дефект SPEC (errata E-0042). §218 перечисляет носители от противного: «декларации, не имеющие тела в грамматике (
function,enum,const,concept,role, алиасы типов), меток не несут», — и тут же даёт критерий: «телом здесь называется тело из items, а не из операторов».enum_decl§38 несёт скобки, а в них items (enum_variant), ровно какentity_declнесётfield_decl: перечисление стояло в перечне ошибочно. Остальные четыре имени проверены по грамматике и стоят там верно — уconcept,role,constи алиаса скобок нет вовсе. Правка аддитивна:enum_decl = "{", { label_item }, enum_variant, { enum_variant | label_item }, "}", парсер зовёт общийlabel_item, метка уезжает в конверт декларации и снимаетсяattach_decl_envelope— лоуверинг не тронут. Цена измерена: по корпусу 4 объявления в 2 пакетах (CoreRight,CoreRight1995вkz-constitution-linkedиkz-constitution-rights, 16 вариантов каждое); они входят в словарь §218 храповика, то есть числились неразмеченными, и разметить их автор не мог ни при какой дисциплине — перечисление конституционных прав предъявлялось юристу идентификатором. Петля G-M1b закрыта тем же заходом: рендерер ir→law размеченныйenumписать ОТКАЗЫВАЛСЯ (сторожif labels), однострочная форма без меток сохранена дословно — иначе сдвинулись бы байты всех уже порождённыхsource.law. Векторов два:ERR-E0042-ENUM-LABEL(static: файл принимается ИLDC-E0201не звучит — второе из первого не следует) иERR-E0042-ENUM-LABEL-HASH(hash-compare: равный semantic hash §209 при различных content hash §202). Проверено на демо: добавление метки кCordсдвинуло ровно один узел из 174 и не тронуло semantic hash пакета.Значение варианта — не дефект, а граница среза (DECISION-0047).
grammar.ebnfстр. 226 даётenum_variant = identifier, [ "=", string_literal ], ";", а prose §38 значению смысла не даёт вовсе («Enum variant имеет stable qualified identity»), носителя в CLIR нет (TypeDecl.variants— массив строк), потребителя в семантике 0.1 нет ни одного (вlawref/…/evaluator/словаenumнет). Значит расходятся не реализации и не prose с грамматикой, а грамматика и срез — тот же случай, чтоimport … as. Отказ переведён на свойLDC-E0206«значение варианта enum §38 вне среза 0.1»: до этого приходили два общихLDC-E0201на вариант — на=и на строку, — то есть форма читалась как опечатка автора. Имя варианта сохраняется: развались перечисление на невыразимом хвосте, за ним посыпался бы каждыйmatch§55.1 по этому типу. Векторы T141 (код звучит ровно дважды,LDC-E0201не звучит) и T142 (граница: голый перечень принят, ни одного из двух кодов). -
E-0032 п. 2:
const§54 получил lowering — у 3663 висячихconst_refкорпуса появилась законная форма. Package-level константа понижается вsymbol_declвидаconstant; правки схемы не потребовалось —symbolKind: "constant"сreturnType/valueи запретом параметров модель описывала уже, иRefTerm.const_refсуществует, чтобы на такой узел ссылаться.Пересчёт долга (цифры E-0032 устарели втрое, и методика там смешивала два вида ссылок).
const_refв CLIR перегружен: им адресуются и доменные имена, и УЗЛЫ пакета — стороны рёберpriority_rule, шаблоны норм. Замер по всем 37 файламcorpus/clir/: 4133 вхождения / 3378 имён всего, из них 470/353 разрешаются в узел (не дефект) и 3663/3025 висячих доменных имён против 1188/844 сутки назад. Растёт не поломка, а конвенция: её ничто не останавливает. Миграция при этом механизируема на 98,5 % — тип имени выводится из типа параметра предиката, в позиции которого оно стоит: 2981 имя из 3025 однозначно, 4 конфликтуют (_,Aqyl,Maqtanshaqtyq,Theft— настоящие неоднозначности моделирования), 40 не выводятся, потому что стоят вне позиции аргумента (почти все —KZ).Форма разыменования — один предпроход перед исполнением, зеркальный в обеих реализациях (
lawref/…/evaluator/constants.py,law-eval/src/constants.rs), а не разыменование по месту. Ссылка стоит в двух ролях сразу — операнд терма (гардr <= MAX_RATE) и аргумент литерала (chamber(StateDuma)), — и первую разрешает вычислитель термов, вторую ключ атомаliteral_key. Разыменуй реализация только первую, правило и факт об одном индивиде получили бы разные ключи и молча перестали совпадать. Третьим входом идёт запрос: первый прогон далNEITHERпри сработавшем правиле именно потому, что запрос остался со ссылкой. Следствие названо прямо — в evaluation-документе стоит значение, а не имя; имя остаётся в CLIR.Вектор
ERR-E0032-CONST-DECL(evaluate, L0, вSUPPORTED) держит обе позиции одним прогоном:MAX_RATEоперандом гарда,StateDumaаргументом в факте, в правиле и в запросе. Область: ни один пакет корпуса константу не объявляет, таблица предпрохода пуста, быстрый выход возвращает те же объекты без копии — differential 116/116 байтово,vectors: OK(279),cargo test0 провалов, KZ-регрессия неподвижна.Найдено исполнением и починено здесь же:
source.lawу evaluate-вектора РЕНДЕРИТСЯ изir.json, и вектор, чей узел рендерер не умеет, молча выпадает из эмиссии, а с ней — из байтовой петли G-M1b (ci/check_lowerсверяет ровно те, у кого источник есть). Так и вышло при первом заведении вектора: каталог остался сir.jsonбезsource.law, счётчик ворот показал прежние «97». Добавлена веткаsymbolKind == "constant"вrender.py; петля покрывает 98.Пункты 1 (prose §53/§54 + отказ неразрешённому имени) и 3 (миграция) E-0032 остаются открытыми в прежнем порядке: требование без миграции отвергает корпус. Форма, которой миграция будет удовлетворяться, теперь есть.
-
Делегационная цепочка портирована в
lawc; контракт двух реализаций — КОДЫ (DECISION-0044, инкремент 4 — последний из четырёх границ DECISION-0010). Инвариант 6 соблюдён буквально: цепочка жила вlawrefс 26.08, за это время получила живую пару корпуса, декларацию основания в CLIR и предметную компетенцию, и только отстоявшись поехала в Rust. Порт не изобрёл ни одного правила — те же семь кодов и та же последовательность звеньев. Вторая интервальная логика не заведена, как требовал DECISION-0010:edition_stateв Rust уже был (дословный порт D1 для §30.2), не хватало надстройки —lifecycle_diagnostics(LDC-E5302) иapplicable_editionsдобавлены ТУДА ЖЕ, вrefs.rs, так что порядок зависимостей повторяет оракул. Поверхность:lawc check-delegation <sub.json> <parent.json> [--basis] [--organ] [--require-basis] [--json]; основание и издатель берутся из пакета, параметры переопределяют, код выхода — по ошибкам. WP-35 не блокер: пути обоих CLIR называет вызывающий,lawc lockпонадобился бы только чтобы компилятор нашёл родителя сам. Сверка — по составу и порядку кодов, а не по байтам: у статических диагностик байтового контракта нет по построению, и формулировки правятся порознь. Встроена в те же ворота, что проверяют оракула, и покрывает одиннадцать сценариев — живую пару в трёх видах и восемь синтетических, включая оба предупреждения и проброс дефекта lifecycle. Воротаci/check_delegation.py— 26/26 → 37/37. -
Предметная компетенция:
power.subject§127 иsource.regulates§27.1 (DECISION-0043, инкремент 3 из четырёх границ DECISION-0010). «Полномочие охватывает эту норму» — ∀-утверждение, и §105.1 запрещает выводить его из текста; поэтому сравниваются два авторских перечисления, а не смыслы: уполномочивший акт объявляет предмет полномочия, подзаконный — свой предмет, цепочка проверяет включение. Излишек —LDC-E5307с названным излишком; необъявленный предмет полномочия —LDC-W5302, потому что молчание означало бы, что делегация БЕЗ объявленного предмета проходит предметную проверку легче, чем объявившая его: отсутствие поля есть «не объявлено», а не «предмет любой». Оба поля повторяемые (какlabel) — списка грамматика 0.1 не несёт, и расширять её не понадобилось; идентификаторы принадлежат словарю уполномочившего акта по необходимости, потому что подзаконного акта в момент принятия закона ещё нет. Что показала живая пара: приказ V2000021744 регулирует закуп и для ГОБМП, и для ОСМС, а пункт 1 статьи 34 делегирует только вторую половину — первая стоит на подпункте 62) статьи 7 Кодекса о здоровье, не заведённого в конвейер. Предмет объявлен ЧАСТИЧНО и сказано почему; соблазн объявить обе половины ради громкогоLDC-E5307отвергнут осознанно — диагностика читалась бы как «приказ вышел за пределы полномочия», тогда как неполна МОДЕЛЬ, а не акт. Векторы T138 (пара различается только предметом полномочия — semantic hash расходится) и T139 (повторяемое поле копится в список в порядке записи; реализация, оставляющая последнее вхождение — как §206 оставляет последнийthen, — была бы схемно валидна и теряла предметы молча). Воротаci/check_delegation.py— 23/23 → 26/26. -
Основание издания переехало из параметра CLI внутрь пакета: аддитивное поле §27.1
basis(DECISION-0042, инкремент 2 из четырёх границ DECISION-0010). Пока основание подавалось параметром, знание о том, на чём акт стоит, жило вне пакета: один и тот же CLIR давал целую цепочку или пустоту в зависимости от того, что подставил вызывающий, и никакая проверка не могла сказать, что акт своё основание вообще заявляет. Теперь заявляет:basis "urn:kz:corpus:clir:osms#DetermineProcurementProcedure";. Издатель отдельного поля не потребовал —authority§27.1 существовал с начала и в корпусе употреблялся, не хватало только чтения его цепочкой. Главное решение — СТРОКА, а не ссылкаpkg::name: квалифицированная ссылка разрешалась бы механизмом §23, то есть требовала бы ИМПОРТА уполномочившего акта, а импорт втягивает его программу в мир вычисления целиком. Но подзаконный акт закон не исполняет — он на него ссылается; делегация есть провенанс, а не зависимость вычисления. Отсюда граница, объявленная вслух: компилятор разрешимость основания не доказывает и не притворяется — родителя у него на входе нет; опечатка ловится цепочкой (LDC-E5304), читающей CLIR родителя отдельно.basisвходит в semantic hash §209 наравне сnumber/jurisdiction/authorityи правки §209 не потребовал: основание — утверждение пакета о праве, а не оформление, в отличие от меток §218 (errata E-0010). Аддитивно: до правки поле выпадало предупреждениемLDC-E1302, поэтому ни один существующий пакет не менялся; параметры--basis/--organсохранены как ПЕРЕОПРЕДЕЛЕНИЕ. Векторы T136 (пара, различающаяся ровно основанием, semantic hash расходится) и T137 (основание доезжает ДОСЛОВНО, а не переписывается в локальный id — переписанный был бы схемно валиден и разошёлся бы с узлом родителя молча). Воротаci/check_delegation.py— 18/18 → 23/23. Попутно исправлен отчёт CLI: цепочка проверялась по объявленному основанию, а печатала «основание не заявлено и не требуется» — проверено одно, сказано другое. -
Errata E-0040: декларация, которую реализация не понижает, теряется молча; заведён
LDC-E1321, введён §210.1 «Тотальность конвейера по декларациям». Найдено той же сверкойgrammar.ebnfс корпусом, что и векторы §147/§148 ниже: из ~40 альтернатив продукцииdeclarationпарсерlawcразбирает структурно 27, остальные уходят вOpaqueи узла CLIR не порождают. Что при этом обязано произойти, спецификация не говорила: §210 доводит конвейер доlower to CLIR, а про вход, который эта стадия понизить не может, молчит.Измерено прямым опытом на пакете с
record/role/event/const:lawc checkпечатаетcheck OKи возвращает 0 —check_diagnosticsсобирает девять резолверных проверок и lowering не зовёт вовсе;lawc lowerпечатаетLDC-E1302по декларации и возвращает 0, потому что код заведён предупреждением, аci/check_lower.pyпроверяет exit code;check --layer L0ловит только слоевые конструкции (evidence/interpretation/decision→LDC-E8101), аrecord/role/event/constслоя не превышают. Три независимых источника молчания на один дефект. CLIR при этом продолжает порождаться, иsemanticHash§209 считается по усечённой программе: 4 узла вместо 11, документ schema-валиден, пакет получает идентичность не того, что написано.Квалификация — дефект SPEC (восполнение умолчания). Реализация вправе понижать подмножество — объём среза §210 не фиксирует, — но не вправе решать, слышно ли это автору. §210.1: каждая грамматически допустимая декларация обязана быть названа результатом компиляции; ограничение реализации — error
LDC-E1321, одинаковая на каждом входе, принимающем исходный текст; свойство конструкции (тест §267, свойство §270 — вход и ожидание, а не норма) — информационная диагностика с закрытым перечнем.Код отделён от
LDC-E1302намеренно: у того контракт «конструкция в срезе, но форма не поддержана», и его ждут предупреждением три вектора (LAY-L2-NORM-EXCEPTION-DROPPED,LAY-L2-PROHIBITION,T073) — промоция общего кода сменила бы контракт трём утверждениям, к находке отношения не имеющим. Проверка живёт среди резолверных (law_hir::check_file), а не в lowering-е: вопрос решается по AST. Плюмбинг диагностик lowering-а вcheckрассмотрен и отвергнут — без--importsони несутLDC-E1104/LDC-E1105и уронили быcheckна 30 пакетах корпуса по чужой причине. Оракула правка не касается:lawrefповерхностного языка не читает, контракт статических диагностик — код.Векторное обязательство исполнено парой
ERR-E0040-OPAQUE-DECL-CHECK/ERR-E0040-OPAQUE-DECL-LOWER(static, L0): один источник, два входа, отказ обеих команд,LDC-E1321ровно четыре раза,LDC-E1302отсутствует. Пара несущая — предмет обязательства есть совпадение ответов, а не факт отказа. Проверено бинарём до правки: оба вектора красные (check— rc=0 и ноль диагностик,lower— rc=0 и четыреLDC-E1302). Область:LDC-E1302не звучит ни разу приlawc lowerпо всем 39 пакетамcorpus/laws, веткуOpaqueне ждёт ни один вектор,cargo test— 0 провалов, голдены неподвижны. Ошибка делает границу слышимой и не понижает ни одной конструкции; первым по цене за ней стоитconst§54 (E-0032, 1188 вхождений висячегоconst_ref), который до сих пор прятало это же молчание. -
Векторы §147/§148: фикция и классификация получили conformance — шесть векторов семейства
lay, до этого у обеих конструкций не было ни одного вектора при полностью живом lowering-е (lawc/crates/law-hir/src/lower/sugar.rs) и нуле употреблений в корпусе. Пробел найден сверкойspec/grammar.ebnfс AST 1076 файловcorpus/: из ~40 альтернатив продукцииdeclarationкорпус использует 17, иfiction/classificationоказались единственными разбираемыми конструкциями, не покрытыми ни корпусом, ни векторами. Держал их один крейт-тест — то есть реализация проверяла сама себя.Форма выхода lowering-а (
lower-shape, довод тот же, что уLAY-L2-PROHIBITION: режимevaluateберёт готовыйir.jsonи обходит ровно тот участок, о котором утверждение) —LAY-L0-FICTION-STRICT(§147: фикция даёт ОДНО правило своей силы с головой-deem-атомом, собственного узла у неё нет) иLAY-L1-CLASSIFICATION(§148: классификация объявляет свой предикатsymbol_declвидаinstitutionalи даёт правило той же силы;defaultнормализуется вdefeasibleпо §149). Статика —LAY-L0-FICTION-EMPIRICAL-HEAD(§147: голова надempirical-отношением даётLDC-E1309, файл принимается — §198),LAY-L1-CLASSIFICATION-DEFEATER(§148:defeaterсилой классификации быть не может) и пара нарушителей слоя ниже.Раннер
lower-shapeдополнен утверждениемfieldsо скалярных полях узла: нормализацияdefault→defeasibleне видна ни по числу узлов, ни по их видам, и без такого утверждения вектор подтверждал бы и реализацию, переносящуюdefaultв CLIR как есть. Заметки LAY-векторов вынесены в таблицуLAY_NOTES: они писались, когда у каждого режима был ровно один вектор, и второйlower-shapeнемедленно получил чужой текст про §130.Все шесть проверены канареечным прогоном — подменённое ожидание обязано ронять набор, и роняет: поле
strength, число вхожденийLDC-E1309и «файл принимается» дают три разных отказа с точными сообщениями. -
Корпус: «Туыстық жүйе» — казахская система родства формализована целиком, 13 статей из 13. Первый акт корпуса на НЕКОДИФИЦИРОВАННОМ обычае: у «Жеті жарғы» и «Қарамола ережесі» закреплённый текст памятника есть, здесь его нет ни у кого. Закреплённое изложение (
sources/tuystyq/ru.txt, 14 614 байт,PINNED_OFFICIAL_BYTES) написано ДЛЯ репозитория и само есть публикация — основание то же, что уfaraidиpinning-example. Пакетcorpus/laws/tuystyq/(7 файлов, 6 сущностей, 95 предикатов, 93 правила, 3 замыкания §70, 8 ограничений §93.1, 5 констант §54), фрагменты режетcorpus/tools/sync_tuystyq_fragments.py, 38 сценариев вcorpus/kz/acts/tuystyq.pyи три свойства §270 вcorpus/laws/tuystyq/tests/.Обе меры §33.1: учёт — 13 из 13, объявленных границ 2, неучтённых 0; глубина — EXECUTABLE 11, ANCHORED 0, SOURCE_ONLY 0. Байтовая доля публикации 80,3 % (11 732 из 14 614, 11 фрагментов); непокрытые 2 882 байта — ровно две объявленные границы (ст. 1 о природе изложения и ст. 13 о его пределах) с заголовком документа и переводами строк. Разметка §218 — 95 объявлений из 101 и 88 норм из 93: АВТОРСКИЕ объявления размечены полностью в ДВУХ языках (
kk-KZ official— казахский термин,ru-KZ translation), а непокрыт ровно слой, порождённыйprocedure. Разметить его нечем: грамматика §640 допускает вprocedure_itemиtransition_itemтолькоmetadata_item,label_item— нет. Числа вписаны вcorpus/label-ratchet.jsonосознанным действием, а не подогнаны под «100 %».ПАМЯТНИК, А НЕ ДЕЙСТВУЮЩЕЕ ПРАВО. У редакции нет
in_force, у правил нетeffective(прецеденты —de-legibus,zheti-zhargy): обычай не вводился в действие и не отменялся датой, и объявить окно значило бы утверждать факт, которого не было. Пакет ничего не говорит о праве Республики Казахстан; современный слой родства остаётся вcorpus/laws/marriage-conditions.Норма названа тем, чем она является, а не «просто правилом». Сверка пакета с матрицей деклараций (
docs/GRAMMAR-CAPABILITIES.ru.md) дала 8 из 24 деклараций CLIR-уровня и привела к пяти конструктам, которых в первой редакции пакета не было — каждый по пробе ДО правки, как требует скилл:definition … exact§151 у трёх терминов ст. 4: «именуется» есть определение, а не односторонний вывод. Лоуверинг даёт достаточное правило И необходимое ограничение, то есть термин нельзя приписать лицу мимо его определения;fiction … deem§147 у ст. 10 абз. 5: причисление ребёнка әмеңгерлік к роду умершего идёт ВОПРЕКИ общему правилу рода по отцу (ст. 2). Обычным правилом это выразимо и было выражено, но тогда в CLIR не оставалось следа, что вывод идёт вопреки, — а в норме это главное;procedure(DECISION-0013) у ст. 11 абз. 6 — первое исполнение процедуры в корпусе:procurementобъявляет её с 26.08, но ни один сценарий её не спрашивал;- пять
constraint§93.1 на связность состава дела (не на нормы обычая); - три
property§270 вcorpus/laws/tuystyq/tests/под воротамиci/check_corpus_tests.py.
Процедура заведена ради того, чего конъюнкция не умеет. «Брак признавался состоявшимся, когда қалың мал передан И невеста провожена» порядка не знает, и дело, где невесту проводили ДО передачи қалың мал, для конъюнкции неотличимо от правильного. Абзац 6 ст. 11 (дописан в изложение вместе с правилом, а не подогнан под него) называет порядок неизменным; переход
Uzatuвыходит только из состоянияQalynMalBerildi. Сценарий TUYS-35 предъявляет ровно такое дело: факт проводов в нём есть и выводится (sogovor_uzatyldy= TRUE_ONLY), а сговор остаётся на первой ступени.Три ловушки новых конструктов, все найдены пробой; первые две молчаливы. (1) У
definitionНЕТ биндера: свободная переменная вwhenне становится экзистенциальной — лоуверинг делает из неёconst_refна несуществующую константу,lawc checkчист, правило мертво навсегда. (2)orвнутриdefinitionНЕ расщепляется §206 (внутриrule— расщепляется, проверено исполнением): тело остаётся дизъюнкцией, и оба движка отвергают егоNON_EXECUTABLE_RULE. (3) Предикат, объявленныйdefinition, не виден другим файлам пакета (LDC-E2102), тогда какrelationвиден, — эта граница громкая, но именно она решила состав: из ~40 терминов определением стали три, потому что аға и әпке потребляют ст. 6 и ст. 12.Висячих
const_refв пакете ноль.procedureпорождает ссылки на имена своих состояний и переходов, но узлов-объявлений для них не создаёт: до правки в CLIR было 11 вхожденийconst_refна 5 имён, ни одно из которых ничему не соответствовало. Закрыто пятьюconst§54 — и названо обходом: объявлять порождённые ею имена обязана самаprocedure. Цена прямая: уconst_decl§249 нетlabel_item, поэтому обмен — пять неразмеченных объявлений против одиннадцати ссылок в никуда, и он вписан вcorpus/label-ratchet.jsonосознанным действием (итог разметки — 95 из 106 объявлений и 88 из 93 норм; авторские размечены полностью в двух языках). Общекорпусный размер долга назван в E-0032 п. 2: 3663 вхождения на 3025 имён.Имя события в
onдо CLIR не доезжает — дефект SPEC. Различающая проба: две процедуры, отличающиеся ТОЛЬКО именем события, лоуверятся в байтово одинаковый CLIR приcheck OK; поля события в схеме нет вовсе. Проза §160 ставитon ApplicationSubmitted;в свой канонический пример, §161 говорит о событии входа в состояние, §164 называет три предиката профиля — и нигде не сказано, во что понижается имя вon. Молчаливая потеря запрещена §210.1, но дефектом компилятора это не назвать: ему не с чем сверяться. Закрытие требует решения о семантике, то есть errata, а не правки пакета; здесь пробел сделан громким там, где проявился.Ограничения §93.1 названы честно.
evaluateих НЕ применяет — в оракуле нет пути, читающегоconstraintво время вывода. Значит, это не «громкий отказ на несвязном деле», а машинно-проверяемый инвариант, к которому ищет контрпримерlawref fuzz. Написать в пакете «дело будет отвергнуто» значило бы обещать поведение, которого нет.Свойства §270 проверены мутацией, а не чтением. Утверждённое напрямую лицо, лишённое доли в қара шаңырақ и не имеющее младшего брата, роняет
NoShareImpliesYoungerBrotherс поимённым контрпримером; два других свойства при этом держатся. Граница поверхности названа: v1 исполняет ОДИН связыватель, поэтому взаимность бір туған («для любых a и b») свойством не выражается — её держат сценарии TUYS-10 и TUYS-13.Термин зависит от пола ТОГО, ДЛЯ КОГО он произносится. Нагрузка, которой в корпусе не было: младшая сестра мужчины — қарындас, младшая сестра женщины — сіңлі. Оба правила работают на ОДНИХ фактах об одной и той же Күлян и различаются ровно последним конъюнктом о поле эго (TUYS-08/TUYS-09, проверяется в обе стороны — где термин выведен и где НЕ выведен).
Рекурсии в счёте поколений нет, и это не упрощение. Обычай сам стратифицировал счёт: семь именованных ступеней нисхождения (бала, немере, шөбере, шөпшек, немене, туажат, жүрежат) и семь восхождения. Транзитивное замыкание через
monotone§65 выразило бы «предок любой глубины» — не то, что говорит текст, — и граница жеті ата перестала бы быть границей. Восьмая ступень выражена ОТДЕЛЬНЫМ выводом: без неё «начиная с восьмой препятствия нет» было бы молчанием правила, неотличимым от ненайденного предка.Экзогамия — препятствие, а не запрет (модальности prohibition в CLIR 0.1 нет). Форма — closure §70 с explicit negative по образцу
marriage-conditions: обычай сам объявляет перечень препятствий исчерпывающим (ст. 7 абз. 3). Обе границы проверены ЧИСЛОМ ступеней: общий предок в шестом колене даётTRUE_ONLY, в восьмом —FALSE_ONLYот замыкания плюс положительный вывод «общий предок вне жеті ата» (TUYS-22/TUYS-23).Витрина правового плюрализма — два сценария, где своды расходятся, и расхождение ВЫВОДИТСЯ, а не разрешается. TUYS-34: одни факты о смерти отца дают по обычаю қара шаңырақ младшему сыну целиком, а по фараиду — равный вес 2 обоим сыновьям и 1 дочери, без всякого значения порядка рождения. TUYS-35: у пары с общим предком в шестом колене брак допущен Кодексом о браке и семье и встречает препятствие по адату. Выбирать между двумя счётами формализация не уполномочена — она обязана показать оба.
-
Корпус: Закон РК «Об органах внутренних дел» № 199-V ЗРК — формализован целиком, 26 статей из 26. Пакет
corpus/laws/internal-affairs/(12 файлов, 22 сущности, 167 предикатов, 103 правила — 72strict, 29defeasible, 2defeater, — 225 нормативных фактов, 13duty, 7liberty, 4prohibition, 3power), фрагменты режетcorpus/tools/sync_internal_affairs_fragments.py, 17 сценариев вcorpus/kz/acts/internal_affairs.py.Обе меры §33.1: учёт — 26 из 26, объявленных границ 1, неучтённых 0; глубина — EXECUTABLE 25, ANCHORED 0, SOURCE_ONLY 1. Байтовая доля публикации 93,6 % (98 598 из 105 316, 240 фрагментов), разметка §218 — 100 %. Единственная граница — ст. 9-1, ИСКЛЮЧЁННАЯ Законом РК от 30.06.2025 № 203-VIII: в закреплённых байтах от неё остался один заголовок.
Фрагмент на подпункт, а не метка на подпункт. Перечни статей 4–6, 9–12 и 19 — нормы, а не перечисление: ст. 6 п. 1 говорит «обязаны» (53 действующих подпункта), п. 2 — «имеют право» (41). Дословность подпункта положена во фрагмент, а не в метку §218, потому что метку не сверяет ничто, а текст фрагмента сверяется с закреплёнными байтами на каждой сборке (
LDC-E5202). Отсюда 240 фрагментов вместо 70.Три вычислимые нормы. Подъёмное пособие ст. 21 п. 2 —
2 * amount + div_round(number * amount, 2.0, 2, "HALF_UP"), гдеnumberсчитается агрегатом §59 в голове правила; зачёт срока службы «один день за три» и содержание «в трёхкратном размере» ст. 17 п. 2 — умножение на 3; десять календарных дней ст. 25 п. 1 —add_business_daysсcalendar_day(единственное место пакета, читающее снимок §85).Три молчаливых отказа, найденных на акте, и все три
lawc checkпропускает. Агрегат по выводимому предикату (барьер полноты §111) даётNON_EXECUTABLE_RULEу ОБОИХ движков при чистомcheck;goalбезwindow(§124) иpowerбезvalid_when(§125/§127) даютLDC-E1305только наlawc lower— одиннадцать целей и три полномочия прошлиcheckзелёными. Транзитивное замыкание ст. 7 потребовалоmonotone(§65/§103, E-0018): по голому атому цикл не стратифицируем (LDC-E4102). -
Errata E-0038: недельный срок §84.2/§86. Единица счёта
calendar_weekвведена на существующем термеadd_calendar_period. До неё недели не было в перечне §86 вовсе, а естественный обход через7 calendar_dayдавал дату на сутки раньше установленной: дневное семейство отвечает на вопрос «N-й считающийся день от начала», календарное — «соответствующая единица N периодов спустя», и на одной дате при одной политике они расходятся (09.03 против 08.03 от 02.03.2026). То есть дефект был в ОТВЕТЕ, а не в записи, — норма «в течение одной недели» получала неверный срок при полностью зелёной статике.Неделя поставлена в КАЛЕНДАРНОЕ семейство, а не в дневное, по семантике: ст. 14 п. 2 Закона «О правовых актах» определяет её истечение как «соответствующий день последней недели», ровно как месячный срок истекает в соответствующее число последнего месяца. Шаг —
7 × countсуток от начала, приведённогоstart_count; календарь §85 не спрашивается ни разу;month_endпри недельной единице запрещён (прибавление целых суток несуществующего числа не порождает),rollобязан бытьno_roll,include_end—true; приостановление §84.3 отвергается, как у месяца.Квартал сознательно НЕ введён. Ст. 14 п. 1 называет его среди единиц, но п. 2 правила исчисления для него не даёт ни в одном прочтении — ни как три месяца от даты, ни как календарный квартал с фиксированными границами, — и прочтения дают разные даты. Ввести единицу значило бы ответить за законодателя.
Вектор
ERR-E0038-CALENDAR-WEEKS(evaluate, без объявленного календаря — его отсутствие и доказывает, что недельный шаг снимка не берёт), вSUPPORTED; differential 115/115 байтово. Сверка двух семейств на одной дате и отказы — в селфтесте оракула, где календарь доступен. Реестров у новой ЕДИНИЦЫ два, а не три, как у нового терма (E-0029): проверка типов и резолвер имён не трогаются, единица известна только исполнению. Акт «О правовых актах» получил правило абзаца третьего п. 2 ст. 14 и сценарийLEG-26. -
Первая ЖИВАЯ делегационная пара корпуса и код
LDC-W5301: сверка издателя проверяла форму, которой в корпусе нет ни одной (DECISION-0041, инкремент 1 из четырёх границ DECISION-0010). Пара нашлась в уже закреплённых текстах: Закон об ОСМС № 405-V, ст. 34 п. 1 — «закуп… осуществляется фондом в порядке, определяемом уполномоченным органом», и приказ V2000021744, преамбула — «В соответствии с… пунктом 1 статьи 34 Закона… ПРИКАЗЫВАЮ». Не хватало трёх вещей, и каждая была молчаливой. (1) Оговорка ст. 34 была формализована фактомcompetenceнаравне со статьями 10–12, то есть у подзаконного акта не было узла, чтобы назвать основание, — заведена power §127DetermineProcurementProcedure. (2) У редакции родителя стояла одна датаadopted, а §31 относит её к НЕЙТРАЛЬНЫМ событиям: машина применимости D1 честно отвечала «ни одна редакция не применима» на любую дату, и темпоральное звено не подтверждалось никогда — добавленоin_force@2016-03-01, которое вводит сам закон статьёй 41 п. 1. (3) Преамбула приказа закреплена фрагментом §194. Найденный зазор:check_delegationсверял holder ровно формыentity_ref, которая встречается в рукописныхir.jsonвекторов и не встречается в CLIR корпуса ни разу — константа.lawлоуверится вconst_ref, и на единственной форме, которую порождает компилятор, звено «издатель» проходило ВСЕГДА; синтетическая фикстура этого показать не могла, потому что была написана в той же форме, что и проверка. Теперь поимённые формы сверяются обе, а несверяемая (var) даёт предупреждениеLDC-W5301вместо молчания. Воротаci/check_delegation.py— 12/12 → 18/18: три ветки на формы holder-а (включая канарейку, зелёную до правки по неверной причине) и три на живой паре. -
Errata E-0039: тип
Jurisdictionупотреблён нормативно и не объявлен ни одним словарём; воротаcheck_std_registryрасширены на ось ТИПОВ. Закрыт остаток, названный E-0037.STD_TYPES(law-hir/src/lower/helpers.rs) — имена, которые компилятор разрешает вurn:law:std#N, — нёсJurisdiction, а спецификация его не называла ни §35, ни одним из §257–§266;LAW_STDоракула не нёс вовсе. Употреблён он при этом нормативно трижды: §54 печатаетconst KZ: Jurisdiction = Jurisdiction { code: "KZ" };каноническим примеромconst, §89 объявляет им первое полеEvaluationContext, а вендоренный примерspec/examples/kz/social-code-art175.lawпишет им параметры двух relation. Измерено сверкой всех 26 имён:Jurisdiction— единственное без словаря и единственное внеLAW_STD, то есть у двух реализаций были разные представления о том, какие типы существуют.Квалификация — дефект SPEC; реестр компилятора прав. Удалить имя нельзя:
LDC-E2101получили бы §54 и вендоренный пример, а с нимcheck_lower. Направление правки обратное обычному — prose догоняет реализацию, как у E-0037. Семантика 0.1 неподвижна: differential остаётся байтовым 115/115. Package выбран, а не подразумевается —law.std.data§257 рядом сCountryCode(§54 строитJurisdiction { code: "KZ" }, то есть код, называющий правопорядок); §35,law.std.actors§261 и новый package отвергнуты с разбором.Соседи по §89 в std НЕ внесены — главное решение. Напрашивался перечень для
Territory,LegalTime,SnapshotRef,CalendarRefи прочих полей контекста; он неверен, и цена измерена. Имя вSTD_TYPESперекрывает одноимённуюentityпакета: объявление остаётся в namespace пакета, употребления адресуютurn:law:std#N, диагностики нет. Опыт в отдельном worktree:Territory, добавленный в список, отцепил шесть употреблений вkz.corpus.legal_actsиkz.corpus.healthcodeот их объявлений при зелёномlawc check. Критерий членства поэтому — «автор пишет это имя, не объявив», прямо из формулировки §257–§266 после E-0037; ему отвечает одинJurisdiction.Правка: §257 +
Jurisdiction; §35 называет его библиотечным типом, а свой перечень — закрытым; Часть XXXIII получает абзац о второй нагрузке закрытости на типах; §89 получает §89.2 «Статус типов полей контекста». Исполняемого кода — одна строка вLAW_STD.Обязательство отрицательное, исполнено воротами: четыре новые сверки (
STD_TYPES⊆ §35 ∪ §257–§266; минус §35 ⊆LAW_STD; отсортирован; реестр типов у компилятора один). Канарейка ужесточена — 13 мутаций против 7, и каждая обязана ронять СВОЮ сверку по отпечатку сообщения, а не непустоте списка. Ужесточение сразу поймало собственную мутацию ворот: «package пропал из перечней prose» роняла живучесть разбора, а не сверку 1, и ветка «package есть вLAW_STD, но не назван §257–§266» не исполнялась ни разу с заведения ворот. -
Errata E-0035: канал суждения §47.3 имеет тело и не мог нести метку §218 — десять живых объявлений в пяти пакетах корпуса звали себя идентификаторами. §218 после E-0011 читается однозначно: метки несёт любая декларация с телом, а перечень исключений закрыт и перечислен поимённо (
function,enum,const,concept,role, алиасы типов).external judgment relationтело имеет, в перечне не стоит — и метку не принимал:external_itemграмматики допускал толькоcapability,snapshot_from,authority,request_schemaиmetadata_item.labelв теле давалLDC-E0201, причём по диагностике на каждый токен метки — семь на одну строку.Квалификация — дефект SPEC. Расхождения между реализациями нет и быть не может: поверхность одна, живёт в
lawc, и грамматике она не противоречит — противоречат друг другу §218 иgrammar.ebnf. Прежняя запись в этом журнале называла случай «границей поверхности, а не пробелом разметки»; квалификация была неверной, и проверяется она за одну минуту — границы §218 перечисляет поимённо, канала суждения в перечне нет.Цена пробела была двойной, и вторая половина не видна из храповика. Канал суждения предъявляется читателю ДВАЖДЫ: в вербализованной норме, которая на него ссылается, и в самом
JudgmentRequest§47.3, где вопрос адресован органу. Обход, применённый вanti-corruption(назвать суждение соседним институциональным предикатом с меткой), закрывал только первое место: соседнего предиката в вопросе к суду нет, и суд получалillegal_gain_recovered. Измерено: 10 объявлений в 5 пакетах, и в каждом из пяти каналы суждения составляли весь неразмеченный остаток словаря —kz-anti-corruption2,ru-samokat-eula3,us-fnma-income3,kz-criminal-code1,kz-legal-acts1. Пять пакетов не могли достичь полной разметки ни при какой дисциплине автора, а храповик держал остаток как норму.Правка аддитивная. Тело
external_relation_declпереведено сexternal_itemна новую продукциюexternal_relation_item = external_item | label_item; §47.3 показывает метку в примере, §218 уточняет, что телом здесь называется тело из items, а не из операторов. Парсер разбирает метку общимlabel_item, откуда она уезжает в конверт декларации и снимаетсяattach_decl_envelope— то есть лоуверинг менять не пришлось вовсе.external functionв правку не вошёл, и причина глубже поверхности. Метку там некуда положить: такая декларация в 0.1 не понижается в узел вовсе (LDC-E1305), а её тело парсер не разбирает, а пропускает балансировкой скобок — любое содержимое принимается молча. Допусти грамматика метку в общемexternal_item, она была бы принята и потеряна без единой диагностики; ради этого продукции и разделены, а не ради аккуратности.Петля G-M1b закрыта тем же коммитом. Рендерер ir→law такой узел писать ОТКАЗЫВАЛСЯ (сторож
or labelsв ветке judgmentvectors/tools/artifacts/render.py), то есть до errata метка канала не выражалась и на обратном ходе. Сторож снят, метка печатается внутри external-формы, иci/check_lowerдержит байты.Векторы — два, потому что утверждений два.
ERR-E0035-JUDGMENT-LABEL(static): файл ПРИНИМАЕТСЯ иLDC-E0201НЕ звучит — второе не следует из первого, потому что парсер восстановления после ошибки продолжает разбор и мог бы принять файл, отругав метку.ERR-E0035-JUDGMENT-LABEL-HASH(hash-compare): пара, различающаяся только меткой канала, даёт равный semantic hash §209 и различные content hash узлов §202.Корпус размечен, и безопасность правки измерена, а не обещана. Десять каналов названы по-человечески на языке своего акта; после пересборки CLIR semanticHash всех пяти пакетов совпал байтово с прежним, а content hash сдвинулся ровно у десяти размеченных узлов и ни у одного другого — то есть approvals не переходят в
stale, semantic diff §215 не показывает изменения семантики, differential остаётся байтовым (E-0010). Все 44 сценария пяти пакетов зелены. Пять пакетов впервые размечены целиком: неразмеченных объявлений словаря 0. -
Храповик разметки получил третий язык:
RATCHET_LANGUAGES—("kk", "ru", "en"). Пара("kk", "ru")объявляла английские метки «не обязательством разметки», и это было верно ровно до тех пор, пока английских пакетов в корпусе не было. Их три —uefa-ucl,us-fnma-income,us-federal-holidays, — они размечены по-английски целиком, и до этой строки их разметку не удерживал ни один храповик: плоские числа держат факт наличия метки, а не её язык, поэтому подмена английской метки любой другой прошла бы молча, а англоязычный документ звал бы объявления идентификаторами. То же слепое пятно, ради которого разрез заведён (DECISION-0032 §4), — только на третьем языке. Разделlanguages.enдописан в каждую строкуcorpus/label-ratchet.jsonполом по снятому значению; чужие числа не понижены — понизить чужой пол значило бы молча снять чужую защиту. Template pack английского при этом не существует, и это не препятствие: храповик мерит МЕТКУ — человеческое имя объявления, которое читают и вне вербализации (витрина,law_rules,JudgmentRequest§47.3). -
Errata E-0037: §258 не называл четыре терма, которые исполняют обе реализации, — и проверки «prose против реестра» для std-имён не было ни одной. Перечень
law.std.time§258 стоял на шестнадцати именах (типы + предикаты интервалов), а реестрLAW_STD, оба списка исполнимых термов и оба ручных реестра компилятора несли сверх негоadd_business_days(§86),add_calendar_period(§84.2, E-0029),days_between(§84.4, E-0015) иhours_between(§84.1, E-0028).Квалификация — дефект SPEC, восполнение перечня, а не изменение семантики (форма E-0030: «словарь не называет то, что реализовано»). Не дефект реализаций: они согласны друг с другом и с prose §84/§86, где семантика каждого терма определена нормативно. Не изменение семантики 0.1: §84/§86 не тронуты, поведение неподвижно, голдены не двигаются, differential остаётся байтовым; правится словарь, а не язык.
Почему накопилось. Перечень вошёл в чек-лист errata только с E-0036 («плюс нормативный перечень
law.std.money§260») — и ровно этот перечень сегодня сходится. E-0015 объявила составlaw.std.timeизменившимся и не изменила ни одного перечня (заодно сославшись на §257 вместо §258); E-0028 реестров не назвала вовсе; E-0029 назвала ТРИ места у каждой реализации и остановилась.add_business_days§86 старше всех трёх и не был назван никогда. Измерено сверкой всех десяти перечней: §258 — единственный разошедшийся.Молчали все три ноги контура. Differential сравнивает БАЙТЫ двух реализаций — согласное отклонение обеих от prose он не видит по построению. Схемы состав std не выражают:
CallTermописан для любого имени (проверено grep-ом поspec/schema/иconformance/— ни одного std-имени). Lean читает proof-графы.Правка (аддитивная): §258 получает пятую строку с четырьмя термами и абзац, отделяющий их от Boolean-предикатов интервалов; Часть XXXIII получает закрытость перечней §257–§266 прямым предложением (по образцу §179) и НЕСИММЕТРИЧНОЕ направление: «реализуемое ⊆ словарь» жёстко, обратное включение не требуется — имя, названное перечнем и не реализованное (
currency_convert§260), есть объявленная поверхность 0.1, и сужать словарь под реализуемый срез значило бы дать реализации право определять язык. -
Порт
/над Decimal-семейством вlaw-eval: differential перестал молчать о трети живых вызовов. Ветка"div"движка считала толькоInteger / IntegerиRational / Rational; три пары §58 с делителемDecimal(Decimal,Money,Quantity) отвечалиUNSUPPORTED_IN_SLICE— ПРЕЖНИЙ пробел среза, оставленный при выводе видов арифметики и не следствие E-0020/E-0036. Оракул их считал: 10-гладкий знаменатель частного → точныйDecimal, иначеDecimal / Decimal→ точныйRational, аMoney/Quantity→INEXACT_DIVISION(§18/§90).Цена измерена исполнением, а не оценена: на живом пакете
fnma-income(семь правил делят Money) это 33 расхождения из 43 перехваченных вызововci/check_kz_differential.py. KZ-регрессия при этом была зелёной 19/19 — она спрашивает оракула, движка не спрашивает вовсе, и пробел жил ровно в зазоре между этими двумя фактами.Квалификация по инварианту 8 — дефект
lawc(порт), не SPEC и неlawref. Прозе §58 обе реализации не противоречили: движок честно ОТКАЗЫВАЛ кодом «вне среза», а не считал иначе. Errata поэтому не заводится; закрытие вписано побочными записями к E-0020 и E-0036.Правка.
exact_quotientвlaw-eval/src/values.rs— порт хвостаvalues.binary("div")вместе с_exact_decimalоракула: частное сводится к несократимой дроби наi128, знаменатель проверяется на 10-гладкость, и по её итогу выбирается вид ответа. Переполнениеi128отвечаетUnsupported— как уadd/mul/div_round: у оракула целые неограниченные, и честный отказ среза лучше неверного числа. ФормулировкиINEXACT_DIVISIONиDIVISION_BY_ZEROсовпадают с оракулом дословно — байтовый контракт §211 покрывает текст issue, и слово вида в нём своё уmoneyи уquantity.Векторы T127…T133 — по вектору на прочтение §58: точный
Decimal(8 = 2³ и 5 в одном терме — обе стороныk = max(двоек, пятёрок)), точныйRational(1,0/3,0 + литерал 1/6 = 1/2, канон E-0005),MoneyиQuantityс сохранением валюты и единицы, оба отказа порознь и делитель0.00— предложение §58 «division by zero не превращается в UNKNOWN» до сих пор не имело вектора ни одного. Все семь вSUPPORTED; измерено: 0/7 против движка ДО правки, 114/114 после (было 107 — ровно +7). Вci/check_kz_differential.pyбайтовый контракт 2706/2706, расхождений ноль; сам гейт красен по другой причине — храповик покрытия корпуса, — и она к порту не относится: KZ-регрессия зовёт оракула, а правка вlaw-eval. Замороженные голдены неподвижны. -
Errata E-0036: деление под явной политикой округления — терм
div_round(§58/§50). §58 обещал уMoney / DecimalиQuantity / Decimal, что при неточном делении округление законно «только явной policy §50/§18», — а применить её было НЕ К ЧЕМУ:round§50 берёт уже вычисленное значение, а вычислить частное/не даёт (INEXACT_DIVISION). У парыDecimal / Decimalдыра зеркальна:/возвращаетRational(E-0005/E-0020), которыйroundне берёт. Обе закрывает один терм — деление и округление в нём ОДНА операция над точным частным, потому что композиция двух невыразима с обеих сторон.Делимые — те же три пары §58 с делителем
Decimal; вид результата — вид делимого.Integer / IntegerиRational / Rationalисключены осознанно: их частное точно всегда, а округление сменило бы видRational→Decimal(§48 конверсий не знает). Границу задал контрпример корпуса — фараид несёт норму «Округление не допускается ни на одном шаге расчёта», и исполняет её система типов, а не правило пакета. Округление применяется ВСЕГДА, а не только при неточном частном: иначе точность результата зависела бы от значения, а не от нормы.precisionограничен 0…34 явно и одинаково в обеих реализациях — иначе они разошлись бы на переполненииi128, то есть не на семантике./не изменён ни на одной паре: норма без политики по-прежнему получаетINEXACT_DIVISION, тихого HALF_UP не появилось.Цена измерена корпусом: семь правил
fnma-income; Социальный кодекс ст. 123/127 (разрыв дохода за КВАРТАЛ вместо месячного назначения); ст. 78 —income * (days / 30.0)исполнимо ровно при числе дней, кратном трём (66 значений из 200), а оба сценария регрессии выбрали 126 и 30, и пробел был воротам невидим.Полный круг: prose §58/§50/§260 + пять реестров (
values.py,values.rs,std_registry.py,law-hir/types.rs,law-hir/lower/helpers.rs) + векторыERR-E0036-DIV-ROUNDиERR-E0036-DECIMAL-QUOTIENTвSUPPORTED, differential 107/107 байтово; 13 проверок селфтеста оракула и два юнит-теста движка на тех же входах. Схемы не менялись,schemaVersionне бампается. -
«Қара сөз» Абая Құнанбайұлы: пакет
kz.corpus.qarasoz— первый источник корпуса, который НЕ ПРИТЯЗАЕТ БЫТЬ ПРАВОМ. Сорок пять прозаических слов, написанных между 1890 и 1898 годами; ни съезд, ни собрание, ни автор не придавали им силы. Проверяется не право, а применимость аппарата к нормативному тексту без органа, без санкции и без срока. В корпусе это диптих с «Қарамола ережесі» (1885): у обоих текстов один автор — ереже готовила комиссия во главе с Абаем, — и обе формализации мерятся одними воротами.Закреплено тело публикации портала abai.kz (
PINNED_UNOFFICIAL_COPY, 214 103 байта) — новым срезомextract_source_text.py --abai-post-body, с проверкой обеих границ: страница несёт ленту новостей и комментарии читателей, и закрепить её целиком значило бы внести в репозиторий высказывания третьих лиц и свести долю §33.1 к величине о вёрстке портала.Новая единица деления §33.1 — «слово». Заголовок стоит числительным прописью («ЖИЫРМА ЖЕТІНШІ СӨЗ»), номера в тексте нет вовсе, и шести автоматических конвенций не хватало: произведение было бы для обеих мер невидимо МОЛЧА (тот же отказ, что у «26-бап» и топика Fannie Mae). Единица объявляется
"unit": "word", таблица числительных живёт вarticles.jsonсамого акта, и оттуда её читают обе меры (ci/check_source_pinning.py,boundaries.py) и генератор фрагментов.Меры: покрытие текста 100,0 % (214 059 из 214 103 байт; непокрытые 44 — переводы строк между словами), учёт 45 из 45 слов при нуле объявленных границ, глубина EXECUTABLE 45 / ANCHORED 0 / SOURCE_ONLY 0. 120 правил, 9 closure, 4 приоритета; 30 проверок
QS-01…QS-29(у слова 31 их две — QS-12 и QS-12B: перечень читается конъюнкцией, и пара доказывает это) в KZ-регрессии, 30 из 30 вызовов байтово совпали у обеих реализаций.Ни одной позиции §122: текст дважды говорит словом обязанности («иман парыз», «құлшылық қылмаққа қарыздар»), но у этого парыза нет ни срока, ни органа, ни последствия нарушения, и вывод доходит до квалификации и останавливается — как у «De legibus».
Что нашлось исполнением: слово 38 объявляет два вида самопревознесения и перечисляет три (выводятся оба числа и факт расхождения); слово 32 ссылается на «он тоғызыншы бап», а перечень стоит в слове 31 (неразрешимость выводится, а не чинится правкой источника); разные слова сходятся на одном предикате, и §111 переносит поражаемость слова 30 на цепь слова 3.
Дефект
lawc, найденный исполнением (квалификация по плану §2.4): гард(a == OrysGylymy)— сравнение переменной с константой-сущностью —lawc checkпринял молча и выдал чистый CLIR, а оракул отверг правилоTYPE_ERRORи вместе с ним весь пакет. Ворота лоуэринга были зелёными при неисполняемом праве. -
Таможенный кодекс Республики Казахстан № 123-VI: пакет
kz.corpus.customs_code, Разделы 1–7 (Главы 1–63, ст. 1–543) закрыты — все 65 глав кодекса рассмотрены. Закреплён весь консолидированный текст (26.12.2017, редакция портала «Әділет» на 28.08.2026, PINNED_UNOFFICIAL_COPY) — 590 заголовков статей (1–571 с учётом 18-1, 392-1..392-10, 416-1, 528-1..528-7), крупнейший акт корпуса на сегодня (4,26 МБ). Все статьи адресуемы фрагментами (code_article_addressed,corpus/tools/sync_customs_code_fragments.pyпо образцу Предпринимательского кодекса). Раздел 1 (Гл. 1–6): приоритет международного договора и Кодекса над иными законами (§4), исчисление сроков черезadd_calendar_period(§6 пп. 3–6, 8), применимая дата регулирования (§7); возмещение убытков от (не)правомерных решений (§15 пп. 2–3), лимит контроля при остановке ТС (§18 п. 1), право на обжалование (§21); срок уведомления о запрете (§32 п. 3), режим повреждённых товаров (§35), статус товара ЕАЭС у конфискованных товаров (§36), условия разрешения на отбор проб (§37 п. 2); сроки решения о классификации товара, первый срез сadd_business_days(§44 п. 5, §45 п. 3, §46 пп. 1–2, календарный снимок §85 подключён —run_customs_codeпринимает второй CLIR,official_calendar); тот же каркас для решения о происхождении, срок действия — производный от сертификата (§60 п. 5, §61 п. 4, §62 пп. 1–2); статьи, где таможенная стоимость не определяется (§65 п. 3), условия применимости метода 1 (§66 п. 1). Раздел 2 (Гл. 7–13): своевременность уплаты сбора за декларирование и освобождения от сборов (§77 п. 2, §80 п. 1); применимая дата ставки, срок уплаты при незаконном перемещении, срок исковой давности 3/5 лет (§84 п. 1, §88 п. 4, §89 п. 2); месячный лимит процентной отсрочки, пятидневный срок решения об отсрочке (§92 пп. 1, 6); срок заключения договора залога, непригодное для залога имущество (§101 пп. 2, 4); срок сведений об отсутствии задолженности (§107 п. 1); основания признания задолженности безнадёжной (§121 п. 1); срок уплаты и срок давности для антидемпинговых/компенсационных пошлин — текстовый близнец §89 в отдельном фактовом пространстве (§138 п. 3, §143 п. 2). Раздел 3 (Гл. 14–20): освобождение декларанта от ответственности при своевременной доплате, срок подтверждения сбоя цифровой системы (§150 п. 3 пп. 7, п. 3 ч. 2 пп. 8); срок уведомления об аварийных грузовых операциях, срок уплаты при недоставке (§156 п. 3, §157 п. 4 пп. 1); срок уплаты при утрате товаров при убытии (§163 п. 3); срок временного хранения 4/6 месяцев, срок рассмотрения заявления об операциях (§172 пп. 1–2, §173 п. 2); срок подачи декларации, связанный с Главой 17 черезTemporaryStorage(§181); срок выпуска товаров — 4 часа по общему правилу и 1 рабочий день при продлении, независимые правила без приоритета (§193 пп. 1, 3); день обращения в собственность государства по процедуре отказа — §205 (по решению суда) не продублирован, содержа- тельно уже покрыт §36 Главы 3 (§206). Раздел 4 (Гл. 21–38, таможенные процедуры): семнадцать видов процедур (§207 п. 2), у каждой — один-два чистых числовых срока поверх многоветвевой государственной машины возникновения/прекращения обязанности по уплате платежей, оставшейся входом (тот же выбор среза, что у Глав 7–9). Пятнадцать календарных дней на завершение процедуры при привлечении к ответственности, первое использованиеadd_business_daysс unitcalendar_day(§213 п. 5); трёх- и пятилетний сроки при выпуске для внутреннего потребления (§215 п. 2 пп. 1, §216 п. 4 пп. 1); годичный срок вывоза при завершении СЭЗ экспортом (§219 п. 5); крупнейшая глава раздела — день на решение об изменении места доставки и три часовых срока автомобильного транзита, сроки по воде/воздуху/железной дороге остались входом (§225 п. 7, §231 пп. 3, 7, §232 п. 1 пп. 1); шестидесятидневный срок при прекращении функционирования таможенного склада, пятидневные сроки размещения и вывоза (§237 п. 4, §239 п. 1, §241 п. 4); три процедуры переработки (на территории / вне территории / для внутреннего потребления) — текстовые близнецы в отдельных фактовых пространствах, тот же приём, что у §89/§143 (§245 п. 3, §253 п. 6; §258 п. 3, §264 п. 9; §270 п. 3, §277 п. 5); четырёхмесячный и два шестимесячных срока свободной таможенной зоны — отдельные отношенияsez_procedure_end_due_by/_status_loss, чтобы не повторить коллизию Главы 14 (§285 п. 11, §287 п. 1 пп. 1–2); шестимесячный срок свободного склада (§296 п. 1 пп. 1); десятидневные сроки рассмотрения заявлений о продлении временного ввоза/вывоза, пятнадцатидневный перенос при отказе (§302 пп. 4–5, §310 п. 4); шесть/девять месяцев на зачёт пошлин при реимпорте — четвёртый приоритет пакета, тот же паттерн defeater’а атома, что §7/§46/§172 (§318 пп. 1–2); четырёхмесячный срок вывоза и трёхдневный перенос на временное хранение при реэкспорте (§321 пп. 2–3); пятидневный срок декларации при отказе в выпуске и трёхмесячный срок при закрытии магазина беспошлинной торговли, срок «не позднее 10 числа следующего месяца» не формализован — день- число-месяца внеadd_calendar_period/add_business_days(§327 пп. 3, 6). Главы 36–38 (уничтожение, отказ в пользу государства, специальная процедура) без собственного числового условия сверх уже покрытого — не заведены отдельными правилами. Раздел 5 (Гл. 39–45-1, особенности перемещения отдельных категорий товаров): двухмесячный срок уведомления переселяющегося иностранца (§342 п. 5); тридцатидневные сроки помещения транспортного средства международной перевозки под процедуру после передачи права собственности и подачи заявления о нестандартных операциях (§359 п. 8, §360 п. 4); трёхчасовой срок доведения запрета ввоза почтовых отправлений, двухдневный срок помещения на хранение (§369 пп. 6, 11); десятидневный срок декларирования внеплановых перетоков электроэнергии, пятнадцатидневный срок ответа на запрос об учёте (§374 п. 5, §375 п. 9); шесть сроков электронной торговли — 30/60 дней выпуска и завершения процедуры при исключении оператора из реестра (разные последствия одного триггера, отдельные отношения, тот же приём, что у Главы 29), 3 и 5 рабочих дней на размещение и уведомление о возврате товаров, 5 рабочих дней на декларацию при отказе в выпуске, 10 рабочих дней на уведомление о неуплате пошлины (§392-3 п. 4, §392-6 пп. 7, 11, 13, §392-8 п. 20). Первое использование иерархических номеров статей в анкорах — имя фрагмента несёт подчёркивание (CC_ART392_3),locatorнесёт дефис отдельно ("article/392-3"); сверено с99-sources.lawдо компиляции. Главы 41 (припасы) и 44 (дипломатические и консульские лица) на этом срезе прочитаны по шаблону срока и помечены без условия; при отзыве (см. отдельную запись ниже) сплошное повторное чтение нашло в обеих условные правила без единиц времени. Глава 45 (перемещение через территории третьих государств) при том же повторном чтении подтверждена без собственного числового условия — не заведена отдельными правилами. Раздел 6 (Гл. 46–55, проведение таможенного контроля): тридцатидневный срок завершения проверки происхождения товаров (§397 п. 3); шестидесяти- и десятидневный сроки представления документов при проверке после выпуска, двухчасовой срок акта таможенного осмотра, однодневный предел осмотра помещений, трёх- и десятидневный сроки при ликвидации проверяемого лица (§410 пп. 14–15, §412 п. 5 пп. 1, §415 п. 8, §416 п. 6-1); двадцать четыре часа на организацию таможенного и электронного сопровождения (§429 п. 6, §437 п. 5); месяц/два месяца на исполнение запроса и поручения о контроле (§445 п. 6, §447 п. 7); тридцать календарных дней хранения задержанных товаров по умолчанию, вытесняемых двадцатичетырёхчасовым сроком для скоропортящихся товаров (пятый приоритет пакета), три дня для случая статьи 32, три года на возврат сумм от реализации (§454 пп. 1–2, §457 п. 2); двадцати- и пятнадцатидневный сроки реестра объектов интеллектуальной собственности, первое правило пакета, считающее срок в обратном направлении — сложением, а не вычитанием, — для проверки, что заявление о продлении защиты подано вовремя, трёх- и однодневный сроки исключения из реестра, двухлетний предел срока защиты (§461 пп. 7–8, §462 п. 1, §463 п. 2, §464 п. 1); трёх- и двадцатидневный сроки таможенной экспертизы, пятнадцать рабочих дней на невостребованные пробы (§466 п. 8, §468 п. 1, §471 п. 9); тридцатидневный срок подачи жалобы, тридцати- и сорокапятидневный сроки решения по ней — шестой приоритет пакета, срок для крупных налогоплательщиков вытесняет общий (§476 п. 1, §479 п. 1). Найдена коллизия по совпадению слов, не по имени: черновик §410 п. 14 предполагал переиспользоватьdeclaration_registered_onс сигнатурой(declaration: CustomsDeclaration, day: Date), но существующее одноимённое отношение (Глава 1, §7) типизировано наRegulatedMovement—lawc checkпоймал несовпадение типа аргумента (LDC-E2104) при первой сборке; заведено отдельное имя. Главы 49 (цифровые системы) и 51 (система управления рисками) — институциональные, без собственного числового условия — не заведены отдельными правилами. Раздел 7 (Гл. 56–63, лица в сфере таможенного дела и уполномоченный экономический оператор): семь реестров с текстово тождественной структурой жизненного цикла (заявление → включение → приостановление → исключение → сообщение об изменениях); Глава 57 (таможенный представитель) формализована полностью, семь сроков — образец (§490 пп. 4–5, §491 п. 3, §492 п. 2, §494 п. 1 пп. 5); Главы 58–62 и 62-1 (перевозчик, владелец СВХ, владелец таможенного склада, владелец свободного склада, владелец магазина беспошлинной торговли, оператор электронной торговли) на этом срезе формализованы двумя первыми сроками образца — рассмотрение заявления и уведомление о включении, — остальные пять сознательно не продублированы семь раз подряд (реестры юридически самостоятельны, тот же приём, что у §89/§143 и Глав 26–28); при отзыве (см. отдельную запись ниже) решение пересмотрено, все шесть глав доведены до полного образца — семь правил каждая. Глава 63 (уполномоченный экономический оператор) структурно самостоятельна: восемь своих сроков от девяноста календарных дней на решение о свидетельстве до ста двадцати календарных дней на подтверждение устранения причин приостановления (§533 пп. 2, 7, 10, 15–16, §534 пп. 2, 4, 8). Глава 56 — пять рабочих дней на требование к поручителю и пять рабочих дней на его исполнение (§486 п. 15). Итого на этом срезе 183 правила, 6 приоритетов; 170 сценариевCC-01…CC-169(CC-110B делит случай с CC-110) в семействеcustoms_codeKZ-регрессии, точечный дифференциал байтовый (171/171 перехваченных вызовов).boundaries.py: 104 EXECUTABLE / 486 ANCHORED / 0 SOURCE_ONLY из 590 — заголовок «полная формализация» здесь про полноту адресуемости текста, не вывода; все 65 глав кодекса рассмотрены. Эти числа обновлены отзывом ниже.Раздел 8 («Заключительные и переходные положения», §544–571, 28 статей) прочитан целиком и сознательно не даёт исполнимых правил — по итогу чтения, а не по недосмотру. Каждая статья — одна из трёх форм: (1) триггер уже прошёл (исторические даты 2018–2021: §544 п. 1, §555, §558 п. 3, §559 п. 1, §570 п. 1, §571); (2) условие ссылается на решение Комиссии, которого нет в этом корпусе и которое нельзя подтвердить, не сфабриковав факт (§546 п. 1, §552, §553 пп. 5–7, §558 п. 1, §560 п. 3, §566, §568 — большинство раздела); (3) содержание — временная РЕДАКЦИЯ уже формализованной статьи текстом внутри переходного положения (§550 переопределяет §89, §551 — §143, §564 — абзац §125), требующая второго временного слоя через
rule temporal qualifiers(§87), ни разу не понадобившегося на этом срезе. Ни одна форма не формализуется без фабрикации факта о решении Комиссии либо ввоза в корпус второго нормативного текста (Таможенного кодекса Таможенного союза, Кодекса РК от 30.06.2010), которых здесь нет. Раздел остаётся ANCHORED — 28 фрагментов уже адресуемы через99-sources.law. Итог по всему акту на этом срезе: 104 EXECUTABLE / 486 ANCHORED / 0 SOURCE_ONLY из 590 — измерено, не предположено; заголовок «полная формализация» был обещанием полноты адресуемости и честного учёта глубины, а не полноты вывода из каждой статьи. Эти числа обновлены отзывом ниже — Раздел 8 сам по себе отзыв не оспорил.Найдена коллизия имён: Глава 14 объявила
violation_detected_onс другой сигнатурой, чем уже существующее отношение из Главы 1 —lawc checkпоймал её при компиляции (LDC-E1201,LDC-E2104), без последствий для уже принятых глав. С этого момента новое имя проверяется на коллизию (grep -rn "^relation \|^entity " corpus/laws/customs-code/*.law | sort | uniq -d) до попытки компиляции, а не после.Четыре находки о существующей семантике, не специфичные для этого акта: (1)
add_calendar_periodдействительно читаетpolicy.start_count next_dayкак сдвиг АНКОРА перед счётом периода, а не как косметический маркер рядом с вычислением — семилетний срок от 15 марта истекает 16-го; (2) приоритет междуdefeasible-правилами гасит буквальныеP/not Pодного ground-атома, а не выбирает между правилами, выводящими РАЗНЫЕ значения одного отношения — конкурирующие даты §7 и сроки §46 потребовали defeater’а, явно отрицающего тот же атом, а не приоритета между производящими правилами напрямую; заход соstrict-правилом поверхdefeasible-предиката режима отклонён компилятором какLDC-E4103LATE_STATUS_PRODUCER(§111) — status-sensitive потребление defeasible-вывода из strict в 0.1 недоступно, это L3; (3)strict-правило с отрицательной головой (then not P) не даётFALSE_ONLYдаже при выполненной посылке — обнаружено на §15 п. 3, лечится тем же приёмом, что и остальные отрицательные головы пакета: правило становитсяdefeasible; (4)policy.month_endзапрещён у дневных единицadd_business_days(unit ∈ {business_day, calendar_day}) —DEADLINE_POLICY_INVALID, поле относится только кcalendar_month/calendar_year(§86); первый срез пакета со счётомcalendar_day(§213 п. 5) заводит отдельнуюPLAIN_DAY_POLICY(roll: no_roll, безmonth_end) вместо переиспользо- ванияCALENDAR_POLICY. -
Таможенный кодекс: отзыв по условию «полная формализация» и его закрытие (28.08.2026). Контур самопроверки сессии отверг промежуточный итог 104 EXECUTABLE / 486 ANCHORED (запись выше) как не отвечающий заявленному условию, указав на Раздел 8 целиком, пять глав без правил (41, 44, 45, 49, 51) и семь реестровых глав Раздела 7 с двумя правилами из семи образца. Раздел 8 подтверждён отзывом без возражений (обоснование выше не оспорено). Остальное закрыто по существу:
Главы 41, 44, 45, 49, 51 перечитаны СПЛОШНЫМ текстом, а не повторным поиском по шаблону срока — прежняя разметка «без условия» опиралась на регекс по единицам времени и не отличала отсутствие дедлайна от отсутствия любого условного правила. §364 п. 4 Главы 41 (статус товара ЕАЭС у припасов по факту опознания таможней при обратном ввозе) и §381 пп. 1–3 Главы 44 (льгота по пошлине дипломатическому/консульскому лицу с вытеснением для почётного консула, приём defeasible+priority, новый приоритет пакета) — обычные условные правила без единиц времени, заведены новыми файлами
41-supplies.lawи44-diplomatic-persons.law. Найдено при этом:notнадkind empiricalвstrict-теле в этом движке не есть closed-world negation-as-failure — правило с посылкойand not p(x)при отсутствии фактаp(x)даётNEITHER, не срабатывает как при его логическом отрицании; лечится собственным положительным фактом «невозможности» вместо отрицания (customs_unable_to_identify_returning_supplies, тот же приём, чтоdebt_collection_impossibleГлавы 12). Главы 45, 49, 51 при том же сплошном чтении подтверждены без правила: Глава 45 — государственная машина условий транзита и передач Комиссии, Главы 49 и 51 — институцио- нальные полномочия и определения (у Главы 51 критерии степени риска прямо объявлены конфиденциальными и не выражены в тексте акта).Главы 58–62 и 62-1 доведены с двух правил до полного образца Главы 57 — семь правил каждая (заявление, решение и уведомление о приостановлении, решение и уведомление об исключении, изменение сведений), отдельными сущностями на главу. Прежнее обоснование «семикратное повторение не даёт нового знания» верно для юридического СОДЕРЖАНИЯ (структура тождественна Главе 57), но не снимало того, что реестр без правил о приостановлении и исключении оставляет свои решающие пункты ANCHORED без причины сверх экономии печатных правил — решение пересмотрено.
Итог: 104→124 EXECUTABLE, 486→466 ANCHORED (
boundaries.py); 218 правил и 12 приоритетов на весь пакет (было 183/6 на момент закрытия Раздела 7 в записи выше — цифра приоритетов там сама уже отставала от факта: девять штук стояли в более ранних главах, не только шесть; пересчитано прямымgrep -c "^priority " corpus/laws/customs-code/*.law, а не по памяти); 205 сценариевcustoms_code(было 170) —CC-200…CC-204довязаны вне последовательной нумерации тем же приёмом, что CC-110B. Точечный дифференциал (diff_customs.py) — 206/206 байтовых; полная KZ-регрессия иlawc checkпакета чисты;scenario-ratchet.jsonиlabel-ratchet.jsonподняты точечной правкой (584/218 размеченных объявлений/норм). -
Доход от занятости по Fannie Mae Selling Guide: пакеты
us.fnma.selling_incomeиus.code.federal_holidays. Формализованы разделы B3-3.1, B3-3.2 и B3-3.3 руководства (редакция 04.03.2026, Announcement SEL-2026-02) — от документов дохода до qualifying monthly income; девятнадцать сценариевFNMA-01…FNMA-16в семействеfnmaрегрессии, под KZ-differential. Шестой неказахстанский акт корпуса и второй частный: нормодатель — корпорация, принуждение договорное. Закреплено 60 048 байт (пятнадцать топиков, воспроизводимое извлечениеcorpus/tools/fetch_fnma_b3_texts.py, повторный--checkпо сети даёт те же байты); фрагментов 20, единица — раздел ВНУТРИ топика; учёт §33.1 — 9 формализовано, 6 объявлено границей с полемdespite, неучтённых 0. Задание называло срез «B3-3.1 (Employment and Other Sources of Income)» — так глава делилась в прежних редакциях; расхождение решено в пользу закреплённого текста и записано в README пакета.Первый акт корпуса, чей срок считается в РАБОЧИХ днях по календарю чужого акта: 5 U.S.C. §6103 закреплён отдельным пакетом (публикация GPO,
corpus/tools/fetch_usc_6103_text.py), а календарь 2026 года ВЫВОДИТСЯ его исполнением (gen_kz_clir.us_federal_calendar_2026) — подстановка §6103(b)(1) за субботу 4 июля даёт нерабочим 3 июля, и десятый рабочий день после проверки занятости сдвигается на день. Подстановка выражена отрицательной головой с приоритетом §116: одной положительной нормы не хватает —key(h)двух разных дат конфликтом не считает.Найдено этой формализацией и записано в STATUS.md: деление
Moneyпод явной политикой в v1 НЕВЫРАЗИМО (все четыре обхода проверены исполнением; §58 обещает policy, применить её не к чему); приоритет §116 применяется только ВНУТРИ страты §110 и через страту молчит при чистомlawc check;external judgment relationне принимает метку §218, отчего каждый канал суждения §47.3 числится неразмеченным.Реестры:
ACT_RUNNERS/CLIR_PACKAGES(corpus/kz/registry.py),LOWERED_ACTS(corpus/gen_kz_clir.py),scenario-ratchet.json(fnma: 19),label-ratchet.json, две строки--checkв шаге 6/39ci/run_all.sh. Конвенции учёта §33.1 расширены единицами деления «топик руководства» и «секция Кодекса США» с английским набором признаков исполнимого содержания (ci/check_source_pinning.py,.claude/skills/formalize-act/scripts/boundaries.py); ключ сортировки объявленных границ перестал требовать числовой номер статьи. -
law_search— поиск по формализованному праву своими словами (DECISION-0040, черновик). Слой обнаружения над MCP-сервером: запрос (ru/kk) → кандидаты с адресами и следующим шагом; детерминированный лексический эмбеддер без внешних зависимостей (crc32-триграммы, 512 корзин, косинус), индекс в памяти с кэшем по отпечатку байтовcorpus/clir, подстрочный фолбэк. Границы решения: эмбеддинги никогда не участвуют в вычислении ответа, ворота CI от индекса не зависят,law_askне изменён. Генераторmcp/gen_embedding_index.py(файл — только в--out); тесты — секция 6дmcp/test_server.py. -
law_searchv2: лексический эмбеддер до предела перед выбором нейронной модели (DECISION-0040 §3a). Модельtrigram-hash-idf/2: 2^20 корзин вместо 512 (главным дефектом v1 оказались коллизии хэша — целевые предикаты голден-запросов встают с мест 3–4 на место 1 от одной этой правки), IDF из тех же байтов корпуса (ключ кэша не изменён; шум «дегазации» с места 2 на 66; на 512 корзинах IDF инвертируется — порядок правок несущий), нарезка статей по пунктам «N.» (адрес кандидата — пункт, индекс видит всю статью, а не первые 1000 знаков), схлопывание байтовых зеркал пакетов в одну строку сalsoIn(~8% единиц — копии), порог 0.15 вместо мёртвого 0.05 — запрос по не формализованной области впервые даёт честное «похожего не найдено» (с явнымpackageпорог снят: скоуп выбран человеком). Генератор пишет разреженные векторы (law.embindex/0.2). Голден-запросы — ассерты секции 6дmcp/test_server.py; они же — измеренная планка, которую обязана перебить будущая нейронная модель (слотMODEL, §5 решения). -
Аналитика в MCP-сервере:
law_argue,law_loophole,law_amend+ вопросы судье в ответах. Три инструмента поверх движков DECISION-0035/0039 (mcp/law_mcp/analysis.py): прочность вывода по профилю §274 (классы «неуязвим / лишь защитим / отвергнут / аргументов нет», правила — метками §218), bounded-поиск лазеек L8.2 (алфавит шагов сеется сущностями вопроса; цель, достижимая уже фоном, честно помечаетсяalreadyReachableвместо вырожденных «лазеек») и синтез минимальной поправки L8.3 (keep-вопросы пиннят регресс, правки описываются словами юриста).law_askиlaw_draft_evalприREQUIRES_JUDGMENTпоказывают вопросы судье — орган, предмет, заявленную форму ответа (§47.3, DECISION-0024/0036) — и несут их вstructuredContent.judgmentRequests. Контракт закреплён десятью проверками вmcp/test_server.py(позитив, детерминизм x2, NO_ARGUMENT, alreadyReachable, судья в черновике). -
Закон РК «О правовых актах» № 480-V ЗРК формализован целиком — 71 статья из 80 выводится правилами, девять оставшихся текста не имеют. Пакет
corpus/laws/legal-acts/(19 файлов, namespaceurn:kz:corpus:clir:legal-acts). Особый в корпусе предметом: это не отраслевой акт, а метамодель самого законодательства — те же понятия, которыми Law DSL описывает любой другой акт (source,edition, вступление в силу, приоритеты §115), здесь становятся предметом вывода.Обе меры §33.1 названы обе, потому что порознь каждая обманывает: учёт — 80 из 80, объявленных границ 9, неучтённых 0; глубина — EXECUTABLE 71, ANCHORED 0, SOURCE_ONLY 9; байтовая доля закреплённой публикации 97,1 % (258 673 из 266 369, 80 фрагментов; непокрытое — меню и подвал страницы портала). Девять статей без нормы — не выбор автора, а состояние источника: ст. 21, 33, 33-1, 33-2, 38, 39, 41, 44 и 63 исключены изменяющими законами, на портале от них остался только заголовок; каждая объявлена в
sources/legal-acts/articles.jsonс проверяемой причиной. Байты закреплены воспроизводимо (extract_source_text.pyдважды даёт идентичный выход,PINNED_UNOFFICIAL_COPY), фрагменты режетcorpus/tools/sync_legal_acts_fragments.py. 25 сценариев (ACT_RUNNERS["legal_acts"]), differential байтовый.Что этот акт дал корпусу впервые:
- иерархия как ВЫВОДИМОЕ отношение, а не таблица. Уровень акта
вычисляется из формы (п. 2 ст. 10), для производных — из формы основного
акта (п. 4), а для форм «имеющих силу конституционного закона или
закона», которых в перечне п. 2 нет вовсе, — из равенства юридической
силы (пп. 28 ст. 1). Промежуточный шаг объявлен отдельным отношением
equal_force_form, чтобы истолкование было видно и проверяемо, а не спрятано в константе; - молчание как проверяемое содержание нормы. П. 5 ст. 10 выводит из
иерархии постановления высших судов и акты Председателя Совета
Безопасности; уровня у них нет, и правило п. 1 ст. 12 по ним обязано
НЕ ОТВЕТИТЬ. Сценарий
LEG-03проверяет именноNEITHER— появление ответа там будет отказом, а не улучшением; - различение вступления в силу и введения в действие. П. 1 ст. 42 (акт существует юридически) и п. 3 (акт начинает применяться) — разные события с разными датами; п. 3 ст. 12 разрешает коллизию по второму, а ст. 43 отсчитывает от него же обратную силу. Слитые в одно поле, они потеряли бы обе нормы;
- шестидесятидневные нижние границы п. 4-1, 5 и 6 ст. 42 через
календарь. Сценарий
LEG-09: шестьдесят календарных дней от 2 марта истекают 1 мая — нерабочий день, и абз. 2 п. 3 ст. 14 переносит окончание на 4 мая. Ожидание записано по календарю §85, а не арифметикой по датам; - канал суждения §47.3 на КОЛЛИЗИИ актов. Предложение второе п. 4
ст. 64 отдаёт приоритет одного индивидуального акта над другим
вышестоящему органу либо суду.
external judgment relationсauthority Court;LEG-18проверяетREQUIRES_JUDGMENTи имя органа — сверка одногоtruthStatusприняла бы за успех обычное молчание §69.
Метки §218: словарь 421 из 422, нормы 234 из 234. Единственное неразмеченное объявление —
priority_decided: грамматика §47.3 принимает в телеexternal judgment relationтолькоauthorityиrequest_schema, метка там синтаксически невозможна (LDC-E0201). Это граница поверхности, а не пробел разметки, и храповик держит ровно единицу. - иерархия как ВЫВОДИМОЕ отношение, а не таблица. Уровень акта
вычисляется из формы (п. 2 ст. 10), для производных — из формы основного
акта (п. 4), а для форм «имеющих силу конституционного закона или
закона», которых в перечне п. 2 нет вовсе, — из равенства юридической
силы (пп. 28 ст. 1). Промежуточный шаг объявлен отдельным отношением
-
Закон РК «О противодействии коррупции» № 410-V формализован целиком — 35 статей из 35. Пакет
corpus/laws/anti-corruption/(16 файлов, namespaceurn:kz:corpus:clir:anti-corruption). Обе меры §33.1 названы обе, потому что порознь каждая обманывает: учёт — 35 из 35, объявленных границ 0, неучтённых 0; глубина — EXECUTABLE 33, ANCHORED 2 (ст. 5 и 6 — перечни цели, задач и мер), SOURCE_ONLY 0; байтовая доля закреплённой публикации 95,5 % (167 846 из 175 666, 53 фрагмента; непокрытое — меню и подвал страницы портала). Байты закреплены воспроизводимо (extract_source_text.pyдважды даёт идентичный выход,PINNED_UNOFFICIAL_COPY), фрагменты режетcorpus/tools/sync_anti_corruption_fragments.py. 16 сценариев (ACT_RUNNERS["anti_corruption"]), все зелёные, differential байтовый.Нагрузки, которых не давал ни один прежний акт корпуса: восемь сроков в трёх единицах §86 одновременно (двухнедельный и семидневный ст. 12 п. 6, тридцатидневный ст. 13 пп. 4/5/7, трёхмесячный ст. 14, шестимесячный ст. 14-1 и 26-1, трёхлетний ст. 24-1/24-4, три и два РАБОЧИХ дня ст. 24-2, пятнадцать и тридцать календарных ст. 24-4) — и деление политики §86 надвое по errata E-0029 стало видно на деле: дело, которому нужны и рабочие дни, и годы, не собирается в одно (у дневных единиц
month_endзапрещён, у календарных обязателен). Четыре круга адресатов, которые пересекаются и ни разу не совпадают: ст. 12 адресована всем четырём категориям ст. 1 с изъятием кандидатов, ст. 13 — трём плюс пять поимённых групп служащих, ст. 14-1 — трём без депутатов маслихатов вовсе. Изъятие, снимающее одни пункты и оставляющее другие (ст. 12 п. 7 снимает пп. 1, 3, 4 и оставляет пп. 5, 6) — два defeater-а на разные головы вместо одного «не распространяется». Ось редакций внутри одного акта: ст. 27 п. 3 сам предписывает, что до 1 января 2021 года ст. 11 действует в другой редакции, и обе живут в пакете подeffective§87. -
Три молчаливых отказа v1, найденных этим актом и названных в его шапке. (1) Домен
closure§70 обязан быть фактом ДЕЛА: замыкание материализуется ДО применения правил (materialize_closuresчитаетstore.established_positive), поэтому по выводимому домену членов у него ноль,notв теле не даёт ни TRUE, ни FALSE, и снаружи это неотличимо от «правило молчит». Восемь замыканий пакета переведены на именованные audit-факты. (2) Закрытый предикат и его домен в v1 унарны —NON_EXECUTABLE_CLOSUREпредупреждением, при чистомlawc check. (3) Транзитивный разбор §185, которым живёт канал суждения §47.3, идёт только по строгим правилам (_skip_reason): defeasible-правило, читающее judgment-relation, даётCOMPUTED/NEITHER вместоREQUIRES_JUDGMENT, то есть «право молчит» вместо «право назвало того, кто скажет». Правила ст. 25 и 26, обращающие судебный акт в вывод, поэтому строгие — и это совпадает с правом: вступившее в силу решение суда не поражается ничем в этом Законе. -
Ограничение реализации сработало как читатель нормы. Первая редакция ставила обязательное приглашение представителя уполномоченного органа (ст. 24-2 п. 1) в зависимость от трёхлетнего окна защиты ст. 24-1 — и проверить её делом было нельзя: окно считается годами, сроки той же статьи — рабочими днями, политики §86 у этих единиц несовместимы, и одно дело не может нести обе. Перечитывание текста показало, что зависимость и не нормативна: пункт 1 говорит о споре, «стороной которого выступает лицо, оказывающее (оказавшее) содействие», и об окне не упоминает. Условие исправлено на то, что написано в законе, и норма стала проверяемой (AC-11 держит обе стороны требования «не менее чем за три рабочих дня до заседания» — единственного срока акта, отсчитываемого НАЗАД, и потому выраженного сравнением, а не вычисленным предельным днём).
-
Профиль structured argumentation §274 — С-2 плана LAYERS-NEXT (DECISION-0039). Аддитивные prose-подсекции §274.1–§274.7 задают
law.argumentation/0.2: рекурсивные структурные аргументы (стратификация не требуется; терминируемость — запрет повторов ground-заключений на пути), атаки rebut/undermine, побеждения last-link по §106, grounded/preferred и классы ответа §274.6 («вывод неуязвим» против «лишь защитим»). Профиль — отдельный вид запросаargumentation, baseline 0.1 байтово не тронут. Механизация §280 в DoD:LawCore.Argumentationпересчитывает grounded (топливо |args|+1) и admissibility каждого preferred; ворота сертификатов отвергают подделанную разметку и не-admissible extension. Пять векторовLAY-L3-ARG-*, порт вlaw-eval, SUPPORTED +5, differential байтовый. Хвост О-3 закрыт той же работой:lawref argmap --packназывает правила карты метками §218 (вербализация B1). Названные границы v1 — атака на атаку, specialized-прецедент §276, перепроверка максимальности preferred. -
Judgment-узел в proof-графе и его Lean-сертификат (DECISION-0037). Мёртвый с заведения канала вид
judgment(§179 называл его всегда) ожил: на каждыйJudgmentRequestдвижки эмитируют узел{literal, authority}, запрос несётproof→ id узла, узлы — посылки корневогоquery_evaluation(обоснование REQUIRES_JUDGMENT). Ядро checker/ сверяет узел с ПРОГРАММОЙ: предикат объявлен judgment-relation, орган — из декларации (узел не назначает себе судью); отсутствие опоры — named-вне-ядра, как у NEITHER-запросов. Шесть голденов пересмотрены точечно (сначала красные векторы — инвариант 3), differential байтовый, ворота сертификатов получили положительную сверку и две отвергаемые подделки (орган, необъявленный предикат). Снята последняя вычислительная граница DECISION-0024; остаток С-1 — только типизация payload ответа судьи (нет prose). -
Добор словаря judgment-канала §47.3 (DECISION-0036). Сняты две границы DECISION-0025 и одна DECISION-0024: refuted-тест над judgment-relation при паре NEITHER порождает запрос судьи (adjudicated может быть отрицательным §73); judgment-конъюнкт с несвязанными переменными перечисляется по активному домену (кап JUDGMENT_ENUM_CAP=8, порядок §208; не-judgment конъюнкты — по-прежнему вне разбора);
request_schemaдекларации доезжает доJudgmentRequest.requestSchema(аддитивное поле схемы evaluation). Словарь §185 самихwhy_not-отчётов не тронут. Пять векторовLAY-L2-JUDGMENT-{REFUTED-OPEN,REFUTED-ANSWERED,ENUM,ENUM-ANSWERED,SCHEMA}(runnable, голдены заморожены при заведении), порт вlaw-evalтем же изменением, SUPPORTED +5, differential 100/100 байтово, KZ-differential 333 вызова. -
Хвосты трека О LAYERS-NEXT добраны. Фаззер О-4: скалярные пулы из value-термов самого документа (гарды по порогам становятся достижимыми) и контрпримеры к constraint-инвариантам §93.1 (цель «в» эскиза; статусы — только truth-запросами движка, канарейки в обе стороны). Ось редакций О-2: повисшие ссылки проекции (priority_rule §116 на снятое правило) диагностируются поимённо (
danglingReferences), жатваreport_edition_impactрасширена реестром RUNNERS на конституционную, de-legibus и faraid регрессии (смок: kz+constitution целиком, 363 вызова; прочие — живость шва). -
Горизонт L8 введён в исполнение: bounded-поиск лазеек (L8.2) и синтез минимальной поправки (L8.3) — DECISION-0035. Обе работы — трек О, чистая оркестрация над замороженным ядром 0.1.
lawref loophole— детерминированный BFS без PRNG по последовательностям (дата, утверждение): цель достигнута, ни на одном шаге нет позиции VIOLATED/CONFLICTED; право шага — проекция D1 на его дату, находки минимизируются ddmin и классифицируются контрольными прогонами (orderSensitive/timingSensitive),--emitдаёт цепочку сценариев О-1.lawref amend— полный перебор механических правок (remove_ruleс каскадом §116,remove_priority,drop_effective,add_priorityиз §115-конфликтов) по возрастанию числа операций: первая находка минимальна, кандидат принимается исполнением (цели даютexpect.truthStatus, регресс байтово нетронут), к находке прикладываются semantic diff §215 и impact-отчёт О-1 («поправка как PR»). Воротаci/check_loophole.py(шаг 33) иci/check_amend.py(шаг 31) держат canary в обе стороны: заложенная лазейка/поправка обязана находиться, закрытый пакет и недостижимая цель — давать честное «пусто». -
Второй язык вербализации —
law.verb.kk(DECISION-0032). Проверка перед заведением показала три разные вещи, и они не смешиваются. (1) Рендерер языково-нейтрален по-настоящему: язык, фразы, падежный слот биндера и формы §257 берутся из пака — тот же CLIRkz-karamolaпод паком, объявившимkk-KZ, дал 709 блоков, ноль пробелов и другие байты (подхватились казахские метки). (2) Восемнадцать русских строк протекали мимо пака: описания пробелов §3.3 стояли литералами вctx.gap(...)— «статус monotone», «квантор forall», «операция поправки replace», — и казахский документ печатал бы русское слово внутри казахской рамки⟦…⟧. (3) Ворота второго языка не увидели бы вовсе:check_label_coverageязык метки не судит, аcheck_verbalization_totalityсчитает маркеры, которые про node kind, не про имена. Замер поcorpus/clir: из 8644 объявлений, которые рендерер называет, ru-метка есть у 3230 (37,4 %), kk-метка — у 594 (6,9 %), причём казахские метки есть у 6 пакетов из 37. Казахский пак прошёл бы тотальность на 37/37 с нулём пробелов, называя идентификаторами 93 % объявлений — тот самый молчаливый класс из CLAUDE.md. Сделано: (а)ctx.gapпринимает структурный ключ, текст берётся изgapWhatпака; умолчаниеGAP_WHAT_RUприменяется ТОЛЬКО к русским пакам, поэтомуlaw.verb.ru@0.1.0…0.5.0править не пришлось и одиннадцать VER-голденов остались байт в байт; (б)verb/law.verb.kk/pack-0.1.0.json— 132 фразы (паритет с ru@0.5.0), 17coveredNodeKinds, ноль пробелов на всех 37 документах корпуса; (в) слот формы выбран по языку:binderFormSlot: "barys"— казахскому «…ға қатысты» отвечает барыс септік, а ілік был бы формой по догадке (DECISION-0004 §4); (г) векторы VER-KK-L0-CALC / VER-KK-L1-DEFAULTS / VER-KK-GAP-FUNCTION — различающие формулы §67 («анықталған» / «емес екені анықталған» / «анықталмаған»), деградация формы в одной строке (меткаТұлғанесётbarys→ «Тұлғаға», меткаДауне несёт → «Дау») и казахская рамка маркера; векторов 217; (д) ворота 34/34 мерят корпус на каждый язык (PACK_PATHS,MIN_LANGUAGES) и требуютgapWhatот всякого нерусского пака — третья канарейка;CONSUMERSвырос до шести; (е) MCP отдаётlaw://<пакет>/verbalized/kkпод своим пиномVERB_PACK_PATH_KK, неизвестный язык — ошибка с перечнем, а не молчаливый русский текст; (ж) храповикcorpus/label-ratchet.jsonполучил разрезlanguagesпо обоим измерениям (33 пакета), с канарейкой на потерянную казахскую метку при сохранённой русской. Пак объявленreviewStatus: draft, и это отказ, а не пометка: формулировки §3.4 написаны формализатором по языку KZ-корпуса, а не заверены юристом-казаховедом, и ошибка в них не диагностируется ничем — текст остаётся связным.approvals.make_approvalотказывается выдать статус вышеdraftпротив чернового пака — та же форма отказа, что у блока с маркером §3.3. Названная граница: разметка меток не трогалась; 6,9 % kk-покрытия зафиксированы храповиком как достигнутое, а не как цель. -
law.toml— маркер корня пакета; весь корпус, кроме конституционной семьи, переведён в каталоги пакетов (DECISION-0033). Исходная задача — редактор врал на многофайловых пакетах:lawc check <файл>файла пакета давал лавину ложныхLDC-E2101/E2102про объявления из соседних файлов (53%.lawдерева). Обратная задача «файл → пакет» по содержимому нерешаема —vectors/t/T042держит два файла ОДНОГО пакета, которые нельзя склеивать, — поэтому маркер внешний и он уже определён §10. Сделано: (1)lawc package-root <файл|каталог> [--json]— локатор корня по ближайшемуlaw.toml, без разбора.law; (2)lawc check <каталог>сверяет манифест с заголовками §22 — расхождение или нечитаемость = LDC-E1109 (E1101–E1108 заняты); ненулевой выходcheckфатален вcheck_source_pinning, отдельных ворот не потребовалось; (3) векторы T095/T096 (отклонение и приём сabsentDiagnosticCodes— приём T059); голденpackage-root.jsonвcheck_cli_json(полнота usage-строки); (4) миграция: 13 плоских актов → каталоги с манифестом и источниками под корнем (local_pathне менялся — slug-каталоги переехали целиком, включая исключениеbudget-2026→sources/budget), 11 существующих каталогов получили манифест; (5) расширение VS Code проверяет пакетные файлы ПАКЕТОМ: цель = ответpackage-root(кэш, сброс watcher-ом law.toml), диагностики раскладываются по своим файлам поprimarySpan.uriи чистятся по всему пакету, N открытых файлов делят один прогон, release-бинарь раньше debug (3.2 с против 15.2 с на civil-procedure), несохранённый пакетный буфер ждёт сохранения; (6) скрипты скиллаformalize-actнаучены каталожной раскладке — до этого не видели ни одного многофайлового пакета. Проверка обратимости: A/B 15/15 актов —lawc lowerстарой раскладки (worktree@HEAD) и новой на одном import-контексте байтово идентичны; синк-генераторы — нулевой дифф;gen_kz_clirидемпотентен; pinning 34/0; consolidation 7/7; KZ-регрессия 236/236; свип манифестов — ноль E1109. Манифест не попадает в CLIR ни байтом и не заменяет заголовки §22 — нормативны они. Конституционная семья отложена осознанно (под активной параллельной правкой; миграция складывается с постатейным разрезом — DECISION-0033 §6). -
Иерархия пакетов: конституционная семья перенесена ВЛОЖЕННЫМ ДЕРЕВОМ (DECISION-0033 §6.1–6.2). Отсрочка снята той же ночью по решению владельца. Обратная сторона маркера корня: подкаталог с СОБСТВЕННЫМ
law.toml— корень другого пакета, иcollect_law_files/collect_a3_filesна нём останавливаются — иначеlawc checkродителя склеивал бы чужие пакеты в один текст и падал LDC-E1108. Вектор T102 (родитель с вложенным чужим пакетом принимается без E1108/E1109); ворота (check_source_pinning,check_consolidation_differential) и скрипты скилла перечисляют акт по манифесту на любой глубине (имя вложенного — путь с/→-, как у его CLIR). Раскладка:corpus/laws/constitution/{constitution.law, sources/, rights/, court/, president/, government/, kurultai/, amendment/, parliament-1995/, president-1995/}— физическое дерево зеркалитkz.constitution.*. Проверено: lower одних байтов плоско и вложенно байтово идентичен; lower родителя == старый монолит (903 841 б); генераторы семьи идемпотентны; конституционная регрессия 85/85; KZ 236/236; pinning 0 нарушений;corpus/laws/sources/исчез — критерий завершения миграции корпуса выполнен буквально. Попутно разобрана авария чужогоgit stash popдорефакторного стеша (5 CLIR с маркерами конфликта, 2 неразрешённых входа индекса) — по правилу «сгенерированное правится генератором», без ручного разбора маркеров (DECISION-0033 §6.3). Три компиляционных отказа LDC-E4101 (constitution/president, constitution/rights, de-legibus) — чужая незакрытая формализация §190, к раскладке отношения не имеет (те же байты плоской копией дают те же коды).
Изменено
-
В браузер перестали ехать мёртвые модули
law_mcp: 16 → 3 (constructor/tools/build-engine.mjs). Мостoracle_bridgeзовёт ровноlaw_mcp.search, тот —catalogиcore; остальные тринадцать (query,tools,analysis,workbench,whynot,schemas, …) вкладывались в статику приложения целиком и только копили рассинхрон — 228 КБ Python, которого никто не исполнял и никто не сверял.BUNDLEсужен до достижимого; протухнуть молча список не может — ступень 3 ворот 26/45 пересчитывает замыкание по AST и краснеет и на недостающем модуле, и на лишнем. Достаточность проверена исполнением суженного состава в изоляции: индекс на 276 единиц поkz-alash-orda, выдача содержательна. Там же заведён режим--bundle-only [--out DIR]— сборка одного JSON-бандла без cargo и без записи в дерево, вход ворот. -
lawc test <каталог>/tests --lawtestбольше не требует--program: раскладка §9/§10 сама называет программу.lawtest::program_forзнал только явный флаг и соседнийir.json/program.law; теперь, не найдя соседа, он поднимается до ближайшего вверхlaw.toml— того же маркера корня пакета, что уlawc package-root(DECISION-0033), — и собирает найденный каталог целиком. Сборка идёт тем же входом, что печатаетlawc lower <каталог пакета>(lower_packageвынесен из арма команды и зовётся обоими): второй копии нет, поэтому байты равны закоммиченному CLIR по построению, а не по совпадению. Проверено на «Жеті жарғы»: 59 тестов и 4 свойства §270, отчёт--jsonобеих форм команды совпадает побайтово (10 267 байт), как и текст со stderr; то же наtuystyq,civil-code,health-code,subsoil-code. Приоритет явного сохранён и остаётся несущим — им подставляют другое право, на чём стоят мутационные ворота (check_zheti_mutations: baseline 8/8, 7/7 мутантов убиты). Заодноlawc why-not <тест>иlawc explain <тест>перестали требовать флаг. Цена посчитана, а не обойдена. Программу теста читают ДВА независимых прохода (run_propertiesиrun), поэтому наивный подъём собирал бы пакет 2×N раз: на «Жеті жарғы» — 118 сборок девяти.law, прогон 27 с вместо 12. Программы теперь читаются по одной на путь (lawtest::Programs), и прогон БЕЗ флага стал даже быстрее прежнего с флагом (11,2 с против 11,9 с) — исчез и повторный разбор CLIR. Ворота, не помещающиеся в бюджет §6, выключают (DECISION-0028, фаза цены). DX-долг, записанный вcorpus/laws/zheti-zhargy/tests/README.md, закрыт; оговорка про временный флаг убрана оттуда и изcorpus/laws/tuystyq/tests/README.md. -
Конвенция раскладки пакета (
docs/PACKAGE-LAYOUT.ru.md) иalash-programкак первый пакет по ней. Конвенция описывает скелет (law.toml,package.lawс разделяемым словарём, нормативные модули, A3-sidecars,sources.law,sources/,tests/*.lawtest), правило выбора разреза («источник структурирован → зеркалить его единицы; фрагментарен → функциональный разрез») и три несущих правила: объявления при модуле-владельце,interpretationрядом со своей base-семантикой, номер в имени файла — только источниковый. Семантики в ней нет: единственные нормативные якоря — §9/§10 и §267. Область действия — новые пакеты и миграция при касании; залповой перекладки корпуса НЕ проводится. Вalash-program29 типов из 34 переехали к своим разделам (вpackage.lawостались шесть, которыми пользуется больше одного раздела), файл11-institutions.lawрасформирован — «молла» и «сот» стоят при разделе IV, «земство» при X, автономия и партия при II, вместе со своими фактами;00-package.law→package.law,12-sources.law→sources.law, номера 01–10 сохранены, потому что это номера разделов источника. Опровергнуто измерением, а не рассуждением: перекладка байтово нейтральна только для ИМЕНОВАННЫХ объявлений. Анонимныйassertполучает idassert-Nпозиционно, по порядку чтения, поэтому пять переехавших фактов перенумеровали узлыassert-4…assert-8и сдвинулиcontentHashкаждого плюсsemanticHashпакета при полностью совпадающем содержании. CLIR пересобранgen_kz_clir.py --only; регрессия alash 42/42, differential 42/42 байтово,lawc checkчист, глубинаEXECUTABLE 10/10и учёт единиц 10 из 10 не двинулись. Утверждение о нейтральности исправлено во всех трёх местах, где было записано (docs/PACKAGE-LAYOUT.ru.md,CLAUDE.md, reference скиллаformalize-act). -
de-legibusприведён к конвенции раскладки, получил каталожную метадату и вписан в храповик сценариев — а заодно оказался единственным красным пакетом корпуса. Структура:00-package.law→package.law,01-sources.law→sources.law, модули потеряли сквозной счётчик (cultus.law,sacerdotes-augures.law,sacrum-poena.law), 26 типов из 34 переехали к своим модулям, в разделяемом словаре остались семь. Разрез оставлен ФУНКЦИОНАЛЬНЫМ по измеренной причине: единица, к которой привязана норма, — lex (26 законов,locator "article/N/lex/M"), а параграфы §19–§22 принадлежат издательской нумерации и режут leges пополам (lex 7 — в §19 и §20, lex 9 — в §20 и §21), поэтому файл на параграф разорвал бы норму ради типографской границы; зеркалирование выдержано ВНУТРИ файлов — секция на каждый lex. Перекладка байтово нейтральна (lawc lowerдо и после совпадает): анонимныхassertв пакете нет, а именованное от файла не зависит. Метадата: вlaw.tomlзаведёнdescription— единственное каталожное поле, легальное сегодня (схема §10 его знает, обе реализации принимают, в CLIR не едет), и он называет то, чего инструменты сказать не могут: Древний Рим вместо глобального штампа «Республика Казахстан», латынь, статус «lex rogata, никогда не внесённая в собрание». Титул вPACKAGE_TITLESрасширен тем же. Сценарии вписаны вcorpus/scenario-ratchet.json(de_legibus: 4) со сверкой в самом раннере; храповик проверен мутацией в обе стороны — вне него оставалисьfaraidиuefa. Найдено попутно и НЕ закрыто:de-legibus— единственный из 46 пакетов корпуса, который не проходитlawc check(25 ×LDC-E4101, §190 range restriction: у норм вродеSacraPrivataManentoноситель обязанностиhomoне связан ни одним конъюнктом тела). Молчание двойное:lawc checkпо корпусу не гоняет НИ ОДИН гейт (в конвейере он есть только для исходников векторов), аci/check_source_pinning.pyиз-за красного check пакет ПРОПУСКАЕТ со ссылкой на «контракт других ворот» — то есть закрепление источника у него не измеряется вовсе. Цена видна в голденах: шаблоныSacraPrivataServareиSumptumMinuereне встречаются в замороженных ожиданиях ни разу — нормы объявлены и позиций не создают. Связывание носителя обязанности есть правовой выбор (кому адресована «Sacra privata perpetua manento»), поэтому оставлено человеку, а не выправлено попутно. -
Каталожная метадата §10
[metadata]заведена всему корпусу: 2 пакета → 54. DECISION-0051 дал носитель, но несли егоtuystyqиmartial-law-1941; остальные полсотни продолжали отвечать под глобальным штампом «Республика Казахстан». Заполнено по группам: действующие акты РК (in_force, издатель — Парламент), исторические памятники (historical_monument: Жеті жарғы, Қарамола, «Алаш», Декларация 1990, пакт 1939, капитуляция 1945, Декларация ООН 1942, Poor Laws), доктрина и литература (doctrineу фараида,literaryу «Қара сөз»), частные документы (privateу оферты «Самоката» и Selling Guide FNMA), учебные (educational_stubуpinning-exampleиsocial-assistance),supersededу регламента УЕФА (групповой этап заменён с сезона 2024/25) и Конституции 1995,never_enactedу свода Цицерона. Выводимые поля (jurisdiction,instrument,sourceFidelity) взяты из source-деклараций и сверены воротами; храповик присутствия перезаморожен на достигнутом, канарейка проверена. Три вещи найдены заполнением. (1) Восемь пакетов РК закрепляют УЧЕБНЫЕ ЗАМЕСТИТЕЛИ текста, и знала об этом только проза в шапках:civil-code-terms,marriage-conditions,health-procurement,appc-restoration,rest-day-transfer-2026— теперь это структурныйverifiedAgainstSource = false, отличимый от сверенного текста машиной, а не чтением. (2) СверкаjurisdictionМОЛЧИТ у почти всех пакетов: ворота читаютjurisdiction.value, а в CLIR у большинства стоитconst_ref(#KZ,#US,#RomanRepublic), и поле сверяется только уtuystyqиfaraid, где значение — строка"none". Заявить «Франция» у любого другого пакета сегодня можно, и ворота промолчат. (3) Десять пакетов (девять конституционных подпакетов иpoor-settlement-1691-1697) не названы в реестреLOWERED_ACTS, поэтому их CLIR воротам не виден и выводимые поля у них объявлять нечестно — метадата заведена без них, с причиной на месте. Три статуса намеренно оставлены пустыми, потому что выбор правовой, а не механический: конституционный закон «О государственной независимости» (1991, не отменён, но принят до Конституции 1995), Декларация независимости США (Organic Law и одновременно не источник субъективных прав) и Нюрнбергские принципы (кодификация против обычного международного права). -
Ворота
ci/check_std_registry.py(шаг 4/39, рядом сcheck_proof_kinds.py) — отрицательное обязательство E-0037. У восполнения словаря исполнимого следствия нет: программа, вызывающаяdays_between, вела себя одинаково до и после правки, и вектор не отличил бы одно от другого (класс E-0030/E-0031). Обязательство держится сверкой текстов — пять проверок: prose ==LAW_STDв обе стороны по каждому package; исполнимые термы оракула == порт в движке;STD_FUNCTIONS(types.rs) ==STD_FUNCTIONS(lower/helpers.rs); исполнимое ⊆ объявленного; реализуемое ⊆ prose — каждое имя реализаций названо перечнем §257–§266, оператором §58 или агрегатом §59.Списка исключений нет:
min/max/abs(§58) иsum/count/average(§59) разбираются из СВОИХ fenced-блоков prose, поэтому «исключение» есть ссылка на нормативный текст, а не строка в воротах. Канарейка роняет сверку на семи мутациях, включая «разбор prose пуст» (пустое против пустого есть совпадение). Сверх канарейки проверено главное: ворота, наведённые на копию §258 в состоянии ДО E-0037, называют все четыре терма поимённо и по обеим сверкам.Названная и НЕ закрытая ось — типы.
STD_TYPES(law-hir/src/lower/helpers.rs) несётJurisdiction, которого нет ни в §35, ни в §257–§266, при том что §54 печатает его каноническим примеромconst, а §89 объявляет им поле контекста. Квалификация требует решить, какому package принадлежит тип, — а у типов контекстной записи §89 закрытого словаря в prose нет вовсе. Ось оставлена открытой вслух, а не прикрыта строкой исключения. -
Докстринг
lawref/lawref/std_registry.pyприведён к факту. Обещание «состав дословно следует §257–§266 SPEC с правками E-0005» было неверным с 26.08.2026; теперь названы все errata состава (E-0005/E-0015/E-0028/E-0029/ E-0036/E-0037) и сказано, что совпадение держат ворота, а не строка. Заодно снята неточность о читателях:LAW_STDчитаютlawref/selftest.pyи ворота, аlawref/lawref/resolver.py— нет.
Исправлено
-
Госзакупки, ст. 15: допуск считался НЕЗАВИСИМО от подачи заявки, и допущенный посторонний давал «закупки состоялись» (
corpus/laws/procurement/procurement.law). Три счётных основания п. 1 и норма п. 2 брали два агрегата §52.1, связанные только числами:count(collect s: Supplier where bid(lot, s))иcount(collect s: Supplier where admitted(lot, s)). Тождества подавшего с допущенным между ними не было, и исход держался на совпадении двух чисел, а не на лице. Проверено исполнением: заявкаbid(urn:kz:lot:1, alfa)при допускеadmitted(urn:kz:lot:1, beta), заявки НЕ подававшего, давалаprocurement_held→TRUE_ONLY, и при этом ни одно из трёх оснований несостоятельности не выводилось — дело оставалось вовсе без основания. Починка одна на весь класс: конъюнкция ВНУТРИ одного comprehension —count(collect s: Supplier where bid(lot, s) and admitted(lot, s))— вProcurementHeld(п. 2),FailedSingleAdmitted(пп. 3) иFailedNoneAdmitted(пп. 2); у последнего допуск постороннего СКРЫВАЛ основание, и без его починки закрытая лазейка оставила бы состав хуже прежнего. Отдельным выводимым отношением «допущенная заявка» это не выражается вовсе — агрегат по ВЫВОДИМОМУ предикату упирается в барьер §111 и молча даётNEITHER. Текстовое основание: п. 2 говорит «одна заявка, СООТВЕТСТВУЮЩАЯ квалификационным требованиям», пп. 3) — «допущен один потенциальный поставщик В СЛУЧАЕ ПРЕДСТАВЛЕНИЯ двух и более заявок»; допускают ЗАЯВКУ, а не лицо. Найдено bounded-поиском лазеек L8.2 (lawref loopholeвыдал шагомadmitted(urn:kz:lot:1, посторонний)путь к цели «закупка состоялась»), A/B тем же инструментом на одной цели и одном фоне: ДО — 5 путей, четыре через постороннего; ПОСЛЕ — 3 пути, все через единственного подавшего заявку. КанарейкаPROC-23-ADMITTED-MUST-HAVE-BIDспрашивает ВСЕ четыре головы ст. 15 на двух составах и требует, чтобы закрытая лазейка не просто отняла «состоялись», но и вернула основание пп. 2): молчание всех четырёх было бы дырой хуже прежней. CLIR пересобран (gen_kz_clir.py --only kz-procurement.lawir.json), пересборка идемпотентна; KZ-регрессия--only procurement21/21 PASS,--only procurement_l24/4;check_kz_differential --only procurement— 44 evaluate-вызова байтово идентичны (счётчик вырос на четыре новых, а не встал); Lean принял 44 сертификата оракула и 44 движка, отказов 0. Храповикprocurementподнят 19 → 20, состав дописан--write-manifest. Тот же класс, что записан у независимых агрегатов вообще: дваcount(collect …)связаны ТОЛЬКО числами, и связывает их конъюнкция внутри comprehension, а не второй агрегат. -
Обе реализации принимали любую строку как время правопорядка, и мусор молча становился датой (DECISION-0056). Ось
legal_timeсравнивается с границами lifecycle §31 и окнамиeffective§87 лексикографически — законно ровно потому, что обе стороны суть ISO-записи. Обеспечена была одна сторона: границы приходят из CLIR и проверены схемой (legal-ir.schema.json,DateString/InstantString), ось приходила из дела и не проверялась ничем. Строка вне ISO не отвергалась, а занимала место в порядке: кириллица сортируется выше всех цифр, дефис и пустая строка — ниже.lawref impact-editions <ir> "не-дата" "1945-07-01"печатал «Вердикт: SEMANTIC-CHANGE», а с пустой строкой вместо второй даты — «Вердикт: NO-CHANGE» с кодом 0, то есть утверждал, что право не менялось между датами, которых нет. -
Три остатка того же класса, названные DECISION-0056, закрыты тем же днём — и разбор изменил квалификацию двух из них (errata E-0060, E-0061;
ci/check_case_shape.py).E-0061 —
Timezoneобъявлен типом, и формы значения у него не было. Прежний довод «проверка требует пинаtimezoneDbSnapshot» оказался неверен: пин нужен, чтобы спросить о СУЩЕСТВОВАНИИ зоны, а форма её имени проверяется без всякой базы. Настоящее препятствие обнаружилось при чтении прозы: §89 объявляетtimezone: Timezoneобязательным полем (неOption), §35 держитTimezoneво встроенных типах — и о ЗНАЧЕНИЯХ не говорит ничего, тогда как соседний по перечнюLanguageTagпрофиль имеет, явный и с регулярным выражением. Реализация, принимавшая"не-зона", прозе 0.1 не противоречила: это пробел SPEC, а не дефект реализаций. §35 дополнен профилем имени IANA ([A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}), и граница названа в самой прозе: профиль отвечает «это запись имени зоны», не «такая зона есть», — спросить о существовании можно только у базы, а база ХОСТА внесла бы недетерминизм §211, то есть починила бы молчание способом, который сам запрещён. Обе реализации проверяют профиль на границеcontext.expandтем же кодом, что оси времени; расхождение поймано ДО differential (первая редакция вlawrefпропускала JSON-null, аserde_jsonотдаётSome(Value::Null)и отвергает). Вектор T150 (до правки давалNEITHERприissues: []), ворота выросли с 40 проб времени до 40 + 17 проб зоны — среди нихAsia/Qyzylordас кириллической буквой внутри латинского имени, неотличимой глазом. Радиус нулевой: 12 различных имён зон во всём репозитории (JSON и питоновский корпус вместе), профилю удовлетворяют все.E-0060 — объявленный
formatнормативных схем не проверялся ничем, и дефект оказался шире одного поля. В Draft 2020-12formatпри словарях по умолчанию есть аннотация, а не утверждение, и ни одна схема каталога не объявляет$vocabulary. Полная запись утверждения §3.6 сat: "не-момент"проходилаreview-approval.schema.jsonбез единой ошибки — отвергалась только не-строка. Зазор был двойным, и вторая половина хуже первой:lawref.approvals.make_approval, единственное место, где запись порождается, свою схему не звал ВООБЩЕ, так что исправныйformatничего бы не изменил. Всего таких полей нашлось шесть в трёх схемах:atу утверждения,namespaceпакета (URN, идущий в идентификаторы узлов CLIR) в двух местах lockfile и в манифесте,resolverUri,urlреестра. Каждому приданpattern;make_approvalсверяется со схемой и вдобавок требует отatкалендарной состоятельности той же процедурой, что оси контекста (паттерна мало:2026-13-45T99:99:99Zему удовлетворяет и моментом не является). Квалификация — дефект СХЕМ, как у E-0049: схема не ошиблась в обещании, она не сумела его записать.ci/check_schema_refs.pyполучил свойство «formatбезpatternзапрещён» и две пробы канарейки — прямую (снятьpatternуat) и отрицательную (patternбезformatнарушением НЕ является, иначе ворота краснели бы на здоровых схемах, где форму держит одинpattern). Радиус измерен: все 112 значенийnamespaceи 3 значения URI-полей новым паттернам удовлетворяют.Схема входного дела — НЕ заводится, и это решение, а не отсрочка. Проза формы транспортного JSON не определяет и прямо это признаёт (E-0046: «непроверяемым оказался ровно транспортный JSON-канал, которым пользуются оба движка и весь корпус»); §168 объявляет делом ИСХОДНЫЙ файл
.lawcaseс грамматикойcase_decl; LS §8.5 ставит case-схемы вне артефактов языка отдельным предложением. Завести файл вspec/schema/нельзя и технически:ci/check_schema_refs.pyсверяет каталог сNORMATIVE_SCHEMASв обе стороны, и новая схема стала бы нормативной ПО ПОСТРОЕНИЮ — новой нормативной сущностью мимо errata. Вместо неё — ворота данныхci/check_case_shape.py(шаг 4/43, 152 файла): ключи верхнего уровня и опции только известные, утверждения против НОРМАТИВНОГОlegal-ir.schema.json#/$defs/Assertion(второго определения формы утверждения не заводится — тот же урок, что у E-0048), профили §89.1, согласие литерала со своим типом. Класс молчалив вдвойне: неизвестный ключ дела не отвергается ничем и при этом входит вcaseHash, поэтому опечаткаcontextProfileвместоcontextProfilesилиlimitвместоlimitsдаёт ДРУГОЕ дело с тем же ответом — политика не применилась, профиль не наследован, документ выглядит законным. Значения осей контекста ворота НЕ проверяют намеренно: их проверяют движки, а T148/T149/T150 несут негодные значения специально, и ворота на значениях убили бы ровно те векторы, что стерегут отказ. В ядро проверка тоже не ставится:case— открытый транспорт, прозой не описанный, и ужесточать его в обеих реализациях значило бы вводить контракт, которого нет в SPEC.Побочно закрыт
corpus/kz/harness.date_term, лепившийDate-терм из любой строки. Схема CLIR такой литерал не проверяет и проверить не может:LiteralTerm.valueобъявлен какJsonValueи сtype.nameне связан —{"type": "urn:law:std#Date", "value": "не-дата"}схему ПРОХОДИТ (измерено). Дела корпуса строятся кодом и в JSON не сохраняются, поэтому ворота формы дела их не видят; проверка стоит в самом хелпере. Замер до правки: 4452 литерала в CLIR корпуса и векторов и 139 литеральных аргументовdate_term— несогласованных ноль.Опаснее абсурдной строки правдоподобная.
1945-7-1— обычная человеческая запись первого июля, и она сортируется выше1945-12-31, поэтому акт читался на своей ПОСЛЕДНЕЙ редакции: тот же вопрос давал два уверенных ответа (ISO-запись — 2 редакции сменили состояние,added=8, исход изменился у 3 сценариев из 4; человеческая — 5 редакций,added=1, ни одного изменившегося исхода). Третий вход — разборargv: обе даты в одних кавычках сдвигают позиции, и «датой после» становится сам флаг--scenarios.Квалификация — дефект ОБЕИХ реализаций, не пробел SPEC (инвариант 8). Проза называет тип в трёх местах (§2.15, §82, §89:
LegalTime = Date | Instant), нормативная схема записывает форму паттернами, и проверка исполнима —schemas.validateотвергает все пробы, включая2026-06-01T00:00:00(мгновение без смещения, E-0048). Реализации типа не спрашивали: проверялось присутствие ключа (CONTEXT_FIELD_MISSING), а не значение. Общее с E-0048 — только причина немоты:lawcесть дословный портlawrefвплоть до определения granularity по наличию буквыT, поэтому differential молчал по построению. Проверено живым прогоном до правки:lawc evalсlegalTime: "не-дата"отдавал документ сissues: [],truthStatus: TRUE_ONLYи мусором вmanifest.legalTime— то есть строка входила вsemanticHashи вproofGraphкак законное время правопорядка.Правка двухслойная, потому что двухслоен дефект. Ядро — зеркально в обеих реализациях (
lawref/context.py,law-eval/src/context.rs): три оси §89 типизированы (legalTime—Date | Instant,decisionTime/knowledgeTime—Instant), негодное значение даётCONTEXT_FIELD_INVALIDс байтово одинаковым сообщением; проверка стоит ПОСЛЕ дозаполнения v1-дефолтами, чтобы опечатка в самой константе тоже ловилась. Проверяется тип, а не написание:2026-13-45паттерну схемы удовлетворяет и датой не является,20260101разбираетсяdate.fromisoformatи записью ISO 8601 не является. Надстройка трека О — только в оракуле (зеркального входа уlawcнет: ни одна командаlaw-cliне принимает дату аргументом): отказ поднимается изimpact.edition_projection, а не только из разбораargv(проекцию зовутcorpus/kz/linking.dated_worldи трое ворот напрямую), CLI отвечает кодом 2 — «вход не годен» отделено от вердиктов 0/1/3, — и на съеденный кавычками флаг сообщение прямо называет вероятную причину. Закрыты такжеloophole --date(падал трейсбеком),approve --at, даты шаговprocess-runи общая сборка контекста MCP (query.py::_context, где дата конкатенацией размножалась на три оси сразу и отказ приезжал клиенту под видом «внутренней ошибки инструмента»). Путьevalкода возврата не меняет: там отказ — байты{"error": {code, message}}, существующий контрактrun_vector, и differential немедленно стал его проверять.Держится тремя вещами. Векторы T148/T149 (программа с окном
effective, закрывшимся в 2025 году, — единственное место, где негодная ось выглядит законным ответом: до правки оба давалиNEITHERприissues: [], проверено прогоном на копии оракула со снятой правкой). Воротаci/check_context_time_format.py(шаг 4/43): копии паттернов против схемы, 40 проб на обеих реализациях с ЖИВЫМ ответомlawc(eval-batch, а не голден), согласиеcontext.time_value_kindсvalues._instant_moment— прямая мера против урока E-0048 о двух процедурах чтения одного вида; канарейка мутирует каждую сверку. Плюс 16 проверок в селфтесте и тестыlaw-eval. Радиус нулевой и замерен ДО правки: все 288 вхожденийlegalTimeв JSON репозитория и все даты питоновского корпуса — валидные ISO-записи; differential 132/132 байтово, векторы 314/314, ни один голден не сдвинулся. -
doctor.pyзвал вписывать в базу глубины акты, которых мера не отдаёт НИКОГДА, и совет уронил бы ворота навсегда. Проверка 6 отвечала собственным счётом («ключа вci/formalization-depth.jsonнет — пробел») и печатала→ вписать раздел "<пакет>"одиннадцати актам без единицы деления (hippocratic-oath,us-declaration,us-emancipation,valikhanov-note,victory-day-1945,qasqa-zholy,eski-zholy,gramota-1731,calendar-act-1750,japan-constitution-art9,health-procurement) и шести, чей источник мера не видит. Совет неисполним ПО ПОСТРОЕНИЮ:measure()акт с пустымrowsв измерение не кладёт никогда, аmain()объявляет регрессом всякую запись базы, которой в измерении нет, — то есть иnull(он в базе и стоял до перезаморозки--write), и объект с нулями держали бы ворота красными вечно. Замерено прямым прогоном настоящих ворот с суженным списком актов:"hippocratic-oath": nullдаёт «акт пропал из меры (был None)» и выход 1. Починка — не второй разбор границ, а ОБЩИЙ вход: вci/check_formalization_depth.pyвыделенmeasure_act(boundaries, act), отдающий либо глубину одного акта, либо причину пропуска СТРОКОЙ (причина — часть ответа, а не комментарий: её печатает doctor);measure()стал циклом по нему, аdoctor.pyспрашивает его же и отвечает· глубина по единицам неприменима (единицы деления у акта нет) — записи в базе быть не должно. Настоящий пробел при этом уцелел:leges-xii-tabularumмерится (12 разделов) и остаётся✗с прежним рецептом. 17 находок из 83 пакетов сменилиgapнаn/a, ни одна находка другого реестра не изменилась;--allподорожал с 0,21 с до 0,86 с — мера зовётся только там, где акта в базе нет, аclir_by_namespace(56 МБ CLIR на каждый вызов) запоминается на прогон. В самотесте подопытный для порчи базы теперь выбирается ПО ПРИЧИНЕ, а не по «нет пробелов» (на акте вне меры опыт «обязан найти» стал бы пустым молча), и добавлен опыт 3б, который проверяет падение ворот САМИМИ воротами. Попутно исправлено утверждениеSTATUS.mdо Клятве Гиппократа: «ci/formalization-depth.jsonдержитnull» — записи там нет вовсе, и это единственное состояние базы, которое ворота терпят. -
E-0049: доверенное ядро отвергало ВСЕ сертификаты пакета с объявленной константой, а запрос читало раньше его собственной опоры. Два независимых дефекта
checker/, общая у них только жертва — третья нога контура; оба найдены 28.08.2026 при заведенииus.organic.declaration, и ни один к этому пакету не относится. п. 1 (§54): утверждение с аргументом-константой (assert dutiable(ExitVisa)при объявленнойconst ExitVisa) роняло пакет целиком — движки разыменовывают константу одним предпроходом ДО вывода, поэтому узелassertionв CLIR несёт литерал как написано (const_ref), а листproofGraph— после разыменования (entity_ref), и байтовая сверка §208 недостижима по построению;basePos§61 ядро строило по тем же неразыменованным литералам, так что и accepted-опора §73 не нашлась бы, сними мы сверку. Дискриминатор проверен ИСПОЛНЕНИЕМ, а не рассуждением: ломает ровно ОБЪЯВЛЕННАЯ константа — пакет, гдеconst_refполучился из необъявленного имени, зелен (karamola89/89 при 2430 листах сconst_ref), пакет без констант зелен тоже (independence47/47). п. 2 (§179/§274.7): узелquery_evaluationgraph-образных видов запроса несётpremises: []— не по упущению эмиттера, а по прежнему требованию самого ядра (§180 требует отrule_applicationпарыrule/substitution, которой у несработавшего правила нет; пустой корень признан честнее выдуманного шага). Ядро читало узлы в топологическом порядке, а узел без посылок этот порядок поднимает НАВЕРХ — выше применений, которые атом выводят: на Декларацииseparation_necessaryвыводится на 165-й позиции, запрос о нём стоял на 38-й. Почему молчал differential: обе реализации согласны БАЙТОВО, расхождения нет по построению — ровно тот случай, ради которого заведена третья нога (§3(в) DECISION-0014). Квалификация (инвариант 8): дефект ЯДРА в обоих пунктах; движки правы — §54 объявляет const значением, а публикация ссылки в атоме поставила бы форму опубликованного атома в зависимость от того, какая сторона попала в хранилище первой, чего §211 не допускает. Сопутствующий дефект SPEC — декларативный: порядок разыменования и его следствие для документа нигде записаны не были, и у ядра не было нормативного основания их знать. Правка прозы — новый подраздел §54.1 (аддитивно; семантика 0.1 не меняется ни на одном входе): порядок, его причина, граница (разыменовывается ссылка на объявленную константу, и только она —const_ref§116/§122 и корпусные имена не трогаются) и следствие для документа, названное ради проверяющего §197. Правка ядра — модульLawCore.Const(предпроход надir/case, таблица и обход те же, что у движков; пустая таблица возвращает вход без единого изменения, поэтому все ранее проверенные сертификаты остаются побайтово теми же) и чтение узловquery_evaluationпоследними. Проверка §65/§66 не ослабла — она читает полные множества вместо частичных, подделка статуса отвергается по-прежнему. Векторное обязательство исполнено тремя УЖЕ СУЩЕСТВОВАВШИМИ векторами, и каждый до правки падал — новых заводить не потребовалось, и это факт о находке, а не экономия:ERR-E0032-CONST-DECL(п. 1; было два отказа «литерал листа не совпадает», доказано листьев 0 → стало принято, листьев 2),LAY-L3-ARG-GROUNDEDиLAY-L3-ARG-STRICT(п. 2; было «TRUE_ONLY заявлен без предъявленной опоры», код 1 у обоих → стало принято, у STRICT доказанных запросов 0 → 1). Отсюда следует и то, что воротаci/check_proof_certificates.pyбыли КРАСНЫ до правки на трёх векторах. Живые акты под ядром:criminal_code187/187,zheti_zhargy0/66 → 66/66,us_declaration0/56 → 56/56,state_duty1/6 → 6/6; контроль без объявленных констант не сдвинулся. Векторные ворота зелёные: 126 сертификатов на прогоне 28.08 (число живое — соседние сессии заводят векторы в тот же час), все 21 подделка отвергнута. -
Три шага
ci/run_all.shне могли покраснеть никогда — двое из трёх были красны. Шаги 13 (check_conservativity), 21 (check_layer_inference) и 22 (build_conformance) стояли за трубой| tail: статус конвейера в POSIX sh есть статус ПОСЛЕДНЕЙ команды, то естьtail. Заголовок файла описывает этот дефект дословно (errata E-0013) и заводит функциюgateровно против него — три шага её не использовали. Квалификация проведена ДО правки трубы. Шаг 13: разошёлся пин_SCAN_DECL_L1_CONSTRUCTSпосле расширенияscan_decl(классификация,поражаемая фикция, коммит4241e7b) — правка ворот корректна (LS A1.2/A1.3 называютclassificationв составе L1 без оговорки о силе,fiction defeasible— тоже L1; до неё синонимичная запись обходилаLDC-E8101), а предикатIsL0теоремы WP-20 пересмотра не требует: §147/§148 — сахар, разворачивающийся в правило своей силы (измереноlawc lower), поэтому поражаемая форма уже исключенаP.defeasible = [], а строгая лежит внутриIsL0. Исход пересмотра записан у пина и в заголовкеConservativity.lean. Шаг 21: три отказа — дефектlawref(таблица_STATUS_LAYERне знала статус-тестаmonotone, которыйlayers.rs::status_layerдержит как L0 по errata E-0018, а LS A1.2 называет поимённо; комментарий таблицы при этом утверждал «дословно та же»), четвёртый — дефект вектора (VER-RU-L2-LIBERTY-FORBEARANCEобъявлял L2, несяpower§127; обе реализации требовали L3 независимо). Все три шага переведены наgateи печатают теперь больше прежнего:tailскрывал содержательные строки сводок. -
Новые ворота 3/41
ci/check_gate_wiring.py— разводка самих ворот. Три утверждения с канарейкой: ни один шаг не стоит за трубой; у каждойci/check_*.pyесть строка вrun_all.sh/workflow либо запись вDECLARED_OUTс причиной; файл, объявленный ИНСТРУМЕНТОМ, обязан не иметь пути ненулевого выхода — отрастил условие отказа, значит стал воротами, и декларация краснеет сама. Единственная записьDECLARED_OUT—check_rule_executability.py, не звавшийся ниоткуда: егоmain()возвращает 0 при любом исходе, и впаять его как есть значило бы завести шаг, который не может покраснеть. Untracked не роняет, но называется строкойNOTE:. -
Прогон «Туыстық жүйе» через скилл formalize-act: четыре молчаливых пробела при полностью зелёном пакете. Пакет проходил
lawc checkчисто, ворота закрепления давали 13 статей из 13 и 80,3 % байтов, обе меры §33.1 были полны (EXECUTABLE 11, ANCHORED 0, SOURCE_ONLY 0), регрессия печатала 38/38 PASS. Найдено и закрыто: (1) акта не было вci/formalization-depth.json— храповик перечисляет акты с ДИСКА, а базу читает из JSON, и незаписанный акт попадает в ветку «новый акт под мерой», то есть печатается как прогресс и не защищён ничем; в том же положении оставались ещё 13 актов, в их числеcivil-code(413 EXECUTABLE) иcriminal-code(490). Раздел вписан руками, а не через--write: тот перезаморозил бы заодно чужой незакоммиченный регрессconstitution(EXECUTABLE 86 → 5). (2) Ст. 10 (әмеңгерлік) была исполнима по мере и НЕ доказана делом: правилоAmengerlikBrotherFirstне срабатывало ни разу из 38 сценариев — единственное дело, касавшееся его головы (TUYS-29), ждётNEITHER, то есть проверяло отсутствие вывода. Первая очередь призыва — то, ради чего статья написана, — при зелёном прогоне оставалась недоказанной. Мера снята перехватом proof-графов через шовset_evaluate: сработали 92 правила из 93. Заведён TUYS-39 отдельным миром (в общий брата вносить нельзя: там ст. 10 проверяется ровно его отсутствием), и второй вопрос дела не дубль первого — он предъявляет РАЗМЫКАНИЕ ветви ағайын: при живом братеnot er_bauyry_barложно, и призванный в TUYS-29 Темір здесь не призван. Сценариев 39/39, differential 119 вызовов байтово, храповик 38 → 39. (3) Уsync_tuystyq_fragments.pyне было режима--check(есть у 10 генераторов из 33). Зазор УЖЕ, чем кажется, и это измерено опытом, а не предположено: дрейф самих байтов роняетLDC-E5204(проверено правкой копии), исчезнувший срез —LDC-E5202; непокрытой оставалась правка ВНУТРИ статьи, внесённая вместе с обновлениемcontent_hashпубликации, — прежний фрагмент остаётся подпоследовательностью, число статей не меняется. Канарейка обязана падать и падает: чистая копия 0, копия с абзацем, вставленным в ст. 2, — 1. (4) Тот же генератор не стоял вci/run_all.sh— «проверка существует вне конвейера и краснеет молча»; впаян шагом рядом с соседнимиsync_*.py --check. Заодно измерено, что ворота закрепления роняет ТОЛЬКОlawc checkпо кодам §194: строки «неучтённых N» и «SOURCE_ONLY без объявленной причины» печатаются, но отказом не становятся — учёт статей держит не этот гейт, а храповик глубины, отчего пункт (1) и был несущим, а не косметическим. (5) Пятый пробел найден вопросом «а метадату почему не обновил» и оказался в самом скилле. Конвенция «титул обязан называть юрисдикцию, правовую природу и статус действия» была вписана вreferences/*.mdпрозой — без строки в таблице фаз и без единых ворот, и первый же прогон её не исполнил:doctorпечатает «✓ PACKAGE_TITLES», а проверяет НАЛИЧИЕ ключа, не содержание. Проверяемая часть конвенции теперь машинная —doctorсверяет число, вшитое в титул («глубина §33.1 — EXECUTABLE N»), с базой храповика: одиннадцать титулов носят такое число в строке Python, пока мера живёт в JSON, и разойтись они обязаны при первом расширении пакета. Сегодня расхождений ноль (8 сверено, 3 —fnma-income,legal-acts,samokat-eula— не с чем сверять, их актов нет в базе глубины, то есть пробелы (1) и (5) складываются), канарейка на подделанном числе краснеет. Непроверяемая часть — юрисдикция, природа, статус — вынесена отдельным шагом 5м таблицы фаз со сверкой титула противsource-деклараций глазами, потому что автоматика тут дала бы ложную уверенность. Почему это важнее, чем кажется:law_packagesпечатает над ЛЮБЫМ ответом «юрисдикция: Республика Казахстан» глобальной константойJURISDICTION, и над «Туыстық жүйе» — пакетом, чей источник объявляетjurisdiction "none", — эта строка стоит в двух строках от собственного титула пакета «Памятник обычая, а не действующее право РК», прямо ему противореча. Титул tuystyq сверен по всем четырём осям и правки не потребовал; сам заголовок остаётся невыводимым до[metadata](docs/PACKAGE-METADATA.ru.md). -
E-0046: аргумент чужого типа в утверждении ДЕЛА принимался молча обеими реализациями. §189 требует проверять
arityиparameter/return types, и на пути ИСХОДНИКА это работает:assert born_on(42, 7)при параметрах(person: Person, day: Date)отвергается двумяLDC-E2104(«§48: неявных конверсий нет» — та же формулировка уже стояла в errata проquranic_share(e, "1/4")со словами «и это верно»). Через транспортный JSON-канал дела то же утверждение принималось БЕЗ ЕДИНОГО issue. Измерено на живом пакете:impeachment_target(imp, 42)при объявленном(impeachment: Impeachment, president: President)давалpresident_removed_from_office(42)со статусомTRUE_ONLY— правовой вывод об отрешении от должности ЧИСЛА 42; так же проходилиDateиTextна месте сущности и утверждение с одним либо тремя аргументами там, где предикат объявлен на два. Почему молчал differential: обе реализации соглашались байтово, то есть расхождения не было по построению. Почему это не граница среза: §168 объявляет case-файл обычным исходникомlaw.coreсconstиassert— нормативная форма дела компилируется, и §189 к ней применяется; непроверяемым оказался ровно транспортный канал, которым пользуются оба движка и весь корпус. Приём §71–§73 теперь сверяет утверждение с сигнатурой ДО помещения в support — в том же месте и тем же приёмом, что соседняя проверка ключей §45.1: реализация ничего не выбирает и не чинит, несогласованное утверждение не принимается, причина названа issueTYPE_ERRORс позицией аргумента, именем параметра, объявленным и поданным типом. Проверка утверждает только то, что может доказать: тип известен уvalueи уconst_ref(из объявления константы §54), а транспортныйentity_refносителя типа не имеет и пропускается; наследованиеentity A : Bучитывается обходом цепочкиbase. Статус остаётсяCOMPUTED— так же ведёт себя уже существующий путьTYPE_ERRORот термов §9, и второго порядка errata не вводила. Три вектораERR-E0046-CASE-ARG-TYPE/-ARITY/-KEPT, все вSUPPORTED; differential 121/121 байтово. Канарейка проверена снятием проверки: обе отрицательные половины краснеют, положительный контроль остаётся зелёным — без него вектор прошёл бы при реализации, отвергающей любой вход. Радиус замерен ДО правки (конституционная регрессия — 6381 аргумент, 0 расхождений) и подтверждён после: KZ-регрессия 0 провалов из 4266 сценариев, конституционная 140/140. Тот же замер по KZ-корпусу до правки не дошёл до конца — обёртка упалаRecursionErrorвdeepcopy; пакет, на котором она упала, отдельно отработал чисто и с правкой, и без неё, а прогон регрессииRecursionErrorне воспроизвёл, то есть падение принадлежало обёртке. -
32 подсказки из 248 показывали код вместо нормы.
site/tools/build-hover-docs.mjsбрал первый абзац ТЕЛА секции, а не её прозы: внутри-блока бывает пустая строка (§45), разбиение тела по пустым строкам разрывало такой блок, и хвост примера уезжал в словарь вместе с осиротевшей закрывающей оградой — при живой проверке `startsWith('’), которая ловит только начало блока. Отсюдаrelationиkeyобъяснялись примеромmeasured_distance,fragment— строкойtext ru-KZ official “”“…”“”,judgment— полями структуры. Теперь абзац берётся из прозы; подводка к примеру («Пример:», «Relation kinds:») берётся, только если другого абзаца в секции нет — жёсткий отказ от подводок обнулял подсказку у десяти слов, что хуже. Ручных закреплений 18 → 22:rule→ §94 «Общая форма» вместо §66,when→ §98 «Body»,then→ §99 «Head» вместо §76 «Evidence admissibility»,assert→ §71 «Assertion» вместо перечня ключевых слов §15. Кода вdoc` после правки — ноль записей из 248. -
Словарь подсказок был просрочен, и шаг 394
run_all.shкраснел на HEAD. Семь терминалов агрегатов (aggregate,any,count,max,min,order,sum) появились вspec/grammar.ebnfбез перегенерацииhover.json; замер сделан в чистом worktree на HEAD —hover:checkотвечал «словарь устарел». Пересобрано: 248 слов из 250, без подсказки остаются_иlist— прозой в SPEC не описаны. -
Смок расширения не доходил до провайдеров: шаг 397 падал исключением. В подставном редакторе
site/tools/check-extension.mjsне былоcreateFileSystemWatcher— наблюдателя заlaw.toml(§10/DECISION-0033), который расширение заводит при активации;ext:testумирал наactivate()до единой проверки, и красным был весь гейт, а не одна строка. Подставной дополнен. После этого стало видно, что две проверки красны по ДРУГОЙ причине, к подсказке отношения не имеющей:eventвspec/examples/bvr.lawтеперь разбирается объявлением, а не opaque-конструкцией, и ожидания «неподдержанная конструкция тоже видна» и «eventкак имя перестал быть keyword (LDC-E0203)» описывают прежний парсер. Не тронуты — правка за тем, кто вводитevent_decl. -
«РАСХОЖДЕНИЕ 4» в пакете редакции 1995 было неверным утверждением о тексте 2026. Комментарий гласил, что санкции за неудавшийся импичмент — прекращения полномочий депутатов-инициаторов — в редакции 2026 нет. Ст. 50.3 несёт её дословно. Утверждение держалось не на тексте, а на том, что норма не была заформализована, и продержалось до формализации ст. 50.3. Расхождение настоящее и остаётся, но оно в ПАЛАТЕ: 1995 прекращает полномочия депутатов Мажилиса, которого в 2026 нет вовсе, 2026 — депутатов однопалатного Курултая.
-
min/maxнад Money возвращали неканонический масштаб операнда (lawc).min(2000.00 USD, 6000.00 USD)давал2000у оракула и2000.00у движка — байтовое расхождение differential, найденное живым пакетом, а не conformance-набором: ни один вектор не ставилminнад операндом с хвостовыми нулями, и первой это сделала норма B3-3.3-09 руководства Fannie Mae (потолок квалифицирующего дохода при временном отпуске). Квалификация по инварианту 8 — дефектlawc, не SPEC и не оракула: §18/§208 требуют канонического вида от ВСЯКОГО производимого значения,absи вся арифметика движка рендерят черезDec::render, и только выбирающие термы клонировали операнд дословно, тогда как оракул канонизирует всякий результат вto_literal_term. Правка — ветка"min" | "max"вlaw-eval/src/values.rs: выбранный операнд денежного, количественного и десятичного вида пересобирается через общий путь рендера. Обязательство закрыто вектором T143 (vectors/tools/digitize.py,spec/conformance/CORE-TESTS.md,SUPPORTED), differential векторов 118/118,cargo test -p law-eval31/31. -
Ст. 46 пп. 11, 17, 18 Конституции ожили: три нормы были записаны и молчали.
ConstitutionalReviewPetitionPower,EmergencyPower,MartialPowerобъявлялиpetitionиmeasureвfor, но связывали их только вexercise/effect— §190 этого не признаёт,lawc checkдавал триLDC-E4101. Отказ был виден и не пойман:lowerэти правила пропускал, CLIR содержал все три, конституционная регрессия шла 85/85, а на исполнении обращение в Конституционный Суд, чрезвычайное положение и военное положение отвечалиNEITHERпри ПОЛНОМ наборе посылок (проверено вызовом оракула до правки и после:NEITHER→TRUE_ONLY, контроль без консультаций остаётсяNEITHER). Связыватели заведены тем же приёмом, что уже применён в этом файле к Курултаю, — эмпирическими предикатами существованияconstitutional_petitionиemergency_measure. Побочно снят «ПРОПУЩЕН» вci/check_source_pinning.py: пакет с краснымcheckвыпадал из ворот закрепления молча, при их собственном нулевом коде возврата. Остаток класса, названный в STATUS.md, не тронут:de-legibus— 25 правил,constitution-rights— 3. -
Пять сроков Конституции перестали приходить в дело готовым ответом.
signature_within_one_month(ст. 46 п. 3),final_decision_within_two_months(ст. 50 п. 3),elections_conducted_within_two_months(ст. 51 п. 2),last_six_months_of_presidential_termиwithin_one_year_after_prior_dissolution(ст. 62 п. 3) были ЭМПИРИЧЕСКИМИ предикатами с величиной в имени: дело сообщало вывод, ради которого норма существует, а закреплённая величина не читалась ни одним правилом. Комментарий у ст. 51.2 объявлял календарные месяцы невыразимыми в 0.1 — и это опровергалось строкой 231 того же файла (assert regular_oath_period(1 calendar_month)) и зелёным KZ-CON-TERM-04: errata E-0026 закрыла зазор ещё 27.08. Все пять переведены наadd_calendar_periodпарой правил_due_on/_timely— тем же образцом, чтоRegularOathDue/RegularOathTimely; пять величин закрепленыQuantityс якорем на свою статью и вписаны вconsumedреестраcorpus/constitution-constants.json(68 → 73 читаемых). Направление шага у ст. 62 выбрано вперёд:add_calendar_periodумеет только прибавлять, и «последние шесть месяцев» выражены проверкой, что истечение наступает не позже, чем через шесть месяцев от рассматриваемого дня. Десять сценариевKZ-CON-TERM-07…16стоят по обе стороны граничного дня и спрашивают САМУ норму (подписан ли закон, распущен ли Курултай), а не промежуточный предикат; конституционная регрессия 85/85 → 95/95,corpus/scenario-ratchet.jsonTERM 6 → 16. Попутно 22 новых объявления словаря размечены метками §218:unlabelledу пакета 164 → 159 приlabelled0 → 22. -
gen_constitution_semantics.pyснова строит audit-world. С 95e1c62 (28.08, 14:58)au.interpretationсам приводитofк списку — schema v0.2 объявляет обе связи массивами, — а генератор оборачивал результат второй раз и получал[[…]].linkedпадал валидацией legal-ir на шести узлах толкованийrights, то есть любая регенерация конституционных CLIR была невозможна; закоммиченныйlinkedпережил это только потому, что старше правки. Шесть устаревших обёрток сняты, сборка воспроизводится байтово. -
Учёт статей молчал у одиннадцати закреплённых текстов семи пакетов — теперь называет себя неизмеренным.
article_accountingвозвращала пустой словарь, когда конвенция деления не опознана, а пустой словарь исчезал из отчёта бесследно: ветка «учёт статей: НЕ ОБЪЯВЛЕН» требует ненулевого числа НАЙДЕННЫХ статей, поэтому документ без опознанной конвенции не печатал о полноте ни строки. Отсутствие меры снова читалось как её благополучие — тот же отказ, о котором предупреждает докстрингArticleConvention, только этажом выше. Найдено проверкой обещания пакета УЕФА («отчёт честно говорит НЕ ОБЪЯВЛЕН — отсутствие меры видно, а не молчит»): обещание было неверным,^Article \d+не берёт ни одна из шести конвенций. Пробел оказался общим: вместе с тремя редакциями регламента молчалиhealth-procurement, два текстаpersonal-data, три текстаpoor-settlement,samokat-eulaи казахская редакция Конституции — в ней 103 вхождения «N-бап», но ни одного с начала строки, тогда как русская редакция ТОГО ЖЕ акта измеряется и печаталась как учёт акта. Маркерunmeasuredнесёт причину по каждой публикации, печатается строкой «учёт статей [<файл>]: НЕ ИЗМЕРЕН — …» и считается в сводке, которую ворота печатают под--quiet. Вaccountingмаркер не попадает: иначе неизмеренная редакция затёрла бы учёт измеренной у того же акта — правка ради видимости отняла бы меру у соседа. Причины неопознания сознательно не различаются: «документ делится, конвенция не видит» и «документ не делится вовсе» (английский акт 1691 года — одна секция целиком) по виду текста неотличимы, а придуманное различие было бы авторской разметкой внутри инструмента. -
uefa-uclназван в каталоге MCP. Строки вPACKAGE_TITLESне было, иlaw_packagesотдавал регламент голым ключом через фолбэк — без обеих границ, которые пакет объявляет о себе сам: ничья ровно двух команд и отсутствие правовой силы (обе закреплённые редакции сменились, групповой этап с сезона 2024/25 заменён этапом лиги). Пакет с внешним оракулом предъявлялся спрашивающему как действующее право. -
«Қарамола ережесі»: десять дефектов, каждый при зелёном
lawc checkи байтовом differential. Пакет пройден целиком — семь файлов, сверка правил с закреплёнными текстами плюс механический аудит связей. Регрессия выросла с 31 сценария до 89, тесты §267 — с 22 до 77; 338 релаций и 257 правил, ни одной мёртвой релации, ни одного мёртвого гарда, ни одного эмпирического предиката, выводимого правилом. Повторяющиеся классы:- мёртвый груз — объявление без единого потребителя (
mal_unit,summoned_on,counter_matchmaking_dispute) и факт акта, не доходящий до ответа:mal_capдержал потолки ст. 58 («Құлын — 2 қойға дейін»), которых не читало ни одно правило. Потолок теперь выводится и делает оценку бия по ст. 60 проверяемой, оценкой при этом НЕ становясь — нижнюю границу акт не называет. Последняя релация оживлена не удалением: заcounter_matchmaking_disputeстояло невыраженное первое предложение ст. 49 («Қарсы құда дауларын билер реттейді»), и подсудность — такое же содержание нормы, как санкция; - должное, выданное за сущее — ст. 8, 12, 25, 65 и 23 говорят «тиіс» и «керек», а выводили САМО исполнение из факта суда: «решение объявлено» ⇒ «надпись на обороте сделана». Вывод не мог оказаться ложным, и нарушение было неотличимо от соблюдения. Форма разделена на требование (из акта), исполнение (факт дела) и упущение (default negation §113). Ст. 16 получила ТРЕТЬЮ форму: «жазып қойғаны артық болмайды» — не должное, а пожелание, и правила об упущении у неё нет и быть не может;
- ключ, отвергающий работу самого акта —
key(dispute, offender)наoffence_ofобъявлял «одна квалификация на лицо в деле», тогда как ст. 41 сама переквалифицирует барымту ниже порога в кражу: нормальная работа статьи давалаKEY_CONFLICT§196 вместо ответа. Тот же класс уtogyz_awarded, где ключ на пару «дело, лицо» заставлял ОДНО присуждённое число сверяться с двумя вилками ст. 32 — две девятки объявлялись и лежащими в пределах, и вышедшими за них; сорт девятки вошёл в ключ и в оба вывода; - придуманная граница — «бір жақсы аттан бастап» (ст. 41) и
«ат-шапаннан бастап» (ст. 33) задают отрезок, чей пол назван не в девятках
вовсе, а записывались как
togyz_penalty(…, 1, 3): присуждение доброго коня без девяток объявлялось вышедшим за пределы, то есть модель отвергала разрешённое актом. Введена форма «потолок без пола» — та же, чтоmal_cap; - разошедшиеся оси —
dispute_kind_ofобъявлена сkey(dispute), а константы образовывали ТРИ непересекающихся набора: спорMaleKunDisputeне получал ни салауата ст. 26, ни запрета ст. 62, аKunDispute— ни числа подозреваемых ст. 13, ни отпадения долей ст. 15. Воротам это было невидимо, потому что сценарии писались по статьям и каждый подставлял тот вид спора, который нужен его собственной статье; - альтернатива, неотличимая от накопления — «15 теңге НЕМЕСЕ атшапан»
(ст. 36) и «бір ай … немесе алпыс рет дүре» (ст. 38) давали в CLIR ровно то
же, что ДВЕ санкции вместе по ст. 30. Различие жило в комментариях к
правилам. Введён признак
sanction_permitted; заодно ст. 33 достроена до всех трёх названных санкций — меры двух из них акт не называет, но РОД называет, и он выразим (границаcorporal_punishment); - ошибки связывания — ст. 9 требовала, чтобы виновным оказался сам допущенный свидетель (в обычном деле норма молчала); ст. 48 не различала сторон у трёх ступеней из четырёх, и сторона жениха получала И удержание из калыма, И взыскание сверх него; ст. 13 проверяла порог «не свыше одной лошади» по СТРОКЕ пересчёта, а не по всему құн; ст. 14 и 21 принимали любого муллу вместо волостного, которого называет акт.
Отдельно названы, а не выражены, две вещи, которых акт не даёт ни при каком прочтении: пятое предложение ст. 26 (двадцатилетнее дело «делится на три», но частей роздано три и «қалғаны» распределять нечего, а периоды дают не двадцать лет) и молчание ст. 48 между ступенями 47/37/27/17. Обе записаны тем же приёмом, что испорченные строки ст. 9 и 10, и вторая проверяется сценарием.
- мёртвый груз — объявление без единого потребителя (
-
gen_artifacts.pyпадал целиком из-за абсолютного импорта вvectors/tools/artifacts/test_render.py.artifacts/build.pyимпортирует каждый модуль каталога, чтобы найти в нёмbuild, и делает это сvectors/toolsвsys.path— формаvectors.tools.artifacts.renderтам не разрешается, и ворота 4 не работали вовсе. Импорт сделан относительным: работает и при обнаружении билдеров, и под pytest из корня. -
Предметная компетенция акта на двух основаниях не устанавливалась НИ ОДНИМ вызовом (DECISION-0048). Граница была объявлена в DECISION-0047 §5 и закрыта: цепочка принимает НЕСКОЛЬКО родителей. Пока родитель был один, приказ V2000021744 против Закона об ОСМС давал
LDC-W5304на половину предмета из словаря Кодекса, а против Кодекса — на половину из словаря Закона; каждый вызов был честен, и ни один не отвечал на вопрос целиком. С обоими родителями объединение предметов покрывает предмет акта, и предупреждение о предмете ИСЧЕЗАЕТ — остаются ровно две честные границы:W5303(редакция Кодекса 2020 года не закреплена) иW5304(тождество органа через границу пакета). Ноль ошибок. Основания маршрутизируются по пространству имён, а два разных пробела названы порознь: осиротевшее основание («проверить нечем») и неиспользованный родитель («здесь не проверено ничего»); второй звучит только когда основания достались другим, иначе он удваивал бы первый. Побочно вскрылось: вызов с ОДНИМ родителем теперь называет непроверенное основание вслух — раньше оно молча выпадало, и вызов выглядел проверкой акта, будучи проверкой его половины. Три звена вынесены в отдельные функции и считаются каждое там, где ему место; поведение при одном родителе прежнее, что держат 65 ранее существовавших проверок. CLI обеих реализаций принимает список родителей. Ворота — 65/65 → 70/70. -
Цепочка объявляла нарушением то, чего не могла сравнить — в трёх звеньях (DECISION-0047). Кодекс о здоровье заведён в CLIR-конвейер (2461 узел, 596 правил, ноль статически мёртвых) и получил первый в своём пакете норм-шаблон — power §127 на подпункт 62) статьи 7. Второе основание приказа V2000021744 стало проверяемым, и цепочка выдала на нём три диагностики, две из которых ложны:
LDC-E5307«предмет вне полномочия» иLDC-E5306«издатель не holder». На деле «уполномоченный орган» есть и у Кодекса (health-code#AuthorizedHealthBody), и у Закона (osms#AuthorisedBodyOfHealth) — один орган под двумя именами, и различие ИМЁН о компетенции не говорит ничего. Тот же дефект, что закрыт DECISION-0045, в двух новых звеньях. Введено правило сравнимости: сравнивать осмысленно, когда оба идентификатора из одного пространства имён (пакетно-квалифицированныйns#Localназывает узел пакета, голый URN — сущность глобально, смешанная пара общей наименовательной власти не имеет). Не сумев сравнить, цепочка даётLDC-W5304с указанием звена (organ|subject|parent). Третье звено: основание, адресованное ДРУГОМУ родителю, в вызове не проверяется — назвать его неразрешимым значило бы объявить дефектом то, что проверка смотрит не туда; если родителю не адресовано ни одного основания,W5304говорит «не проверено НИЧЕГО», иначе молчание читалось бы как успех. Существующие сценарии не ослаблены и это проверено: фикстура именует органы голыми URN, и «тот же пакет, другой орган» по-прежнемуLDC-E5306. Приказ теперь объявляет ОБА основания преамбулы и обе половины предмета: против Закона — ноль ошибок и одноW5304, против Кодекса — ноль ошибок,W5303(редакция 2020 года не закреплена — первое срабатывание DECISION-0045 на живых данных) и дваW5304. Ворота — 51/51 → 65/65. -
Оснований у акта бывает несколько, а поле несло одно (DECISION-0046). Приказ V2000021744 издан «в соответствии с подпунктом 62) статьи 7 Кодекса … И пунктом 1 статьи 34 Закона …» — оснований два, и это обычная форма подзаконного акта, а не редкость. Пока
basis§27.1 был одиночным, одно из двух приходилось выбрасывать, и потеря была молчаливой ровно того рода, что §206 совершает с предпоследнимthen: объявление принято, документ схемно валиден, половины делегации нет. Поле стало ПОВТОРЯЕМЫМ, значение — всегда массив, даже при одном основании (форма, зависящая от их числа, заставила бы потребителя разбирать два вида одного поля). Цепочка: каждое основание разрешается отдельно и неразрешимость одного НЕ гасит проверку остальных — раньше первое же неразрешимое завершало проверкуreturn-ом, и при двух основаниях опечатка в одном прятала нарушение в другом; издатель обязан быть holder-ом КАЖДОГО; предмет сверяется против ОБЪЕДИНЕНИЯ предметов — акт на двух нормах вправе регулировать то, что дают обе, и требовать покрытия каждой порознь значило бы запретить обычную составную делегацию. Пять сценариев, все под differential кодов: оба целы; одно не разрешилось (LDC-E5304ровно на него); предмет покрыт объединением, которого не даёт ни одно порознь; сверх объединения (LDC-E5307называет только непокрытое); издатель не holder второго (LDC-E5306на него, своё молчит). Схема, оба lowering, оба CLI, вектор T140 (два основания — массив из двух в порядке записи, одно — массив из одного). Ворота — 41/41 → 51/51. -
LDC-E5305утверждал «издание вне компетенции» там, где сказать было нечего (DECISION-0045). Найдено при подготовке хвоста «множественное основание»: приказ V2000021744 называет вторым основанием подпункт 62) статьи 7 Кодекса о здоровье, Кодекс понижается чисто, но его редакция закреплена как ДЕЙСТВУЮЩАЯ —adopted @2020-07-07приin_forceс 2026 года, — а приказ принят 08.12.2020. Цепочка отвечала «power не действовала, издание вне компетенции». Последние три слова — ложь: Кодекс тогда действовал, не закреплена редакция, действовавшая тогда; утверждение о неправомерности выведено из неполноты собственных данных. Починить данными нельзя: статья 276 даёт лишь относительную дату («по истечении десяти календарных дней после дня первого официального опубликования»), а дня публикации в закреплённых байтах нет. Поэтому починен ВЫВОД: акт, принятый после принятия родителя, но раньше самого раннего открывающего события §31 всех закреплённых редакций, даётLDC-W5303— пробел ДОКАЗАТЕЛЬСТВА, а не вывод о компетенции. Форма не экзотическая: так выглядит любой корпус, пиннящий действующую консолидацию, и до сих пор это молча превращалось в обвинение. Существующие сценарии не задеты, и это проверено: акт до вступления родителя в силу и акт после прекращения родителя остаютсяLDC-E5305— оба стоят в воротах рядом с новым. Правка в оракуле, порт вlaw-eval, обе ветки под differential кодов; ворота — 37/37 → 41/41. -
lawc checkне видел ни одного обязательного поля norm payload §123–§128: двенадцать расхождений со стадиейlowerи три схемно-невалидных CLIR при двух зелёных стадиях (lawc/crates/law-hir/src/norms.rs— новый модуль,lower/norms.rs,law-cli/src/main.rs).Находка пришла из DECISION-0041 одним случаем —
power§127 безvalid_when:lawc checkпечатает «check OK» и возвращает 0,lawc lowerтого же пакета отказываетLDC-E1305. Измерение матрицей из 14 проб показало, что случай не один. Расходились двенадцать:bearer§123 иwindow§124 у duty,action/window§130 у запрета,holder/action/window§125 у liberty,holder/exercise/effect/validWhen§127 у power,holder/protectedEffect§128 у immunity. Причина у всех одна и она шире списка полей: стадияcheckне излучала ни одного кода диапазона E13xx — проверено грепом по эмиттерам, внеlower/их нет.Две пробы оказались хуже расхождения — молчали ОБЕ стадии.
dutyбезgoalи achievement-цель безconditionдают exit 0 у обеих команд и CLIR, который не проходит собственную схему (DutyPayload.requiredназываетgoal,AchievementGoal.required—condition); тем же свойством обладал вид цели вне §124 (Goal.oneOfего не знает). Показано валидацией порождённого документа, а не чтением кода.Квалификация — дефект
lawc; errata не заводится. §127 требование объявляет, схема держит его вrequired, а §199 отдаёт диапазонLDC-E1xxxтеме («names/packages»), не стадии, — тот же код со статики есть применение словаря по назначению, а не его расширение. §210.1 (E-0040, тем же днём) требует того же прямо: диагностика звучит «одинаково на каждом входе, принимающем исходный текст». Прежний довод STATUS («расширениеcheckнормализатором — проектное решение по прецедентуLDC-E1314/DECISION-0028») исправлен там же: у дела §168 узла в программе нет, поэтому его диагностика привязана к стадии; у обязательного поля payload узел есть, а его отсутствие решается по AST.Правка — один состав на две стадии, а не копия проверки.
law-hir/norms.rsдержит таблицу обязательных полей (requiredу*Payload), отображение поверхностных имён в ячейки payload (effect/effect_terminate/effect_modify→ одна ячейка §127;valid_when→validWhen) иnorm_payload_diagnostics, которую зовут обе стадии:check_normsсреди резолверных проверок и lowering на тех же местах, где стояли его собственные. Две копии таблицы разошлись бы молча — добавленное в схему поле вписали бы в ту, что на глазах. Плюмбинг диагностик lowering-а вcheckне делается по тому же доводу, что в E-0040: без--importsони несутLDC-E1104/LDC-E1105и уронили быcheckна корпусе по чужой причине.Векторное обязательство исполнено парой
T134/T135(static, L3, командаcheck). T134 — восемь норм, у каждой отсутствует ровно одно полеrequired, восемь вхожденийLDC-E1305; вектор об одном поле был бы зелёным при четырёх незакрытых модальностях. T135 — граница: полные нормы всех пяти модальностей приняты, кода нет ни разу, и отдельным утверждениемeffect_terminateзаполняет ту же ячейку, чтоeffect(проверка по буквальному имени сломала бы терминирующую власть). Пара несущая: без T135 «отвергать всякую норму» прошло бы T134. Крейт-тестcheck_and_lower_agree_on_required_norm_fieldsсравнивает множества сообщений двух стадий, а не «обе непусты».Область. До правки: 12 проб
check=0 / lower=1, 2 пробы0/0со schema-невалидным CLIR; после — 14/14 согласованы.LDC-E1305не звучит ни разу на 39 пакетахcorpus/laws; в 705 закоммиченныхnorm_templateнарушенийrequiredноль, поэтому три новых отказа корпус не трогают.T094остаётся вектором лоуверинга и не переписан — его утверждение о наборе проверок в силе; поправлен только комментарий источника, говоривший, что «наcheckкода нет», — это и был дефект, а не свойство payload-а. Голдены неподвижны, differential 115/115, демо 50/50 байтово,check_norm_statics14/14,cargo testбез провалов.Расхождение стадий шире этой правки и остаток назван. Тем же свойством обладают процедуры §160 —
LDC-E1311(не ровно одноinitial),LDC-E1312(конец перехода не объявлен),LDC-E1313(переход из терминального состояния): все триcheck=0 / lower=1, воспроизведение готово. Туда же ранее записанный шов E-0013 (LDC-E1317/LDC-E1318) и проверки ФОРМЫ значения внутри payload (completeness_policyобязан быть StableId,effectобязан быть атомом) — им нужен разбор выражения, и общая таблица их намеренно не покрывает: её граница ровно «обязательное поле отсутствует». -
Слой не видел сахар:
fiction defeasibleиclassificationпри--layer L0принимались молча (lawc/crates/law-hir/src/layers.rs).scan_declне имел ветвей дляDeclKind::FictionиDeclKind::Classificationвовсе, а таблицаopaque_layerдержала строку"classification" => L1, которая читается как покрытие и им не является: у классификации давно есть собственный вариантDeclKind, иOpaqueдо неё не доходит. Ветка умерла, когда классификации написали разбор.Цена — не разница в числе: LAYERS-SURFACES §2.3 называет
fiction strictв составе L0, аfiction defeasibleи любуюclassification— в составе L1, иrule R defeasibleпри--layer L0честно отвергалосьLDC-E8101, тогда как дословно эквивалентнаяfiction F defeasibleпроходила. Синонимичная запись обходила диагностику, то есть заявка слоя в conformance descriptor переставала что-либо значить для программ с сахаром.Слой считается по СИЛЕ (§147 разворачивается в правило той же силы), а у классификации — самой конструкцией, без оговорки о силе, как и написано в §2.3. Строгая классификация даёт поверхностный слой L1 при семантическом L0 — асимметрия законная и предусмотренная
ci/check_layer_inference.py(«семантический ≤ поверхностного»). Закреплено векторамиLAY-L0-VIOLATOR-FICTION-DEFEASIBLEиLAY-L0-VIOLATOR-CLASSIFICATION(пара кLAY-L0-VIOLATOR-DEFEASIBLE) и крейт-тестомlaw-hir::fiction_and_classification_carry_their_layer. Мёртвая строка изopaque_layerудалена с записью причины — иначе тот же класс отказа вернётся со следующей конструкцией, получившей собственный разбор. -
Диагностика §147 печаталась с провалом в тридцать пробелов (
lawc/crates/law-hir/src/lower/sugar.rs): в многострочном литералеLDC-E1309не было\, и текст предупреждения расползался посреди фразы. Контракт статических диагностик — код, а не текст (CLAUDE.md), поэтому ворота молчали; читал это человек. -
Мера покрытия ворот WP-39 была УЖЕ меры отчёта — ложный отказ и храповик, отставший от корпуса в восемь раз (
ci/check_dataset.py,ci/report_norm_graph.py,corpus/dataset/norm-coverage.json,corpus/dataset/holdout.json).measure_coverageзвала толькоrun_regressions, тогда какreport_norm_graph.main()считает граф ещё и по тестам §267 (run_lawtests, 408 файлов в дереве). Норма, оживлённая только.lawtest, для ворот оставалась непокрытой — то есть храповик требовал покрытия, которого его собственный инструмент не видел. Это не разница в числе: пакетurn:kz:corpus:clir:socialушёл из регрессии переназначениемCLIR_PACKAGES["soc"], и ворота печатали настоящий отказ «покрытие упало 1 → 0» при живых двух тестах пакета. Оба рода сценариев теперь идут в один накопитель, неполная мера отказывается замораживать (run_lawtests!= 0 —SystemExit), а граница меры проведена по документам CLIR: программы conformance-векторов (urn:law:vectors:*, 62 пространства имён, приезжают с тестами изvectors/) в храповик датасета не попадают, но пакет корпуса без единогоruleостаётся в файле со своим нулём — иначе «не измерялся» и «измерен, ничего не сработало» неразличимы. РеестрRUNNERSдополнен шестым раннером:run_samokat_scenarios.pyисполнялся воротами и имел оба требуемых шва, но в мере не значился (тот же класс, что найденный 27.08 faraid). Порог пересобран: 3 056 правил в 42 пакетах против прежних 381 в 28, ни один пакет покрытия не потерял. Срез перезаморожен 75 → 286 пар / 740 норм — за сутки корпус вырос вчетверо, и две нормы среза обзавелись двойником поsemanticHash§209 в train (linked-audit, ст. 43/44); перезаморозка проведена до какого-либо обучения, поэтому свойство held-out не потрачено, и срез впервые попал в ориентир фазы B4 (200–500 пар). -
Молчаливая ссылка в пустоту: имя, которое ничего не называет, лоуверилось в
const_refна несуществующий символ (errata E-0032, векторы T079/T080/T081). Класс отказа, снаружи неотличимый от исправной нормы:lawc checkчист, lowering «полный», CLIR schema-валиден — референциальной целостностиRefTerm.idсхема не выражает, тамStableId, то есть строка. Правило после этого не может сработать никогда. Ни одни ворота этого не ловили:ci/check_dead_rules.pyклассифицирует правила, которые ИСПОЛНИТЕЛЬ пропускает, а такое правило исполняется и просто не находит фактов (rule_execution_status→('executable', None), проверено вызовом);ci/check_rule_executability.pyсинтезирует дело ПО ТЕЛУ и сочиняет факт в том числе для висячей константы. Закрыты три подкласса, у которых законного употребления нет ни одного:LDC-E1317— имя в generator-е comprehension §52.1, не введённое ни биндером правила, ниlet, ни самой comprehension: это свободная переменная §188, а не константа. Во всём дереве таких позиций ноль, поэтому отказ введён сразу;LDC-E1318— сторонаpriority, не назвавшая после lowering-а ни одного узла; страховка стадии, а не находка: имя, НЕ объявленное правилом, уже отвергается статикой —LDC-E4108(§192) наcheck. Молчаливым остаётся ровно случай ниже, где правило объявлено;- §206 против §116 — дизъюнктивное тело разворачивается в
<Name>/alt/N, аlower_priorityпродолжал собиратьsid(<Name>), то есть имя, которому после развёртки не отвечает ни один узел. Сторона теперь разрешается таблицей ПОРОЖДЁННЫХ id (Ctx.rule_ids, ведётся по факту, а не пересчётом DNF — вторая копия правила расщепления разошлась бы с первой молча), и приоритет разворачивается веером по альтернативам. Нерасщеплённый случай даёт узел с прежним id и прежними байтами. В Конституции так висели четыре ребра: три от компилятора (ст. 79/80 — исключения к неприкосновенности судьи, депутата, омбудсмена) и одно отcorpus/tools/gen_constitution_semantics.py, который изымалPresumptionOfInnocence/R1и оставлял ссылающийся на него приоритет; там же добавлен общий проход, изымающий приоритет вместе с потерянной стороной. Граница названа прямо: все четыре были мертвы латентно — голова правила иммунитета есть норм-шаблон, а голова исключения литерал, и в v1 эта пара не конфликтует вовсе, приоритету нечего было разрешать даже будучи связанным. Поэтому регрессии байтово прежние (KZ 236/236, конституционная 85/85), и «правка изменила ответ права» было бы неправдой; изменение поведения показано на минимальном воспроизведении той же формы, где обе стороны литералы:BOTH+ неразрешённый конфликт →TRUE_ONLY+ пустой список. T080 закрепляет действующийLDC-E4108(§192): до сих пор его держали только тесты крейта, то есть поведение ЭТОЙ реализации, — и он же граница для T081. Тем же заходом закрыты два зазора, названные при разборе: LDC-E4111(§192, warning) — приоритет, стороны которого играют в разных механизмах: одна выводит НОРМУ, другая литерал.LDC-E4107существовал и ловил половину требования (пара литеральных голов о разных предикатах), но норм-голову не видел вовсе:collect_rulesеё не собирает,rule_headдаётNone, и условие замыкалось молча — ровно на рёбрах Конституции. Соображение проверено по коду оракула:pair_gtспрашивают только внутри группы одногоliteral_key(§111),rule_gt— только на паре power/immunity (§128); литерал с нормой не встречается нигде. По всему дереву ровно 3 срабатывания, все — известные мёртвые рёбра, ложных нет. Вектор T099 держит и отрицательную половину: приоритет между противоположными полярностями одного атома нем;- байтовый гейт корпуса.
ci/check_lower.pyпокрываетvectors/иdemo/, аcorpus/clir/держится идемпотентностью шага 4 — и в его списке не былоcorpus/tools/gen_constitution_semantics.py: у 8 конституционных пакетов и audit-world гейта против компилятора не было вовсе, отчего висячийPresumptionOfInnocence/priorityи пролежал незамеченным. Генератор впаян междуsync_constitution_sources.pyиgen_kz_clir.py; проверено пересчётом — все 37 файловcorpus/clir/порождаются генератором из шага 4, сирот нет.
Новый режим утверждения у раннера векторов —
resolvedReferencesвlower-shape:const_refсобственного namespace обязан называть узел документа. Байтовое сравнение сir.jsonподтвердило бы висячую ссылку наравне с любой другой, если она была там вчера.
Изменено
-
Навигация расширения VS Code стала пакетной — переход к определению, ссылки, hover и автодополнение видят соседние файлы пакета §22 (DECISION-0033). До правки все четыре провайдера сопоставляли имя только внутри открытого файла — комментарий в
extension.jsэто фиксировал дословно, — и после перевода диагностик на пакетную проверку стало видно главное следствие:Order, объявленный в00-package.law, не находился переходом из03-age.law. Границу пакета даётlawc package-root(ни строчки семантики в JS — инвариант 5); объявления соседей читаютсяlawc parse --astпо пути с диска и кэшируются по mtime, поиск последовательный с ранним выходом (имена в пакете уникальны — §24, LDC-E1201 — а объявления по конвенции живут в первых файлах). Ссылки собираются по всем файлам пакета с ограничением параллелизма; hover отвечает там же, где отвечает переход; автодополнение помечает чужой файл-владелец. МЕЖпакетная резолюция (pkg::symbol) по-прежнему вне объёма. Установленная копия расширения — отдельный артефакт: правкаeditors/vscode/не доезжает до Cursor сама, копию в~/.cursor/extensions/law-dsl.law-dsl-0.0.1надо синхронизировать (или переустановить VSIX) и перезагрузить окно. -
Нормы
rom.corpus.de_legibusразмечены метками §218 — витрина перестала называть право идентификаторами. До правки в пакете были размечены толькоtype_decl(34/34) иsymbol_decl(123/123), аrule(67) иnorm_template(41) — ноль из; читатель видел «активируется нормативный шаблон «VotaReddere»» рядом с русскими «Человек», «Обет», «принял обет». Механика ровно та, что описана вlabel-ratchet.json:verbalize._refсваливается наquoted_label(node, local_name(id)), а переименовать идентификатор по-русски нельзя (§14, DECISION-0002 →LDC-E0103), — то есть единственный канал имени это метка. Метка ставится на декларацию правила и разливается на каждый порождённый ею узел (attach_decl_envelope,lawc/crates/law-hir/src/lower/mod.rs), поэтому 62 правки исходника закрыли 67 узловrule(пять из них — альтернативы §206-развёрткиX/alt/N) и все 41norm_template, включая ту, ради которой всё началось. Конвенция взята у актов на чужом языке (karamola,zheti-zhargy), а не у KZ-актов: язык оригиналаla official— слова самого lex, русское имяru-KZ translation, номер параграфа и закона в обеих («§22, lex 21. Caute vota reddunto» / «§22, закон 21. Обеты исполняют осмотрительно»). Цена измерена, а не обещана: semantic hash пакета не сдвинулся ни на бит (errata E-0010), content hash сдвинулся ровно у 108 узлов — тех самых, кому метка добавлена (§202, §212). Ворота:run_de_legibus_scenarios.py4/4 с байтовой сверкойlawc eval,check_kz_differential290 вызовов,check_lower81/81, тотальность вербализации — 0 пробелов на всех 37 документах подlaw.verb.ru@0.5.0. Что осталось идентификаторами и почему: 28 фрагментов §28 (собственного имени у фрагмента нет — его тождество локатор, и тело блока называет его «Фрагмент article/22/lex/26 издания …») и однаpublication. -
Храповик меток расширен на нормы — слепое пятно, в котором стояло 1135 узлов, закрыто воротами, а не обещанием.
ci/check_label_coverage.pyмерил толькоDICTIONARY_KINDS = ("type_decl", "symbol_decl"), поэтомуrom-de-legibusпри нуле размеченных норм числился 157/0 — «100 %», — и то же самое верно для всего корпуса: 1135rule/norm_templateбез метки при 1730 размеченных (kz-gpk670,kz-constitution-linked145,kz-pd108,kz-consumer-protection53). Пакет приезжал с непрочитываемой вербализацией, не уронив ни одних ворот. Заведено ВТОРОЕ измерение (NORM_KINDS = ("rule", "norm_template")) отдельным разделомnormsу каждой строкиcorpus/label-ratchet.json: пробелы разной природы и чинятся в разных местах — словарный говорит идентификатором внутри фразы, норменный делает идентификатором само имя нормы и заголовок её блока. Плоские числа словаря намеренно оставлены на месте, а не переехали внутрьdictionary: они поставлены осознанным действием и не должны сдвинуться от расширения ворот. Строка без разделаnorms— тоже отказ, иначе расширение держалось бы на дисциплине автора строки: канарейка--canaryбьёт три ступени (снятая метка словаря, снятая метка нормы, забытый раздел). Проверено живой мутацией, а не чтением: снятая метка у одногоnorm_templateдаёт «размеченных норм 107, храповик держит 108» и «норм без метки 1 … метка ставится на декларацию правила»; незамутированное дерево про пакет молчит. Границу сняли с текущего состояния — размечать хвост ворота не требуют, они лишь не дают ему расти. Что осталось красным и почему это не про нормы: три конституционных пакета (court249/241,linked1264/1225,president164/131) и невписанныйru-samokat-eulaкраснеют по СЛОВАРЮ — те же четыре отказа стояли и до расширения; разделnormsне добавил ни одного нового. -
personal-dataразрезан на многофайловый пакет §22 — второй акт корпуса после ОСМС (DECISION-0011 §5.1).corpus/laws/personal-data.law(2616 строк, второй по величине.lawрепозитория) заменён каталогомcorpus/laws/personal-data/из 11 файлов по уже размеченным швам// --- Ст. N: … ---. Разрез чистый: порядок исходника сохранён,relationостались там, где стояли, наверх не поднято ничего. Закреплённые тексты переехали под корень пакета (§27.3), поэтомуlocal_pathне изменился. Обратимость проверена парой на ОДНОМ import-контексте:lawc lowerфайла и каталога дают побайтово один документ (504 694 б, равен закоммиченномуkz-pd.lawir.json);sync_personal_data_fragments.pyпосле разреза даёт нулевой дифф. Правки путей —corpus/gen_kz_clir.py,corpus/tools/sync_personal_data_fragments.py,corpus/README.md; ворота правок не потребовали (они уже знают «акт — файл ИЛИ каталог»). Ловушка, которой не было у ОСМС: секции разделены пустой строкой, и разрез «от комментария до комментария» оставляет ХВОСТОВУЮ пустую строку — форматтер §214 её срезает, и 10 файлов из 11 приезжают «не отформатирован» при том, что монолитlawc fmt --checkпроходил. Диапазон обязан кончаться наначало_следующей_секции − 2. Осталось вне ворот:.claude/skills/formalize-act/scripts/lint.pyглобитcorpus/laws/*.lawплоско и не видит ни одного многофайлового пакета — дыра существовала до разреза, но каждый перенос акта её расширяет. -
Индекс по позициям аргументов §230 портирован в
law-eval. Корзины здесь не ленивы, в отличие от оракула, и это следствие устройства, а не вкуса: §208-байты аргументов уже посчитаны при интернировании (arg_bytes_by_id), поэтому вставка не платит канонизацией — тем, из-за чего ленивость понадобилась в Python. Замер на той же цепи (60 рёбер, транзитивное замыкание): 4,06 → 2,02 с пользовательского времени debug-сборки. Выигрыш меньше оракульного (×6,8) закономерно: движок уже несёт semi-naive (DECISION-0014), и часть повторной работы индексу оставлять нечего. Байты: документ цепи изlawc evalсовпал с оракульным посимвольно — sha25663c26be677a4dbd0у обеих реализаций и в обеих формах движка (с индексом и без). Свойство закреплено тестомargument_index_keeps_completeness_and_order— порт свойства оракула: полнота и порядок, а не равенство. -
Индекс по позициям аргументов §230 в оракуле — вторая половина семейства «predicate + argument positions». Связанная позиция конъюнкта (константа или уже связанная переменная) сужает перечисление до корзины
_by_argвместо всего отношения; корзины ленивы — пока позицию-значение никто не спрашивал, вставка за неё не платит (безусловная поддержка стоила +11 % на декартовой нагрузке ворот 28/37, которой индекс не нужен по построению). Замерено до правки, а не после: на живом KZ-корпусе связанная позиция есть у 71 % перечислений (26 249 из 37 121), на конституции и своде Цицерона — ×1,0 (крупнейший список предиката 2 атома), на декартовой нагрузке ноль по построению, а на рекурсивной форме (транзитивное замыкание, цепь 60 рёбер, 1891 узел proof) — 4 538 400 кандидатов против 73 750, ×61,5. Замер после: та же цепь 24,65 → 3,62 с CPU при байтово том же документе (sha256 совпал), корпус — 314 981 → 71 787 пройденных атомов (×4,4). Эквивалентность доказана, а не предположена: контракт не равенство, а два свойства — полнота (ни один подходящий атом не потерян) и порядок (корзина есть подпоследовательность прежнего полного перечисления), поэтому ВЫБОР корзины из связанных позиций на результат не влияет и планировщик берёт самую короткую. Теневая сверка на живом корпусе — 191 896 вызовов, 0 потерь, 0 нарушений порядка; свойства вlawref/selftest.py. Ранняя канонизация связанной позиции не поднимает свой отказ:CanonErrorроняет форму обратно в полное перечисление, чтобы ошибка прозвучала там же, где звучала до индекса. Движок пока без этого индекса (инвариант 6 — оракул раньше); differential от этого не страдает: индекс не меняет ни выводов, ни порядка. -
check_keys§45.1 переведён на индекс предиката — второе семейство §230 закрыто без нового индекса.sorted(store.positive)сортировал ВСЮ базу фактов на каждую keyed-релацию и отбрасывал почти всё;_by_predicateуже давал ровно нужное подмножество в ровно нужном порядке, не хватало отбора по входной стороне (§45.1/§196 смотрят наpositive, defeasible не в счёт). ЗаведеныSupportStore.accepted_positive_keys(оракул) иaccepted_positive_entries(движок, инвариант 6 — оракул раньше). Замер на живом корпусе: прежняя форма просматривала 826 860 ключей за 7322 вызова, новая — 4 730 (×174,8); крупнейшая база 431 атом, поэтому выигрыш сегодня не в секундах, а в том, что цена перестала расти с базой. Эквивалентность доказана, а не предположена: аргумент о порядке (порядок ключей тотален, фильтрация отсортированной последовательности = сортировка отфильтрованного подмножества), теневая сверка с прежним сканом на живом корпусе — 7322 вызова, 4630 ключей, 0 расхождений, свойство с эталоном-сканом вlawref/selftest.pyи тестaccepted_index_matches_full_scanвlaw-eval. Байты не сдвинулись: KZ-регрессия 236/236, конституционная 85/85. Индексы §230 выведены из-под обязательства эквивалентности решением DECISION-0014, поэтому errata не требуется. -
T080 вписан в таблицу намеренных нарушителей
strata.rs. Вектор «priority, называющий несуществующее правило» заведён, а в таблицу тестаcorpus_and_vector_sources_static_clean_except_designed_violatorsне попал —cargo test -p law-hirкраснел наLDC-E4108против пустого ожидания. Тот самый класс, о котором предупреждает CLAUDE.md: реестр ведётся руками, и незаписанный нарушитель роняет тест. -
mcp/law_mcp/server.pyразрезан: 2388 строк → фасад 151 строка + десять модулей пакета (core,catalog,query,provenance,whynot,ask_calc,ask_positions,tools,resources,schemas). Снят обходной шовworkbench.SERVER: верстак читал через него семнадцать имён, теперь импортирует их из листовых модулей. Оба режима запуска (скрипт из.mcp.json, модуль изsite-prototype/иci/) сохранены блоком PEP 366; восемь имён внешнего API реэкспортированы изserver. Поведение не менялось: парный опыт байтов 131/131 в изолированном worktree, ворота 10/12 136/136.
Вехи M2 «Оракул L0», M3 «lawc: синтаксис и статика» и M4 «Differential L0» —
в работе. Статус по рабочим пакетам: STATUS.md.
Added
-
M3 «lawc: синтаксис и статика» закрыта в L0-объёме; §44 concept sugar (вектор T126).
conceptне значился в диспетчере деклараций и уезжал вOpaque: объявленный предикат не существовал, а правило получало «предикат не объявлен» с указанием на место использования. Реализован по букве §44 — отношение сkind institutionalпо умолчанию и с явным видом, когда он написан. Из перечня lowering’ов WP-12 осталисьrole§43 иevent§79: их десугаризация ссылается наLegalRole/Eventиз пакетов стандартной библиотеки §261/§263, которых нет вSTD_TYPESкомпилятора, — нужен межпакетный резолвер WP-31/WP-35, и это граница по зависимостям, а не пробел вехи. Сверка каждого DoD — в STATUS. -
Доступ к полю §40 исполним; петля G-M1b на нём сомкнулась байтово (векторы T124/T125). Барьер
LDC-E1305снят вместе с причиной: у типов появились поля,FieldTermдержит схема и вычисляют обе реализации. Каждый шаг цепочки проверяется по объявлению типа с учётом наследования §42 (LDC-E2111), вид последнего поля идёт наружу и доходит до §48. Рендерерir→lawнаучен полям и термуfield. Собственный дефект, пойманный собственной петлёй: первая редакция писала вFieldTermимя переменной из исходника, тогда как §205 переименовывает биндеры канонически —checkи схема этого не видели, поймало байтовое расхождениеir → law → ir. T100 переформулирован (код сменился сLDC-E1305наLDC-E2111, утверждение то же). -
Поля §40 и refinement §41 дошли до канонического документа (векторы T121–T123).
entity Person { age: Integer; }лоуверился безfieldsи без диагностики:EntityDeclнёс только имя и родителя, тело разбиралось лишь на метки. СхемаTypeDeclпри этом держитfields(иconstraintдля §41), а оба движка умеют термыrecord/field— не хватало только поверхности. Правка в три слоя: AST, парсер (whereразбирается формулой), lowering. Разбор полей создал бы новое молчание — неизвестный тип поля, — и оно закрыто той же правкой (LDC-E2101, T123). Утверждение «поля доходят» выражено парами hash-compare: до правки обе пары давали один документ. Файлов с полями в дереве было ноль. Остаток §40: доступx.fieldи литерал-запись по-прежнему вне среза. -
Режим
propertyу раннера векторов — свойства §270 стали conformance-
векторами. Три вектора (LAY-L1-PROPERTY-HELD,-VIOLATED,LAY-L0-PROPERTY-COMPARISON); вход — исходники, как у T042/T043: понижение компилятором, исполнение и подсчёт оракулом. Голден несёт вердикт свойства вместе с мощностью домена; раннер повторяет прогон и сверяет байты §211. Обязательство DECISION-0035 §8 исполнено полностью. -
§169 получил первую исполняемую проверку: дело не может импортировать unpinned packages (
LDC-E1320, векторы T119/T120). Обязательство DECISION-0028 §7 — «проверка приходит тем же изменением, что и форма, которую она запрещает» — наступило вместе с необязательнымversion§23 и закрыто в тот же час. До правки.lawcaseсimport kz.sources;лоуверился молча. Правило различает дело и программу нормативно: §23 разрешает исходнику опускать версию (пиннинг — в lockfile §11), а у делаlockfile_hash§170 обязан описывать мир исполнения, поэтому код звучит наlower-caseи молчит наcheck. Rust-раннер научен командеlower-case— иначе вектор про дело исполнял бы только питоновский. Остаток §169: клауза про live external capabilities ждёт формыexternal opaque. -
Ожидания §267 о пути и об отказе (DECISION-0036).
expect applied(Правило)иexpect issue(КОД)с отрицанием — предикаты над уже построенным evaluation-документом (узелrule_application§180 и запись вissues[]), ни одного нового семантического правила. Существующая форма ожидания не тронута: раннер различает формы по наличию ключа, голдены не двигаются. Опечатка в имени правила даёт отказ с причиной; опечатка в коде диагностики непроверяема — нормативного перечня кодов исполнения нет, и это названо границей. Воротаci/check_expectations.py— пять ветвей, четыре из них отказные. -
§23 import: из трёх форм примера самой секции разбиралась одна (векторы T117/T118). §23 говорит «Source code МОЖЕТ указывать version range, но canonical build использует exact version из lockfile», и её третий пример написан без версии — а парсер
versionтребовал; алиасasи селекция::{…}давалиLDC-E0201. Дефектlawc: prose и грамматика согласны.versionстал необязательным, двум формам вне среза дан свой кодLDC-E0206(прецедент DECISION-0002). Пиннинг не ослаблен — проверено:lowerна импорте без версии по-прежнему даётLDC-E1104/LDC-E1105, требование §11 живёт там, где §23 его помещает. Сверка на 420 файлах — ноль различий. Побочно: рассуждение DECISION-0028 §6 п. 3 опиралось на грамматику и не сверялось с парсером, поэтому его вывод был верен по случайной причине; обязательство по §169 теперь исполнимо и остаётся открытым. -
Ветвь сравнения §270 починена — она не работала вообще. Фикстуры первой волны были на атомах; первый прогон сравнения (форма примера §270) дал
оператор "ge" не сравнение: таблица инверсии стояла на символах поверхности, а парсер и CLIR несут имена. Правка — имена; тесты пришпиливают их и проверяют инволютивность таблицы. Ворота выросли с трёх ветвей до пяти, вердикты движка и оракула совпали на всех. Названа граница: терм над связанной переменной доступен только агрегатом §59 — тела функций вне среза, поэтому пример §270 буквально не пишется. -
§217: координаты literate-диагностики стали утверждением вектора (T116). В словаре static-режима не было строки, поэтому «спан меряется в строках документа, а не извлечённого блока» вектором не выражалось — ни код, ни число вхождений этого не различают. Заведено поле
diagnosticLinesв обоих раннерах (питоновском иlawc test): поле, понятое одним, игнорировалось бы вторым молча. Вектор различает с запасом — между отсчётами пятнадцать строк, — а ожидание считается генератором по тексту файла, не списывается с вывода компилятора. Поле сразу поймало ошибку на единицу в собственной Rust-половине раннера:check_diagnosticsуже отдаёт печатные координаты, и добавленный второйremapсдвигал строку. -
Вердикт свойства §270 под differential, конверт §225 понёс свойства. Составленная программа свойства (закон + наблюдающие правила) ни в один differential не входит по построению, поэтому вердикт приходил бы от одной реализации:
lawref/lawtest.pyполучилrun_property, ворота сверяют вердикты движка и оракула на трёх ветвях (канарейка называет расхождение поимённо).lawc test --jsonпонёсpropertiesTotal/propertiesFailed/properties[];okсчитается по обоим родам проверок — прежде свойство, павшее при зелёных тестах, уезжало сok: true. Голден на ветви «нарушено»:failed: 0приok: false. -
Ворота 39/39: исходники векторов проходят полный
lawc check. Дефект T043 был виден компилятору и не виден никому — полныйcheckпоvectors/**/source*.lawне гонял ни один гейт:check_lowerзовётlower, glob-тестstrataзовёт толькоcheck_strata, static-режим проверяет вектор про себя. 162 файла оставались вне типовой проверки. Ворота пропускают static-векторы (у них утверждение своё, сверяемое обоими раннерами — второй источник истины не заводится) и требуют чистоты от остальных; девять намеренных нарушителей записаны с причинами, а нарушитель, переставший нарушать, роняет ворота отдельным сообщением. Замер: 28 static, 124 чистых, 9 нарушителей. -
VER-KK-L0-CALCприведён к §190 — правкой генератора, а не записью в реестр. ПравилоDisputeHeardобъявлялоfor dispute: Dispute;при теле, связывающем толькоperson: голова брала свободную переменную (LDC-E4101), и один дефект роняли два независимых пути — ворота 39/39 и glob-тестstrata. Квалификация по инварианту 8 — дефект ВЕКТОРА: егоrequirementназывает §218.1, §190 нет ни в одномspecRef, а все девять записанных нарушителей — вектора, у которых диагностика И ЕСТЬ предмет. ПрецедентT043: типовой дефект вектора чинится в генераторе (инвариант 2). Вver.pyзаведено отношениеdispute_filedс меткойkk-KZ, тело связывает биндер позитивным конъюнктом; метка формы §218.1 не несёт, поэтому деградация к атау септік видна дважды. Голден сдвинут точечно: вexpected.json— ровноcontentHashпри неподвижныхgaps: 0/gapKinds: [], а строка, ради которой вектор заведён («Мыналарға қатысты: Дау v0; Тұлғаға v1.»), байтово не изменилась — инвариант 3 не нарушен, поведение неподвижно, сменились байты входа. -
§270 исполнено: свойства работают (DECISION-0035).
property P { forall x in collect v: T where F(v); expect E(x); }понижается в наблюдающие правила и два запросаcollect— ни одного нового семантического правила. Синтетический предикат — сток, поэтому право не меняется. Первый прогон опроверг собственное решение: ожидание-атом с однимnot Eпечатало HELD на настоящем контрпримере (в открытом мире §69not E— «установлено обратное», а типичный провал —NEITHER); теперь две ветви,not_known§113 иnot E§66. Вторая находка:not_knownв strict-теле движок пропускает предупреждением — свойство «держалось» неисполнявшейся половиной; вердикт теперь несёт список неисполненных наблюдающих правил. Печатаются мощность домена и число пропущенных проверок: без них «нет контрпримеров» ничего не значит. Воротаci/check_property.py— три ветви. -
Errata E-0034 / DECISION-0038: §172 назвал два вида запроса, которые обе реализации исполняли годами. Замер: движки различают девять видов запроса, §172 перечислял двенадцать имён, и три вида в нём отсутствовали вовсе —
weak_permission,interpretation_analysis,calendar_op. Следствие измерялось не в теории: 9 conformance-векторов несли вопрос, который движки исполняют и голдены фиксируют, а записать его на языке было нельзя. Квалификация — дефект SPEC: расходились не реализации между собой, а CLIR и нормативный перечень, то есть канонический слой оказался шире всякой поверхности, и §269-обмен по этим видам был невозможен. §172 получилweak_permission(actor, action)§126 иinterpretation_analysis(group, query)§152 — второй аргумент есть сам запрос, единственное место языка, где запрос принимает запрос (глубина ровно одна). Плюс общее требование §267.2: реализация, не исполняющая вид, ОТВЕРГАЕТ его, а не подменяет соседним. -
calendar_opв правку не вошёл, и причина измерена. Его запрос — не вызов с аргументами, а имя операции плюс мешок параметров, состав которого меняется от операции к операции ({op,date}…{op,date,days,afterTime,suspensions}).afterTimeиsuspensions— политика срока §85, а не аргументы; позиционнымargument_list§172 они не выражаются, а именованных аргументов вызова в грамматике 0.1 нет вовсе. Поверхность для него — отдельное решение, и шесть векторов остаются в отчёте гейта поимённо, а не пропадают молча. -
entity_ref§36 появился в рендерере термов. Форма печаталась инлайном в двух местах и отсутствовала в общем_render_term, поэтому терм, состоящий ИЗ НЕЁ, объявлялся невыразимым — хотя парсер её берёт. Вместе с двумя новыми видами запроса это подняло.lawtestс 51 до 60, и все 60 воспроизводят дело байтово и запрос помимоqueryId, аcheck_test_runдаёт 60/60 с совпадением вердиктов обоих тулчейнов. -
Гейт снимает
queryIdрекурсивно. Уinterpretation_analysisвложенный запрос несёт свой идентификатор, и сравнение падало по причине, которую гейт сам объявил вне сравнения. -
Причины пропуска называют настоящий адрес. Сообщение про comprehension §52.1 получали термы, в которых comprehension нет вовсе (T023 —
binary, T071 —call), а вектор с политикой замыкания §70 отчитывался как «терм аргумента». Ложный адрес правки хуже отсутствия причины. -
Вектор T115 — отрицательная половина: имя §172 вне среза исполнения по-прежнему отвергается
LDC-E1316. Без неё добавление двух имён было бы неотличимо от снятия проверки вообще. -
§48 доведён до границы аргумента для вычисленного терма (WP-10, векторы T107/T108).
check_argзнал тип листа и молчал о составных термах, хотя вид §58 вычислялся соседним вызовом в том же цикле — и выбрасывался. Теперь связан:f(a + b)сверяется с параметром по виду. Молчание сохранено там, где оно осознанно:Kind::Unknown, тип параметра вне девяти видов, лист. Первый же прогон по дереву нашёл дефект в закоммиченном векторе T043 (5 mrpв параметрMoney, при том что корпус объявляет МРП какQuantityи говорит об этом прямо) — исправлено в генераторе; после правки срабатываний по 379 файлам ноль. Две фикстуры §58 несли незаявленное утверждение «арифметика совместима с Text» — приёмник сделан нейтральным. Названная граница: литералы с единицей (1 mrp) не разрешаютсяliteral_type, поэтому в позиции листа путаница Quantity/Money по-прежнему не видна — это территория §49/§50. -
Рукописные
.lawtestзаведены под ворота, и мера мёртвых норм их увидела. Параллельная сессия начала писать тесты руками (corpus/laws/zheti-zhargy/tests/, 13 файлов — каждым оживляется мёртвая норма), ворот для них не было.ci/check_corpus_tests.pyтеперь обходит оба дерева — сгенерированное и рукописное — с отдельным храповиком у рукописных: 167/167, канарейка роняет ворота двумя строками. Отдельно:ci/report_norm_graph.pyисполняет все.lawtestоракулом под тем же перехватом (224 теста, вызовов в графе 680 против 363), поэтому оживлённая тестом норма уходит из списка мёртвых — у Жеті Жарғы раздел исчез целиком, при живом механизме у 22 других пакетов. -
§55.1: паттерны вне среза получили свой код
LDC-E0205(векторы T105/T106). Грамматика даёт четыре формы паттерна, срез разбирает две; три остальных вхождения отвергались — но сообщением «ожидалось=>» (LDC-E0201), то есть как синтаксическая ошибка там, где форма определена грамматикой, и первый такой паттерн — пример самой §55.1 (Ok { value: x } => x). Разрешение по прецеденту DECISION-0002: свой код, своё сообщение с указанием формы, разбор продолжается. T105 держит три вхождения и отсутствие старого кода, T106 — границу (вариант и_остаются принятыми). Формы по-прежнему не реализованы: вектор закрепляет качество отказа, а не поддержку. -
§25 namespaced-аннотации: пример самой секции не проходил компилятор (векторы T103/T104).
@kz.mining::severity("critical")— пример из §25 — давалLDC-E0201: парсер читал один сегмент имени, тогда какgrammar.ebnfдаётannotation_name = qualified_name | "source". Дефектlawc: prose, грамматика и пример согласны. Имя теперь собирается целиком; потребители (requires_feature,expected_computability,source,id) сравнивают с односегментными именами и с чужим пространством имён намеренно не совпадают. T103 — файл принят и код не звучит; T104 (hash-compare) — пара «с аннотацией / без» даёт один semantic hash §209, то есть неизвестная аннотация core semantics не меняет. Байтовый round-trip §25 держат ворота CST (385 файлов). Многосегментных аннотаций в дереве не было ни одной — форма была невыразима. -
--jsonу файловой формыlawc test— потребитель перестаёт разбирать вердикт текстом. Флаг был объявлен только у формыtest <каталог-вектора>и на.lawtestмолча игнорировался; расширение VS Code из-за этого разбирало вывод регулярным выражением — и цена уже была названа в его собственном комментарии: до 27.08 провал печатался в stderr, и односторонний разбор превращал бы его в тишину. Конверт §225 общий с остальными командами:ok/total/passed/failedплюс список тестов с их провалами теми же строками, что печатает текстовый режим (два описания одного вердикта разошлись бы молча). Заодно.lawtest-форма и--programвпервые названы в usage: строка помощи знала толькоtest <vector-dir|дерево>, то есть инструмент не рассказывал о собственной команде. -
Исправлен счёт §172: запросов двенадцать, а не тринадцать. Число «13» стояло в комментарии
law-hir/lower/case.rsи дважды в DECISION-0028; фактический перечень §172 —applicable_rules,positions,duties,liberties,powers,immunities,violations,truth,explain,why_not,conflicts,source_trace. -
Красная фаза TDD называет причину.
explain/why-not/graphпринимают.lawtest. Проверка опытом показала, что §185 для цикла red → green мало: после дописанной нормы тест остался красным из-за пропущенного связывателяfor p: Person;(pстал доменной константой), причёмlawc checkпечаталcheck OK, аwhy-not— «блокираторов нет» (правило не стало кандидатом, свидетельствовать нечего). Заведёнexplain::underivable— статический разбор невыводимости: предикат не объявлен / ни одно правило не выводит / голова без переменных и с другими аргументами. Кладётся вobservations(утверждение о программе, не о ложности §185), только при пустом ответе документа. Пять тестов с обеими границами. Попутно:emit_lawtests.pyбольше не вытираетcorpus/tests/целиком — рукописный тест рядом со сгенерированными переживает эмиссию. -
field.accessотличён отpkg.nameна любой глубине (DoD WP-09, векторы T100/T101). Барьер «member-доступ вне среза» (LDC-E1305) существовал, но его условие стояло на длине пути ровно два:v0.homeотвергался, аv0.home.cityстановился доменной константойconst_ref "v0::home::city"— со связанной переменной, поглощённой в идентификатор.lives(v0, v0.home.city)компилировался вlives(v0, <const>), второй аргумент переставал зависеть отv0, и §190 этого не видел by construction. Дефектlawc, механический:== 2→>= 2. Ложных срабатываний нет — файлов с таким путём во всём дереве ноль. T100 держит обе глубины, T101 — границу (константа-путь лоуверится). -
Errata E-0033: поверхность теста §267 описана требованиями, а не примером; DECISION-0028 принято. §267 состоял из одного примера на десять строк, и три вещи, которые реализация обязана исполнять и исполняла, не были записаны в нормативном тексте нигде: словарь
expect, обязанность ОТКАЗАТЬ при неисполнимом запросеevaluateвместо подмены его соседним, и происхождение программы (тест несёт вход §168/§173, но не право §169). Всё это жило в черновике DECISION-0028 и в таблицах кода. §267 получил подразделы 267.1–267.3 с таблицей семи полей и адресом перечня у каждого (§62, §91, §91.1, §134, §174.1, §175). Решение переведено в ПРИНЯТО; при переносе зафиксировано расхождение его чернового перечня с реализованным — три поля добавлены (applicability_status,evaluation_status,trigger_status), два не реализованы (issues,conflict), и нормативен §267.3, а не текст решения. -
LDC-E1319: значение ожидания сверяется с перечнем §174.1 — опечатка стала ошибкой компиляции, а не падающим тестом. Замер до правки:expect truth_status == TRUE_ONLYYлоуверился молча и уезжал в документ строкой; автор получал «truth_status == TRUE_ONLYY: в документе TRUE_ONLY» и шёл искать дефект в праве там, где дефект в букве. Ни одна проверка дерева этого не видела: словарь не был назван требованием, и сверять было не с чем. Отвергаются два разных пути — имя вне перечня (в том числе имя ЧУЖОГО перечня:truth_status == PROPOSITION) и значение, не являющееся именем вовсе;valueне сверяется ни с чем, у DATA перечня нет. Вектор T089, обе половины плюс отрицательная (LDC-E1316не звучит — поле законное, и спутанный код дал бы неверный адрес правки). -
Перечни §174.1/§175 читаются из нормативной схемы обеими реализациями. Компилятор — через
include_str!spec/schema/evaluation.schema.json(тем же приёмом, что реестр features), оракул — через свой реестр схем. Рукописная копия дала бы не независимость, а второй способ отстать от errata: переченьEvaluationStatusуже рос (RESOURCE_LIMIT), и копия отстала бы, не уронив ни одних ворот. Отображение «поверхность → ключ документа» при этом остаётся двумя независимыми копиями намеренно — там differential вердиктов держится на них. -
Сайт: страница поверхности теста и два решения. Топик «Справочник языка» получил третью страницу — формы
test_decl/test_item/case_item/context_inline/assertion_declсрезом из нормативной грамматики со ссылкой в её раздел, таблица полейexpectизвлечением из §267.3 (а не пересказом) и названная граница «грамматика шире требования»: справа отexpectграмматика допускаетpure_expression, сужение живёт в статике. Опубликованы DECISION-0028 и DECISION-0019 — до этого из 33 решений на сайте было одно, и ссылки первого на второе уводили бы в никуда. -
§196 п. 3 реализован:
LDC-E3101— первый код диапазона E3xxx вообще (WP-11 b, векторы T097/T098). Диапазон «time/context» §199 был объявлен, известен реестру диагностик — и пуст во всём дереве. Проверка ловитobservedпозжеrecordedна утверждении §71 и излучает предупреждение, а не ошибку: §196 называет warning, данные исполнимы, файл принимается — и это отдельное утверждение вектора. Оговорка §196 «unless ingestion policy allows» невыразима в 0.1 (словосочетание встречается во всей спецификации ровно один раз — в самом §196; ни продукции, ни поля схемы у него нет), поэтому предупреждение безусловно, а граница записана в коде. Литералы разной грубости не сравниваются — их порядок решает политика §82, которой у статики нет; правило взято у §193, и общий хелперgranularityподнят на уровень модуля, чтобы копии не разошлись. -
Срез запросов расширен
collect/term; итог измерен и оказался почти нулевым (DECISION-0028). Comprehension §52.1 вevaluateспрашивает множество (COLLECTION§174.1), любой другой терм — значение (DATA); агрегат §59 над comprehension остаётся значением. Покрытие: векторы 51 → 57, корпус 153 → 154. Причина малого прироста названа и измерена: интерим-артефакты запросов написаны в форме ШИРЕ поверхности — у 7 из 8collect-запросов векторов и у 29 из 29 корпусных переменная comprehension без типа, тогда как §52.1 тип требует; у частиelementне совпадает со связанной переменной. Тот же класс, что интерим-queryId: артефакт пользуется формой, которой в языке нет.calendar_opне отображён намеренно — поверхностной продукции у него нет ни в §85/§86, ни в грамматике. Решения по §270 (домен — имя из fuzz-инфраструктуры, seed —metadata_itemвнутри property,expect— формула над термами) приняты и записаны в DECISION-0028 §6. -
§195 разобран поимённо; два реализованных пункта получили векторы T092–T094 (WP-11 b).
LDC-E4110(unlessна strict) иLDC-E1305(payload нормы §123/§124, сорок мест излучения) работали без единого вектора — проверка есть, требования к ней нет. T092 отвергаетunlessна strict, T093 держит границу (unlessна defeasible законен §149/§150), T094 требует, чтобы нормализатор дошёл до КАЖДОЙ payload-проверки —LDC-E1305ровно дважды. Аудит десяти пунктов §195 записан в STATUS: два реализованы, четыре невыразимы поверхностным языком 0.1, два исполнительские, один не определён машинно, а «achievement без window» расходится с реализацией лишь на вид — грамматика делаетwindowобязательным, и пункт относится к CLIR, авторённому напрямую. Названа цена:checkвидит E4110,lower— E1305, ни одна команда не видит обе. -
Корпус заговорил на §267: 153 сценария регрессии стали файлами
.lawtest(DECISION-0028).corpus/emit_lawtests.pyснимает сценарии зелёных раннеров швомset_evaluateи переписывает их на поверхность §267 (corpus/tests/**, 12 пакетов). Регрессия и без того зелёная — воротаci/check_corpus_tests.pyпроверяют другое: что те же сценарии на поверхности дают те же ответы. 153/153. Эмиссия только из зелёного прогона; список раннеров — реестр. Найдено при эмиссии: программа сцены местами шире закоммиченного CLIR (marriage— 393 узла против 23,personal-data— 865 против 495), состав живёт в питоновском раннере и не записан артефактом; 59 сценариев пропущены именно поэтому. Ошибка измерения, записанная как есть: первая сверка шла поsemanticHashи дала ложное «363 из 363» — поля на верхнем уровне у части документов нет, иNone == Noneистинно; сверка переписана на множество id узлов, честная цифра 253 из 363. -
Лексические коды и literate получили векторы: T085–T088 (WP-08 (c)). Тройка T076–T078 закрыла парсерные коды, здесь закрыты
LDC-E0101(недопустимый символ — диагностика на каждом),LDC-E0102(незакрытая строка §17 кончается на переносе, три нарушения → три диагностики),LDC-E0103(Unicode-идентификатор: одна диагностика на весь идентификатор и НИКОГДА не «недопустимый символ» — DECISION-0002 п. 1 и п. 4) и literate-вход.law.md§7.1/§217: проза сrelation broken(и$программой не является, а ошибка внутри блокаlawзвучит. Все проверены на обоих раннерах; на T088 второй раннер различает — читай он.law.mdкак обычный.law, проза дала бы коды. Утверждение §217 о координатах Markdown вектором не выражено (словарь static-режима строк не знает) — граница названа в STATUS. -
§24:
internalразбирается — раньше он молча удалял декларацию (WP-09, векторы T083/T084). Грамматика даётvisibility = "pub" | "internal", парсер реализовал первую половину;internal relation helper(…)уезжал в Opaque, декларация исчезала из CLIR,check OKс нулём диагностик, а правило, читающее её предикат, получало «LDC-E2102: предикат не объявлен» с указанием на место использования. §24 называетinternalумолчанием — значит явная запись умолчания удаляла декларацию, а её отсутствие нет. Дефектlawc, не SPEC: prose и грамматика согласны, errata не нужна. В ASTinternalнамеренно неотличим от опущенного модификатора — канон умолчаний не пишет, и T083 (hash-compare) держит именно это: две записи одной видимости дают один semantic hash §209. T084 держит вторую половину — §24 ограничивает экспорт, а не существование. Пробел жил незамеченным потому, чтоinternalне использовал ни один.law-файл дерева. -
Ворота тестов подешевели в сто раз; контрольная точка DECISION-0019 п. 2 напечатана (DECISION-0028, фаза 7 из 8).
lawc test <каталог> --lawtestисполняет все тесты одним процессом,lawc lower-test <каталог> --all— JSONL по строке на тест (транспортeval-batch). По процессу на тест ворота стоили 7 минут на полусотне и стоили бы часы на корпусе; теперьcheck_test_runидёт 4 секунды,check_test_lower— 2,6. Обход каталога сортируется:read_dirнедетерминирован (FND §6). Отдельно печатается контрольная точка обязательства DECISION-0019 п. 2: предусловие выполнено (парсер есть), переезд меры покрытия норм с proof graph на файлы НЕ выполнен, и цена измерена — 381 норма под доказанным применением против 0 норм корпуса с файлом §267. -
Сайт получил полную нормативную грамматику и словарь из 242 терминалов — до этого ни того, ни другого на нём не было вовсе. Замер до работы:
spec/grammar.ebnf(910 строк, 42 433 байта) не публиковался, а на его месте читатель находил часть XXXVI на 51 строку, которая сама пишет «Полная draft grammar поставляется отдельным файломgrammar.ebnf»; её сокращённая карта к тому же разошлась с оригиналом — 16 альтернатив деклараций против 43, аproperty_decl,context_decl,counterfactual_declиcalendar_declв ней не названы. Словарь из 241 слова существовал, но жил внутри расширения VS Code (editors/vscode/data/hover.json) и на сайт не шёл. Обе страницы поэтому выводятся, а не пишутся:site/tools/reference.mjsсобирает их изspec/grammar.ebnf,spec/SPEC.ru/и того же словаря подсказок, которым пользуется редактор, — разойтись с языком они не могут по построению. Новый топикreference(«Справочник языка»): нормативный артефакт и производный указатель не делят одну подпись, а страница рядом со SPEC попала бы в меню дважды — своим пунктом и черезautogenerateкаталогаcore/. -
Инвариант страницы грамматики — разрез без потерь, и у него есть свой нарушитель. Файл режется на 18 разделов по собственным баннерам, сумма блоков сверяется с ним на каждой сборке (
assertLossless); якоря разделов считаются тем же slugger-ом, которым их пересчитает Astro, и сверяются с расчётными — иначе 242 ссылки словаря уводили бы в никуда, а links-validator поймал бы это только на полной сборке. Canary вырос с 27 до 39 проверок: усечённый разрез, файл без баннеров, файл без финального перевода строки, -
§15 и
grammar.ebnfвпервые сверяются между собой. §15 объявляет перечень hard keywords,grammar.ebnfобъявляет себя исчерпывающим реестром terminal tokens, и ничто не проверяло, что первое лежит внутри второго. Теперь hard keyword вне грамматики роняет сборку страницы (сегодня 113 из 242 — сходятся). Побочно:readTerminalProductionsвtools/terminals.mjs— один разбор грамматики на подсветку, подсказки и справочник вместо двух;grammar:checkиhover:checkподтвердили байтовую неподвижность закоммиченных артефактов. -
Найдено при переносе: «SPEC §38» в черновике страницы разрешалось в §38 «Enums» части VIII — у минимальной EBNF-карты нумерованных § нет вовсе, и ссылка молча уводила в систему типов. Заменена ссылкой на страницу части.
-
Errata E-0029: календарный шаг выделен в терм
add_calendar_period. E-0026 нагрузила единицыcalendar_month/calendar_yearнаadd_business_days, и требование календарного снимка §85 стало условным — зависящим отpolicy.roll, то есть невидимым и в норме, и в статике. На этой условности реализации молча расходились: оракул календарь не спрашивал, движок требовал безусловно,lawc checkбыл чист у обоих. Найдено формализацией пользовательского соглашения «Самокат» (п. 12.2, пятилетний срок неактивности). Теперьadd_calendar_periodберёт только календарные единицы и снимок НЕ БЕРЁТ НИКОГДА — пути к нему у терма нет;add_business_daysсужен до дневных единиц и требует снимок ВСЕГДА;roll/cutoff/include_end=falseна календарном шаге отвергаются. ВекторERR-E0029-CALENDAR-PERIOD(шаг без объявленного календаря) — differential байтовый. Мигрировано девять мест вызова в конституции и «Самокате»;procurement.lawостался на счёте рабочих дней осознанно. -
minimal.lawиfunction.lawнаписаны; петля «исходник → CLIR» на эталонах релиза замкнута воротами 38/38 (DoD WP-12). Пакет 0.1 нёсexamples/minimal.lawir.jsonиexamples/function.lawir.jsonбез исходников — эталоны написаны руками, и то, что CLIR получается из текста, на них не проверялось ничем. Буквальное «воспроизводятся по всем полям» неисполнимо не из-за компилятора: эталон старше принятого DECISION-0001, сменившего формуParameterDeclиschemaVersionконверта. Воротаci/check_examples_reproduce.pyсравнивают сопоставимое ядро и разрешают ровно четыре названных класса (умолчания канона, ParameterDecl 0.2, schemaVersion, запись значения —opзнаком против имени и2против2.0); пятое расхождение роняет их. Проверено мутациями: сдвинутый StableId, другое тело функции и другойkindпредиката дают FAIL с точным путём.release/не редактируется — инвариант 1 соблюдён. -
Синтаксис получил первые векторы, и они нашли молчащий класс: hard keyword §15 в слоте имени декларации (WP-08 (c), векторы T076–T078). В дереве не было ни одного вектора, ожидающего код диапазона
LDC-E0xxx(§199) — лексер и парсер держались тестами крейта. §15 дословно: hard keyword зарезервирован в ordinary identifier positions, единственное grammar-defined исключение —@source(...);grammar.ebnfставит в слот имениidentifierу каждого вида декларации. У парсера же было два входа для имени, и слоты имён деклараций шли в тот, что §15 не проверяет:source action { kind law; }—check OK, exit 0, при том чтоrelation action(...)рядом отвергался. Резче всего в деле §168:const power: Person = …объявлялся, а каждое использование имени давалоLDC-E0201— имя, которым нельзя воспользоваться. Квалификация по инварианту 8 — дефектlawc, не SPEC: prose внутренне согласован, errata не нужна. Правка — разрез двух ролей: 16 слотов имени переведены на проверяющий вход, перечислимые keyword-значения (goal achievement§124,kind official§13) остались на прежнем. T076 — семь позиций из шести видов деклараций (до правки звучало ноль из семи), T077 — граница (те же слова в позициях- терминалах §124 обязаны быть приняты), T078 — recovery (три декларации → три диагностики, DECISION-0002 п. 3). Ложных срабатываний ноль: репо-широкая сверкаlawc checkдо/после на 333.law-файлах изменила набор кодов ровно у одного файла — у самого T076. Обязательство errata E-0008 исполнено. -
Тест §267 исполняется, и вердикты двух тулчейнов совпадают (DECISION-0028, фазы 5–6 из 8).
lawc test <файл>.lawtest --program <…>лоуверит тест, зовёт движок и сверяет поля результата §174 с ожиданиями — ровно то, что QUICKSTART обещал строкой «lawc test— выполнить.lawtestи conformance vectors». Программа предъявляется отдельным аргументом: тест несёт вход вычисления, а не право (§169). Отказ движка оформлен вердиктом, а не сбоем инструмента. Оракул исполняет тот же понижённый тест-документ своим кодом (lawref/lawref/lawtest.py): байты документа вычисления держитcheck_differential, здесь под контракт ставится вердикт — сопоставление ожидания §267 с полем §174, короткое, но своё у каждой стороны. Воротаci/check_test_run.py— 51/51 прошли, вердикты совпали; канарейка мутирует ожидание и требует красноты у ОБОИХ раннеров. -
Расширение VS Code/Cursor: тест §267 как источник диагностик для
.lawtest. Линза «▶ прогнать тест» на любом.lawtest, рядом с которым нашлась программа; провалы ожиданий приезжают в Problems подчёркнутыми по строке ожидания, с источникомlawc test. Это закрывает дыру, оставленную сознательно: проверки компилятором у теста нет и быть не может, но у теста есть свой источник правды — раннер, закрытый той же ночью фазой раннера DECISION-0028. Диагностика приходит от ИСПОЛНЕНИЯ, а не от проверки файла, иsourceэто называет. Подчёркивание ставится вхождением текста ожидания: раннер печатает его ровно в том виде, в каком автор написал послеexpect. Вердикт живёт до первой правки файла и снимается ею — устаревший вердикт хуже отсутствующего, и это отдельная проверка с канарейкой.Расхождение с умолчанием компилятора названо, а не допущено молча.
lawtest::program_forбез--programберётir.jsonпо соседству; расширение предпочитаетsource.law, затем единственный*.law, и только затемir.json, передавая выбор штатным переопределением--program§169. В редакторе тестируется то, что автор ПРАВИТ: в дереве обе формы равны байтово (G-M1b), а разойтись могут ровно тогда, когда исходник отредактирован. Два*.lawбезsource.law— отказ, а не выбор за автора.Находка первого же прогона: формат вердикта переехал под руками. До 27.08 провалы печатались в stderr, теперь — в stdout со сводкой
lawc test: N/M тестов прошли. Разбор одного потока превратил провал в тишину; читаются оба, и смок держит обе формы. Машинного режима у файловой формыtestнет вовсе —--jsonобъявлен только у формыtest <vector-dir>и на.lawtestигнорируется; появится — текстовый разбор станет запасным путём, как разбор диагностик после §225.ext:test— 240 проверок против 223. -
Расширение VS Code/Cursor: слой файла в строке состояния и панель «почему нет» §185. Слой §1.3 считает
lawc layer --json: в строке —$(check) lawc · L0, в подсказке — девиз слоя и конструкции, которые файл подняли, со строкой каждой (1-базной, DECISION-0002). Подъём по башне есть расширение семантики, и до сих пор он не был виден нигде: первая же находка чекера — расчётный акт о браке, молча уехавший в L3 правкой соседней сессии. Цена названа, а не умолчана: второй запуск компилятора на то же событие, потому чтоcheck --jsonслоя не несёт, а брать его позже значит отставать на правку.«⊘ почему нет» — пятая линза вектора:
lawc why-not --jsonраскладывается по второй панели рядом с доказательством. Разделы, их названия и оговорка §185 («не определено» блокиратором не называется — отсутствие опор не есть ложность) взяты уrender_why_notдословно: своя формулировка была бы второй семантикой объяснения. Клик ведёт к правилу только там, гдеsubjectимеет форму StableId §14 — уmissing judgmentэто идентификатор запроса, у source-блокираторов редакция, и навигация не предлагается, а не ведёт в никуда. Отказ команды (ok: false) тоже приезжает в панель: пустое дерево на вопрос «почему нет» неотличимо от «причин не нашлось». Панель одна на два вопроса — класс дерева обобщён, каталог-источник идёт аргументом команды.ext:test— 223 проверки против 204, включая сквозную: настоящийcheckна L3-исходнике доводит слой до строки состояния. Заодно проверка «команд зарегистрировано 9» заменена сверкой с манифестом в обе стороны — число старело при каждой новой команде и ловило только само себя. -
Расширение VS Code/Cursor: форматирование через
lawc fmt, поверхности дела и теста.Format Documentиeditor.formatOnSaveзовутlawc fmtи подставляют его вывод одной правкой на весь документ; своей раскладки у расширения нет — правила остаются в DECISION-0027, вторая их копия разошлась бы с первой молча..lawtest§267 и.lawcase§168 зарегистрированы как языкlaw: подсветка, подсказки, структура, переходы, дополнение и сниппеты приходят отparse --ast, которому программа не нужна.Границы названы не расширением. Форматируется только
.law: literate вне объёма форматтера v1 (DECISION-0027 п. 8а — провайдер на Markdown не регистрируется вовсе, иначе пункт меню обещал бы работу, которой нет), дело и тест вне выборки воротci/check_fmt.py(*.law), аvectors/**принадлежит генератору (инвариант 2, DECISION-0027 п. 10) — format on save отменял бы регенерацию молча и ронял ворота 4. Отказ пишется в канал вывода; при ненулевом выходе компилятора или пустом stdout документ не трогается.lawc checkна деле и тесте не зовётся, и это замер, а не осторожность. Проверка разрешает имена в пределах одного файла (§22), сами они программой пакета не являются (LDC-E1314), и standalone-прогон по дереву даёт 308 диагностик на 118 файлов из 132 — все до единойLDC-E2102. Утверждение о компиляторе перепроверяется смоком: научитсяcheckвидеть программу — строка покраснеет. Предикаты поверхностей вынесены вlib/files.js(чистые, без vscode API),ext:testвырос со 180 проверок до 204.Находка регистрации. Тест выпадал из структуры файла целиком и молча:
symbolsпропускает безымянные декларации, а узел теста именуется заголовком-строкой (title+title_span) вместо пары{text, span}. Ветка вlib/ast.js— четыре строки; семантические токены не задеты, они читаютkind.nameнапрямую. -
Тест §267 компилируется:
lawc lower-test, 51.lawtestв дереве (DECISION-0028, фаза 4 из 8). Один документ —title+case+query+expectations; дело внутри теста лоуверится тем же кодом, что декларацияcase(продукцияcase_itemодна). Отображениеevaluate→ вид запроса взято из §172 целиком: исполняютсяtruth/why_not/positions, запрос §172 вне среза отвергается (LDC-E1316), а не подменяется соседним. Словарьexpectзакрыт полями результата §174, только==/!=; тест без единогоexpectдиагностируется отдельно — он зелёный всегда.queryIdвыводится из заголовка percent-кодом §14. Файлы собираются рендерером из вектора и его ЗАМОРОЖЕННОГО голдена, поэтому ожидания не выдуманы под текущее поведение. Воротаci/check_test_lower.pyдержат три утверждения из трёх источников — дело байтово равноcase.json, запрос равенquery.json, ожидания сверяются с голденом независимым чтением: 51/51. Названная граница: запрос сверяется помимоqueryId— идентификаторы голденов (urn:query:<vid>) не являются StableId §14 ни одного пакета и никакой поверхностью не порождаются; воспроизвести их можно только переписавresults[].queryв 86 голденах. Расхождение измеряется и печатается, а не замазывается. ВекторT075держит закрытость словаря ожиданий. -
Внешний оракул у корпуса: статья 17 Регламента Лиги чемпионов УЕФА (
uefa.corpus.ucl), 9 сценариев с байтовым differential. До сих пор ожидание каждого сценария писал тот же человек, что и формализацию, — то есть корпус проверял внутреннюю связность модели. Здесь исход применения нормы ОПУБЛИКОВАН нормодателем: итоговая таблица группы и названный критерий, которым решено равенство. Три сценария сверяются с ним (cases/oracle.json), включая совпадение по ОСНОВАНИЮ, а не только по исходу; два помечены контрфактическими — те же матчи под чужой редакцией, опубликованного исхода у них нет.Ось редакций из ТРЁХ закреплённых текстов (2020/21, 2021/22, 2022/23): различие — ровно один исключённый критерий (выездные голы в личных встречах), и весь редакционный шов пакета — три правила с
effective. Третья редакция закреплена не для полноты: без неё дата шва была бы ПРЕДПОЛОЖЕНИЕМ автора, а с ней она установлена текстом. На реальных данных различие даёт разный ИСХОД («Маккаби» выше «Ювентуса» по прежней редакции, «Ювентус» выше по действующей) и отдельным сценарием — тот же исход при другом основании: редакция меняет не всё.Проверка собственных границ нашла дефект пакета и закрыла его: шапка объявляла ничью трёх и более команд «ненаписанной», а пакет отвечал на неё попарным сравнением — и перебор раскладов нашёл структуру, где попарный порядок ПРОТИВОПОЛОЖЕН мини-таблице регламента. Вывод теперь поражается (NEITHER — отказ, а не FALSE, §95.3); поражение стоит на
ranks_above, которого никто не читает, поэтому каскад §111 не пошёл. Регрессия — UCL-06.Инструменты:
corpus/tools/extract_pdf_text.py(PDF официальной публикации → закреплённые байты; версия poppler входит в описание входа, колонтитулы отсекаются структурно — край страницы плюс повторяемость, а не сигнатура),corpus/tools/sync_uefa_fragments.py(40 фрагментов по критериям; сверяет и ЗАЯВЛЕНИЯ пакета о соотношении редакций, обе канарейки падают). -
Первый частный акт корпуса: пользовательское соглашение «Самокат» (
ru.private.samokat_eula), 13 сценариев с байтовым differential. Все прочие акты корпуса устанавливает суверен либо доктрина; этот — односторонняя воля частного лица (оферта ст. 435 ГК РФ, присоединение ст. 428). Юрисдикция российская, вид источникаcontract. Держит три нагрузки, которых не дал ни один акт РК: открытый перечень запретов (п. 5.3.9 «любую другую … по мнению Владельца» — closure §70 объявлять нельзя, и вне перечня честный NEITHER, в отличие от исчерпывающего перечня ст. 11 брачного кодекса); канал суждения §47.3 сauthority ServiceOwnerвместоCourt— судьёй назначен тот, кто написал норму, и это видно в поле JudgmentRequest, а не в прозе; weak permission §126 отдельным пунктом («вправе, но не обязан», п. 7.5.1). Источник закреплёнPINNED_UNOFFICIAL_COPY, 20 фрагментов, покрытие 23,6 %; провенанс — ручной захват (сайт под антибот-проверкой), разметка ссылок из захвата сохранена как есть. Ворота:corpus/run_samokat_scenarios.pyиsync_samokat_fragments.py --checkв шаге 6/37. -
Дело §168 лоуверится:
lawc lower-case, ворота байтовой петли, четыре внутренне противоречивых узла в голденах (DECISION-0028, фаза 3 из 8). У дела свой конверт (assertions/context/options) и свой вход — отдельная команда, а не флагlower: хэши уезжают в разные поля манифеста §170 (case_hashпротивprogram_hash).const§168 инлайнится в аргументы assertion-ов,entity_refлоуверится вRefTerm§36, оси контекста переименовываются по закрытому списку из четырёх, а всё, чему в §168 места нет, получаетLDC-E1307; новыйLDC-E1315отвечает на «какое дело лоуверить». Воротаci/check_case_lower.pyзамыкают петлюcase.json→ рендер.lawcase→ парсер →lower-case→ те же канонические байты §208: 80 из 80 байтово, четырнадцать дел вне выразимого подмножества печатаются поимённо с причиной, покрытие держит храповик. Побочно: рукописный.lawcaseв дереве всё-таки есть —vectors/smoke/SMOKE-001/case.lawcaseиз WP-02, ни разу не прочитанный ни одним инструментом, — и он компилируется. Находка ворот:contentHashтрёх assertions вLAY-L1-PRIORITY-*и одного вT012не соответствовал собственному содержанию — генератор считал хэш, а затем подменялliteralспредом либо дописывал осьvalid. Не ловил никто: схема хэш не пересчитывает, движок принимает как дано, differential сравнивает две реализации на одном дефектном входе. Правка в генераторе; голдены перезаморожены точечно и с предохранителем — двинулись только хэши входа,results/issues/positions/conflictsнеподвижны. -
Errata E-0027: StableId assertion-а §14 теперь записывается в исходнике. Найдено при заведении лоуверинга дела:
assertion_item— единственная продукция группы безstable_id_item(его несутsource_item,edition_item,publication_item,fragment_item,evidence_item— пять из шести). Идентификатор assertion-а был выразим только аннотацией@idна декларации ВЕРХНЕГО уровня, а §168 кладёт assertions внутрьcase, куда аннотации не достают: в одном теле делаevidenceадресуемо, а соседнийassert— нет. Пока assertions жили в.law-пакетах, пробел был невидим; дело-файл делает идентификатор содержанием (case_hash§170 хэширует дело целиком), premises proof graph §180 адресуют assertion по StableId, а §269 объявляет.lawcaseпредметом differential-обмена — два корректных компилятора дали бы разныеcase_hashна одном исходнике. Мера пробела: из 94 закоммиченныхcase.jsonвсе 190 assertions несут именованные идентификаторы — ни одно дело корпуса не воспроизводимо из.lawcase. Правка аддитивна:assertion_itemполучилstable_id_item, §71 показывает форму, схемы не тронуты (idу узлаAssertionбыл обязателен всегда — дефект в том и состоял, что обязательное поле CLIR не имело входа в языке). Счётчик тикает и при явномid: иначе явный идентификатор у соседа переименовывал бы остальные. ВекторERR-E0027-ASSERTION-ID— пара «явный/неявный»; до правки первая половина падала (LDC-E1302«поле вне v1-среза §71», идентификатор терялся при принятом файле). -
impact-editionsбольше не отвечает по существу там, где не смог посмотреть: вердиктNOT-DATEDи код выхода 3. Отчёт по оси редакций печаталNO-CHANGEи код 0 на пакете, где не разрешился НИ ОДИН якорь:kz-constitution-rightsякорится вkz.constitution.sources, которого в этом документе нет, — ни один узел не датировался, diff проекций выходил пустым по построению, и «право не менялось» звучало там, где между датами сменилась вся Конституция (находка DECISION-0026 §2). Отказ был не нем — строка «якоря вне датировки» в отчёте стояла, — но вердикт читается первым, и дисциплина «сверьunresolvedAnchorsдо вердикта» держалась на читателе. Мера теперь считается по узлам, а не по якорям:edition_projectionкладёт в метуundatedNodes(заякоренные нормативные узлы, у которых не разрешился ни один якорь) и знаменательanchoredNodeCount;build_edition_report— сводкуeditions.datingиsummary.verdict. Политика одна на текстовый вид и на код выхода (impact.verdict/impact.exit_code) и намеренно несимметрична: найденное изменение — утверждение ПОЛОЖИТЕЛЬНОЕ и об одной норме, оно стоит и при дырах датировки (SEMANTIC-CHANGE, код 1); «изменений нет» — ОТРИЦАТЕЛЬНОЕ и обо всём корпусе, поэтому не печатается, пока хоть одна заякоренная норма осталась вне датировки (NOT-DATED, код 3 — 2 занят ошибкой употребления команды). Порога-доли нет намеренно: в отчёте стоит точный знаменатель («2 из 2» против «1 из 500»), и различает их читатель, а не магическое число в коде. Одного висячего якоря дляNOT-DATEDмало — узел датирует любой разрешившийся. У О-1 (impact) меты редакций нет,datingвозвращает None, вердикт остаётся двузначным, коды 0/1 как были. Прогон наkz-constitution-rightsдаёт теперьНОРМ ВНЕ ДАТИРОВКИ: 186 из 186иNOT-DATED; на audit-worldkz-constitution-linked— прежниеadded=369, removed=423иSEMANTIC-CHANGE. Закрепление — три проверки вci/check_impact_editions.py(слепая проекция → NOT-DATED/3 приsemanticChange=false, то есть ровно там, где прежняя политика говорила NO-CHANGE; полуслепая на идентичных датах → NOT-DATED; полуслепая на разных датах → SEMANTIC-CHANGE), запись —ci/README.mdшаг 30. -
Тело дела §168 проверяется статикой;
entity_ref— конструктор §36, а не функция (DECISION-0028, фаза 2 из 8). Тело дела не посещалось проверками вовсе (types.rsразбирает виды деклараций с_ => {}), поэтому необъявленный предикат, разошедшаяся арность, несовместимый аргумент и неразрешимый тип внутриcase/givenпроходили молча. Парный опыт наvectors/t/T074/source.law: компилятор из HEAD печатаетcheck OK, exit 0, ноль диагностик — после правки exit 1 и дваLDC-E2102. Теперь тело дела и блокgivenидут тем жеcheck_atom/check_termи теми же кодами, что тело правила (LDC-E2101/E2102/E2103/E2104), аconst— обычныйast::Param: локальное значение §168 есть тот же биндер, что переменная квантора, и вторая структура означала бы вторую копию правил §48. Отдельно признаны две формы, которые компилятор до сих пор считал необъявленными функциями:entity_ref— стандартный конструктор §36 («contextually получает ожидаемый nominal entity type» — сигнатуры у него нет по определению) иtruth(…)— стандартный запрос §172 (список взят из §172 целиком). Арность запроса не проверяется намеренно: §172 показываетtruth(proposition, context), §267 в собственном примере пишетtruth(adult(p)), и требование двух аргументов отвергло бы пример спецификации. Вектор T074:LDC-E2102звучит дважды — в деле и вgiven, — аLDC-E2105не звучит вовсе. Ограничения §169 проверок не получили, и это свойство среза, а не пропуск: ни одна из трёх клауз сегодня не имеет выразимого нарушения — правила в теле дела запрещает грамматика, беспиновый импорт отвергает парсер (грамматика его допускает — слой строже нормы), а live-формаexternal opaqueпарсером не реализована. Обязательство записано: проверка §169 приходит тем же изменением, что и форма, которую она запрещает. -
Дело §168 и тест §267 разбираются: фронтенд
.lawcase/.lawtest(DECISION-0028, фаза 1 из 8). Формат объявлен нормативно — продукцииcase_decl/test_declстоят вgrammar.ebnf, §4 объявляет расширение, §269 называет.lawcaseв списке differential-обмена, — и не был реализован ни одной строкой: файлов ноль,lawc testисполняетvector.json, аtest-блок уезжал вOpaqueс проглоченным телом.lawc checkпри этом печаталcheck OKбез единого слова:LDC-E1302живёт на стадии lowering, и автор теста по спецификации получал зелёныйcheckи молча выброшенный узел. Заведены типизированные узлы AST и разбор всех шести формcase_item—context(сextends),const,assert,evidence,support(обе формы, отрицание пропозиции флагом, как уassert), метаданные;case_itemобъявлен ОДИН раз и переиспользуется блокомgiven, потому чтоtest_item = "given", "{", { case_item }, "}"— телоgivenесть телоcaseбуква в букву. Дело и тест в CLIR пакета не попадают (иначеprogramHash§209 поехал бы и тест стал бы частью права) и получают свой кодLDC-E1314:LDC-E1302сказал бы «вне L0-среза», а это неправда — они вне ДОКУМЕНТА, их вход живёт вcaseHash§170. Вектор T073 держит три половины сразу: код звучит дважды,LDC-E0201не звучит (форма разбирается) иLDC-E1302не звучит (вид определён) — порознь ни одна не закрыта. Названные границы: пример §168 целиком по-прежнему не разбирается из-заrecord_literal§40 (гап лестницы выражений, не фронтенда дела),entity_refвнутри дела не проверяется вовсе — тело дела статикой не посещается, — и ограничения §169 проверок не имеют. Три решения записаны до кода: объём (§168+§169+§267 одним пакетом), доменexpect(закрытый словарь полей результата — полноеpure_expressionбыло бы вторым вычислителем вне CLIR-реализаций), цель lowering (отдельный case-документ, байт в байт нынешнийcase.json). -
WP-21 (срез WP-08b): CST с trivia — round-trip побайтовый на 314 файлах. Лексер выбрасывал пробелы и не-doc комментарии, парсер строил сразу AST, и форматтер §214 не мог удовлетворить свой DoD «идемпотентность на корпусе»: сохранять было нечего. Поток токенов теперь покрывает источник ЦЕЛИКОМ —
Whitespace/LineComment/BlockCommentплюсErrorна байтах, поглощённых ошибкой лексера (три таких пути и были самыми опасными: незакрытый text block, незакрытая строка, недопустимый символ — они консумировали байты без токена, и round-trip рвался бы ровно на том входе, где форматтер нужнее всего). Привязка комментариев §227 — отдельной таблицей вParseOutput(Leading/Trailing/Inner/Detached; пустая строка отвязывает намеренно). Разбор не сдвинулся ни на токен по построению: парсер получает отфильтрованный поток — ровно то множество, которое лексер порождал до правки, — и фильтр стоит вparse(), а не в курсоре; AST не получил ни одного поля, поэтомуparse --astпечатает те же байты и расширение VS Code работы не заметило. Доказано воротами, а не рассуждением:check_lower79/79, differential 93/93,check_cli_json22 голдена, clippy и cargo test зелёные. Round-trip доказывается покрытием, а не сравнением текстов: инвариант «спаны идут встык от 0 до len» проверяется отдельно, и равенство байт следует из него — сравнение одних текстов было бы слабее (потерянный токен рядом с продублированным дал бы совпадение)..law.mdпокрыт целиком: блоки печатаются из потока, проза Markdown берётся из исходника (§217). Поверхности —lawc parse <file> --emit-sourceи пакетныйcst-batch(образецcanon-batch: один процесс на дерево). Ворота 10/36ci/check_cst_roundtrip.py— 314 файлов (313.law+ 1.law.md, включаяrelease/), sha256 файла считает ГЕЙТ, а не проверяемая команда; канарейка 2/2 (расхождение байтов, усыхание обхода). Границы названы: сам форматтер §214 не сделан — это следующая строка, и теперь ей есть на чём стоять; doc-комментарии по-прежнему кончаются в AST (слота под них вNodeCommonCLIR нет, потребителя уDecl.doc— тоже). -
Конституция РК 1995 заформализована целиком: 82 EXECUTABLE / 19 ANCHORED / 1 SOURCE_ONLY из 102 статей. Разобраны все девять разделов закреплённой консолидации, прекратившей действие 01.07.2026. Раскладка смешанная (
spec/decisions/0026-constitution-1995-edition-layer.ru.md): правила 1995 живут в тех же отраслевых пакетах, что и правила 2026, кроме разделов III и IV, вынесенных вkz.constitution1995.{president,parliament}— там отличается ИНСТИТУТ, а не формулировка (преемство через Председателя Сената против Вице-Президента; двухпалатные пороги «от каждой из Палат» против одного сравнения в Курултае). Цена варианта сперва была записана неверно и исправлена прогоном:impact-editionsпо audit-worldkz-constitution-linked(одинir.jsonсо всеми девятью пакетами) даётadded=369, removed=423, semanticChange=trueи меняет исход у всех четырёх контрольных сценариев, включая сценарий из отдельного пакета 1995. Раскладка пакетов на diff не влияет вовсе: на одиночномkz-constitution-rightsне разрешается ни один из 114 якорей, ничего не датируется, и вердикт печатается NO-CHANGE — то есть «право не менялось» там, где сменилась вся Конституция. Edition-diff считается ТОЛЬКО по audit-world,unresolvedAnchorsпроверяется до чтения вердикта. Проверено исполнением, а не комментарием. Тринадцать сценариев семействаKZ-CON-1995гоняютedition_projectionна двух датах и сверяют, что неразрешённых якорей ноль (без якоря во фрагмент источника проекция не датирует узел вовсе, и правило осталось бы применимым всегда). Несущая демонстрация: те же факты — разный исход дела. Иностранец, о котором закон молчит, до 01.07.2026 пользуется правами гражданина (TRUE_ONLY), после — не получает их (NEITHER): ст. 12 п. 4 обещала права «если иное не предусмотрено», ст. 15 п. 4 редакции 2026 инвертировала умолчание. Четырнадцать расхождений найдены чтением обеих редакций, а не переносом по номеру (нумерация сдвинута: 1995 ст. 10 ≈ 2026 ст. 13). Несущие: предел задержания «семьдесят два часа» стоит в самой Конституции 1995, тогда как 2026 отсылает срок к закону; право на забастовку названо прямо и в 2026 убрано; бесплатное высшее на конкурсной основе сведено к «в соответствии с законом»; неограничиваемое ядро 1995 шире — девять позиций против семи, под него заведён отдельныйenum CoreRight1995, иначе добавление вариантов молча расширило бы ядро 2026. Контроль: мера редакции 2026 не сдвинулась ни на единицу — 85/11/0 до и после, при девяти измеряемых пакетах вместо семи и 531 новом узле правил 1995. -
Учёт статей научился считать акт с несколькими закреплёнными редакциями.
ci/check_source_pinning.pyчиталarticles.jsonпо одному полюdocumentи печатал «охват 96 из 96» по редакции 2026, тогда как рядом лежала закреплённая редакция 1995 на 102 статьи: её учёт не вёлся вообще и не был виден. Введена форма{"editions": [...]}— по записи на редакцию, со своимиscopeиdeclared, потому что границы у редакций разные. В том же файлеaccounting = statsзатирало учёт предыдущей публикации: из четырёх публикаций в отчёт попадала последняя. Учёт теперь копится по редакциям.boundaries.pyнаучен той же форме — на ней он отвечал «фаза 0 не выполнена» при закреплённых байтах. Единственная объявленная граница редакции 1995 — ст. 84, исключённая Законом РК от 21.05.2007 № 254-III: в закреплённой консолидации от неё остался только заголовок.
Fixed
-
§231.1: неопределённый термин, модальность против §70 и второй перечень свидетельства — errata E-0031. Три зазора в разделе из девяти строк:
query keyупотреблён нормативно ровно один раз во всей спецификации и не раскрыт нигде; «должны планироваться» и «МОЖЕТ materialize только если» запрещали eager-материализацию, которую §70 разрешает прямо («НЕ ОБЯЗАН… СЛЕДУЕТ… для больших closed domains»); состав свидетельства назван дважды и по-разному (§70 — certificate + snapshot hash + membership proof + доказательство отсутствия ключа, §231.1 — certificate + query key). Обе реализации материализуют closure eager, то есть по §70 конформны, по §231.1 нет — вопрос был не отвечен, а не задан: масштабируемость не упоминает ни один conformance-профиль §8.1–§8.6. Правка редакционная: модальность приведена к §70,только еслиснято,query keyудалён, состав свидетельства не дублируется и ограничен ленивым планом (у eager полнота домена доказана самим проходом по домену). Требовать полный состав от eager-узла значило бы менять поведение и перезамораживать голдены — этого здесь не делается. Обязательство отрицательное: у удаления термина нет исполнимого следствия, поэтомуci/check_proof_kinds.pyдержит, что снятый термин не вернётся ни в prose, ни в схемы, ни в голдены, ни в дескрипторы (241 файл), с канарейкой на возврат. Красное до правки снято прогоном на доправочном §231.1 изgit show HEAD:. -
Словарь видов узла proof-графа §179 не называл
candidate_closure— errata E-0030. Вид сертификата §181.1 эмитировали ОБЕ реализации, он лежал в 11 замороженных голденах (17 узлов) и вProofNode.kind.enum, а §179 перечислял двенадцать видов из тринадцати. Молчание тройное по построению: differential сравнивает байты двух реализаций и согласное отклонение обеих от prose не видит, схема вид разрешала, Lean-ядро читает графы, а не спецификацию. Зеркально к E-0022 (там prose был строже схемы — здесь схема шире prose). Правка: вид внесён в §179, его смысл назван абзацем ниже, и тем же абзацем закрытость перечня записана прямым предложением — она была выводима, на неё уже опирались квалификации (why-not, 27.08), но написана не была; приём тот же, что у закрытости списка делимых §58. Схемы не меняются,schemaVersionне бампается. Обязательство исполнено воротами, а не вектором (утверждение о словаре проверяется сверкой перечней, а не исполнением):ci/check_proof_kinds.pyв шаге 4/37 сверяет три стороны — prose §179 == enum схемы в обе стороны, излучаемое голденами ⊆ prose, — плюс канарейка на четырёх мутациях. Красное до правки проверено прогоном на доправочном §179 изgit show HEAD:, а не рассуждением: обе строки отказа. -
Правила ст. 39 п. 1 редакции 1995 обходили §152–157 стороной. Соразмерность приходила обычным фактом, и ограничение признавалось оправданным без единого решения о трактовке, тогда как их близнецы редакции 2026 стоят под обязательной interpretation-группой. Заведена своя группа
Article39Proportionality1995, заякоренная в статью СВОЕЙ редакции: общая с 2026 заставляла бы дело о 1998 годе выбирать трактовку статьи, которой тогда не существовало. Найдено регрессиейKZ-CON-INT-04, которая на этом краснела. -
Разметка словаря §218: пакет
kz.constitution.sourcesразмечен, покрытие взято под храповик. Вербализация B1 печатала предикаты и типы собственными идентификаторами — «установлено, что «religious_restriction_established_by_law» (restriction: ReligiousRestriction v0)», — и это не дефект вербализатора: рендерер берёт метку, как только она появится (verbalize.quoted_label), а меток не было. Замер показал не пробел, а провал: во ВСЕХ конституционных пакетах размечено 0 объявлений из 1219, вkz.gpk— 82 из 1414, при том что двенадцать актов корпуса размечены на 100 % (kz.karamola328/328,rom.de-legibus157/157). Ворота тотальности §3.3 этого класса не видят по построению: шаблон у узла есть, пробелов ноль, документ «тотален» — а юрист подписывает текст, который читается кодом. Сделано.corpus/laws/constitution.law: 63 объявления (7 entity + 56 relation) получилиlabel ru-KZ, формулировки — из закреплённого текста статей §194 (ст. 1, 3–8, 10, 11 редакции 2026 и ст. 1, 2, 6–9 редакции 1995), у entity заполнен слотgenitive§218.1 — единственный, который потребляет pack (binderFormSlot). Статус меток —unofficialосознанно: официальным является текст статьи, а имя предиката выбрал формализатор, и объявлять его официальным названием значило бы приписать акту то, чего в нём нет. Цена подтверждена измерением, а не ссылкой на errata E-0010: semantic hash пакетаsha256:05ea561d…не сдвинулся ни на бит, сдвинулись ровно 63 content hash узлов — то есть разметка не может уронить differential и переводит утверждения юриста вstale_verbalization, а не вstale_semantics. Approvals сейчас ноль, поэтому цена нулевая; после первой подписи те же 63 метки вернули бы блоки в очередь ревью. Названная граница. По-английски остаются имена параметров («restriction: ReligiousRestriction v0» → «restriction: Ограничение деятельности религиозной организации v0»):atom.argберёт имя из декларации как есть, а канала метки у параметра нет — §218 даёт метки декларациям с телом, параметр декларацией не является. Переименовать по-русски нельзя: Unicode-идентификаторы §14 вне реализованного среза (DECISION-0002,LDC-E0103). Двери две — errata по образцу E-0011/E-0025 или фраза pack без имени параметра (теряет различение при арности > 1); ни одна здесь не открывалась. Ворота 35/35 —ci/check_label_coverage.py+corpus/label-ratchet.json. Храповик двусторонний:labelledне убывает,unlabelledне растёт; одной нижней границы мало — пакет мог бы расти безымянными объявлениями при неизменном числе размеченных, и потеря доли была бы невидима. Пакет вне таблицы и пакет, исчезнувший изcorpus/clir, — оба отказ. Канарейка снимает метку у синтетического объявления и требует падения; сверка проверена и на живых данных (подмена числа уkz.osmsроняет ворота). Текущий снимок: 32 пакета, словарь 5512 объявлений, с меткой 1388 (25,2 %), размечены целиком 15 пакетов. -
Храповик покрытия распространён на конституционную регрессию.
corpus/run_constitution_regression.py(46 сценариев, шаг 99) держался ни на чём: assert на число кейсов в раннере не стоял, аscenario-ratchet.jsonперечислял только семейства KZ-регрессии. Выпади сценарий — гейт печатал бы «45/45 PASS», и потеря была бы невидима. Сверка вынесена в общийcorpus/ratchet.py(одна копия соглашения на оба прогона), JSON получил раздел на прогон —runners.kzиrunners.constitution;corpus/kz/registry.pyсвёлся к привязке к своему разделу, сигнатураcheck_ratchet(counts)дляcorpus/kz/run.pyне изменилась. Семейства конституционной регрессии читаются из метокKZ-CON-<СЕМЕЙСТВО>-<номер>(11 семейств, 46 сценариев): второй таблицы внутри раннера нет намеренно — единственный реестр это JSON. Проверено пятью мутациями на чистом дереве: выпавший сценарий, выпавший блок, незаписанное семейство, удалённый раздел JSON и метка вне формата — каждая роняет гейт; KZ-ветка через общий код краснеет по-прежнему. -
DECISION-0014 принят, semi-naive исполнен: стена рекурсии снята — ×58,8 на глубине 200. Гибридная дельта-ветвь в
law-eval: журналы входа атомов в перечислимые множества, квалификация правила (дельтой идут только правила из позитивных литералов — гарды, кванторы и негация остаются наивными), наивный порядок публикаций восстанавливается сортировкой по кортежу §208-ключей перечислительных позиций. Цепь черезmonotone: N=100 — 31,86 → 1,55 с (×20,6), N=200 — 665,6 → 11,32 с (×58,8), N=400 (~80k выведенных) — 147,9 с (наивный за пределом). Нерекурсивные формы не просели (×1,00–1,05). Ноги обязательства: (а) differential OK + KZ 290 вызовов + демо 24 + векторы 173/173 + KZ-регрессия 236/236; (б) новые ворота 33/33ci/fuzz_programs.py— 100 000 случайных программ, оракул == движок побайтово (транспортlaw-cli eval-batch); (в) Lean зелёный на векторах, на живых актах красный по ЧУЖОЙ причине (Rational-арифметика в голове актаzheti-zhargy; оба Lean-контура исполняют оракул, semi-naive живёт в Rust — задеть их не может). Записано структурное замечание: нога (в) достаёт до движка только транзитивно через (а). -
Третья точка baseline §4.6: весь held-out срез (n = 71), словарь скрыт, утечка маркеров закрыта.
gate_clean82 %,iso_f10,46. Цена подсказки маркерами измерена на общих 15 задачах: 0,45 → 0,39. Распределение бимодально — 23 задачи ровно 1,0, 29 ровно 0,0. Из 13 отказов компиляции 7 —A3 StableId collision(переобъявление существующего в пакете предиката): гигиена, а не право, и в контуре с воротами §4.3 в цикле чинится повторной попыткой. -
Режим «словарь скрыт» (
baseline.py --hidden) и вторая точка §4.6. Хирургия убирает объявления, осиротевшие после выреза статьи (до фикспойнта); утечка словаря 100 % → 23 %. Прогон живой модели на тех же 15 статьях:gate_clean87 %,iso_f10,45 против 0,89 при данном словаре — это цена изобретения онтологии.hash_f1= 0,00 на всех пятнадцати: метрика, требующая совпадения имён, при выдуманном словаре не измеряет ничего. Наружу выдаётся один маркер вместо одного на блок — прежняя раскладка отдавала модели число деклараций (модели этим пользовались). -
Errata E-0018 исполнена (вариант Б, выбор владельца): статус-тест
monotone(P)— монотонная рекурсия стала писуемой в L0. Имяsupported()несло две способности: потребление конфликта (подлинная L3) и монотонное ребро рекурсии §103 (чисто L0) — слоевой вывод тарифицировал вторую по ставке первой, и транзитивное замыкание было неписуемо ниже L3.monotone(P)несёт тот же §65-тест (TRUE_ONLY|BOTH— установлено при исполнении: established-тест немонотонен при достижимом BOTH, а в L0 разница ненаблюдаема из-за halt), но слоя не поднимает;supported()остаётся L3. Правка аддитивна и сквозная: §65/§103/§110, grammar.ebnf, схема, обе реализации (лексер→парсер→strata→слои→движок→why-not), рендерер векторов. Векторы:ERR-E0018-MONOTONE-L0(объявляет L0 — проходит) иERR-E0018-MONOTONE-EVAL(рекурсия исполняется; в SUPPORTED, ir — выход компилятора под G-M1b); нарушительLAY-L1-VIOLATOR-SUPPORTEDостаётся зелёным.kz.corpus.marriageпереведён наmonotoneи выводится L0 (был L3) — чисто расчётный акт вернулся под заявку дескрипторов. Differential 87/87, векторы 141/141 runnable, KZ 236/236. -
Оркестрационный трек
spec/LAYERS-NEXT.ru.md— четыре инструмента поверх замороженного ядра 0.1 (шаги 30–31 конвейера). План продолжает башню слоёв выше L3 и делит работы по цене правки: семантика идёт в 0.2 через errata-машину, оркестрация — сейчас. Трек не вводит ни одного семантического правила: инструменты вызывают существующие движки и сравнивают канонические выходы §208, поэтому инвариант «никакой семантики вне CLIR-реализаций» держится по построению.impact(L8.0) — «законопроект как PR»: semantic diff §215, сценарии с изменившимся исходом с парными evaluation-документами и proof-графами, нормы без доказанного применения (rule_application§180 /norm_creation§135 — мера DECISION-0019/C, отчётная величина, не код выхода).impact-editions(L6) — тот же каркас по оси времени: «до»/«после» это проекции одного документа на две даты машиной применимости D1 (§31); нормативный узел снимается, когда все его якоря ведут в неприменимые редакции. Diff проекций — семантический changelog редакции.reanchor— рычаг формализации предшествующей редакции: постатейное побайтовое сравнение текстов пары одноязычных редакций и кандидаты на механическое перевешивание якорей. Разноязычная пара отвергается, а не сводится к догадке (§249); нормализация пробелов не делается.argmap(L4-lite) — проекция готового proof-графа §179–§187 в граф «аргумент/атака» (§107.1–107.3, §115) с grounded-разметкой; на evaluation не влияет.fuzz(L8.1) — сидированный генератор кейсов: конфликты §115 на консистентных входах, динамическое покрытие, минимизация находки до готового сценария.
Установлено при заведении рычага: механизм миграций §32.1 формализации предшествующей редакции не помогает по трём независимым причинам — он бежит вперёд (
apply(previous, operations) ≡ next),replaceнесёт только новый текст,repealудаляет; к замене акта (новая конституция взамен старой) он неприменим вовсе: нет ребраrevision, два разныхsource_work. Совпадение текста статьи при этом не доказывает совпадения нормы, поэтому выход рычага называется кандидатами и проверяется исполнением.Граница названа прямо: живых ответов от инструментов пока нет —
impact-editionsна Конституции печатает «добавлено 316»,reanchorдаёт ноль кандидатов, потому что у редакций 1995 года ноль фрагментов. Текста предшествующей редакции в корпусе не существует; инструменты показывают ровно то, что заформализовано. -
Метрика
iso_f1— сравнение формализаций с точностью до переименования (corpus/dataset/isomorphism.py). Узлы одинаковы, если унифицируются при биективной подстановке свободных символов; свобода дана только тому, что модель обязана была выдумать (нет в скелете), объявленное фиксировано. Конъюнкции сравниваются как мультимножества: §207.1 сортирует тело по байтам, а байты зависят от имён. На прогоне 15 черновиков — 0,89 против строгой 0,40. Селфтест 71/71 проверяет свойства (инвариантность к переименованию, чувствительность к склейке и к подмене объявленного,iso ≥ hash_f1); каждое из них нашло по настоящему дефекту. -
Первый прогон живой модели по baseline-стенду §4.6 (n = 15).
gate_clean100 %,hash_f10,40,hash_f1_modulo_id0,75. Прогон нашёл дефект стенда: хирургия вырезает только декларации с якорем на целевой фрагмент, а словарь статьи остаётся в скелете — 57 предикатов золота из 57. Задача стенда сегодня «связать названные предикаты», а не формализация с нуля; доляvocabularyGivenShareсчитается и печатается с каждым отчётом вместе с прямым предупреждением, что F1 точностью формализации не является. -
WP-39, шаг 2: реестр раннеров покрытия и baseline-стенд §4.6. Мера «норма доказанно применилась» переведена с одной KZ-регрессии на реестр
RUNNERS(ci/report_norm_graph.py): kz + Конституция + faraid + de-legibus, трём раннерам добавлен шовset_evaluate(доктринаcorpus/kz/engine.py), перехват по-раннерный. Покрытие 307 → 381 нормы (18 → 28 пакетов); faraid впервые заведён в конвейер. Baseline-стендcorpus/dataset/baseline.py: задачи из held-out среза хирургией по исходнику (точность хирургии проверяется байтами и CLIR на каждой паре), скоринг semantic hash строгий и modulo-id, селфтест 71/71 (identity 1.0, детерминированная порча замечена), быстрый срез — в воротах 29/29. -
WP-20 (stretch), вариант (а): conservativity L0 ⊂ full (LS §2.4) доказана на уровне модели —
checker/LawCore/Conservativity.lean(conservativity_L0+ следствие для статусов §62/§63 + строгость включения), нольsorry; байтовая половина остаётся за воротами 12, которые получили третью часть — синхронность предикатаIsL0с составом L0 вlaw-hir/layers.rs(манифест + пин, три канарейки). Квалификация скоупа — DECISION-0020. Второй инкремент — L1 ⊂ full (DECISION-0021): норм-стадия §134–§143 в модели как §143-цикл с fuel §238 и стопом §139,conservativity_L1+ башняconservativity_tower+ строгость включения; синхронность манифеста модальностей сmodality_layer— вторая пара направлений в воротах 12 (три канарейки). -
Дедупликация посылок §52.1 — квадрат стал линией, обе реализации. Рычаг, найденный замером шага 3 DECISION-0017: в петле посылок comprehension доминировал линейный
pid not in premises/premises.containsпо растущему списку — O(N²) сравнений строк на своде по N сущностям. Правка парная и представление не меняет: список остаётся единственным источником ПОРЯДКА (он документо-видим), множество — только членство;merge_premisesв обеих реализациях, четыре места в каждой (накопление вmaterialize_comprehension, слияния домена квантора §52, гард-агрегатов и агрегатов §59). Замер (CPU, перемежённый A/B): оракул ×1,37 при N=2000 и ×2,50 при N=8000, движок ×1,09 и ×1,72 — рост выигрыша с N и есть смена асимптотики. Байты совпали всюду: differential 86/86, векторы 137/137 runnable, KZ 226/226, selftest OK. -
§190 range restriction доведена до головы-НОРМЫ (
LDC-E4101). Проверка доходила только до головы-литерала: голова-норма §99.3 лоуверится вnorm_template_ref, переменные живут в полях шаблона. Теперь поля (holder/bearer/exercise/valid_when/effect/action/protected_effect/goal.condition/goal.window) проверяются наравне с атомом литерала — одна диагностика на шаблон. Наблюдалось на живом акте:HazardousFacilityBanPower(п. 11 Декларации о суверенитете) молча не существовал. Векторы T069 (отклонение, пять модальностей §122–§130) и T070 (граница: связанные головы принимаются). Errata E-0023. -
DECISION-0017 §9: третий шаг плетения id — comprehension §52.1. Петля посылок
materialize_comprehension— последнее место перевычисления опор сматченных конъюнктов — читает их поconjunct_ids; через неё идутquery_collect, агрегаты §59 и домены кванторов §52. Критерий «не хуже ×0,95» предрегистрирован §9 и выполнен: ×0,97–1,03 по пяти формам, байты совпали всюду, differential 86/86, KZ 226/226. Ожидавшийся выигрыш на агрегатной форме не материализовался — и причина записана в решение: в петле доминирует линейныйpremises.contains(O(N²) на сумме по N=2000), а не канонизация; следующий рычаг пути — дедупликация посылок, вне объёма решения. После шага 3 перевычисление опор сматченных конъюнктов не существует ни в одном путиlaw-eval. -
WP-39 заведён: held-out срез и покрытие норм тестом (ворота 29/29). Учётная единица — пара «фрагмент официального текста §27–§33 → нормы с якорями»; индекс вычисляется из закоммиченного CLIR и не хранится (
corpus/dataset/build.py): 920 пар, 2 461 норма, 420 норм вне выравнивания. Held-out — 75 пар / 219 норм, отбор детерминирован ведром поcontentHash§194, заморожен списком хэшей. Непересечение train ∩ eval проверяется по ДВУМ ключам: разделения по тексту недостаточно — 20 норм из 248 имели двойника поsemanticHash§209 в train, срез чистится до фикспойнта. Требование DoD «≥ 1.lawtestна норме» прочитано по существу: файлов.lawtestнет и парсера в компиляторе нет, поэтому норма покрыта, если доказанно применилась в proof graph сценария регрессии — 307 норм в 18 пакетах. Храповик односторонний;--canaryотвергает три подделки. Квалификация — DECISION-0019 (черновик). -
lawc init/lawc context show/lawc diff— добор CLI §225 (WP-35): скаффолд пакета §10/§266.1; материализованный контекст §89.1 (effective + origin/override-цепочки, той же механикой law-eval, что и evaluate); semantic diff §215 — пять видов записей, rename при явном@id, exit 1 при семантическом изменении, сверен с оракулом на всех hash-compare парах. Вlaw-canonдобавленnode_semantic_hash(§209 на одном узле). Три новых голденаcheck_cli_json(22). Остаток §225 назван поимённо в STATUS:fmtждёт WP-21,lock— решения о TOML-зависимости,build/export/import— определений в prose. -
G-M4 закрыт — DECISION-0017: ретроспектива с пересчётом M5 и хвоста плана (обязательство §6.2). Пересчитанный остаток M5 — ноль пакетов; хвост разделён на инженерный класс (дни) и внешне-календарный (пилот, ревью — недели людей); критический путь 0.2 — второй класс.
-
E-0022, хвосты — §180 получил примечание о соответствии имён prose ↔ схема и несериализуемости
body_result(восстановим изrule+substitution, ядро пересчитывает); §-цитаты доверенного ядра и его CI-обвязки выправлены («§182» → §179/§180 — сверено с релизным якорем: нумерация не менялась, цитата была ошибкой с рождения). -
DECISION-0017 §8: второй шаг плетения id — defeasible §104 и нормы §135. Посылки кандидатов defeasible и norm_creation читаются по
conjunct_idsбез повторной подстановки тела и канонизации; ключnorm_seen(идемпотентность lifecycle §139/§143) переведён сcanon(subst)наseen_ids— биективность и устойчивость те же, что уderived_seen(§3 решения). Критерий шага предрегистрирован §8 до замера: регресса нет (декартова ×1,04 при перемере — первый ×0,91 оказался шумом на нетронутом коде; T003/T013/T014/LAY-L2-DUTY ×0,96–1,05), байты совпали всюду; KZ 226/226; двое транзиентных красных differential — чужая перезаморозка голденов why_not, вручную подтверждены зелёными по всем трём ногам. Петля посылок comprehension §52.1 в шаг не вошла (зафиксировано §8 — возможный третий шаг). -
Седьмая станция верстака:
kind='positions'вlaw_draft_eval— статусы норм-позиций §122–§138 у черновика. До неё then-норма (duty ст. 8 закона о независимости) проходила check, обе меры и differential, но её СТАТУС черновиком было не спросить. Контракт ответа — тот же, что у боевогоlaw_ask(kind='positions'): позиция, статус со значением, стороны, createdBy; пустой результат называет кандидатов — then-шаблоны черновика. Проверено на посаженном акте (ст. 8: ACTIVE при факте национальности, VIOLATED при установленном контрпримере условия) и закреплено тремя контрактными проверками (ACTIVE до срока §138, SATISFIED по выводимому условию §136, пустое дело с подсказкой). -
Связь «Жеті жарғы» ↔ «Қарамола ережесі» записана в корпусе. Два памятника одного правопорядка стояли независимо, хотя оба источника связь документируют. Теперь каждое из двух предложений закреплено отдельным фрагментом в ОДНО предложение (не абзацем: абзацы — историография, и закрепление их целиком добирало бы покрытие текстом без норм, errata E-0013 §28) и несёт нормативный факт с провенансом. Сценарии
KAR-24иZH-39; differential 264 → 276 вызовов байтово. Связь односторонняя и записана односторонне: «Қарамола» называет «Жеті жарғы» прямо, «Жеті жарғы» с обратной стороны называет только Абая и «законопроект, который он сам сделал», без имени акта. -
Найдено пробой:
align-декларация парсится, но не лоуверится (LDC-E1302, узел пропущен) — то есть выравнивание, записанное в исходнике, не попадает ни в один ответ. Во всём репозиторииalignне использован ни разу; при выборе формы для межактовой связи конструкция отвергнута по этой причине, а не по вкусу. -
DECISION-0017: сквозное плетение id через путь публикации §103 — принят, исполнен, порог взят.
solveвозвращает вместе с подстановкой id сматченных атомов (Solution): ключ идемпотентностиderived_seen§231.1 — id established|supported|refuted-конъюнктов в порядке позиций тела вместоcanon(subst)(биективность даёт range restriction §190;not_knownиunknownисключены из ключа НАМЕРЕННО — их id нестабилен между раундами при неизменной подстановке, включение публиковало бы ту же аппликацию дважды); посылки §180 читаются по id без повторной подстановки и канонизации; рекурсия solve перестала глубоко клонировать остаток конъюнктов (ссылки с исходными позициями). Толькоlaw-eval, только strict-путь; оракул сохраняет прозрачную форму. Предрегистрированный порог §6 (≥ ×1,10 на декартовой) взят: ×1,35 (CPU, перемежённый A/B, release arm64), селективная ×1,11; differential 86/86, KZ 224/224, оба теста-обязательства ключа зелёные (состав; устойчивость при появлении негативной опоры под not_known). Пути defeasible/norms — отдельным шагом по тому же решению. -
Конституционный закон «О государственной независимости» (1991) — целый акт корпуса, 18 статей из 18, первый прошедший ЦЕЛИКОМ через верстак формализации. Все шесть станций (
law_pin→law_draft_check→law_draft_eval→law_measure→law_draft_verbalize→law_draft_differential) пройдены протоколом MCP-сервера без единого прямого вызова компилятора или оракула; первая же итерация check поймала hard keyword в четырёх местах разом, eval подтвердил 10/10 executable, differential — байтовую идентичность реализаций на презумпции ст. 18, closure-отрицании ст. 9 и default negation ст. 7. Посажен в корпус:corpus/laws/independence.law+sync_independence_fragments.py, семейство IND-01…10, KZ-регрессия 224/224. -
Декларация о государственном суверенитете Казахской ССР (1990) — целый акт корпуса, 17 пунктов из 17. Учёт пунктов 17 из 17 при нуле объявленных границ, глубина §33.1 — EXECUTABLE 17, байтовая доля 72,0 %. Пакет
corpus/laws/sovereignty/, фрагменты порождаетcorpus/tools/sync_sovereignty_fragments.py, 35 сценариев регрессии, differential 229 → 264 вызова байтово. CLIR несёт 9 шаблонов норм §122–§130: полномочия (свободный выход из Союза, приостановление союзных актов, образование национального банка, запрет опасного объекта), иммунитеты (территория без согласия Республики, исключительность Верховного Совета выступать от имени народа) и безусловный запрет испытаний ядерного оружия и полигонов ОМП. -
Единица деления акта объявляется, когда её нельзя опознать.
ci/check_source_pinning.pyиboundaries.pyопределяли конвенцию заголовка сами — по неспутываемому маркеру («Статья», «-бап», «-жарғы», скобки параграфа). У нумерованного пункта такого маркера нет: «1. …» — это и обычный маркер абзаца внутри статьи, и автоопределение раздало бы половине корпуса меру по единицам, которых в нём нет. Добавлено поле"unit"вarticles.json: объявленная единица отключает автоопределение, а конвенцияpointдоступна ТОЛЬКО по объявлению. Проверено замером по всем актам до и после: мера не изменилась ни у одного пакета, кроме объявившего.
Fixed
-
Каталог
law_packages({})перерос пригодность для модели-потребителя: 106 КБ при пороге 80 КБ — свёртка считала только сигнатуры. Порог вmcp/test_server.pyвыражает не размер, а читаемость первого ответа инструмента, который сам себя объявляет «вызывать первым»; живая сессия 27.08 грепала персистированный файл каталога вместо чтения ответа. Это не регрессия одной правки, и это замерено: удаление отдельных CLIR-пакетов оставляло каталог над лимитом — растёт число актов (их 35). Свёртка поSIGNATURE_BUDGETсуществовала, но два остальных перечня обзора порога не имели: нормы 44 КБ и константы 27 КБ, 67 % веса вне свёртки (429 констант одной строкой уkz-consumer-protection, 103 нормы у audit-world Конституции). Сделано.NORM_BUDGETиCONSTANT_BUDGET: свёрнутый акт печатает счётчик по каждому перечню и адрес детали, у норм — с разбивкой по модальностям §107 («норм 103» не отвечает на вопрос, ради которого спрашиваютkind='positions'). Свёртка — свойство ОБЗОРА:package=…иquery=…отдают перечни целиком. Свёрнутое ушло и изstructuredContent: иначе тот же вес просто уезжает в другое поле результата. Итог 49 КБ, счётчики сверены с деталью пакет за пакетом. Четыре пакета (kz-consumer-protection,kz-health-procurement,faraid-shares,kz-pinning-example) вписаны вPACKAGE_TITLES— после свёртки титул несёт основную нагрузку описания акта, а они печатались собственным ключом дважды. Проверено мутациями: снять свёртку норм — 81 КБ, порог краснеет; снять свёртку констант — 75 КБ, порог зелёный, и потеря компактности невидима до следующего крупного акта. Поэтому обе свёртки закреплены предметными проверками, а ожидания в них берутся из структурного ответа, а не пинятся числом: литерал краснел бы на росте пакета, а не на пропаже свёртки. Побочно измерено: несвёрнутый каталог (107 КБ) стоял выше ориентира 64 КиБ из DECISION-0003 п. 7 — критерия входа в embeddings; свёрнутый обзор (49 КБ) вернул его под ориентир. -
Ворота 33/33 (
ci/fuzz_programs.py) сверяли 100 000 ИНЕРТНЫХ программ — дефект ВОРОТ, не реализаций. Генератор строил узлы собственными хелперами в форме{"kind": "rule", "payload": {…}}, которой вlegal-ir.schema.jsonнет (payloadтам только уEvidenceItemиNormTemplate). Обе реализации читают плоскую форму, поэтому каждая программа складывалась в предупреждения —ASSERTION_NOT_ACCEPTED(§73,origin=None) на всех фактах иNON_EXECUTABLE_RULE(«неизвестная сила правилаNone») на всех правилах — и давалаNEITHERс графом из одного узла. Замер: 150/150 инертных документов на seed’ах 1, 999 и 20260827, ни одногоrule_application; 12 ошибок схемы у порождённого ir против 0 уvectors/t/T012/ir.json. Побайтовое равенство таких документов про ПОРЯДОК вывода не говорит ничего: дельта-ветвь semi-naive (DECISION-0014 §3(б)) не исполнялась ни разу, и заявление «порог §3(4) по объёму взят» отозвано. Квалификация по инварианту 8: обе реализации вели себя одинаково и правильно — молчал гейт, который их предупреждения не читал. Правка: узлы строитlawref.authoring(тот же единственный источник форм CLIR, что у генераторов векторов; добавлен хелперmonotone()§65/E-0018), запрос берётся по утверждённой паре, правило сnot_knownобъявленоdefeasible(§113), треть программ получает цепное заполнение фактов ради раундов вывода; негативная голова из форм убрана — strict closure v1 её не берёт («барьеры §111 не реализованы»). Заграждения, чтобы пустота не вернулась молча: валидация порождённого CLIR схемой, запрет кодовASSERTION_NOT_ACCEPTED/NON_EXECUTABLE_RULE, порог доли программ с выводом — все три до сверки байтов, плюс--canaryна самойpayload-форме в конвейере. Было 0 применений правил на 2000 программ, стало 30 653; оракул == движок побайтово. -
Нога (в) DECISION-0014 исполнена буквально: ядро проверяет proof graph ДВИЖКА. Оба Lean-контура проверяли доказательства оракула (
check_proof_certificates— замороженныеexpected.json,check_kz_certificates— живойlawref.evaluate), а движок был покрыт транзитивно через differential. Аргумент верен ровно пока множества покрытия совпадают — аvectors/t/T071вSUPPORTEDне значился и был единственным из 93 evaluate-векторов, где Lean проверял оракул, а differential движок не проверял вовсе (evaluate_coverage()про такие векторы только предупреждает). Вектор вписан в список — differential 93/93, байтыlawc evalуже совпадали с голденом.check_proof_certificatesполучил второй проход: сертификат берётся из выходаlawc eval, 93 сертификата движка проверены ядром. Нового покрытия прямой контур не покупает (на зелёном differential байты те же) — он снимает зависимость ноги контура от полноты чужого реестра. Граница названа:monotone-конъюнкт ядро v1 не читает, и на рекурсии нога (в) остаётся частичной. -
check_lowerкраснел наLAY-L0-WHY-NOT-REFUTED/-UNDETERMINEDс самого их появления — дефект ВЕКТОРА, не lowering.lawc lowerрасходился с закоммиченнымir.jsonв одном месте: тело правила стояло одночленнымand, компилятор же одноконъюнктное тело отдаёт голым конъюнктом. Квалификация по инварианту 8: неlawc(схлопывание стоит с64ca286, WP-12, и уже присутствовало в8a9a7bb— коммите, которым векторы созданы), неlawref, не SPEC (§207.1 об одночленных связках молчит, потому что порождать их нечему —when filed(v0);есть один конъюнкт, и одночленныйandне выражается никаким.law-текстом; prose не меняется, errata не нужна). Корень —conj()с одним аргументом вvectors/tools/artifacts/whynot.py: хелпер одночленную связку намеренно не схлопывает. Форма молчала везде, кроме этого гейта: схема принимает обе, рендерерir→lawстирает разницу (source.lawпри регенерации неподвижен), исполнение даёт тот же документ. Из 117 правил векторов одночленныйandбыл ровно у этих двух. Правка — в генераторе (инвариант 2); голдены сдвинулись ровно на три программно-производных хэша каждый (manifest.programHash,manifest.semanticHash,resultHash) при неподвижныхresults/proofGraph/issues/positions/conflicts— точечно, с предохранителем на множество разошедшихся путей, не--refreeze; инвариант 3 не нарушен (поведение оракула неподвижно, сменились байты входа).check_lower71/71, differential 86/86 байтово, векторы 146/138 runnable. -
§190 не проверялся у правил с головой-нормой — обнаружено, заведено задачей, в компиляторе пока не закрыто. Несвязанная переменная в
exercise/valid_when/effectшаблона §122–§130 проходитlawc checkчистой (у головы-литерала та же ошибка даётLDC-E4101), и правило молча не порождает ни одной позиции. В акте о суверенитете это стоило несуществующего полномочия п. 11, найденного только сценарием. -
Интернированный SupportStore в
law-eval— представление, не скорость; замер отрицательный, и это записано. Атом при первом появлении получает плотныйu32; стороны, индекс предиката и §208-байты аргументов работают на числах (ids/atoms_by_id/keys_by_id/arg_bytes_by_id); ground- сторона join-сравнений больше не канонизируется вовсе. Порядок перечисления §103 закреплён инвариантом «id в порядке возрастания ключей»; differential 86/86 (lawc == голден == живой lawref), 15 тестов эквивалентности, clippy чист. Гипотеза «кратного ускорения» опровергнута A/B-замером по CPU: release ×0,98–1,00, debug ×0,95–1,07 — нейтрально. Причина: тяжёлая канонизация вadd/truth_status— это ПОИСК (литерал → ключ), и интернирование её не убирает; убрало бы только сквозное плетение id через путь публикации и посылок (solve возвращает id опор, derived_seen на id), а это перестройка формы алгоритма против оракула — уровень решения, как semi-naive (DECISION-0014). Слой оставлен как корректный фундамент под такое решение; скоростных обещаний за ним не числится. -
«Жеті жарғы» Тәуке хана — целый акт корпуса, 7 жарғы из 7 плюс нормативная проза. Предшественник «Қарамола ережесі», прямо названный ею своим основанием. Первый акт, у которого АУТЕНТИЧНОГО ТЕКСТА НЕ СУЩЕСТВУЕТ: свод при жизни не записывался, полная версия не сохранилась, известен по записям XIX века. Вторичность источника выражена полями модели, а не примечанием —
officiality unofficial,text … unofficialу каждого фрагмента,adopted/in_forceне объявлены. Учёт 7 из 7, глубина §33.1 — EXECUTABLE 7, байтовая доля названа двумя числами (46,1 % от файла и 55,9 % от тела статьи, потому что закреплена веб-страница). 38 сценариев, differential 191 → 229 вызовов байтово. Найдено исполнением: шкала пересчёта скота согласована сама с собой (в отличие от ст. 58 «Қарамола ережесі»), кража описана двумя несводимыми мерами, перечень «четырёх случаев уплаты құн» противоречит тому же тексту в двух основаниях из четырёх, а третий жарғы не может быть строгим — у него есть изъятие. -
Обе меры §33.1 научены третьему соглашению о заголовке — «N-жарғы». До правки «Жеті жарғы» был для них невидим молча:
boundaries.pyпечатал «мера по статьям неприменима», а учёт возвращал пустой словарь. Конвенция носит то же имя языка"kk", что и «N-бап»: признаки исполнимого содержания берутся по языку акта, а не по форме его заголовка. -
§180 в схеме: per-kind required для
rule_application— errata E-0022.evaluation.schema.jsonтребовал отProofNodeлишь общий конверт, и узел-подделка «правило не сработало» (why-not) прошёл валидацию и differential — поймало только Lean-ядро.ProofNodeполучилallOf/if-then:kind: rule_applicationобязан нестиruleиsubstitution. Зеркально к E-0019 (там требуемое в JSON Schema невыразимо — здесь выразимо и потому обязано быть выражено). Обязательство свойством: пара негатив/позитив в selftest + масс-регрессия гейта 4 по живым ответам оракула. Prose §180 не меняется;schemaVersionне бампается. -
law.verb.ru@0.4.0— вербализация тотальна на всём корпусе (WP-25). ПробеловLDC-E8201по 31 CLIR-документу — ноль на 7946 подписываемых блоках (было 32 в пяти документах). Закрыты: liberty §125, цель воздержания §124.3, эффектыterminate/modify/opaque§127, цельrecurring§124.4, узлыinterpretation/interpretation_group§152–§156 иrevision§32.1 со всеми четырьмя операциями. Семантику не строили — она уже была под гейтами; добавлены фразы pack и ветки рендерера. Формулировки, где ошибка хуже пробела: liberty §125 назван установленным нормой, а не выводом из отсутствия запрета (§126 даётUNDETERMINED), а группа толкований не объявляет действующей ни одну альтернативу — выбор принадлежит контексту §156. Три вектора из prose:VER-RU-L2-LIBERTY-FORBEARANCE,VER-RU-L0-REVISION,VER-RU-L3-INTERPRETATION; VER-семейство — 9. Голдены pack 0.1.0–0.3.0 не сдвинулись:VER-RU-GAP-L2-DUTYпродолжает доказывать честный отказ. Покрытие внутри узла объявляется наличием фразы, и selftest сводит виды деклараций схемы с покрытием pack, требуя вписать остаток руками с причиной. -
Запрос
why_not(P)§172/§185 — восьмой вид запроса в обеих реализациях: унификация головы правила с ground-целью и разметка конъюнктов тела по паре опор §62 (NEITHER→ UNDETERMINED,FALSE_ONLY→ NOT_SATISFIED — §185 запрещает смешивать). Вид результатаGRAPH, blocker graph вvalue; словарьApplicabilityStatus/TriggerStatus§174.1 заполнен впервые. ВекторыLAY-L0-WHY-NOT-REFUTEDиLAY-L0-WHY-NOT-UNDETERMINED— обе половины различающей пары, обе под differential. -
lawc why-notЗАДАЁТ этот запрос движку, а не пересказывает чужой ответ; «не определено» выведено в отдельный раздел наблюдений. -
Производительность горячего пути §62/§103 — вторая волна, байты неподвижны. (1)
status_only/_status_of_key: фильтру конъюнктов и перечислителям §103 нужен только статус, аtruth_statusна каждый вызов клеил и сортировал списки опор — статус теперь считается непустотой сторон (append-only), списки опор для proof остались заtruth_status; эквивалентность обоих путей — свойство 5.3 selftest и тест law-eval. (2) §208-байты элементов паттерна в цикле перечисления мемоизируются лениво — прежний код канонизировал один и тот же терм по разу на атом; порядок ошибок канонизации в точности прежний. (3)ground_argsв Rust читается по ссылке вместо глубокой копии аргументов на каждой итерации. Итог: оракул ×1,22 по CPU-времени (декартов N=200, перемежённый A/B), движок в release нейтрален (×1,01 — там это съедал оптимизатор), differential 84/84, байтовая инвариантность оракула против доправочного состояния (92b4152) — 84/84. -
LTO опровергнут замером — не вводится. Перемежённый A/B на нативном arm64: thin ×0,97, fat+cu=1 ×1,02 к обычному release — ноль, потому что время сидит в системном аллокаторе, LTO там бессилен. Цена была бы +267 с на каждую release-сборку (ворота 26/26 делают их две). Урок: непереме- жённый замер на этой машине показал было ×1,2 — артефакт дрейфа нагрузки.
-
Верстак формализации в MCP-сервере (
mcp/law_mcp/workbench.py): шесть инструментов для черновиков по слоям корректности —law_pin(фаза 0, hash + publication-блок),law_draft_check(проба тремя исходами + §194 по переданнымsources),law_draft_eval(исполнимость: мёртвые правила поимённо, любой issue строже info — блокер),law_measure(учёт статей и глубина §33.1 + байтовое покрытие),law_draft_verbalize(пара «текст ↔ вербализация B1» для смысловой сверки) иlaw_draft_differential(lawref ↔ lawc байтово на черновике). Архитектурный принцип — «модель предлагает, сервер отвергает»: черновики живут в песочнице и не попадают в каталогlaw_ask. Эвристики не дублируются: проба импортируется из скиллаformalize-act(probe.py отрефакторен в библиотеку с прежним CLI), конвенции статей и признаки — изci/check_source_pinning.py, глубина — изboundaries.py. Контракт:mcp/test_server.pyвырос до 129 проверок; проверки нормативных ставок переведены с зашитых чисел на чтение из корпуса (зашитый МРП уже протухал при сверке акта с законом). -
match§55.1: subject и вид узла под статикой — вид match-выражения стал унификацией видов ВСЕХ ветвей (раньшеKind::Unknown), а subject обязан быть data value: §55.1 говорит, что pattern matching — чистая операция над значениями и legal support не проверяет, поэтому голый proposition на месте subject отклоняется тем же кодом LDC-E2109, что и голое условие §56. Код один потому, что правило одно — proposition не является значением; § у него два, и сообщения по ним разные: обернуть subject в статус-тест §65 нельзя (он даёт формулу, аmatchтребует терма), поэтому §55.1 предлагает унести proposition в тело правила. Замер до правки, а не чтение: на источнике T066 звучали 2 из 3 ожидаемыхLDC-E2108— значения ветвей обходились и раньше, не работал вид НАРУЖУ. Векторы T066 (виды сквозь узел;absentDiagnosticCodesдержит, что исчерпываемость §39 и unreachable §55.1 не задеты), T067 (subject — на верхнем уровне и во вложенномmatchвнутри ветви), T068 (граница: принят, кодов нет;source.law— выход рендерера ir→law, поэтому тот же вектор замыкает байтовую петлюMatchTermвci/check_lower.py; рендерер выучил enum-декларацию и оба выразимых паттерна §55.1). T042/T043 сюда не дотягивались — это утверждения о ХЭШЕ (§205 alpha, §209 порядок ветвей) и зелены при полностью отключённой статике термов; наличие «векторов на match» не означало покрытия match. Решение и оставшиеся границы —spec/decisions/0018-match-expression-slice.ru.md. -
Условное выражение §56 разбирается и типизируется (
LDC-E2109) —ifперестал бытьOpaque-узлом парсера:ast::Expr::Ifнесёт условие (формула), обе ветви (термы) и лоуверится в canonicalIfTerm§208 (condition черезlower_formula— в CLIR это Formula, а не терм). Вывод видов §58 идёт СКВОЗЬ узел: обходит обе ветви и отдаёт наружу унификацию их видов; расхождение ветвей даётUnknown— молчание, а не выдуманное правило, потому что §56 ветви не типизирует. Condition обязан быть Boolean data expression: голый proposition отклоняется новым кодом LDC-E2109 с code action §56; умолчание §66 «голый атом значитestablished» объявлено для ТЕЛА ПРАВИЛА и на data conditional не распространяется. Попутно закрыт пробел §65 —established(P)(status_functionграмматики) до этого не разбирался вовсе, и предложенная §56 починка была невыразима. Векторы T063 (отклонение условия в трёх позициях), T064 (три вхожденияLDC-E2108: then-ветвь, else-ветвь и терм НАДif), T065 (граница: файл принят, кодов нет;source.law— выход рендерера ir→law, поэтому тот же вектор замыкает байтовую петлюIfTermвci/check_lower.py). Решение и три проведённые границы —spec/decisions/0016-conditional-expression-slice.ru.md. Находка: названная граница покрытия §58 закрыта —spec/examples/kz/appc-art92.law:22–23(known + 3 calendar_month) даётLDC-E2108×2, второе вхождение дефекта корпуса класса E-0009, иappc-art92.law:21—LDC-E2109. Настоящей причиной молчания был неOpaque, а уровень выше: телоpure functionхранилось сырым спаном, и AST в этом месте не было; форма= expr;теперь разбирается в терм (блочная{ … }§47.5 — по-прежнему спан). Репо-широкая сверкаlawc checkдо/после: 279 файлов, наборы кодов совпали везде, кроме трёх копийappc-art92.law— ноль ложных срабатываний. -
Виды арифметики §58 выводятся статикой (
LDC-E2108) —lawc checkотклоняет несовместимые сочетания до lowering, а не после сборки CLIR. Применяются обе таблицы §58: делимые (errata E-0020) и множимые (E-0021), плюс §57-сравнение иmin/max/abs. Правило скаляра §49 записано там, где §58 его ставит, — ТОЛЬКО в умножении:Integer * Rationalпроходит,Integer + Rational,Rational * Decimal,Rational + DecimalиRational / Integerотвергаются. Вид выводится черезlet§55, литералы §49/§50 и биндерыcollect/кванторов; у чего вида нет (доменная константа §52, межпакетный символ,function§264, значение-зависимое частноеDecimal / Decimal) — тот не диагностируется никогда. Векторы T058/T059: первый пиннит, что звучат ВСЕ четыре нарушения, второй — что законные формы принимаются и кода в них нет вовсе (новые поляdiagnosticOccurrencesиabsentDiagnosticCodesрежимаstatic, в обоих раннерах). Находка:spec/examples/kz/social-code-art175.law:82—registered - 3 calendar_monthэтоDate - Quantity,TYPE_ERRORна исполнении; норма лоуверилась чисто и молчала. Правка неисполнима (§84.4 оставляет календарные месяцы невыразимыми) — журнал в IMPLEMENTATION-PLAN §«Дефекты корпуса». -
Proof резолюции динамической отсылки §182 — узел
source_resolutionс полным составом, включая отвергнутых кандидатов с причиной отклонения. Обе реализации; differential байтовый.why-notвыводит по нему видsource not in force§185 (остался один вид из восьми). -
edition_stateпортирован в Rust дословно: движок читал только событияin_forceи не видел ни прекращения, ни приостановления — латентное расхождение с оракулом, невидимое для differential на текущих данных. -
MCP-сервер пригоден для модели-потребителя — аудит по отказам живой сессии, каждая правка закреплена проверкой в
mcp/test_server.py(итог 75 проверок). Каталогlaw_packagesсжат с 375 КБ до ~40 КБ (большие акты счётчиками; появилисьpackage=…за полными сигнатурами иquery=…для поиска по сигнатурам/меткам/константам);law_rules(package=…)большого акта — оглавление вместо 218 КБ текста.calcпринимает дерево строкой (JSON), синонимы операций (divide,multiply, знаки) и листы{"op": "literal", …}.whyNotперестал молча пропускать правила с ВЫЧИСЛЯЕМОЙ головой — арифметика долей теперь объясняет, каких посылок не хватает, и ответ адресует кlaw_rules({"predicate": …}).derivedфильтруется по предмету вопроса (скрытое называется числом),provenance.fragments— якоря применённых правил, а не все статьи акта (у ГПК было 490 фрагментов в каждом ответе). -
Установленный ответ MCP носит оговорку поражаемости (
vulnerableTo). Найдено живой сессией: «взыскивается 1/3» на споре 41-летней давности стояло без слова о салауате ст. 26 — вид спора не был подан, поражающее правило молча не сработало, и «да» читалось как безусловное (сессия заключила «в акте нет правила полного истечения», хотя оно есть). Теперь ответ называет правило, которое отменило бы вывод, и недостающие ему факты. Ложных оговорок нет: посылки довязываются по фактам дела, гарды считает оракул term-запросом по пустому документу (12 > 40 отличимо от 41 > 40 без полного fixpoint), а спорные строки whyNot (вывод и его поражение видны одновременно) уточняются точным подзапросом в малом бюджете — время контура не выросло на порядок. Посылки-сравнения в объяснениях рендерятся видом «v1 > 40» вместо «(условие вне literal-формы)». Четыре проверки контракта вmcp/test_server.py. -
why-notвыводитwrong interpretation§152–§156 в двух различаемых силах: посчитанный результат под толкованием (режим анализа §156) и объявленная, но не взятая альтернатива — про вторую не утверждается ничего о том, каким был бы ответ (§185). -
unresolved referenceвынесен из «неопределимых по документу» в отдельный список «не бывает на этом этапе по построению»: это статическая ошибкаLDC-E5101/E5102, до вычисления она не доходит. -
lawc testпортирует режимыstaticиhash-compare(80 → 101 вектор из 127). Сбор статических диагностик вынесен вcheck_diagnostics/lower_diagnostics— раннер спрашивает тот же конвейер, что отвечает пользователю, а не свою копию проверок. -
lawc graph— proof DAG §224 в DOT и JSON; остальные семь видов графов §224 перечисляются с причиной, по которой не строятся. -
why-notчитаетjudgmentRequests— видmissing judgment§185 стал определимым (было ошибочно записано в «неопределимые»; их осталось четыре). -
Заключения запросов печатаются формулами, а не сырым JSON: разобраны пять форм обёрток плюс вызов функции §57–§58 и слабое дозволение §126.
-
«Қарамола ережесі» (1885) — целый акт корпуса, 70 статей из 70. Правила съезда биев пяти дуанов; первый акт корпуса не на русском языке и первый памятник обычного права. Учёт статей 70 из 70 при нуле объявленных границ, глубина §33.1 — EXECUTABLE 70, байтовая доля закреплённого текста 91,4 %. Пакет
corpus/laws/karamola/, фрагменты порождаетcorpus/tools/sync_karamola_fragments.py, 30 сценариев регрессии, differential 142 → 172 вызова байтово. Найдено исполнением: шкала оценки скота ст. 58 не замкнута (ни одна девятка ст. 57 в овцах не считается — акт сам отправляет оценку к биям ст. 60), ст. 58 даёт для одной головы две несовпадающие оценки (27 овец против 30), а вилки санкций, выраженные двумя границами, делают решение бия проверяемым. -
Обе меры §33.1 научены казахской нумерации статей.
ci/check_source_pinning.pyиboundaries.pyзнали одну форму заголовка — «Статья N», — и казахский акт («26-бап:») был для них невидим молча: учёт возвращал пустой словарь, а отчёт печатал раздел о полноте, ничего не измерив. Признаки исполнимого содержания и отсылки к другому нормативному порядку заведены наборами ПО ЯЗЫКАМ: перевод русского набора не годится, потому что деонтика здесь чаще стоит страдательным настоящим последствия («айып салынады»), а отсылка адресована шариату и обычаю, а не другому закону. -
prohibition§130 доехал до CLIR. Модальность отсутствовала в списке парсера, аactionу forbearance-цели терялся в lowering — при том что схемаForbearanceGoalобъявляет поле обязательным. Итог:lawcне мог эмитировать ни одного валидного запрета, и во всём репозитории не было ни одногоprohibition. Оракул (authoring.prohibition_template) умел это с самого начала — чинился движок, инвариант «оракул раньше движка» соблюдён. ВекторLAY-L2-PROHIBITION. -
Корпус: Цицерон, «О законах» II §§19–22 — свод сакрального права римлян, 26 leges, 28 фрагментов, 64 правила, 39 норм-шаблонов (duty/prohibition/power). Первый неказахстанский и первый латинский акт корпуса; обе меры §33.1 научены классической нумерации параграфов
[19]. Сценарии —corpus/run_de_legibus_scenarios.py, differential встроен в сам прогон.
Fixed
-
Integer / Decimal: оракул возвращалIntegerсо значением 3.5. Веткаdivвlawref.values.binaryпроверяла только ПРАВЫЙ операнд (right.kind != "decimal"), поэтому всякий левый вид проваливался в десятичную ветку и получал вид ЛЕВОГО операнда при Decimal-значении:7 / 2.0→Typed("integer", Decimal("3.5")),Boolean / Decimal→ Boolean со значением 0.5,Text|Date|Instant / Decimal→ непойманныйFraction-ValueError, выходивший наружу документом с кодомValueError— именем класса-исключения Python на месте правовой диагностики. Значение отвергают и собственныйfrom_literal_termоракула, и его канон §208: сквозной прогон давал не документ, аCanonError. Расхождение не показывалось ничем —law-evalотвечалunsupported(Decimal-деление не портировано), differential Decimal-деление не покрывал, аlawc checkпропускалInteger / Decimalпо ветке-исключению вarith_result, отклоняя при этом зеркальныйDecimal / Integer. Квалификация по инварианту 8 — дефектlawrefи производный дефектlawc, не SPEC (разбор: побочная запись к E-0020 вspec/ERRATA-CORE.ru.md). Правка: проверка перенесена на оба операнда (таблица_DIVISIBLEназвана явно),law-evalотвергает дословно тем же сообщением отдельной веткой передunsupported, ветка-исключение снята. Закрытость списка делимых §58 записана прямым предложением — редакционно, поведение неподвижно (голдены T058/T059 не сдвинулись). Векторы T060 (статика, оба порядка), T061, T062; последние два вSUPPORTED— differential впервые покрывает отказ Decimal-деления. -
MCP-сервер отвечал старым кодом оракула и никак этого не показывал. Процесс из
.mcp.jsonживёт часами и держит код в памяти, а CLIR перечитывает с диска, поэтомуprovenance.programHashпротухшего процесса СОВПАДАЛ с текущим корпусом: ответ выглядел свежим по каждому полю, ради которого провенанс и заведён. Наблюдалось 27.08.2026 при формализации «Қарамола ережесі» — сервер, поднятый до errata E-0020 (§35/§58, точное делениеInteger / Integer), возвращал наkz-karamolaчетыреTYPE_ERRORтам, где свежий процесс даётTRUE_ONLY; сам акт был корректен (30/30 регрессии, KZ-differential 172/172 байтово). Тот же класс, что уlawc/target/debug/law-cliвCLAUDE.md, но без признака в самом ответе. Заведёнmcp/law_mcp/freshness.py: отпечаток содержимого всех.pyизlawref/lawref/иmcp/law_mcp/, снятый ДО импортаlawref(обратный порядок делает протухший процесс неотличимым от свежего). Отпечаток стоит вprovenance.codeHashи в каталогеlaw_packages— архивный ответ теперь проверяется на протухание спустя произвольное время; при расхождении кода с деревомtools/callиresources/readдают отказSTALE_PROCESSс обоими отпечатками и списком изменившихся файлов вместо ответа старой семантикой. Перезагрузка модулей на месте отвергнута:importlib.reloadне переустанавливает уже связанные ссылки и заменил бы честный отказ на тихо неверный ответ. Покрыто девятью проверкамиmcp/test_server.py(93 в CI), включая ЖИВОЙ процесс с правкой оракула между двумя запросами — остальные проверки этот отказ не ловят по построению, поднимая процесс на каждый запрос. -
Исключение при норм-голове отбрасывалось молча.
unless/except_whenу правила, порождающего норм-шаблон, никогда не читались lowering-ом: развёртка §149/§150 определена для literal-голов, а для позиции требует §105.1 (веха L2+). Депутатский иммунитет Конституции скомпилирован БЕЗУСЛОВНЫМ, без трёх своих изъятий; таких норм в корпусе семь. Отброс сделан громким —LDC-E1302называет следствие; векторLAY-L2-NORM-EXCEPTION-DROPPED. Сама развёртка не реализована: она вывела бы движок вперёд оракула. -
§58: точное деление целых даёт
Rational— errata E-0020. До неёRationalбыл объявлен встроенным типом §35 и неконструируем поверхностным синтаксисом: литерала нет, строка отвергается §48, а единственный путьDecimal / Decimalдавал вид результата в зависимости от ЗНАЧЕНИЯ (10-гладкий знаменатель →Decimal, иначе →Rational), и §48 запрещал их смешивать. Следствие:1/4 + 1/6былоTYPE_ERROR. Правка аддитивна —Integer / Integerдо неё было безусловной ошибкой в обеих реализациях, грамматика не тронута. ВекторERR-E0020-RATIONAL-DIV. -
Пакет
faraid.shares— фараид, исламский наследственный расчёт: установленные доли, хаджб, аул, остаток (асаба) и возврат остатка (радд). Второй неказахстанский акт корпуса. Держит нагрузку, которой не даёт ни один акт РК, — точную рациональную арифметику на закрытых знаменателях (2, 3, 4, 6, 8, 24, при ауле 27) при полном запрете округления §18. На нём и найдена E-0020. Источник закреплён (PINNED_OFFICIAL_BYTES— изложение написано для репозитория, его файл и есть публикация), поэтому предъявлены ОБЕ меры §33.1: покрытие 73,3 % и глубина EXECUTABLE 10 / SOURCE_ONLY 1 / вне охвата 3 при UNEXPLAINED 0. Регрессияcorpus/run_faraid_cases.py: 7 классических казусов с ответами из литературы (минбария, аул 6→7, асаба с сыном, отцовский остаток, радд, хаджб), 68 проверок, differential 7/7 байтово; в каждом казусе проверяется, что распределено ровно единица. -
§207.1 formula normalization в нормализаторе: flatten ассоциативных
and/or, сортировка коммутативных операндов по semantic hash поддерева, удаление точных дубликатов. Исполняет обязательство errata E-0002, значившееся оговоркой скоупа v1. ВекторERR-E0002-CANON. -
§13 NFC-нормализация строкового литерала в разборе; официальный text block §17 не нормализуется (§13 запрещает менять его байты). Вектор
LAY-L0-ENCODING— настоящие CRLF+NFD байты против LF+NFC.
Fixed
- §182: proof graph term-запроса ссылался наружу себя. Корневой
function_evaluationперечислял посылками id узлов реестра, а в документ реестр не попадал — висячая ссылка, неотличимая от подделки. Обе реализации вели себя одинаково, поэтому differential молчал; нашло Lean-ядро. ИзъятиеKNOWN_DANGLINGснято вместе с дефектом. - NFD-строка отклонялась вместо нормализации (
LDC-E1306):law-canonNFC только проверяет, а нормализатор приведения не делал. Один и тот же акт компилировался или нет в зависимости от машины автора. - Четыре unit-теста
law-hirпереведены с позиционных утверждений о порядке конъюнктов на утверждения о составе.
Changed
-
§197 в conformance descriptor записан по списку, а не оптом. Запись «блок отложен» верна и скрывала две вещи: §197 состоит из двух половин с разными заголовками, и план откладывает только solver-assisted; из первой половины три позиции выполняются попутно другими проверками (
LDC-E2102/E1105/E5101/E5102,LDC-E4109,LDC-E2104/E2108), а три — нет (недостижимая декларация, пустой enum-домен, дубль нормализованного правила; каждая проверена пробным файлом, все даютcheck OK). Первая из трёх не сделана по измеренной причине: на пофайловой мере 335 из 4519 relation-объявлений дерева не упомянуты вне своей строки, а худший случай — словарный файл пакета, 143 из 143, читаемый соседними файлами; нужна пакетная гранулярность и правило про словарь. Заявка остаётся отложенной целиком — попутное покрытие §197-анализом не является. -
KZ-регрессия разрезана на пакет
corpus/kz/— 2795 строк одного файла стали девятнадцатью модулями: обвязка (harness), связывание §23 (linking), реестры (registry), сборка прогона (run), шов подмены оракула (engine) и четырнадцать модулей актов вacts/— модуль на пакет CLIR. Входcorpus/run_kz_regression.pyостался тонким и по тому же пути. Тела сценариев не переписаны: перенесены срезами, что доказано парным опытом — 191 вызовevaluate, канонические байты и порядок вызовов идентичны до и после. Заодно выброшено мёртвое, которое границы сделали видимым (_hp_const,LAB_NS,OFFICIAL_CAL_NS), и слиты дословные двойники конструкторов термов §35 (_money_term/_sa_money/_proc_money→money_term, и так же по Integer/Date). -
Подмена оракула в регрессии — теперь
set_evaluate, а не присваивание атрибута. До разделения три гейта (check_kz_differential,check_kz_certificates,report_norm_graph) писалиkz.evaluate = обёртка, и это работало само собой: все вызовы читали тот же глобал. В пакете свойство держится только поздним связыванием, а его обрыв не ронял бы ничего — differential сверил бы нуль вызовов при пустом списке расхождений и напечатал быOKс кодом 0. Поставлены три независимых сторожа, каждый проверен нарушителем: линтci/check_evaluate_seam.pyс канарейкойci/canaries/bad_evaluate_seam.py(2 класса) запрещает связывание именем внутриcorpus/kz/; каждый из трёх гейтов падает наCHECKED == 0/ пустомRUNS; сам вход падает с объяснением, если ему присвоили осиротевшийevaluateстарой формой. -
Причина отложения
windowsв заявках conformance сужена, а не снята: векторы CRLF/NFD/NFC заведены и §13 реализован, но прогона наwindows-latestне выполнялось. -
Вербализация читает конъюнкты в каноническом порядке §207.1, а не в авторском: source order живёт в HIR/source map, и канала HIR → B1 нет.
-
Отложенных позиций в заявках conformance: 11/11 → 7 (
lawref) / 6 (lawc). -
Корпус: проект программы партии «Алаш» (1917), раздел I «Форма государства» —
corpus/laws/alash-program.law: 29 правил (12 из них порождают позиции power/immunity/duty/liberty), 17 фрагментов на казахском закреплённом тексте, text coverage 99,8 %; 14 сценариев KZ-регрессии под байтовым differential. Первый акт корпуса с не-русским источником. -
Мера глубины §33.1 делит акт и по разделам:
boundaries.pyполучил запасную единицу (римские разделы) для актов без заголовков «Статья N» и перестал требовать, чтобы закреплённый документ называлсяru.txt. -
lawc test— раннер conformance-векторов §267–§269 (WP-35): обход дерева, режимevaluate, различениеrunnable/xfail/pendingи отдельный исходxpass; непортированные режимы перечисляются поимённо, а не пропускаются. 2 секунды на всё дерево в одном процессе. -
lawc explainиlawc why-not— §183–§185 (WP-35): объяснение из proof graph и меток (машинная форма §184), blocker graph §185 в объёме, который подтверждает документ; пять неопределимых видов перечисляются с указанием, чего для них не хватает — §185 запрещает утверждать, что отсутствующее условие ложно. -
ERRATA E-0019 · §179: proof graph не обязан быть замкнут по посылкам. Квалификация — дефект SPEC: «DAG» о замкнутости не высказывается, и обе реализации, роняя узлы реестра из term-запроса, не нарушали написанного правила. §179 дополнен требованием замкнутости и её границей; проверка замкнутости добавлена в
ci/check_proof_certificates.pyи не зависит от Lean-тулчейна (79 графов, канарейка внутри). -
§151 «definition» и режим вектора
lower-shape:definition Name(...) sufficient|necessary|exactразбирается и лоуверится — необходимое направление даёт non-derivational constraint §93.1, а не правило с формулой в голове (AUDIT §2.17, §5.3 «No contraposition»);exactдаёт оба узла. Раннер получил режимlower-shapeдля утверждений о ФОРМЕ выхода lowering-а, включая отрицательные: байтовое сравнение с голденом подтверждает только неизменность. T037 снят сpending— единственный признанный пробел L0 закрыт,deferredобеих заявок conformance 11 → 10. -
Ворота 22/22 «глубина формализации §33.1» (
ci/check_formalization_depth.py): односторонний храповик против тихого регресса меры EXECUTABLE / ANCHORED / SOURCE_ONLY и числа статей без объявленной причины. Реализация меры импортируется из скиллаformalize-act, разборdeclared— из ворот закрепления: третья копия соглашения и была бы дефектом. -
Вид причины
pending_addresseeвarticles.json: отсылочная статья объявляет ожидаемый акт, а не «исполнять нечего»; заявление проверяется наличием отсылки в тексте статьи, симметрично проверке признаков деонтики. -
DECISION-0012 (ценностные нормы и объявленные границы) и DECISION-0015 (канал для оценочных понятий: интерпретация вместо
judgmentв 0.1). -
Ст. 9 Конституции подключена к механике §158 двумя фактами §71 с якорями.
Fixed
-
article_textтребовал точку после номера статьи,ARTICLE_RE— нет. У Конституции-2026 точки нет ни у одной из 96 статей, поэтому срез был пуст, признаки исполнимого содержания не находились, и проверка причин объявленных границ работала вхолостую. Хвост заголовка сведён вARTICLE_TAIL; добавлен инвариант двух мер (посчитанная статья обязана иметь непустой срез). -
Срез статьи затекал в заголовок следующего раздела — «Раздел II. Основные права, свободы и обязанности» давал ст. 11 ложный признак деонтики.
-
lower_presumptionтерял@source: развёртка §146 выходила без якорей, и статья оставаласьSOURCE_ONLYпри формализованной норме. Якоря получили общий пост-проход рядом с метками и видимостью (§33). -
boundaries.py: многоредакционная раскладка источников (Конституция была невидима для меры целиком), все пакеты акта вместоclirs[0], разрешение через namespace вместо совпадения имён файлов, исключение ненормативного audit-world из меры полноты. -
Отчёт закрепления больше не выдаёт учёт за глубину: «формализовано 96 из 96» → «с фрагментом 96» плюс отдельная строка глубины §33.1.
-
Машинный режим CLI §225 (срез WP-35):
--jsonуparse,check,layer,featuresиexpand --symbol. Диагностики — по нормативнойdiagnostic.schema.json, байты — канонизатор §208, отказ приходит тем же конвертом.line/characterсовпадают с рендером §198 (DECISION-0002),offset— байтовый §13. Воротаci/check_cli_json.py: форма по схеме, совпадение чисел двух режимов печати, голдены с канарейкой, реестрDEFERREDсверяется с usage-строкой CLI. Расширение VS Code мигрировано на машинный режим и получило точный конец спана вместо эвристики по токену. -
WASM-сборка ядра (WP-36 закрыт): крейт
law-wasm— сырой C-ABI безwasm-bindgenи без единого блокаunsafe; все пять семантических крейтов собираются подwasm32-unknown-unknownбез правок (запретыclippy.tomlоплатили совместимость заранее). Воротаci/check_wasm.pyпрогоняют весь differential-список — 74/74 против тех же замороженныхexpected.json, что иlawc eval; рантайм — встроенный в Node WebAssembly. -
Expansion view §213 (вторая половина WP-23):
lawc expand <file> --symbol <Имя>— декларация, её спан и все порождённые ею узлы CLIR. До этогоexpandбыл байтовым синонимомlower. Провенанс читается из StableId §14; голдены на §146-презумпции и §206-splitting. -
Ворота DX проведены в
ci/run_all.sh(18 → 21): гейты сгенерированного расширения жили только вdocs.yml, и локальный прогон их не видел — из-за чего дефектlawc parse --astпростоял при зелёном конвейере. -
law-hir/names.rs— имя и вид top-level декларации §24 одним разбором для резолвера (LDC-E1201) и дляexpand --symbol. -
Конституция Республики Казахстан 2026: закреплены аутентичные RU/KK публикации действующей Конституции (96 статей на каждом языке) и обе прекратившие действие редакции Конституции 1995 года; семантика разложена на семь пакетов
kz.constitution.*и отдельный audit-world. Машинная граница доведена до 85EXECUTABLE, 11ANCHORED, 0SOURCE_ONLY, без статей вне пакета и неразрешённых якорей. Конститутивные положения сохранены точными фактами; добавлены прямые правила основ строя, прав, статуса и компетенций Президента, Курултая, Правительства, судов, Омбудсмена и местных органов. Многочисленные выводы одной статьи канонически расщеплены на отдельные правила: прежняя запись с несколькимиthenмолча сохраняла только последний head. Регрессия выросла до 46/46, B1-паспорт черезlaw.verb.ru@0.4.0— до 1173 блоков безLDC-E8201; человеческие approvals оставлены явноunreviewed. -
Оракул L0 (M2): календарь §85/§85.1 и
DeadlinePolicy§86; типизированные значения — точный Decimal §18, Money §50, Quantity §49, Date/Instant §57, Rational §35; движок строгих правил (naive fixpoint §103, range restriction §190,effective§87, ProofRegistry §180); closure §70, collect §52.1, keys §45.1; контексты и профили §89/§89.1; манифест §10 и покрытие lock §11,generate_lock/diff_lock(WP-06, WP-07, WP-30, WP-31). -
lawc(M3): лексер §15–§19 и recursive-descent парсер L0-среза; literate frontend.law.md§7.1/§217 с байтовым round-trip; типизированный source model §27–§33; resolver-проверки law-hir; normalizer AST → CLIR с rule splitting §206 и презумпциями §146; первый срез type checker — разрешение имён, арность §45, совместимость типов с entity-subtyping §42; командыlawc parse|check|lower|expand(WP-08, WP-09, WP-12, WP-10). -
law-eval(M4): дословный порт оракула на Rust, командаlawc eval; ворота differential в CI — 15/15 поддержанных векторов дают канонические байты, совпадающие с замороженным голденомlawref(WP-13). -
Гейт G-M1b закрыт в L0-объёме: 25/25 — каждый evaluate-вектор имеет
source.law,lawc lowerвоспроизводит егоir.jsonбайтово; петля authoring → рендер → парсер → normalizer замкнута. -
Расширение VS Code/Cursor: подсветка
.lawи literate.law.md, подсказки при наведении с § спецификации по ключевому слову; сборка.vsixскриптом. -
Демо Средиземья: 5 сценариев, раннер, интерактивный режим (REPL).
-
site/— сайт документации на Astro Starlight: §-резолвер связывает 926 перекрёстных ссылок, TextMate-грамматика.lawвыводится изgrammar.ebnf, битая ссылка или неразрешённая § валит сборку (WP-37). -
spec/examples/— восемь исходников.law, скопированных из релизного якоря; канонична теперь рабочая копия. -
ERRATA-CORE: записи E-0008 (bvr.law использует hard keyword
eventкак имя, §15) и E-0009 (девять дефектов corpus-примеров: необъявленные символы, арностьconclusion_of). Обе — находки инструментов, а не правки: релизный якорь не редактируется, исправления уходят в пакет 0.2 (WP-29). -
DECISION-0002: единица колонки в диагностиках и граница ASCII-идентификаторов. Unicode-идентификаторы §14 (XID_Start/XID_Continue) объявлены вне среза 0.1 — вместо «недопустимый символ» лексер выдаёт
LDC-E0103на весь идентификатор и продолжает разбор. XID без нормализации NFC §13 отклонён сознательно: имена идут вStableId§14 и semantic hash §209, и два написания одного имени разошлись бы тихо. -
Релизный пакет 0.2-draft (WP-29):
release/0.2-draft/(214 файлов) и сборщикci/build_release.py— гейт 18/18.CHECKSUMS.sha256покрывает всё, включая LS/FOUNDATION/PLAN, которых не было в инвентаре 0.1;RELEASE.jsonнесёт метаданные §244 с явными причинами отсутствия publisher identity и подписи; метаданные векторов внутри пакета позволяют пересчитать заявки conformance, не выходя за его пределы; относительные ссылки классифицированы (битых нет, внешние перечислены). -
Ступень (2) вербализации (LS §3.8): pack
law.verb.ru@0.2.0с форматомlaw.verb/0.2потребляет морфологические формы §218.1 (биндеры в родительном падеже,stdTypeFormsдля встроенных типов); featurelaw.verb/0.2в реестре; векторVER-RU-L0-MORPH. Смена ступени меняет текст и verbalization hash при неизменной семантике — то есть даётstale_verbalization, а неstale_semantics. -
Межпакетная ссылка из исходника закона (вторая половина WP-31):
law_hir::lower_with_imports+ImportContext/ResolvedImport; флагlawc lower <файл> --imports <контекст.json>принимает готовый массив LockedImport от оракула (resolver.envelope_imports).pkg::symbolразрешается в StableId §14 чужого пакета, собственное имя пакета §23 — в свой namespace; объявленные зависимости уезжают вenvelope.importsи потому входят в semantic hash §209. Воротаci/check_cross_package_lowering.py(7 групп) сверяют список компилятора со списком резолвера;ci/check_package_resolve.pyпроведён в CI иrun_all.sh(шаги 9–10/17). В корпусе обе денежные связки переведены: ОСМС читает МЗП, правила закупа — МРП (kz.corpus.budget::minimum_wageи::mrp); раннер линкует мир и сверяет закрепление байтов (разрыв — LDC-E1104). Регрессия 84/84, KZ-differential — 128 вызовов байтово идентичны. -
Транзитивная прочность закрепления в отчёте
ci/check_source_pinning.py: цепочки по импортам §209,sourceArtifactsи URN-якорям §33 с рекурсивной оценкой прочности; отдельным подразделом — нормы, не прослеживаемые ни до одного акта корпуса. Ворот на «слабых звеньев нет» нет намеренно (учебные тексты-заместители нельзя объявлять закреплёнными). -
Навигационная карта тулчейна (срез WP-37):
docs/reference/overview/ARCHITECTURE.ru.md— конвейеры обеих реализаций, инварианты детерминизма, путь добавления конструкции end-to-end, семейства и режимы векторов, назначение каждого гейта CI; ссылка из README. -
Пакет материалов пилота B1 (срез WP-37):
pilot/— инструкция участнику, опросник с блоками A/B/C, ключ оценщика, порядок сеанса и генераторpilot/build.py(документы порождаются детерминированно и в репозитории не хранятся; сборка падает при маркерах⟦не вербализуется⟧). Протоколspec/PILOT-B1.ru.mdполучил две датированные записи об изменениях, внесённые до начала сбора данных. -
Conformance descriptors обеих реализаций (срез WP-27):
conformance/*.jsonсобираютсяci/build_conformance.pyиз реестра features и слоевой разметки векторов и проверяются против них же; схема дескриптора получила полеdeferredдля отложенных блоков §197, статуса Windows и частично реализованных возможностей. Ложная заявка (слой, feature, версия, спрятанный пробел, подделкаdescriptorHash) опровергается. -
Diff вербализаций (WP-25 (c), срез WP-23):
lawref/lawref/semdiff.py— semantic diff §215 с пятью видами изменений (added/removed/changed/renamed/presentation) и его рендер как diff вербализаций (LS §3.6); командаpython3 -m lawref diffс ненулевым кодом выхода при семантическом изменении; векторVER-RU-DIFF-DEFEASIBLEс golden diff-ом. -
Feature negotiation и версии языка (WP-32, errata E-0016): нормативный реестр
spec/feature-registry.jsonс девятой схемой, каноническое имя языкаlaw.coreи версия0.1,law-hir/features.rsв конвейереlawc check(LDC-E1401с migration report §266.1,LDC-E1402,LDC-E1403), командаlawc features. Формат template pack и контур утверждений теперь версионируются этим механизмом, а не собственными договорённостями. -
Пилотный материал B1 и пререгистрированный протокол: оба пилотных файла (
social-code-art175.law,legal-acts-art12.law) впервые компилируются, размечены метками и вербализуются без пробелов; их слои (L0 и L1) выводятся машинно. Протокол пилота —spec/PILOT-B1.ru.md: пять различающих пар, четыре порога, критическая параnot_known/not. -
Семантические слои L0–L3 нормативно (WP-24, DECISION-0007): новое приложение
spec/LAYERS.ru.md(L0/L1 нормативно, L2/L3 информативно),law-hir/layers.rs— вывод слоя по использованным конструкциям, командаlawc layerи флагlawc check --layer, диагностикиLDC-E8101 LAYER_EXCEEDEDиLDC-E8102 LAYER_DEPENDENCY_EXCEEDED, полеsemanticLayerв манифесте, lockfile и conformance descriptor, эффективный слой сборки вlaw.lock, два LAY-вектора-нарушителя. Слой — потолок, а не метка: объявление выше выведенного допустимо, ниже — ошибка. -
Контур утверждений вербализации (WP-26, DECISION-0006): восьмая нормативная схема
review-approval.schema.json,lawref/lawref/approvals.pyи командыpython3 -m lawref approve/approvals-check. Юрист утверждает блок ревью-документа; подпись привязана к semantic hash УЗЛА и байтам блока, поэтому правка соседней нормы её не трогает, а наполнение меток даётstale_verbalization, а неstale_semantics. Смена версии template pack без изменения текста устареванием не является. КодыLDC-E8201 VERBALIZATION_GAPиLDC-E8202 STALE_APPROVALактивированы из резерва E82xx; §33.1 получил необходимый машинный признак уровняVERIFIED. -
KZ-корпус размечен метками §218: метки стоят во всех актах корпуса (понятия, отношения, правила, приоритеты, исчерпывающие перечни, издания, фрагменты). Вербализация корпуса читается юридическим языком, а не идентификаторами: Закон об ОСМС № 405-V даёт ревью-документ на 698 строк и 79 блоков без единого маркера
⟦не вербализуется⟧, каждое правило названо статьёй и пунктом. Semantic hash пакетов при этом не изменился (errata E-0010) — изменились только content hash узлов. Pack дополнен русскими именами встроенных функций §257, чтобы денежные формулы читались. -
Вербализатор B1 (MVP, WP-25) —
verb/law.verb.ru@0.1.0(формат template packlaw.verb/0.1: фразы, операторы, агрегаты, русские имена встроенных типов, дисклеймер, перечень покрытых node kinds) иlawref/lawref/verbalize.py— чистая функция CLIR → ревью-документ.lawread.mdс content hash. Командаpython3 -m lawref verbalize <ir.json>. Канонические формулировки LS §3.4, включая различающую пару «установлено, что не P» / «не установлено, что P». Тотальность §3.3 проверена сплошным прогоном по всем CLIR репозитория: на L0–L1 маркеров⟦не вербализуется⟧нет, L2-конструкции помечены явно. -
Семейство VER-векторов и режим раннера
verbalize(LS §3.9): сверяются байты golden.lawread.md, content hash, число и состав пробелов тотальности; двойной прогон подтверждает детерминизм. Три вектора, включаяVER-RU-GAP-L2-DUTY— честный маркер вместо молчаливого пропуска. -
Морфологические формы метки §218.1 (DECISION-0004): необязательный блок
label ru-KZ official "…" { genitive "…"; }, закрытый словарь слотов на семейство language tag,Label.grammaticalFormsв CLIR, диагностикаLDC-E8203на слот вне словаря и на повтор. -
Метки §218 в компиляторе — первая предпосылка вербализатора B1 (WP-25):
label <language-tag> <official|unofficial|translation> "текст";разбирается в телеentity,relation,ruleиconstraint(grammarlabel_item; уrule/constraint— в том числе перед биндерамиfor), копится в конверте декларации рядом с annotations/doc и лоуверится в полеlabelsузлов CLIR (§202) в каноническом порядке (language, status, text) с пересчётом content hash узла. До этого меток в CLIR не было ни одной. -
Вычислительное ядро норм — арифметика и агрегаты внутри правил (обе реализации, differential байтово):
- §58 арифметика в head правила: вычисляемый аргумент вывода сворачивается в ground-значение до публикации (§190). Раньше выражение в head вообще не вычислялось — см. Fixed;
- §57/§58 терм-гарды в теле (
when … and (доход > предел)): у сравнения нет support-пары, оно отсекает подстановки, а не даёт фактов; раньше такое тело давалоNON_EXECUTABLE_RULE; - §58
min/maxнад Money/Quantity/Decimal — выбор операнда без арифметики, поэтому политика округления не требуется (в отличие отdiv); - §50
round(value, precision, mode)как терм-функция: единственный законный путь к неточному денежному результату, политика приходит аргументами. Режимы HALF_UP/HALF_EVEN/HALF_DOWN/UP/DOWN/CEILING/FLOOR; - §50.1 процентный литерал:
3 percent→ точный Decimal0.03с display unitpercent(÷100 сдвигом запятой, без округления); - §52.1
collect v: T where Fв поверхностном синтаксисе и §59 агрегаты над ним (count/sum/min/max/average) — в том числе в теле правила, с comprehension, параметризованной переменными правила («взносы ЭТОГО плательщика»). Источник агрегата обязан быть невыводимым: иначе нужен барьер полноты §111, и правило честно пропускается сNON_EXECUTABLE_RULE, а не считается по недособранному множеству; Integer§257 стал полноценным видом значения (был непредставим):countвозвращает натуральное число, целое умножается как безразмерный скаляр §49, но не складывается с Decimal-видами без конверсии §48. ВекторыLAY-L0-ARITHMETIC,LAY-L0-GUARD,LAY-L0-BODY-AGGREGATE(differential 42/42).
-
Шестой акт корпуса: Закон об ОСМС № 405-V (
corpus/laws/osms.law), сверенный с действующей редакцией на 01.01.2026 (протокол —corpus/osms-verification.ru.md) — первый пакет, где сумма ВЫВОДИТСЯ правом, а не считается запросом на границе. Сверка дала три содержательных расхождения, все закрыты:- ст. 29 п. 3 исключён Законом РК от 14.07.2025 № 206-VIII с
01.01.2026: единый предел «10 МЗП» заменён двумя разными — 40 МЗП для
отчислений (ст. 27 п. 2-2) и 20 МЗП для взносов (ст. 28 п. 5-2). Пакет
несёт ОБЕ редакции, разделённые
effective§87: доход 2 400 000 ₸ даёт взнос 17 000 ₸ на дате права 2025 года и 34 000 ₸ на дате 2026-го; - «двенадцать месяцев» ст. 5 — предельный период ЗАДОЛЖЕННОСТИ (п. 3), а не условие статуса: право даёт уплата (п. 1), при прекращении сохраняется три месяца, а при шестидесяти месяцах непрерывной уплаты — шесть (п. 2);
- перечень ст. 26 — четырнадцать действующих подпунктов: «зарегистри-
рованные безработные» исключены в 2025, ветераны ВОВ внутри пп. 7,
отсутствовали получатели адресной социальной помощи.
Плюс расхождения адреса: взносы по договорам ГПХ — в ст. 28, а не в
несуществующей ст. 28-1; ст. 14 перечисляет больше видов плательщиков.
Второй проход — по дословному тексту (fragment-ы статей 5, 14, 26, 27,
28 и 29 несут официальные тексты из ИПС «Әділет», §194-хэши посчитаны от них;
извлечение —
corpus/fetch_osms_texts.py, повторная сверка —--check): - предел отчислений ст. 27 п. 2-2 стоит на СОВОКУПНОМ доходе работника, а не на выплатах каждого источника — база и сумма сведены к ключу по лицу;
- освобождение от взносов (ст. 28 п. 7) и от отчислений (ст. 27 п. 3) — разные перечни: от взносов освобождены все категории п. 1 ст. 26, от отчислений только подпункты 1), 5), 7), 11), 12) и 13). За неработающего получателя АСП взносы не платятся, а отчисления платятся;
- право на медицинскую помощь ст. 5 п. 1 имеют и освобождённые от уплаты по ст. 28 п. 7 (военнослужащие и служащие специальных органов), а не только те, за кого уплата производилась. Сценарии OSMS-01…OSMS-16; KZ-регрессия 27/27 → 43/43. MCP-сервер отвечает на денежный вопрос с адресом и разной суммой на разных датах права.
- ст. 29 п. 3 исключён Законом РК от 14.07.2025 № 206-VIII с
01.01.2026: единый предел «10 МЗП» заменён двумя разными — 40 МЗП для
отчислений (ст. 27 п. 2-2) и 20 МЗП для взносов (ст. 28 п. 5-2). Пакет
несёт ОБЕ редакции, разделённые
-
-infinityкак endpoint интервала §20 в парсере и lowering: грамматика его допускала, парсер — нет, поэтому норма «действовала до такой-то даты» не выражалась без выдуманной нижней границы. -
Агрегаты §59 в head правила (обе реализации): нормам вида «размер считается за период не более двенадцати месяцев» сумма нужна в выводе, а не в условии. Барьер полноты §111 проверяется для head так же, как для гардов; посылки агрегата входят в доказательство вывода.
-
Корпус закреплён на официальных текстах. Пять пакетов несут настоящие публикации; 23 фрагмента заменены подлинными текстами статей и байтово сверены с источником инвариантом §194. Отчёт покрытия §33.1 впервые даёт числа вместо утверждений: ОСМС 29,0 %, Правила закупа 5,3 %, закон о праздниках 5,7 %, ГК 0,4 %. Статус —
PINNED_UNOFFICIAL_COPY: закреплено плоское извлечение со страницы портала, а не байты официального опубликования. Извлечение воспроизводимо —corpus/tools/extract_source_text.py.budget-2026иrest-day-transfer-2026намеренно остаютсяABSTRACT_ONLY: у них выдуманы сами идентификаторы акта, а не только тексты. -
Ворота закрепления источников
ci/check_source_pinning.py(15-е вci/run_all.sh): сверка закреплённых байтов §194-кодами, запрет голого заявленияmaterialization_status PINNED_*без публикации, и отчёт покрытия §33.1, который считает text coverage против байтов публикации, а без неё честно пишет «не определён». Режим--pin <файл>считает digest и печатает готовый блок декларации, ничего не записывая. Сети нет: закрепление — ручной шаг с коммитом результата. -
Пример механизма
corpus/laws/pinning-example.law— вымышленный акт, написанный целиком для примера; его собственный файл и есть официальная публикация, поэтомуPINNED_OFFICIAL_BYTESтам правдиво. Две статьи из четырёх намеренно не формализованы: отчёт показывает 22,3 % покрытия. Остальные семь актов корпуса объявилиABSTRACT_ONLY— их фрагменты несут учебные тексты-заместители, а не редакции настоящих актов. -
Уровень
publication§27.3 в компиляторе (errata E-0013).source,editionиpublicationлоуверятся вsource_work/source_edition/publication— до этого все три молча выпадали предупреждениемLDC-E1302, иfragment … in EDITIONссылался на редакцию, которой в CLIR не было. Байты публикации в CLIR не входят: узел несёт каноническийuri,mediaType,documentHashиretrievedAt, а локальный путь к закреплённым байтам — несемантическийlocal_path, уезжающий вmetadataдокумента (§209 «local source paths»). ДобавленSourceEdition.materializationStatus(PATCH-0.1.1 §9 в узкой форме). -
Две проверки §194 на паре (publication, fragment):
LDC-E5204(байты не дают объявленныйdocumentHash) иLDC-E5202(текст фрагмента не найден в закреплённых байтах публикации). Вторая проверяется вхождением байтов, а не смещением — смещения плывут при каждом перезакреплении документа. Сравнение по исходным байтам UTF-8 без нормализации (§13). Это первая машинная гарантия того, что формализованный текст взят из документа: прежний §194 гарантировал лишь неизменность текста с момента, когда автор посчитал его хэш. Проверке нужна файловая система, поэтому она вызывается из CLI, а не из чистогоcheck_file; путь обязан быть относительным внутри каталога пакета. ВекторыERR-E0013-SOURCE-PINNING,ERR-E0013-PUBLICATION-HASH. -
§84.4
days_between(errata E-0015): длительность между двумя датами стала измеримой. §84 объявлял три типа длительности, и ни один терм ядра их не порождал — «пеня за каждый день просрочки» была невыразима, число дней приходилось вводить фактом дела. Возвращает счёт календарных дней (Integer), отрицательный при обратном порядке; календарь §85 не нужен — рабочие дни считаетadd_business_days§86, и подменять одно другим нельзя. ВекторERR-E0015-DAYS-BETWEEN, порт вlaw-evalсверен байтово. -
Учёт статей акта в
ci/check_source_pinning.py: пакет объявляет охват (sources/<акт>/articles.json), и каждая статья в охвате обязана быть либо формализована, либо объявлена вне охвата с причиной. Доля покрытия говорит, сколько текста формализовано; учёт — не забыта ли статья. Отсутствие учёта не роняет ворота, но печатается как «НЕ ОБЪЯВЛЕН»: мера может отсутствовать, но не молча. -
Закон об ОСМС формализован целиком: 42 статьи из 42, покрытие текста 29,0 % → 97,3 %, список объявленных границ пуст. Исчислительное ядро — новыми правилами: ст. 2 (сфера действия, каскад с оговоркой «если иное не предусмотрено»), ст. 3 (приоритет международного договора над Законом — lex superior приоритетом L1), ст. 13 (участники через closure §70), ст. 26-1 (взносы из местного бюджета с изъятиями через default negation §113), ст. 30 (нарушение срока уплаты), ст. 31 (пеня за каждый день просрочки). Институциональные статьи — нормативными фактами с официальной формулировкой в метке §218; факты сгенерированы из закреплённого текста, поэтому перечни полны по построению, а исключённые поправками подпункты норм не порождают.
-
Связи между актами — три ступени (DECISION-0010). Общая рамка: «норма A влечёт норму B вообще» неразрешимо для языка с арифметикой §57–§58 и defeasible-механикой, а §105.1 запрещает выводить отношения норм из текста. Поэтому следование материализуется доказательством, а статике оставлены вопросы, которые разрешимы.
- Эмпирический граф следования —
ci/report_norm_graph.py: каждый вызовevaluateKZ-регрессии перехватывается (приёмcheck_kz_certificates), из proof graph извлекаются фактические рёбра правило → правило, факт → правило, правило → запрос;norm_creation§127 считается применением породившего правила. Отчёт, а не ворота: код выхода — код регрессии. Первый прогон — 103 вызова, 225 применений, 26 рёбер, и 57 из 117 правил корпуса не применились ни разу (мёртвые нормы названы поимённо, как и пакет вне регрессии и нулевое число межпакетных рёбер). - Делегационная цепочка —
lawref/delegation.py, воротаci/check_delegation.py(12/12): основание подзаконного акта разрешается в power-норму §127 родителя (LDC-E5304), действовавшую на дату принятия (LDC-E5305), издатель обязан быть holder-ом (LDC-E5306); отсутствие обязательного основания —LDC-E5303. Темпоральное звено переиспользует машину применимости D1 (applicability.edition_state, статусы §31), а не заводит вторую интервальную логику: сценарий сsuspended-редакцией проверяет именно наследование, дефекты lifecycle приходят кодом D1LDC-E5302. Основание — данные (--basis/--organ), как--protectedу D4. CLIpython -m lawref check-delegation. - Статика разрешимого фрагмента —
lawref/normstatic.py, воротаci/check_norm_statics.py(14/14): первые коды W-диапазона §199 —LDC-W4101(возможный конфликт) иLDC-W4102(поглощение/дубликат). Фрагмент: голова-литерал, тело из established-литералов и сравнений var ⋈ const над Integer/Decimal точными рациональными; всё сверх — строка отчёта с причиной, не молчание. Свидетель конфликта — сертификат: ворота подставляют значения обратно и падают, если они не удовлетворяют обоим правилам (принцип Lean-ядра WP-19). Рамка §105.1 соблюдена буквально: ни одного defeat/priority-ребра, вне байтового контракта evaluation, код выхода CLInorm-staticsвсегда 0.
- Эмпирический граф следования —
Changed
-
ИСПРАВЛЕНИЕ:
lawcне медленнееlawref— отставание было артефактом сборки. Ранее в этом журнале записано, что производственный движок в 3–4,9 раза медленнее оракула и что причина неизвестна. Профилирование её нашло, и это не движок. На одном состоянии исходников, 40 000 выведенных фактов, медиана из трёх:lawref(CPython, arm64) — 15,31 с;lawcdebug x86_64 под Rosetta, которым ходят ВСЕ ворота — 73,88 с (×4,83);lawcrelease x86_64 под Rosetta — 21,81 с (×1,42);lawcrelease arm64 нативно — 11,23 с (×0,73). Отставание раскладывается нацело: debug вместо release ×3,4, x86_64 под Rosetta вместо нативного arm64 ×1,9. Собранный как положено, движок быстрее оракула в 1,4 раза. Обоснование ворот производительности иDECISION-0014приведены в соответствие; долг «профилирование Rust» закрыт. -
Кросс-архитектурная сверка стала воротами 26/26 (
ci/check_cross_arch.py): те же differential-векторы прогоняются двумя release-сборками под разные таргеты, документы сравниваются побайтово. §211 обещает детерминизм безусловно, а закон, ответ которого зависит от процессора, — не формализация, а совпадение. Обе сборки делаются внутри ворот подряд: первый прогон сверки дал ЛОЖНОЕ расхождение, потому что бинари были собраны из разных состояний исходников — та самая ловушка протухшего бинаря, о которой предупреждает CLAUDE.md. Graceful skip при отсутствии второго таргета, с явным «проверка НЕ выполнялась». -
Байтовый контракт проверен МЕЖДУ АРХИТЕКТУРАМИ — впервые: 80 из 80 differential-векторов дают побайтово одинаковый evaluation-документ на x86_64 и arm64. Раньше это не проверялось никогда, потому что конвейер ходит одной сборкой.
-
Два черновика решений, которых требует уровень 1 работ по производительности.
spec/decisions/0014-semi-naive-as-optimization.ru.md: §103 остаётся наивным фикспойнтом и буквой семантики,lawref— его буквальным исполнением, а semi-naive вlaw-evalдопускается как оптимизация с обязательством — то же множество support-пар в том же порядке, доказываемое тремя способами (differential, дифференциальный fuzz ПО ПРОГРАММАМ, Lean-ядро); индексы §230 под это обязательство не подпадают.spec/ERRATA-CORE.ru.md, запись E-0018 (черновик): монотонная рекурсия неписуема ниже L3 — гарантия L0 объявляет фрагмент монотонным и обещает, что semi-naive применим напрямую, но §103 пускает рекурсию строгого правила только черезsupported(), а тот исключён и из L0, и из L1. Разобраны четыре варианта правки с ценой каждого; выбор за автором спецификации. -
Реестр прогонов KZ-регрессии стал таблицей, а покрытие — храповиком (
corpus/run_kz_regression.py,corpus/scenario-ratchet.json). Прогоны склеивались руками написанной цепочкой+вmain(), а список CLIR-пакетов — двенадцатью строкамиjson.loads; новыйrun_*, не вписанный в цепочку, просто не исполнялся при зелёном гейте, а выпавший из неё уменьшалtotal, и гейт по-прежнему печатал «N/N PASS». Теперь естьACT_RUNNERS(семейство → функция + нужные пакеты),ANCHOR_RUNNERS(дела из релизного якоря),CLIR_PACKAGESи храповик числа сценариев по семействам: пополнение записывается вместе с новыми сценариями, уменьшение роняет гейт. Проверено нарушителем: выпадениеrun_gpkиз таблицы даётexit=1и «семейство gpk исчезло — было 9 сценариев» вместо прежнего «75/75 PASS». Тела сценариев не тронуты — что именно они утверждают, не изменилось. -
Сборка CLIR корпуса стала декларативной (
corpus/gen_kz_clir.py). Порядок сборки был закодирован последовательностью операторов вmain(), а зависимости — руками выписанными аргументамиimport_context(...); при этом источником истины о зависимостях оставаласьimport-декларация §23 в самом.law, и два описания расходились молча. Теперь есть таблицаLOWERED_ACTS(выходной файл → исходник), а порядок и состав--importsвыводятся из деклараций:declared_package_and_importsчитаетpackage§22 иimport§23 (в многофайловом пакете — по всем файлам, со снятием строчных комментариев),build_loweredукладывает акты в топологический порядок с детерминированным разрешением ничьей и явным отказом на неизвестном импорте и на цикле §23. Байты CLIR не изменились ни у одного акта, кромеkz-gpk, который был протухшим ещё до правки (647 узлов в закоммиченном CLIR против 691 в исходнике — ГПК разбит на многофайловый пакет и дописан, CLIR не пересобран). KZ-регрессия 84/84, конституционная 28/28, повторный прогон генератора идемпотентен. -
Ворота производительности — 24-е в конвейере (
ci/check_perf.py,ci/perf/). До них в конвейере не было ни одной проверки времени, и это дало ровно тот класс молчаливой потери, против которого заведены determinism-линты: перечислители сканировали весь store, а движок был втрое медленнее оракула — при полностью зелёном CI. Первичный сигнал НЕ секунды: проверяется отношение стоимости перечисления к размеру store (индекс ≈ ×1,0, полный скан — ×98…126), потому что полосы настенного времени под нагрузкой перекрываются, а отношение от машины не зависит. Бюджет процессорного времени на замороженной нагрузке (19 600 выведенных фактов) оставлен вторым, грубым сигналом. Канарейка--canaryвосстанавливает форму до индекса и требует, чтобы ворота упали. -
Обе правки портированы в
law-evalиlaw-canon(инвариант 6 — оракул раньше движка): быстрый путьescape_into(побайтовая проверка корректна для UTF-8 — продолжения многобайтовых последовательностей всегда ≥ 0x80 и подb < 0x20не попадают), индексby_predicate, а перечислители стали возвращатьVec<&Value>вместоVec<Value>— глубокое копированиеserde_json::Valueна каждый атом при каждом вызове убрано. Эквивалентность закреплена тестами в самих крейтах (fast_escape_matches_char_by_char_reference— все код-поинты < U+0600 плюс целевые строки;predicate_index_matches_full_scan— эталон-скан). Differential 74/74 байтово, cross-canon на 100 000 fuzz-документов зелёный, голдены не пересчитывались. -
Гипотеза о причине отставания
lawcотlawrefНЕ подтвердилась. Замер до правок давал 3,0–4,4×, и глубокое копирование атомов было названо главным подозреваемым. После правок медиана из трёх прогонов при 40 000 выведенных фактов:lawref45,13 → 20,20 с (×2,23),lawc197,56 → 99,38 с (×1,99); отношение 4,38× → 4,92×. Обе реализации ускорились примерно одинаково, разрыв не сошёлся — значит его причина в другом и остаётся неустановленной. Требуется профилирование Rust, которого до сих пор не было. -
Индекс по предикату в
SupportStore—established_positive/supported_positiveстроилиsorted(set(positive) | set(dpositive)), то есть ПОЛНУЮ пересортировку всего store, и лишь потом отбирали по предикату; вызов стоил O(N log N) по всей базе фактов вместо O(|атомы предиката|), а зовётся он на каждый несвязанный конъюнкт тела в каждой итерации фикспойнта §103. Заведён_by_predicate— ключи, у которых есть сторона вpositive|dpositive, в возрастающем порядке ключа; ведётся при вставке (единственные мутаторы —addиadd_defeasible). Порядок перечисления сохранён доказуемо: фильтрация отсортированной последовательности по предикату совпадает с сортировкой отфильтрованного подмножества, поэтому детерминизм §211 и порядок §103 не сдвигаются. Замер A/B в одном процессе: ×2,35 при 10 000 выведенных фактов, ×2,24 при 40 000, байты документа совпали. Проверено теневой сверкой на живом корпусе — 21 407 перечислений, 0 расхождений — и свойством вlawref/selftest.py(эталон = снятая форма скана). -
Импорт убран из горячего пути решателя —
from .. import values as valsстоял ВНУТРИ трёх функцийlawref/evaluator/solver.py(свёртка вычислимого терма §58, терм-гард §57, свёртка агрегата §59), и машинерия импорта давала 30 077 вызововimportlib._handle_fromlist= 11 % времени одного прогона. Цикла импорта, который бы это оправдывал, нет:lawref/values.pyтянет только stdlib. После правки вызовов 3. Байты не затронуты по построению: selftest, KZ 84/84, демо — зелёные. -
Канонизация §208: быстрый путь экранирования —
_escapeвlawref/canon.pyобходил КАЖДУЮ строку посимвольно, а §208 экранирует ровно",\и управляющие < U+0020. Строка без единого символа этого класса тождественно равна'"' + s + '"', поэтому условие быстрого пути точное, а не эвристическое. Профиль оракула показывалcanonical_bytes= 78 % времени (из них_escape— 41 %): канонизация зовётся на каждый ключ атома (support.literal_key) и на каждое сравнение аргументов в join-е решателя. Замер A/B в одном процессе: ×1,47 при 10 000 выведенных фактов, ×1,17 при 40 000 (с ростом N доля смещается к скану store — отдельная правка). Семантика не менялась: G-M1a зелёный на 100 000 fuzz-документов, KZ-регрессия 84/84, демо байтово, голдены не пересчитывались. Эквивалентность быстрого и посимвольного путей закреплена свойством вlawref/selftest.py(эталонная реализация в тесте + сверка на 470 строках нормативных примеров). -
§218 приведён в соответствие с грамматикой и схемой (errata E-0011): метки несёт любая декларация с телом (грамматика расширена с 12 до 19 productions — presumption, definition, fiction, closure, calendar, assert, priority), статус метки обязателен, «descriptions» квалифицированы как doc comments §16. Метки
source/edition/fragmentперестали быть строковыми полями source-модели и стали настоящими метками узла. -
Semantic hash §209 больше не включает
publication-узлы (errata E-0013). §27.3 определяет publication как конкретный файл, и один edition может иметь их несколько (XML, PDF, HTML). Ни повторное получение того же документа, ни смена формата, ни добавление второй публикации той же редакции не меняют ни одной нормы — значит, не должны двигать semantic hash и переводить approvals вstale. Основание то же, что у меток E-0010. Исключение НЕ распространяется наSourceEdition.documentHash: идентичность Expression — это идентичность того, что формализовано, и она остаётся в хэше полностью. Целостность самой публикации держится её content hash узла (§202) и проверками §194. -
Semantic hash §209 больше не включает
labels(errata E-0010). Метка — презентационный слой: §218 закрепляет, что смена отображаемого языка не меняет IDs и semantics, поэтому добавление перевода и переформулировка метки не должны менять semantic hash. Иначе ревью-контур LS §3.6 неисполним: утверждение юриста привязано к паре (semantic hash, verbalization hash), и правка метки переводила бы все approvals пакета вstale. Фильтр изменён синхронно в обеих реализациях; метки остаются в content hash узла (§202), а официальный текст фрагмента (texts, §13/§194) меткой не является и из хэша не выведен. ВекторERR-E0010-LABELS; режимhash-compareвекторного раннера принимает необязательное ожиданиеdifferentNodeContentHashes. -
spec/SPEC.ru.mdразрезан на 43 части вspec/SPEC.ru/; сам файл стал указателем. Разрез побайтовый — конкатенация частей воспроизводит документ. -
spec/DECISION-0001-PARAMETERDECL.ru.md→spec/decisions/0001-parameterdecl.ru.md. -
Колонка в человекочитаемом рендере диагностик
path:line:col(§198) теперь меряется в символах (Unicode scalar values), а не в байтах UTF-8: строка с кириллицей до места ошибки больше не сдвигает колонку относительно редактора. Спаны остаются байтовыми; перевод в единицы UTF-16 для LSP — задача WP-22 (DECISION-0002).
Fixed
-
Свод числового поля по множеству сущностей был невыразим — совокупный доход занижался (errata E-0012). §51 объявлял
List<T>«с дубликатами», но ни одна конструкция ядра его не порождала: §52.1 фиксировал результатcollectкакSet<T>, а схема пинилаComprehensionTerm.distinctвconst: true. Обе реализации честно дедуплицировали по каноническим байтам, differential был зелёным — это пробел SPEC, а не дефект реализации. Последствие тихое и дорогое:sum(collect amount where начислено(лицо, amount))схлопывал две позиции с РАВНОЙ суммой в одну. В пилоте АСП критерий права записан именно так, поэтому два члена домохозяйства с одинаковым доходом давали совокупный доход одного — право на адресную социальную помощь признавалось при доходе выше черты. На различных значениях результат верен, и сценарии SA-01…SA-03 дефект не ловили.Введена вторая форма —
collect all v: T where F→List<T>, по элементу на каждую solution substitution. Форма безallсохраняет distinct-семантику дословно, поэтому ни одна существующая программа и ни один замороженный голден не изменились.all— контекстное слово (распознаётся только перед identifier), а не новый hard keyword:HARD_KEYWORDSне вырос, идентификаторallостался законным везде — осознанный отказ повторять класс E-0008. Критерий АСП переведён наcollect all; дискриминатор — сценарий SA-04 регрессии с ДВУМЯ равными доходами. Обход ОСМС (assessed_incomeфактом) сохранён — у него другое основание, и комментарий приведён к нему. -
Rust-путь
collect-запроса игнорировалdistinct.query_collectвlaw-evalнёс собственную копию цикла материализации (оракул делегировал общей функции) и разошёлся бы сlawrefна первой правке семантики comprehension. Копия удалена, путь делегированsolver::materialize_comprehension. -
Молчаливая публикация не-ground факта из вычисляемого head. Правило вида
then взнос(лицо, база * 0.02)считалось сработавшим, а в store попадал литерал с НЕСВЯЗАННОЙ переменной внутри терма: подстановка §103 обрабатывала толькоkind == "var"верхнего уровня и не рекурсировала вbinary/call, аeval_termво всём эвалюаторе вызывался ровно один раз — в ветке term-запроса. Ни диагностики, ни отказа: ground-инвариант §190 нарушался беззвучно, и «ответ» уходил дальше как факт. Статика ни при чём — §190 в law-hir проходит корректно, переменная связана телом. Подстановка сделана рекурсивной со свёрткой терма; ошибка вычисления (§58 деление на ноль, §50 неточность, §50 CURRENCY_MISMATCH) доносится какerrorс адресом правила и НЕ публикует факт, вместо превращения в UNKNOWN. Дефект был одинаков вlawrefиlaw-eval— дословный порт сохранил его, поэтому differential оставался зелёным: класс ошибок, который межреализационная сверка не ловит по построению. -
Паника лексера на не-ASCII символах в коде. Любой кириллический символ, набранный вне строки и комментария, ронял
lawcс кодом возврата 101 вместо диагностики: разбор двухсимвольной пунктуации резал&strслайсом&source[i..i + 2], аi + 2у следующего многобайтового символа не обязан быть границей символа (r(объектпадал на паре(о). Пара сравнивается по байтам, чтение символа идёт черезis_char_boundary, сдвиг — на длину символа в UTF-8; спанLDC-E0101покрывает символ целиком. Регрессия закрыта классом, а не входом: тест вставляет 2-, 3-, 4-байтовые символы и комбинирующую метку в каждую позицию базового исходника.
DECISION-0152 — межпакетная ссылка прочтения и цепочка кислотно-основного равновесия (06.09.2026)
- Исправлен зазор грамматики и реализации (аддитивно). EBNF §38 допускала
qualified_nameуof§152 и уalternatives§155, а парсер отвергал (LDC-E0201«вне v1») и lowering повторял отказ (LDC-E1105«пока не поддержана»); прозы, объявляющей запрет, в §152–§157 не было. Теперь позиции ПРОВЕНАНСА и КОМПОЗИЦИИ (of,source_anchor,extends,alternatives) принимаютpkg::Symbol§23 с проверкой состава экспорта §24 и ВИДА цели поexportKinds;interpretationдобавлен вEXPORTABLE_KINDS(четыре зеркала),pub interpretationдоносит видимость до узла. Позиция ЧЛЕНСТВА (include/exclude) остаётся локальной: каноническая экспансия объявления (E-0115) у соседа невычислима. Векторы T248–T251. - Не изменено. Семантика оценки:
resolve_interpretationsсобирает словарь прочтений из всех узлов слитого мира, и чужая альтернатива попадает в него так же, как своя. Ни одногоpub interpretationи ни одной квалифицированной ссылки этих позиций в корпусе и векторах не было — ни одинcontentHashне сдвинут. - Первый потребитель — цепочка кислот.
openstax/chemistry-acids(закреплённые гл. 14 и §15.2 Chemistry 2e, CC BY-NC-SA 4.0, 23pub fragment),chem/acid-base(три прочтения кислоты §152 группойexactly_one),chem/acid-strength(сила, гидролиз, буфер; вторая группаany_of),iupac/red-book-acids(глава IR-8 как кодекс),calc.acid_base(точная арифметика без логарифма). 56 сцен корпуса и 12 сцен вычислителя, обе реализации сходятся. - Errata E-0137 (компилятор). Правило, вложенное в
interpretation, не проверялось на range restriction §190 — отказ обнаруживал только оракул на исполнении; проход §190 теперь спускается в члены прочтений, диагностика называетПрочтение/Правило; вектор T260; 84 пакета корпуса с прочтениями — ни одного нового красного. - Errata E-0139 (компилятор). Все межправиловые проходы страт (§110,
§111/§113, §116, §149, §71, §87) видят членов прочтений и считаются с
учётом членства §104.4 — по максимальным согласованным выборам прочтений;
цикл через две альтернативы
exactly_oneне репортится (T261), внутри одного прочтения — репортится (T262). В корпусе найдены и исправлены два латентных поздних производителя §111 (grc/laws-of-thought,vat/paenitentia): десять читателей записаныdefeasible. - Errata E-0140 (семантика оценки, обе реализации).
INTERPRETATION_REQUIRED— статус результата, а не документа: его получают только зависимые truth-запросы (цель в замыкании по телам правил от голов заблокированных альтернатив); независимый вопрос под невыбранной группойexactly_oneотвечается, issue в документе остаётся. ВекторыERR-E0140-EXACTLY-ONE-INDEPENDENT/-TRANSITIVE; T020 прежний. Дополнение: зависимость определена и дляcollect(предикаты литералов comprehension-терма) иpositions(заблокированный производитель нормы либо активный производитель, читающий зависимый предикат); зависимый результат получаетINTERPRETATION_REQUIREDстатусом результата в обеих версиях семантики. ВекторыERR-E0140-COLLECT-INDEPENDENT/-DEPENDENT,ERR-E0140-POSITIONS-INDEPENDENT/-READS-Q/-BLOCKED. - Найдено попутно (замер 06.09.2026). Неразрешённая группа
exactly_oneгасит ВЕСЬ документ, а не только вопросы своей темы. Осьinterpretationконтекста §168.2 принимала только локальное имя (LDC-E1307) — закрыто §7 того же решения тем же днём. - DECISION-0152 §7 (аддитивно). Ось
interpretationдела §168.2 и ожиданиеinterpretations(…)§267.4 принимаютпакет::Прочтение— та же квалификация, что у осиcalendar(E-0127), с проверкой состава экспорта §24 и вида цели поexportKinds; отказы —LDC-E1105. Векторы T257–T259. Первый потребитель — мостовой наборchem/acid-strength.
Исполнено (DECISION-0151, 06.09.2026)
- Семантика определений — Ф0–Ф3. Понижение
definitionпишет ребро provenancewas_derived_from → символ понятияс{declaration, mode, part, alternative?}на правиле и ограничении (§144, T253–T256; голденLAY-L0-CONSTRAINT-NECESSARYперезаморожен, CLIR 11 пакетов и lilliput пересобраны). Proof-узел применения несётattributes.definition(§180, T252 в SUPPORTED);lawc explainи MCPlaw_explainпечатают «по определению X: достаточная часть». Вербализаторы обеих реализаций открывают такие узлы фразой «часть определения понятия …»: подъём всех восьми паков (ru 0.9.0, kk 0.5.0, en/ky/uz/ar/la/zh 0.3.0), пины консьюмеров подняты, VER-RU/KK/EN-L0-DEFINITION и VER-RU-GAP-DEFINITION. Раскрыватель терминов получил контрактdocs/reference/authoring/UNFOLD.ru.md(обе полярности, ограничения по антецеденту, происхождение, граница мира), Rust-двойникlawc unfoldи воротаcheck_unfold_differential.pyс пятью голденами. Вstacks/sheaf-cohomology— отрицательные головыrefuted(cond) ⇒ not sheaf_of_sets_onи мост от покрытий: «не пучок» отвечает FALSE_ONLY, конфликт листа — NEITHER, две опоры — BOTH.
[Unreleased] Latest
Досье нормативного изменения (23.09.2026, DECISION-0364, Э0)
- Две схемы каталога
spec/schema/:change-set.schema.json(law.change-set/0.1— пары состояний «до/после» пакета или выпуска дела, мир по локу, режим введения в действие, намерение, продюсеры) иchange-dossier.schema.json(law.change-dossier/0.1— досье из разделов плана: состав с мерой §33.1 и границей мира, различия с классификацией ожидаемое/за границей/наблюдённое/без наблюдения, цели, выборка, переход, зависимые, три состояния, открытое, четыре гарантии раздельно; ядро и его хэш §208, квитанция вне хэша). Вписаны в пять реестров, типы TypeScript/Python и бандл оракула перегенерированы. - Сборщик
corpus/tools/change-dossier/build_dossier.py: читает артефактыimpact/goals/differential/меры/манифестов, сверяет их sha256 с пакетом изменения, ничего не исполняет;--check— байтовая воспроизводимость. - Первое досье — проект поправок к Налоговому кодексу 2026
(
corpus/drafts/kz-tax-code-amendment-2026/analysis/): 172/39 норм, 64 из 165 исходов, 77 наблюдённых и 134 тронутых нормы без наблюдения, цели 3/3, differential 330/330, 11 потребителей по локам без перепрогона. - Э1 (DECISION-0364 §8): намерение как граница —
intentпакета изменения, классыexpected/expectedMissing/outside-boundary/unverified,--strict; ось редакций в досье;lower_scenarios.py. Второе досье — бонус-малус № 102 → № 87 (corpus/laws/kz/regulators/bonus-malus/analysis/change-2025-04-08/): 16 из 42 исходов, 5 ожидаемых, 2 не показанных, 11 за границей, 224 без наблюдения; две находки подтверждены текстом. - Э2 (DECISION-0364 §9): роли продюсеров, композиция плеч, профиль
покрытия, реестр институциональных зависимостей, перепрогон потребителя;
lower_scenarios.py --calendar-snapshot. На ОГПО ВТС ← бонус-малус: 9 переходных сценариев цепи № 102 → № 87 → № 82, покрытие 8 из 85 клеток, два межактовых пробела (датировки закон ↔ правила; цепочка премии вне замыкания импортов из-заconcat). - Э3 (DECISION-0364 §10):
channels_check.py,index_computations.py, каналы поставки в операционном состоянии, индекс затронутых расчётов, задания исполнителям. Досье «выложенный канон ОГПО 0.1.0 → текущий CLIR» (corpus/laws/kz/laws/ogpo-vts/analysis/release-2026-09-23/): 4 канала из 4 несут форму ir/0.2 при тех же нормах (0 изменённых исходов на 101 деле, 88 узлов anchor), 23 сохранённых расчёта прежней программой. - Э4 (DECISION-0364 §11): прочтения как два мира черновика
(
build_after.py --reading),readings/objectionsв пакете изменения, раздел 5 досье. Проект НК 2026: прочтения «статья 2» и «таблица» расходятся на 12 делах из 165 (все — 2026 год); возражение obj-001 в банке: NEITHER под A, TRUE_ONLY под B, отклонено с историей. - Э6 (DECISION-0364 §13):
replay_consumer.py— перепрогон потребителя миром семейства (concat) и «здоровье банка»; ОГПО ← бонус-малус: 19 сцен премии NEITHER → TRUE_ONLY при появлении правил № 82, 71 из 101 дел здоровы на обеих сторонах, 30 не считаются (встроенныйdeadlinePolicyуlower-test). - Э5 (DECISION-0364 §12): независимый чекер
verify_dossier.pyбез оракула (свой канон §208, свои схемы, пересчёт разделов, канарейка) — три досье воспроизведены без расхождений; раздел протокола «Досье нормативного изменения» в docs; перевыпуск артефактов НК 2026 текущим деревом.
Узел anchor §33 с цитатой места нормы (22.09.2026, DECISION-0358, errata E-0240)
- Аннотация
@source(F, …, quote = "…")называет точное место нормы внутри текста фрагмента; цитата обязана быть непрерывной подстрокой текста байт в байт, иначе новая статическая ошибкаLDC-E5208(§194). Аннотация с хотя бы одним атрибутом (relation,coverage,quote) материализуется в CLIR узломanchor(<узел>/anchor/<k>); документ с ним пишетсяschemaVersion: law.core.ir/0.4. Узел внеtheoryHash, внутриartifactHashиprogramHash(§209). Голый@source(F)байтов не меняет. lawc: эмиссия узлов, проверка цитат на путяхcheckиlower,law-canonисключаетanchorиз проекции теории.lawref:strip_theory, чтение 0.4, имя кода. Схемаlegal-ir, типы Rust/Python/TypeScript перегенерированы. ВекторыERR-E0240-*(static, lower-shape).- text-reader берёт место нормы из цитаты (fallback — подбор по метке);
check_source_pinningпечатает долю цитат. Образец цитат —kz.corpus.complaints_106,kz.corpus.vred_ts,kz.corpus.ogpovts; 18 пакетов с атрибутамиrelation/coverageполучили узлыanchor.
Протоколы Arxo и единый адрес схем (22.09.2026, DECISION-0357)
- Схемы
spec/schema/*.jsonполучили единый$idhttps://law.arxo.io/schema/<имя>; проставляет и держитspec/tools/schema_ids.py --check. Внешние имена: Arxo Fact Protocol (дело, вопрос, снимки при закреплённой программе) и Arxo Decision Protocol (evaluation-документ); правила эволюции — в решении иdocs/reference/embed/06-protocols.ru.md. - Каталог
/schema/указателя law.arxo.io: копии схем байт в байт по их$idи оглавление (apps/demos/hub/tools/schema_page.py). Выложен и тем же днём снят с публикации владельцем: флагschemaCatalog: falseв описании хаба,/schema/отдаёт 404. - Python-типы из тех же схем:
spec/tools/generate_py.py→spec/python/, пакетapps/pypi/arxo-law-types(публикация отложена); воротаcheck_py_types.pyсверяют четыре списка и воспроизводимость. - Реестр схем оракула получил
package-questions(лежала без строки, воротаcheck_schema_refsбыли красны); браузерный оракул и копии VS Code пересобраны. title/descriptionвсех 51 схем переведены на английский (298 строк, 22 файла): каталог/schema/публичен; идентификаторы, §-ссылки и имя «Law DSL» сохранены; TS/Python-типы, копии VS Code и бандл пересобраны.
Точность div_round и канонической записи Decimal (15.09.2026)
- Python сохраняет все разряды после явного округления
div_roundдо 34 знаков; внешний Decimal context больше не округляет результат повторно. - Сериализация готовых Decimal/Money/Quantity сохраняет точные цифры.
- 14 новых conformance-векторов, пять тестов контекста; встроенный оракул конструктора обновлён, браузерная проверка включает E-0182.
Синхронизация движков конструктора (15.09.2026)
- Встроенные WASM и Python-бандл включают исправления E-0179–E-0181; манифест соответствует обоим артефактам.
- Проверка свежести понимает
resources.schema_dir()и проверяет каталог схем в изолированной копии бандла; добавлены шесть контрольных мутаций. - Новый браузерный тест сверяет 53 сценария обоих оценщиков с замороженными
эталонами и 19 пар статических сценариев
scope/when.
Scope в статическом графе зависимостей (15.09.2026)
lawc checkучитываетscope ∧ whenу правил, фикций и классификаций (E-0181): циклы LDC-E4102, поздние производители LDC-E4103, closure, completion и условные термы.- 19 пар статических сценариев защищают диагностику и допустимые контроли; 9 векторов исполнения подтверждают прежнюю семантику оценщиков.
Условные аргументы отношений (15.09.2026)
- Python и Rust вычисляют
ifв аргументах тела перед поиском факта (E-0180). - Вычисляемый аргумент ждёт связывания переменных; невыбранная ветвь не исполняется, опоры условия объясняют вывод.
- 23 новых вектора покрывают прямой и поздний вывод, статусы, collect, квантор и создание нормы; 45 прежних голденов сохранены.
Нарушение запретов forbearance (15.09.2026, E-0179)
- Python и Rust исполняют forbearance как maintenance отсутствия действия: установленное действие даёт VIOLATED, противоречие — CONFLICTED, после окна без полноты наблюдений — UNDETERMINED. Опоры действия входят в proof.
- Нарушение не снимает запрет для weak permission до конца его окна.
- Генераторы Python/TypeScript/Go используют ту же лестницу статусов; неподдерживаемый assertion.valid теперь явно отклоняется раннерами.
- Добавлены 21 conformance-вектор и пара сценариев ОГПО ВТС ст. 22 п. 5; обновлены рецепт А3 и ожидание установленного нарушения ст. 8 п. 2.
Короткие математические имена (15.09.2026)
- Добавлены
math::sqrt/ln/exp/sin/cos/piиbounds::add/sub/mul/div/scale/exact/round: прежняя семантика и старые имена сохранены (E-0178, DECISION-0246). - Мигратор по AST с планом, проверкой затенения и
--write; 131 вызов в 17 рабочих файлах переведён на новую запись. - Редактор распознаёт псевдонимы в подсветке и показывает тип результата.
STATUS.md разрезан: живой срез в корне, журнал работ в docs/status/ (13.09.2026)
- Корневой
STATUS.md(43 243 строки, 6,6 МБ, 887 разделов) разложен на 13 файловdocs/status/по календарю: границы проходят только по датам, дни добираются в файл до ~4500 строк, вехи плана M0–M5 и L0–L3 вынесены вmilestones.ru.md. Содержание перенесено дословно — сверка показала ноль потерянных непустых строк. - Два сгенерированных индекса:
index-by-date.ru.md(все 887 записей) иindex-by-subject.ru.md(218 пакетов, решения, errata, 16 рубрик; предметно покрыто 571 запись). Генератор —docs/status/build_index.py; имена пакетов сверяются с манифестами дерева. - В корне остался живой срез «что сейчас не сделано» (40 строк).
Граница со
CHANGELOG.mdзаписана вdocs/status/README.md: здесь — что изменилось в поставке, там — что выяснилось при работе. docs/README.mdпополнен группойstatus/, правило записи обновлено вCLAUDE.md.
corpus/laws/: DECISION-0084 принят и исполнен — иерархия по оси «чей текст», [metadata].act обязателен (13.09.2026)
- Дерево
corpus/laws/разложено по одной оси (правопорядок → издатель → род текста; внутриkz/— кто издал), 518 пакетов переехали, воротаcheck_laws_treeв фазеenforce; имя акта — полеactманифеста, от пути не зависит (схема манифеста и порт вlaw-resolverрасширены аддитивно). Подробности — DECISION-0084 §10 и STATUS.md.
Импорт знаний: адаптер Rocq (P6) — Ltac2-экспорт термов ядра, индекс .glob, пакет rocq.order (12.09.2026)
engines/importers/rocq/:Export.v(библиотека Ltac2:Env.get→Constr.type→Constr.Unsafe.kind, JSON по одной строке на ссылку, признак мономорфности вхождения),adapter.py(протокол 0.1/0.2, survey, части P4o, кэш нативного запуска, проекцияarxo.rocq.sorted-relations/0.1, якоря и графRequireиз.glob),pin.py(lock установки), README.engines/importers/replay.py— воспроизведение закреплённого transcript как команды extract.corpus/imports/mappings/rocq-order-profile.json,rocq-orders.json;corpus/imports/recipes/rocq-orders.{extract,survey,lock}.json; изданиеcorpus/imports/rocq-orders/publication.json; пакетcorpus/laws/rocq/order(три правила над ℚ, три сценария), CLIRrocq-order.lawir.json, титул MCP, реестры меток и API.verify/imports/check_rocq.py+verify/imports/rocq/(снимок, отвергнутыйQlt_irrefl,ROCQ-LICENSE) — вrun_all.sh;check_survey.py—rocq-orders(195/10/54/131).- DECISION-0202; документация: KNOWLEDGE-IMPORT (P6), план импорта (строка P6), MATHEMATICS, DEPENDENCIES.
Компилятор: атомы норм-шаблона в голове правила проверяются как атомы тела; линт «действие в посылке» (12.09.2026)
law-hir/types:check_typesпосещает голову с нормативным шаблоном (RuleHead::Norms):actionсвободы §125 и запрета §130,actionforbearance-цели §124.3,goal.condition§124 иactivation§135.1 проходят ту же проверку, что атом тела, — объявленность (LDC-E2102), арность §45 (LDC-E2103), аргументы §48 (§189 «modality-specific payloads»). До этого голова не посещалась вовсе:action assigned_night_work(e, r)при отношении на три параметра проходилcheckиlowerи уезжал в CLIR вызовом, не совпадающим ни с одним фактом, — запрет не нарушался никогда (Трудовой кодекс РК, вводPayPeriod). Термовые поля сторон и окон и конструкторы типов действия §80 не судятся (граница E-0078 и DECISION-0003 сохранена). ВекторT333(static,LDC-E2103ровно раз), юнит-тестnorm_template_atoms_are_checked_like_body_atoms.corpus/ql/lints/deontic-action-in-premise.lawq(DECISION-0108, каталог ловушек): запрет или свобода, чьё действие стоит положительной посылкой своего же правила, — позиция возникает лишь после совершения действия, а ACTIVE у запрета читается как «уже нарушено». Сверка по предикату (кортеж аргументовliteralsне несёт); строки baseline —debtдля тождественного атома,false_positiveдля того же предиката при иных аргументах.- Чистая тавтология
when P(x); then P(x);(strict и defeasible) уже отвергается стратификациейLDC-E4102; вакуумное самочтение черезmonotone(P(x))/supported(P(x))с тем же кортежем компилируется молча, в корпусе не встречается (0 из 82 463 правил) и в этот срез не входит.
Движок: два квадратичных участка исполнения сняты — конфликты позиций и порядок соединения (11.09.2026)
law-eval/normconflict.rs:detect§105 сравнивал каждую позицию с каждой и на каждую из P² пар канонизировал subject обеих (same), строил литералincompatibleи сканировал узлы программы за ключами предиката. На делеkz.corpus.vred_tsс 1000 расчётов со сроками (≈3800 позиций, 7 млн пар) это было 64 % вызова, K=3000 стоил 141 с. Теперь ключи §208 считаются один раз на позицию (Prepared), несовместимость — один раз на пару шаблонов, ключи — один раз на предикат, а кандидаты в пары порождаются корзинами по subject, действию, шаблону и ключевым столбцам §45.1; обходятся они в порядке (i, j) прежней логикой. Множество пар с эффектом, их порядок, issue и узлыdefeatте же байт в байт — эталон полного перебора живёт в тесте модуля.law-eval/solver.rs: порядок конъюнктов тела канонический §207.1, и наивныйsolve_recперечислял первый по телу литерал, не глядя на связанность, — уVyplataPriPeredacheOstatkovэто давало K×K пар с отсевом третьим литералом (2·K² посещений кандидатов). Планировщикpick_literalпредпочитает литерал со связанной позицией и наименьшей корзиной индексаby_arg; наивный порядок выдачи восстанавливается сортировкой по кортежу §208-ключей перечислительных позиций (naive_enumeration_order, то же свойство, что уSemiPlan::enum_order), ошибка терма повторяется наивным порядком, чтобы звучать дословно. Потоковый курсорLiteralSolutionsостаётся у тел со связанным наивным порядком; несвязанные тела идут в scratch-решатель.SupportStore::candidate_lenотдаёт размер корзины без обхода.- Семантика и SPEC не менялись. Зелёные:
check_differential724/724 векторов байтово, наборыkz.corpus.vred_ts(три семейства) иkz.corpus.ogpovts(семь) обоими оценщиками, KZ-differential профиля,cargo test -p law-eval(кроме заранее красногоguard::tests::comparisons_match_json_evaluator…, не связанного с правкой), clippylaw-evalс детерминизм-линтами. Замер до/после —docs/performance/2026-09-11/vred-ts-stress.ru.md, раздел 8.
Отчёт по оси редакций: проекция ВМЕСТО условия 3 §92 — errata E-0167 (11.09.2026)
- Запрос §168.3 получил transport-поле
editionsAsPresented(LegalTime): состав нормативных узлов уже спроецирован вызывающим по §31 на эту дату, и условие 3 §92 по дате права ДЕЛА не исполняется. Заменяется ровно условие 3: окноeffective§87, осьgoverns, датированный параметр и временной статус позиции §133 читают дату дела. Значение неLegalTime—EVALUATION_REQUEST_INVALID. - Режим назван двумя каналами: поле манифеста
editionsAsPresented§170 (входит вsemanticHash) и info-issueEDITIONS_AS_PRESENTED. Документ без поля не меняется ни байтом — differential 724/724. impact-editionsобеих реализаций исполняет каждую сторону с датой ЭТОЙ стороны. До правки сторона считалась по пересечению двух проекций — на дату отчёта и на дату дела: воротаcheck_liver_edition_impact.pyпадали девятью расхождениями, а разбор пакета КС на паре 2026-06-30 → 2026-07-01 врал в восьми строках из одиннадцати. Issue режима исключена из сравнимого вида исхода (иначе «изменилось» истинно у каждой строки), но остаётся в полных документах изменившихся сценариев.- Прозе: §92 (абзац о предъявленном составе), §168.3 (transport-поля), §170
(поле манифеста), LAYERS-NEXT О-2; схемы
evaluation-requestиevaluation.
Мера §33.1 берёт единицу из первого адреса локатора (11.09.2026)
corpus/tools/lib/act_split.py: разбор адреса фрагмента вынесен вlocator_unit(). Преждеboundaries.pyсобирал номера по ВСЕМ совпадениямLOCATOR_RE, и вложенныйarticle/63/paragraph/3объявлял вдобавок несуществующую «статью 3» — ветвьparagraph, заведённая для параграфов немецкого закона. Ворота закрепления тот же локатор разбирали правильно: две меры §33.1 говорили о разных множествах единиц.- Ветвь
paragraph(именованная группаparagraph_unit) действует только там, где параграф — сама единица деления: локатор начинается сparagraph/либо объявлена единица изPARAGRAPH_UNITS(de_paragraph,ifrs_paragraph,ias2008_paragraph). Регрессия на обе формы —LocatorUnitTestsв.claude/skills/formalize-act/scripts/test_boundaries.py. - База глубины перерегистрирована точечно по пяти сдвинувшимся актам
(
kz-constitutional-court-np,kz-gosreg-yurlits,fia-f1-sporting,kz-peaceful-assembly,intl-antarctic-treaty): ушли 20 ложных единиц SOURCE_ONLY и столько же UNEXPLAINED, EXECUTABLE не изменился нигде.
Выводимое включает эффект полномочия §127 (11.09.2026)
verify/ci/gates/coverage/check_package_questions.py(surface()) иapps/mcp/law_mcp/catalog.py(_derivable_predicates) считали выводимыми только головы правил и assert-факты; предикат эффектаcreateполномочия §127 попадал в «факты дела», хотя материализуется norm runtime §280.3 и отвечает на truth/collect как любой вывод (§143.1, E-0134). Исправлено;terminate/modifyпроизводителями не признаны (вне v1,NON_EXECUTABLE_RULE) — дополнение к DECISION-0190.- Ветвь карточки каталога может называть правило с головой
norm_template_ref, если эффект названной нормы — предикат карточки; канарейка ворот получила седьмую подделку (снятая карточка предиката, выводимого только эффектом),scaffold_questions.pyскиллаformalize-actзнает тех же производителей,apps/mcp/test_server.pyсторожит деление наaccededДоговора о космосе. corpus/laws/kz/constitutional-court-np: обходные positions-карточки заменены запросами кprovision_ceases_onиjudgment_reviewed(33 карточки);corpus/laws/kz/migration: 34 карточки на предикаты эффектов, вход границыresheniya-organovисправлен на осуществление полномочия (638 карточек).
Миграция населения РК — полная формализация Закона 477-IV и постановления № 148 (11.09.2026)
corpus/laws/kz/migration/(kz.corpus.migration), DECISION-0192: постановление № 148 закреплено тремя документами (sources/{postanovlenie,pravila-vezda,pravila-kontrolya}-148/), фрагменты —corpus/tools/sources/sync/sync_migration_148_fragments.py(впаян вverify/ci/run_all.sh); 14 областейmodules/, 992 правила, 1942 теста в 9 семействах, календарь §85 импортом, политики §86 узлами пакета, канал суждения §47.3,pubу 43 символов для пакета-дела.- Меры завершённости: матрица покрытия, каталог вопросов, находки шаблонов,
независимая модель
tools/oracle/(349 дел, 94 мутации), пакет-делоexamples/inostranec-v-kazakhstane(строка вpacks/examples/README.md),audit.ru.md. Реестры глубины, меток, состава и находок шаблонов — их--register; общий CLIR —gen_kz_clir.py --only kz-migration.lawir.json. - Семь спорных прочтений записаны развилками DECISION-0192 до решения владельца.
Нормативные постановления Конституционного Суда 2023–2026 — новый пакет (11.09.2026)
corpus/laws/kz/constitutional-court-np/(kz.corpus.constitutional_court_np): вся линия НП № 1–89 факт-группами §23.1, закреплённые байты «Әділет» (91 публикация, 458 фрагментов); Конституционный закон «О Конституционном Суде» в двух редакциях (2022 — снимок Архива Интернета; с 01.07.2026).- Модель: признание неконституционным — полномочие §127 с эффектом
provision_ceases_on(p, day)(день принятия либо дата Суда); пересмотр решений и иммунитет §128FinalJudgmentStandsс явным изъятием дела заявителя; «иной порядок» — изъятие в общем полномочии, без приоритета; частичное признание —provision_partly_ceases_on; прямое применение Конституции и переходный порядок до изменения закона (ст. 64 п. 1, 4). - Генератор
corpus/tools/sources/sync/sync_constitutional_court_np_fragments.py(источники описываются даннымиsource.json/fragments.json,--checkв конвейере);analysis/impact-editions/check_impact.py— «что изменилось» на трёх парах дат, lawc == lawref, в конвейере с канарейкой. - Рекомендации ст. 64 п. 3 (
np_recommends,recommendations_must_be_considered); правила истолкования требуют пределов полномочия ст. 23. - 276 файлов
.lawtest, семейство#authored, оба оценщика; каталог вопросов (28 карточек), матрица покрытия (399 строк), пакет-дело (14 дел, 26 вопросов), независимый оракул (54 теста паритета), мутационные канарейки (14: 13 убиты, 1 эквивалентная); аудит полнотыaudit.ru.md; регистрация:LOWERED_ACTS,CLIR_PACKAGES, метки (276/0), глубина §33.1, храповик каталогов, мёртвые символы (6 документарных). check_source_pinning.py: сторож склейки заголовков пропускается при объявленном пустом охватеscope: [](канарейка 19/19).
Операции над Text: длина и образец — errata E-0166, DECISION-0191 (10.09.2026)
- §57:
Textупорядочен по кодовым точкам после NFC (норма записала неписаное поведение обеих реализаций). §257:text_length(t)— число кодовых точек;text_matches(t, pattern)— предикат уровня формулы (какrounds_to§64.2), полное совпадение с образцом закрытого диалекта §257.1; §27 —LDC-E2117,LDC-E2103,LDC-E2108,LDC-E1305. - Каталог std: роль
intrinsic_predicate,STD_PREDICATESв порождённых модулях, воротаcheck_std_catalogueс обработчиком предиката и починенным разбором §59. Схема CLIR:ComparisonFormula.op+=text_matches. lawref:textpattern.py,text_length_value, ветвьtext_matchesвbinary.lawc:law_canon::text_pattern,values/text.rs, ветвь вops::binary, обработчикcalls.rs, понижениеlower_text_matches, типизация. Операторtext_matchesв паках вербализатора.- Векторы
ERR-E0166-TEXT-{LENGTH-*,ORDER-*,MIN,MATCH-*}(19 L0, 3 L1);ERR-E0076-STD-SLICE-ORDERперезаморожен точечно. Реестры: digitize, buildertext_terms, differential, backends-vectors. - Ревизия семантики E-0156 введена (DECISION-0191 §2.7, вариант A):
0.1→law.core/0.1.1,0.2→law.core/0.2.1;SEMANTICS_REVISIONSиз реестра языка в обеих реализациях (manifest.semantics, конверт hand-authored CLIR, версии запроса); CLIR корпуса, локи, голдены векторов, профили, демо и опубликованные копии перегенерированы. Маска вkz.corpus.vred_ts— граница (§2.9). - Издатель импортов (
law-importemit,ratio_scales.py) печатает форму источников после ручной миграции: параметры правила в заголовке,assert "<id>": p(…) { },(count all … for … where …); публикации orders/divisibility/integer-divisibility/physics/quantity-order воспроизводятся байтово;check_lean,check_publication,check_quantity_orderзелены.
Экзистенциальный аргумент _ в теле правила — errata E-0165 (10.09.2026)
- §98/§190/§185:
_аргументом положительного литерала тела — «есть какое-либо значение»: опора как дизъюнкция §64 по совпадающим атомам, одно применение на подстановку, свидетель — наименьший по §208; в голове, подnot, в статус-тесте, в терме, в деле и в вопросе — прежний LDC-E0207 (E-0041). Грамматикаargument = expression | "_",WildcardTermв схеме CLIR, модельlaw-clirперегенерирована. lawc:Expr::Wildcardв парсере, понижение вlower_body_atom,CompiledArg::Any/PatternArg::Any(связанная позиция — свидетель по ключу, перечисление — дедупликация по остальным позициям и обход по ключу), потоковый курсор и индекс равенств литералы с_не квалифицируют, why_not (детали «есть значение»/«нет ни одного значения»), вербализатор.lawref:wildcard_witness/ground_or_witness,solve, посылки, why_not, вербализатор. Фразаterm.wildcardво всех пакетах.- Векторы
ERR-E0165-WILDCARD-{ONE-VALUE,MANY-ONE-APPLICATION,NO-VALUE,BOTH-ONLY,WHYNOT}(L0) и{POSITIONS-REJECTED,BODY-ACCEPTED}(L1);ERR-E0041-UNDERSCORE-NOT-A-NAMEперезаморожен (2 → 1). Реестры: digitize, builderwildcard, differential, backends-vectors. kz.corpus.vred_ts: слой наличия и мосты сняты в акте и отчёте (38 + 38), группы читают значения через_; сценарии, parity-эмиттер, мутанты и матрица покрытия переведены; CLIR и потребители пересобраны; учебное дело перезамкнуто; бланки демо и читалка перепорождены.
Предметная раскладка пакета: modules/<область>/ на образце vred-ts (09.09.2026)
corpus/laws/kz/vred-tsперенесён из шести нумерованных файлов в тринадцать предметных модулейmodules/{raschet,osmotr,vyplata,detali,otchet,iznos}/;00-package.law→package.law,01-sources.law→sources.law. Сценарии разложены поtests/<область>/,tests/integration/иtests/regression/;tests/parity/не тронут. Заведёнcorpus/laws/kz/vred-ts/README.ru.mdс таблицей «задача → файл → входы → результаты → сценарии».- Байтовая нейтральность измерена, а не заявлена. Частный снимок профиля до
и после переноса дал побайтово равный
kz-vred-ts.lawir.json(sha256:999ccaa7…, 273 узла): StableId, публичные символы,@source-якоря,semanticHash/theoryHash/artifactHash— те же. Три анонимныхassertпереезд пережили: вlaw.core/0.2их id — digest содержания (§207.2), а не позиция. Сверка некомментарных строк: то же множество из 828 строк. - Конвенция:
docs/PACKAGE-LAYOUT.ru.mdполучил раздел «Предметная раскладка норм» и строкуmodules/<область>/в таблице подкаталогов;modulesвнесён вlint.PACKAGE_SUBDIRS. Миграция остальных пакетов НЕ требуется — плоская нумерованная раскладка остаётся законной. - Починено попутно, и это дефекты до переноса. (1) Обнаружение сценариев
искало
tests/*.lawtestНЕРЕКУРСИВНО:tests/parity/*.lawtestу vred-ts уже выпадал из проверки «файл не назван ни одним[tests]», то есть незаявленный вложенный сценарий проходил молча. Обход стал рекурсивным, владелец файла берётся ближайшимlaw.tomlвверх, уcheck_lawtest_discoveryпоявилась вторая канарейка (она падает на прежней форме); корпус зелен — 746 наборов, 7123 файла. (2) Шесть из двадцати якорейtools/catala/mutants.pyпротухли после миграций 09.09 (именованные аргументы,let, именованныеunless) — инструмент отказал бы на первом мутанте; якори восстановлены, смысл мутаций сохранён, прогон 20/20 убито. (3)tools/coverage_matrix.pyискал правила черезglob("0*.law")— с любым переездом это дало бы ноль правил при зелёной двусторонней полноте; заменено рекурсивным обходом с границей вложенного пакета. (4) Вreferences/package-layout.mdнавыка formalize-act исправлено утверждение «anonymousassertIDs are positional» — это правило0.1, а не0.2. - Проверено: профиль
sh verify/ci/run_all.shPASS (3 семейства обоими оценщиками, регрессияvred_ts33/33, 35 вычислений байтово идентичны, векторы 1218,check_differential668/668,check_backendsOK);coverage_matrix --check0 замечаний;compare.py --checkактуально;mutants.py20/20;check_source_pinning --only0 нарушений;boundaries.pyEXECUTABLE 11 / SOURCE_ONLY 2;lint.pyпо всем 15 файлам 0 замечаний. Замороженные пакеты не проверялись.
Пилот «бланк из канона»: акт осмотра по приложению 2 vred-ts (09.09.2026)
- Новая демо-поверхность
apps/demos/akt-osmotra/(строка манифеста, скелет DECISION-0066). Генератор без семантики читает CLIRkz-vred-ts, строит дерево бланка обходом правил от предиката «акт содержит сведения приложения 2» до эмпирических предикатов (18 полей, 5 групп, оговорка об одометре — альтернатива двух правил), кладёт рядом закреплённый текст приложения с точными строками подпунктов и вшивает в страницу wasm-ядроlaw_wasm_coreс обёрткой лендинга. - Проверка заполнения — движок в браузере:
truthпо корню, приNEITHERспускwhy_notпо конъюнктамUNDETERMINEDдо полей; список «чего не хватает» с подпунктами и цитатами приходит из ответов движка. Полный акт —TRUE_ONLYза ~0,2 с; без обеих ветвей 4.8 и без ФИО осмотревшего — четыре вопроса, 1,8 с, названы 4.8 (либо фото, либо отсутствие одометра) и 6. - Место поля в тексте: точная строка по адресу из метки; у трёх полей без адреса — строка по доле слов метки (Дайс штрафовал длинные строки и уводил «сведения о собственнике» на строку 4).
- Вторая форма тем же генератором (
--form akt|otchet|all): отчёт о размере вреда по приложению 3 — 27 полей, 10 групп, четыре альтернативы, поле с параметромMoney(итоговая величина) вводится суммой и уходит движку литераломMoney. Адрес «пункт N подпункт M» ведёт к строкеM)внутри пункта, ненумерованные элементы находятся по словам внутри области подпункта, поле без строки наследует строку группы. Спуск why_not различает гард правила (сумма с дробной частью) и предъявленное поле, которое по отдельности не проверяется. Навигация между бланками. - Третья форма — заявление по приложению 1 (2 поля, 1 группа, строки по
словам): все три приложения Правил собираются одним генератором,
--form zayavlenie|akt|otchet|all. - 10.09: поля со значениями. Канон
kz.corpus.vred_tsполучил аддитивный слой значений акта осмотра (21 предикат с аргументом и меткой параметра, 19 мостов «есть, если указано», наличие —institutional; старые сценарии не менялись, новый19-znacheniya-akta.lawtest, матрица покрытия дополнена). Генератор бланка рисует ввод по типу параметра (Text, Date, Integer, Money, Quantity с единицей из метки), сворачивает «наличие ← значение» в одно поле, пишет.lawcaseзначениями; граница области подпункта учитывает строки «4.2.». Читалка text-reader ищет модули рекурсивно (modules/**), безexamples/иtests/. - 10.09: слой значений отчёта по приложению 3 в
kz.corpus.vred_ts(25 предикатов, 19 мостов, суммыMoney; сценарий20-znacheniya-otcheta.lawtest, матрица 105 правил без замечаний). Бланк отчёта — 33 поля с типами; подбор строки внутри подпункта по трёхзначным основам; формулировка «предъявлено, наличие не выведено» для соседних значений незакрытого сведения.
E-0164: блокер why_not для правила с вычисляемой головой (09.09.2026)
- §185: правило, чья голова несёт
call, арифметику илиlet, стоит вblockersпо совместимости головы с целью и несётheadArguments(position,term,status: UNEVALUATED,detail); равенство вычисляемого аргумента с целью не проверяется — считать в объяснении нельзя, и приtrigger: SATISFIEDправило могло вывести другое значение. СхемаEvidenceBlocker.headArguments; оракул иlaw-evalбайтово равны. - Векторы
ERR-E0164-WHYNOT-COMPUTED-HEAD-BLOCKERи…-SATISFIED; голденERR-E0105-WHYNOT-MISSING-POLICYперезаморожен по errata. - Пример
kz/vred-ts/examples/gibel-i-detali: вопросpochemu-ne-vyplataк делуMolchanieтеперь называет оба правила пункта 9. - Там же дело
MolchanieSnyato: те же факты плюс установленное отрицание передачи остатков — выплата 850 000;check.py8 дел, 19 вопросов.
Кодогенерация модели в самостоятельный модуль: TypeScript, Python, Go (09.09.2026)
- DECISION-0188,
engines/backends/: между CLIR и целевым языком стоит планlaw-backend-plan/0.1— таблицы, правила, соединения, гарды, термы, окна действия §31, собственные факты пакета. План строитplan.py, целевой язык живёт только в эмиттереtargets/<цель>/emit.py. Срез — слой L0 в профилеcore-executable(§8.4): ответ и статус без доказательства, семантического хэша и канонического документа. - Все отказы принадлежат плану, а не эмиттеру. Отказ в эмиттере означал бы, что один пакет в разных языках значит разное: где-то отказ, где-то тихо другой ответ. Незнакомое объявление, поле правила или форма терма отвергаются названной причиной.
- Найдено векторами и починено: молчаливый пропуск жизненного цикла редакции
§31/§92.3 давал
TRUE_ONLYвместоNEITHERнаERR-E0095-CLOSED-EDITION-RULE. - Ворота
verify/ci/gates/backends/check_backends.py, шаг 73/73 полного конвейера (прежние 72 шага перенумерованы). Из 328 рассмотренных L0-векторов план построен и запросtruthподдержан у 25; совпали с голденом во всех трёх целях 19; расхождений между целями и с голденами нет; отказов рантайма вслух 6. Шаг целиком — 11 секунд вместе сtscи 25 сборкамиgo build. Пол храповикаMIN_CHECKEDне даёт числу исполненных векторов молча упасть. - Цель Python исполняется всегда и тулчейна не требует: без неё ворота сообщали бы «зелено», не исполнив ни одного бэкенда. TypeScript и Go пропускаются только при отсутствии тулчейна и называются в отчёте.
- Стоимость новой цели: эмиттер 80–100 строк при рантайме 80–180. Дорожает не
грамматика, а точная десятичная арифметика — у TypeScript родной
bigint, Go потребовалmath/big. docs/reference/overview/CATALA-COMPARISON.ru.md: утверждение «самодостаточного модуля без рантайма правил здесь не получить» опровергнуто для L0 и исправлено тем же изменением.- Ворота различают отказ и крах, план
0.2(позже тем же днём). Раннеры трёх целей получили общий протокол выхода: ответ — код 0, названный отказ — код 3 и{"refused": текст}одного типаRefused, всё остальное — крах, который валит ворота; отказ обязан быть единогласным и дословным. Прежние ворота прерывали вектор на первом ненулевом коде и не видели, что наERR-E0046-CASE-ARG-TYPEPython и Go отвечаютTRUE_ONLYпротивNEITHER. Исход каждого L0-вектора закреплён вverify/ci/data/backends-vectors.json(--write-manifest),--requireделает отсутствие тулчейна отказом. Планlaw-backend-plan/0.2: таблицы несутparams, типы параметров проверяются планом, эмиттеры отвергают чужую версию (отрицательная проба в воротах). Раннеры сверяют аргументы дела с сигнатурой §189 (E-0046) и кладутTYPE_ERRORвissues; TypeScript принимает Integer; Go читает числовой литерал байтами. Замер: 23 исполнено, 21 совпало, 2 отказа, 0 крахов и расхождений (было 25 / 19 / 6). - Сертификация рантайма, шаг профиля, ключи §45.1 (тем же вечером).
engines/backends/runtime-cert.json— 51 случай контракта рантайма с ожиданиями из README; харнессыtargets/<цель>/cert.*; ворота сверяют до векторов. Починена коллизия ключа дедупликации (экранирование|и\), Python отказывает на неизвестный оператор сравнения вместо KeyError. Ворота вошли в рабочий профиль с обязательнымиts,py,go(backends_targetsв плане, тест); тулчейн TypeScript — свой проектtargets/ts/package.json, workflow ставит node,npm ciи go. План отказывает на ключах отношения §45.1 (LAY-L0-KEYSи ещё три вектора сменили исход). Замер: 22 исполнено, 20 совпало, 2 отказа. - Типы аргументов запроса и головы (позже). Оракул ключует атом по
каноническим args с типом (§208): запрос
Integer 1к утверждениюDecimal 1даётNEITHERбез issue, бэкенд по величине отвечалTRUE_ONLY. Новые векторыLAY-L0-QUERY-ARG-TYPE(NEITHER) иLAY-L0-QUERY-ARG-SCALE(0.5 против 0.50 — TRUE_ONLY): голдены из оракула, differential 2/2 байтово,lawc checkчист, дела понижаются в те же байты. Раннеры сверяют запрос с сигнатурой; план статически проверяет типы аргументов головы против параметров (E-0077). Замер: 24 исполнено, 22 совпало. - Поставка, обзор корпуса и первый потребитель (ночь).
deliver.py(./law dev backend) печатает пакет в каталог с рантаймом, раннером, планом и паспортомlaw.backend-delivery/1(семантический хэш §209, SHA-256 файлов); ворота печатают проекты той же функцией.survey.py(./law dev backend-survey) собирает все отказы плана по 701 снимку: узелpublication(провенанс §27.3) отвергал 621 пакет — пропущен, план строится у 31 пакета вместо 5.consumer.py(./law dev backend-consumer) понижает.lawtestпакета компилятором и спрашивает поставленный модуль: 24 пакета, 300 сценариев, 298 совпали, 2 пропускаwhy_not, расхождений нет. Отчёт —engines/backends/SURVEY-2026-09-09.ru.md. - План
0.3: Date, константы, перечисления (ночь).Date§2.15 — хранимое и сравнимое по дню значение (векторыLAY-L0-DATE-ORDER-AFTER/-BEFOREиз §57/§58, голдены из оракула, differential 2/2); константы §54 разыменовываются раннером в деле и запросе с проверкой типа и наследованием сущностей (ERR-E0032перешёл из отказа в совпадение); члены перечислений §38 — значения-идентичности, как в ключе оракула (ERR-E0067-ENUM-GUARD-EQ/-FILTERSсовпали); порядок над перечислением и сравнение разных перечислений — отказ плана. Сертификация рантайма — 75 случаев. Обзор корпуса уточнён: «константа не найдена» была членами перечислений и параметрами A3, «несовпадение типа головы» — ложным срабатыванием статической типизации; принятых пакетов по-прежнему 31. - План
0.4: арифметика §58 (10.09.2026). Операцииadd,sub,mul,div,modи функцииmin,max,abs,pow,roundнад Integer, Decimal и Money; пары видов — статически по таблицам §58 (пара вне таблицы — отказ плана), зависящее от значения — названный отказ рантайма (не 10-гладкое частное,INEXACT_DIVISION, ноль, пределыpow). Три рантайма переписаны на общий контракт с точным делением и евклидовым остатком; сертификация — 111 случаев из prose. Шесть новых векторовLAY-L0-ARITH-*по строкам §58 (в том числе E-0036:62400.00 / 12точно,65000.00 / 12—INEXACT_DIVISION), голдены из оракула, differential 6/6; четыре старых вектора E-0062/E-0075/E-0110 перешли из отказа в совпадение. Ворота: 39 исполнено, 36 совпало. Принятых пакетов корпуса по-прежнему 31. - Десять целей (10.09.2026). К TypeScript, Python и Go добавлены Ruby,
Rust, Java, C#, Kotlin, Erlang и Elixir. У каждой цели дескриптор в
targets/<цель>/emit.py(available,MODEL,layout,build,run), ворота, поставка и потребитель ветвятся по нему, а не по языку;--targetsвыбирает цели (по умолчаниюts,py,go,all— все с тулчейном). Каждая новая цель принята сертификацией из 111 случаев и 36 векторами наравне с первыми тремя; сертификация нашла ту же ловушку в Python, Erlang и Elixir — собственныеmax/abs/minрантайма затеняли встроенные — и общий бинарь у Rust при общем--target-dir. Java и Kotlin несут свой разбор JSON: числа сохраняются текстом. Поставкаmyco.primetyперепечатана в десять целей.
Учебные дела над vred-ts: гибель автомобиля и стоимость детали (09.09.2026)
corpus/laws/kz/vred-ts/examples/gibel-i-detali/: пакет-дело §168.4 с семью делами по пунктам 9–10 Правил и сноске приложения 3, семнадцать вопросов (truth, why_not, collect, positions),check.py— ожидания по тексту, основания с якорем, Rust/Python, replay — 17/17; README с маршрутомlaw ask→law engine explain→law eval.- В каноне
kz.corpus.vred_tsоткрытыpub29 символов для фактов и результатов сцен; логика не менялась. Снимкиkz-vred-ts,kz-ogpo-vts,kz-uproshchennoe-uregulirovanieи профильkz.sourcesпересобраны генераторами (генератор ходил устаревшимtarget/debug/law-cli). - Регистрация:
check_corpus_enrollment(NOT_LOWERED с причиной),run_all.sh(материализация +check.py), каталогpacks/examples/README.md.
Демо text-reader для любого пакета корпуса, страница vred-ts (09.09.2026)
apps/demos/text-reader/tools/gen_data.py: флаги--package,--clir,--lower,--out; каталог исходников находится по короткому имени CLIR; заголовок, номер, редакция, дата вступления в силу и публикация — из узловsource_work/source_edition/publication; роль единицы по локатору, порядок по тексту закреплённой публикации; адресный префикс метки («Пункт 10 подпункт 1.», «Приложение 3 пункт 1…») снимается перед подбором места. Шаблон: главы заголовками, приложения блоками, перенос строк внутри единицы, метка «+N норм без места» вместо молчаливой потери нормы.- Вторая страница —
kz-vred-ts(dist/kz-vred-ts/index.html, пакет вписан вapps/demos/manifest.json): 19 единиц, 93 привязки, 78 с местом, код у всех. Собирается с--lower: снимокcorpus/clir/kz-vred-ts.lawir.jsonотстаёт от.law(56 правил против 67).
Массовый перенос DECISION-0187 на остальные пакеты (09.09.2026)
- По явному поручению пользователя: 556 единых заголовков, 42 коротких
приоритета, 1 471 агрегат и 165 786 именованных assert в 7 186 файлах
corpus/lawsиpacks. Vred-ts исключён; 769 расширенных приоритетов оставлены полными. Повторный проход 13 506 файлов не предлагает замен. - AST сохранён; CLIR 266 пакетов / 133 435 узлов побайтово эквивалентен. У bio.mendel остаётся исходная ошибка хеша публикации LDC-E5204. Предметные сценарии не запускались, общие CLIR и lock-файлы не обновлялись.
- Заголовок assert теперь различается по двоеточию, сохраняя прежние вызовы отношений по строковому StableId в деле. Мигратор сохраняет вложенные скобки генераторов, URL-литералы и утверждения facts-блоков. Проверены 94 теста парсера, один HIR и 10 тестов миграторов.
Заголовки, приоритеты, агрегаты и assert (09.09.2026)
- DECISION-0187: параметры presumption/constraint/term в заголовке,
priority P: A > B reason R;,sum/count/min/max all/distinct … where …иassert "id": proposition. Прежние формы и семантика сохранены. - LDC-E2142 предупреждает о статически видимых разных числовых значениях голов одной полярности: ребро приоритета не становится выбором значения.
- Скриптовая миграция только vred-ts: 482 утверждения, 20 файлов; CLIR дел, запросов и ожиданий 96 тестов побайтово совпадает до/после.
- 94 теста парсера, 256 HIR, 14 форматтера и 4 мигратора прошли. Профиль: 161 lawtest, 33 regression, 35 differential-вызовов; ядро: 1214 conformance, 664 differential. Замороженные пакеты не проверялись.
Сокращения синтаксиса: пилот vred-ts (09.09.2026)
- DECISION-0186: общий тип группы параметров, именованные
unless, локальные арифметическиеlet, числовыеtest variantsи именованные аргументы relation. Сохранены прежние формы; неверные имена аргументов и типы ячеек диагностируются. - Python и Rust вычисляют LetTerm с внешними связанными переменными в правилах. Контекст импортов дополнен именами параметров без изменения экспорта типов.
- AST-проверяемая массовая миграция ограничена vred-ts; повторный проход пустой. Сохранены прежние ожидания, добавлены четыре сценария числовых границ.
- Активный профиль passed: 161 сценарий, 33 regression, 35 байтовых сравнений; 1201 conformance-вектор и 656 differential-векторов ядра прошли. Новый T304 отдельно прошёл differential и включён в постоянный список. Замороженные пакеты не проверялись.
Редактор: преобразование синтаксиса с предпросмотром (09.09.2026)
law.refactorSyntax: параметры правил и краткие целиdutyпреобразуются в обе стороны после сравнения AST; diff и применение разделены, устаревший буфер и небезопасная оболочка отклоняются.- Подсказки объявленных типов и переход к переменным своего правила;
E4103 исправляет AST-спан
strict, включая заголовки с параметрами. - WASM сохраняет
okи диагностики вparse --ast --json, AST-кэш отклоняет устаревший результат. Дополнен реестр деклараций редактора. - 418 проверок расширения, 13 новых тестов и профиль
vred_tsпрошли.
Краткие цели обязанностей (09.09.2026)
- По отдельному поручению перенесены ещё 3 257 целей в 876 файлах остальных пакетов, кроме vred-ts. AST и CLIR 276 пакетов эквивалентны, перенос идемпотентен; 45 неподходящих целей сохранили полную форму.
- DECISION-0185 / E-0163:
achieve F during W;иmaintain F during W;вdutyэквивалентны полным блокам achievement/maintenance. Повторные цели отклоняются; CLIR и исполнение сохраняются. Обновлены редакторы. - Мигратор с предпросмотром, diff и проверкой AST перенёс 24 цели НК РК в девяти файлах. Частные CLIR совпали побайтово. Налоговый профиль и core conformance прошли; полный корпус не запускался.
Типизированные значения и универсальная санкционная развёртка (08.09.2026)
- E-0162:
value<T>и выводимыйvalueв expansions, типизация констант и импортированных позиций, подстановкаconst_ref/entity-ref и source map. T270–T291 проверяют допустимые значения, отказы и чувствительность хэшей. law.expansions.sanction0.1.0: применимость фиксированного варианта, самостоятельные основания исключения и явные приоритеты. Учебные штраф и ограничение права — 16 сценариев; пилот КоАП 592.2 переведён на шаблон.- Компилятор строит таблицу типов значений один раз на пакет; сборка экспортных сигнатур индексирует узлы по StableId. Словарь санкций, вычисления мер и семантика evaluator-а остаются прежними.
Станция в Arxo Lens: три подмены, которых машина не делает (09.09.2026)
apps/answers/examples/autonomous_station.py— три разбора и 30 проверенных расчётов: конфликт двух датчиков (истину не выбирают, среднего нет, наблюдение не прекращается), чужой запорный контур (принадлежность считаетvocab.systems, требование изоляции остаётся) и разрешение против исполнения (квитанция, устаревшая база, молчание, повтор ключа). Приёмка —test_autonomous_station_example.py, 16 тестов.- Шесть станционных пакетов вписаны в
LOWERED_ACTS:law_askчитает пакеты только изcorpus/clir, и без снимка витрина станцию спросить не может.check_corpus_enrollmentполучил ПЯТЫЙ пакетный корень со своей конвенцией имени; храповики публичного API и меток дополнены шестью строками (уstation-operations— руками, с$comment: 60 неразмеченных суть порождённые узлы шестиpub procedure§201.1, 6 × 10). - Каталог MCP научился ЧИТАТЬ манифесты пакетов вне
corpus/laws(EXTRA_MANIFEST_ROOTS). До этого провенанс подписывал станционные ответыjurisdiction = None— молчанием, тогда как манифест объявляет"none"; а «правопорядка не объявил» и «вне юрисдикции государства» — разные утверждения. Приёмка витрин проверяет вымышленность предмета по провенансу. - Исключение
packs/demoв общем обнаружении сценариев разбито поимённо: 339 станционных сценариев вошли в общий раннер (наборов 743, файлов 7107) и проходят обеими реализациями.
Исполняемая автономная станция: двенадцать пакетов и host-трек H0–H4 (08.09.2026)
vocab.systems,arxo.world_protocol,calc.resources,calc.intervals,calc.reconciliation, шесть станционных пакетов (packs/demo/autonomous-station/packages/) и пакет-делоexamples.cases.station_demo_72h: 513 сценариев и 9 свойств §270 обеими реализациями байтово (22vocab.systems, 37arxo.world_protocol, 41 + 37 + 37 вычислителей, 339 станционных), 23 сквозных вопроса к трём контрольным делам.- Седьмой корень категории
verify/ci/gates/differential/check_station.py(та же фаза пакетов, что уcheck_primitives, плюс полнота объявления[tests], запрет фиктивного официального источника и свежесть порождённого) иcheck_station_demo.py(журнал 72 часов, схемы транспорта, лок с полным замыканием, матрица F01–F18, сторож чистоты хоста). - Host-трек: шесть схем транспорта, детерминированный world runner с append-only журналом и идемпотентностью, дискретный симулятор без генератора случайных чисел, планировщик конечных путей, представление.
- Пробы импорта трёх вычислителей переписаны с синтетических потребителей на
НАСТОЯЩИЕ станционные (слитые миры из трёх, шести и девяти пакетов);
снимки CLIR заведены в
LOWERED_ACTS, и общее обнаружение сценариев больше не сообщает об их отсутствии. - Паспорт P07 приведён к фактическому API и переведён
СРЕЗ→СУЩЕСТВУЕТ. check_lowerнаучился находить источник демо ИЗ НЕСКОЛЬКИХ ПАКЕТОВ (clir/<каталог>.lawir.json→packages/<каталог>/) — общее правило корняpacks/demo, а не запись про станцию.
Импорт иерархии порядков mathlib (08.09.2026)
- Профиль проекции Lean
arxo.lean.sorted-relations/0.2: родительские проекции классов (PartialOrder.toPreorder,LinearOrder.toPartialOrder) становятся правиламиguard_T(o) :- guard_S(o); экспортёр сообщает видinstanceпо атрибуту Lean, вид добавлен в Import IR, inventory, схемы иlaw-import(DECISION-0172 §34). arxo.order: guardspartial_order_structure,linear_order_structureи два правила ступеней вниз;mathlib.orderусловно принимает обе проекции с отдельными разрешениями. Снимокverify/imports/lean/order-hierarchy.jsonl, воротаverify/imports/check_order_hierarchy.pyвrun_all.sh.- Делимость (DECISION-0172 §35): пути instance через объявленные проекции;
пакеты
arxo.divisibility,mathlib.divisibility, разрешения и целочисленное прочтениеarxo.integer_divisibility; манифестыcorpus/imports/divisibility/иinteger-divisibility/, воротаverify/imports/check_divisibility.py.
Семейство «эфир и относительность» (08.09.2026)
- Шесть пакетов исполняют сопоставление трёх моделей движения света и тел:
phys.relativity_core(протокол),phys.classical_ether,eng.lorentz.electromagnetic_phenomena_1904,eng.einstein.electrodynamics_1905,eng.michelson_morley.ether_drift_1887,phys.relativity_comparisons. Пакет-делоexamples.cases.efir_i_otnositelnost— два дела §168 и 18 сохранённых запросов. - Закреплены байты трёх первоисточников по приколоченным ревизиям страниц:
Эйнштейн 1905 в ДВУХ редакциях (немецкий подлинник и перевод Saha 1920) с
парными якорями §194, Лоренц 1904 по первопубликации KNAW (а не по
перепечатке 1923 года), Майкельсон и Морли 1887 сплошным тайлированием в
41 фрагмент. Четыре сверки
--checkбез сети стоят вrun_all.sh. - Отношение теории к принципу четверояко (
accepted,rejected,not_required,not_settled_here) и отделено от истинностного статуса: «эфир не нужен» не превращается в «эфира нет» ни правилом, ни показом.ether_shown_not_to_existиtheories_are_equivalentобъявлены и не выводятся; верхняя граница опыта опровергает сверх себя и не подтверждает под собой. openstax.relativityрасширен:pubу восьми входов и три новых правила — преобразование времени, замедление, сокращение;speeds_to_composeдаёт точную дробь сложения скоростей отдельным входом, чтобы прежнее правило величины продолжало отказывать громко на непредставимом результате.- Новые ворота
check_relativity_mutations.py --canary: четыре мутанта связанного мира §23 со свидетелями в наборах разных пакетов, плюс два свойства мира — испорченный пин роняет сборку (§11), порядок загрузки её не меняет. - Показ:
apps/answers/examples/relativity_comparison.py— восемь разборов и 39 расчётов, каждый сверен с независимо записанным ожиданием; ключ--export-publicвносит их во встроенную подборку Lens, которую оба штатных сборщика включают в деплой автоматически.
Универсальные ответы Lens 0.2 (08.09.2026)
- DECISION-0176. Один engine-free
answer_contractчитает неизменяемые документы 0.1/0.2; строгий validator, refs, типизированные значения, semantic dimensions и полнота проверяются до записи. - Producer registry даёт проверяемые capture/replay/projection для
поставляемых инструментов и машинно отличает
declared_onlyпробелы. - Writer 0.2 сохраняет весь native
results, включаяCONSTRAINT; generic RU/EN reader не зависит от имени пакета и показывает ограничения кратко. - Content-addressed parts доступны только через активный документ, входят в статический export и закрываются отзывом. Jobs защищены idempotency key, lease и номером попытки.
- Полный hash проекции покрывает значения, semantic dimensions, профиль, полноту и ссылки; manifest страниц отвергает пропуск, перестановку и несогласованный счётчик. Выбор view детерминирован registry-приоритетом.
Официальный календарь стал закреплённой зависимостью (08.09.2026)
- DECISION-0175. Календарь §85 приходил в мир 33 актов сложением узлов без
объявленного импорта; пин §11 для него не считался никем, хотя календарь
выводится исполнением закона о праздниках. Переведено 30 актов на обычный
importс закреплением; три отложены названной причиной. - Порядок сборки: календарь строится ДО актов (
build_official_calendar_2026,PREBUILT_PACKAGES), а не из результата сборки — прежний порядок и делал импорт невозможным. Байты календаря при этом не изменились. - Ответы не изменились: миры
concatиlinkсовпадают поэлементно,semanticHashиtheoryHashактов не двигаются; голдены не переписывались.
Мост метазнания и акта права: doctrine.notice_provenance (08.09.2026)
- Новый пакет
corpus/laws/doctrine/notice-provenanceсвязывает рекомендацию W3C PROV со статьёй 92 АППК Республики Казахстан. Ни один из источников о другом не высказывался, и связь выполнена третьим пакетом без единой правки уw3c.provиkz.corpus.appc. - Запись в голову чужого пакета: прослеженная запись об извещении даёт
kz.corpus.appc::act_became_known_on— факт, который АППК ждёт от дела и вывести сам не может; предельную дату дальше считают его собственные правила. - Три состояния вместо двух: прослежено / описано без оценки содержания / содержание отвергнуто. Второе и третье дня осведомлённости не дают, и жалоба тогда не признаётся ни поданной в срок, ни просроченной.
- 20 сценариев, обе реализации согласны; байтовый differential 20/20.
- Витрина Lens
notice-provenance-and-the-deadline(apps/answers/examples/notice_provenance.py, 12 проверенных расчётов): пользователь спрашивает право, недостающий факт приходит из графа происхождения. Провенанс ответа называет три акта РАЗНЫХ юрисдикций —kz-appc(KZ),doctrine-notice-provenanceиw3c-prov(none), — и это отдельное утверждение приёмкиtest_notice_provenance_example.py(9 тестов).examples/metaknowledge.pyпараметризован по набору витрин; прежние шесть разборов и 42 расчёта пересобраны без изменений.
Четыре разбора Lens о способах рассуждения (08.09.2026)
- Разборы
logic-implication-proof,logic-modus-ponens,logic-classical-step,logic-deontic-boundary— витрина впервые показывает СПОСОБ рассуждения, а не его применение к случаю: пять шагов обоснования импликации с пометкой границы показа в данных; правило отделения как объект знания (пара кproof-checker-modus-ponens, который то же правило проверяет); номер шага, на котором методу нужен классический принцип, и правило ⊥C, блокирующее перенос; отказ отождествить оператор SDL с позициейduty§120. Ни один расчёт не подаёт предметных фактов — это свойство закреплено тестомapps/answers/test_logic_examples.py. logic.methods::step_text— читаемая проекция шага под его номером; без неё инструкция метода не спрашивается у пакета одним обращением.- Справочник —
docs/reference/families/LOGIC-PACKAGES.ru.md; предметное руководство дисциплины заведено:docs/sciences/formal/LOGIC.ru.md, строка в таблицеCLAUDE.md, дорожная картаdocs/sciences/README.ru.mdи раздел логики вMATHEMATICS.ru.mdприведены в соответствие с построенным.
Описания алгоритмов: шестнадцать пакетов algo/*, 96 алгоритмов (08.09.2026)
- Словарь
algo.description(DECISION-0173): задача, вход, выход, предусловия, параметры, роли, состояние, операции, шаги и их роды, переходы с условиями, инварианты и меры убывания, основания шагов и завершения, утверждения о корректности с обоснованиями, модель стоимости и оценки с условиями действия, варианты и условия применимости, понятия и их зависимости, ссылки на источники и исполнимые вычислители. - Пятнадцать предметных пакетов: арифметика столбиком и дроби (12), теория чисел (5), поиск (5), сортировки (7), строки (5), обходы графа (7), пути и сети (8), деревья (11), динамическое программирование (4), линейная алгебра (5), многочлены (6), численные методы (6), геометрия (4), автоматы (5), сжатие и коды (6) — 96 описаний, перечень точен в обе стороны.
- Вход пользователя —
corpus/tools/algo/explain.py: каталог, поиск, инструкция, раскрытие шага и понятия, «почему шаг допустим», «почему завершается», ветви и циклы, сравнение вариантов одной задачи, источники. Входных данных описываемого алгоритма ни одна команда не принимает. - Оснастка:
corpus/tools/sources/sync/sync_algo_sources.py(изложения → source-модель),corpus/tools/gen/gen_algo_packages.py(algorithms.json→ факты, с проверкой целостности описания),verify/ci/gates/coverage/check_algo_coverage.py(перечень в обе стороны и полнота по ответам движка), реестр охватаdocs/catalogs/ALGORITHMS-COVERAGE.ru.md. - Витрина Lens:
examples/algo_showcases.py— десять разборов по три расчёта об устройстве алгоритмов, приёмкаtest_algo_showcases.py(25 проверок). Каждый предметный пакет объявляет визиткуdescribes/answers_here: без неё вопрос к предикату словаря собирал мир без описаний и отвечалNEITHER. - Проверки: сцены §267 — 178/178 в 16 наборах (
check_lawtest_suites); ворота охвата — 96/96;doctor.py— «пробелов нет» у всех шестнадцати; §194 — 16 публикаций, нарушений закрепления 0; вербализация — без пробелов; differential вопросаdocumentedпо трём пакетам — байты обеих реализаций совпали.
Ветвь метазнания: восемь пакетов метода и мост между ними (08.09.2026)
- Восемь пакетов:
w3c.skos(SKOS Reference, S1–S46),w3c.prov(PROV-DM, шесть компонентов),nist.experimental_design(глава 5 NIST/SEMATECH),nist.process_modeling(глава 4),pearl.causal_models(обзор Перла),asa.p_values(заявление ASA 2016),nasem.reproducibility(отчёт NASEM 2019),nasa.decision_analysis(раздел 6.8 справочника NASA). Предмет — знание о том, как устроены понятия, происхождение, эксперимент, модель, статистический вывод, повторение исследования и выбор решения. - Метод раскрывается без исполнения. Структура метода — шаги, порядок,
условия применимости, требуемые входы и ожидаемые результаты — записана
фактами пакета и отвечает на запрос без единого факта дела, как раскладка
деления столбиком в
calc.long_division. Сведения о фактическом выполнении живут отдельным слоем, и ни один переход к ним не выводится: выполнение шага, проведённое сравнение, вынесенная рекомендация, принятое решение и проведённая идентификация следуют ТОЛЬКО из записи о себе. - Отрицательные утверждения источников исполнены, а не пересказаны:
иерархия SKOS не даёт наследования типов; описание происхождения не делает
утверждение истинным; высокого R-квадрат недостаточно для вывода об
адекватности модели; p-значение не есть вероятность истинности гипотезы
(
FALSE_ONLY, а не молчание); точное воспроизведение не гарантирует правильности вычисления; ассоциация не становится причинностью, границы эффекта не суть идентифицируемость; описание способа сравнения не означает выполненного сравнения. - Интеграционный пакет
doctrine.method_bridgeимпортирует все восемь иjcgm.vim: одиннадцать сопоставлений понятий с записанным основанием (вид «ложный друг» отделяет прецизионность VIM от воспроизводимости NASEM и валидацию VIM от проверки адекватности NIST), мосты тождества с предъявляемым делом отождествлением и цепочка обоснования из восьми звеньев шести источников. Ни одна связь не приписывается источникам: якоря ведут в собственный источник пакета, приписывание ловитmisattributed_alignment. - Показательные объяснения —
corpus/tools/metaknowledge/explain.py: шесть демонстраций читают закоммиченные снимки CLIR (ни строки семантики, инвариант 5) и каждая называет сценарий, проверяющий то же утверждение машинно;--checkкраснеет и на расхождении с голденом, и на названном сценарии, которого нет вtests/. - Проверка: 572 сценария §267 в девяти семействах, каждое обеими
реализациями (
check_lawtest_suites), отказов ноль; дополнительных мёртвых символов и недостижимых правил ноль. Карты покрытия «фрагмент источника → объявления → сценарии» порождаетcorpus/tools/gen_metaknowledge_coverage.pyи сверяет--check.
Семейство logic.*: формализованное знание о логиках (08.09.2026)
- Двенадцать пакетов
corpus/laws/logic/*— связанный словарь логических понятий, синтаксис двух языков, семантика, пять исчислений, одиннадцать методов рассуждения плюс индукция, классическая и интуиционистская системы, их сопоставление, модальные K, KT, S4 и S5 (в определении источника — KT4 и KTB4, с доказанным там равенством KTB4 = KT5), LTL и CTL, SDL, FDE и LP. Предмет — знание О ЛОГИКАХ: Arxo показывает способ рассуждения, не выполняя конкретного вывода, и универсального поиска доказательств не реализует. - Правило отделения заведено как объект знания: посылки и заключение —
обходимые схемы со своими схемными переменными, инструкция применения — из
четырёх шагов, принадлежность — пяти исчислениям с указанием статуса. Его
описание НЕ выводит заключения ни для каких предметных фактов; граница
проведена конструкцией (
logic.core, 06-reasoning) и проверяется отрицательными сценариями в четырёх пакетах. - Источники закреплены байтами: 84 раздела Open Logic Project (CC BY 4.0)
на коммите
1e960beплюс пять авторских изложений репозитория — 159 фрагментов под §194. Байты работ, чьё авторское право этого не допускает, не закрепляются: источники названы декларациями без страниц. - 258 сценариев §267 в двенадцати семействах, каждое обоими оценщиками, отказов ноль. Из них 60 отрицательных: правило не получает принадлежности к чужому исчислению, молчание не превращается в запрет, допустимость не даёт производности, схемные переменные разных схем не смешиваются, побочные условия не исчезают, показ инструкции не выдаётся за доказательство, значения FDE не отождествляются со статусами движка.
- Четыре разбора витрины Lens из этих пакетов: обоснование импликации,
правило отделения как объект знания (пара к уже опубликованному разбору,
который то же правило проверяет), расхождение двух «от противного» с
указанием номера шага и правила ⊥C, и граница между оператором O в SDL и
позицией
duty§120. Сборки —apps/answers/examples/logic_*.py, приёмка —apps/answers/test_logic_examples.py. Ни один расчёт разборов не подаёт предметных фактов, и это проверяется тестом. - Десять сквозных демонстраций (
corpus/tools/logic/explain.py demos) читают данные пакетов и сверяются с голденом; каждая называет сценарии, проверяющие то же машинно. Восемь вопросов — «что это?», «из чего состоит?», «как применять?», «при каких условиях?», «какое основание у шага?», «где используется?», «чем отличается?», «какой источник?» — отвечаются восемью головамиlogic.core, общими для всех двенадцати пакетов. - Найдено при работе: сравнение ключей двух исчислений объявляло чужим собственное правило, принадлежащее обоим вариантам естественного вывода; «чуждо» обязано считаться по ПАРЕ «правило, исчисление», а не по различию ключей. Тот же класс — у схемных переменных, и там решение противоположное: различность владельцев там и есть содержание утверждения.
- Реестры:
LOWERED_ACTS, label-ratchet (неразмеченного ноль), public-api-manifest,mathtex.PROFILE_PACKAGES, scenario-manifest и ratchet, две строкиrun_all.sh. Мёртвых символов у семейства ноль. Карта, команды и границы —docs/reference/families/LOGIC-PACKAGES.ru.md.
Кэрролл, «Алиса»: дело источника прогнано через пакет (07.09.2026)
- Повествование глав XI—XII формализовано как МАТЕРИАЛЫ ПРОИЗВОДСТВА: сцена ALICE-19 подаёт 31 факт, каждый назван абзацем источника, и получает 23 ответа. Стадия — показания (вердикта не было ни разу), виновность — REQUIRES_JUDGMENT, Алиса обязана остаться не по той причине, о которой шёл спор, явка Шляпника нарушена, обязанность вспомнить нарушенной быть не может (§124.1 без срока).
- Учёт абзацев стал трёхчастным и печатается генератором: 50 несут право, 46 — факт производства, 64 обстановка, 71 вне производства. Правового материала 96 из 231. Неизвестный род разбора роняет сборку (канарейка).
- 21
.lawtest, 19 сцен регрессии, differential 51 вызов, proof-analytics READ 37 / UNREAD 0.
Кэрролл, «Алиса»: пофрагментный учёт и третья волна норм (07.09.2026)
- Исчерпанность формализации стала проверяемой: генератор требует разбора для
КАЖДОГО абзаца обоих документов (231 фрагмент — 50 несут право, 181 покрыт
34 диапазонами с причиной), абзац без разбора роняет сборку; канарейка
проверена.
--checkдержит инвариант вrun_all.sh. - Второе сплошное чтение нашло ещё шесть мест: третья презумпция (обвинение из
оправдывающего факта — чужой почерк), спор о доказанности с единственным
not_known§113 («you don’t even know») и находкой «доказанность не есть вердикт», свобода §125 не искать смысла в бессмысленной улике, обязанность коллегии записывать по указанию судьи, обязанность явиться готовым, основание обратного порядка Зазеркалья. - 38 правил, 11 шаблонов (10 duty + 1 liberty), 3 презумпции, 4 приоритета,
2 автомата; 20
.lawtest, 18 сцен регрессии, differential 38 вызовов, proof-analytics без непроверенных осей.
Кэрролл, «Алиса»: полная формализация, вторая редакция (07.09.2026)
- Сплошное чтение источника нашло девять нормативных мест, пропущенных первой
редакцией. Заведён второй автомат §160 — дело гонца Короля («Зазеркалье»,
гл. V: наказание, затем суд, затем преступление), зеркальный двойник
требования «сначала приговор, потом вердикт»; две презумпции §20 (кража
из чужой вещи при носящем — с оговоркой источника; злой умысел из отсутствия
подписи — без оговорки); правило об исключении отвергнутого показания с
контролем из того же абзаца; основание отпустить свидетеля; обязанность суда
подвергнуть перекрёстному допросу; обязанность вспомнить; порядок в зале;
порядок оглашения улики. Модули
05-probatio,06-nuntius. - Оба закреплённых документа фрагментированы сплошь: 237 фрагментов, text coverage 97,7 % и 97,2 % — вторая мера §33.1 перестала быть неизмеримой. Учёт по единицам деления остаётся объявленно неприменимым.
- Второй автомат квалифицировал предикаты профиля §164.1 обоих
(
TrialOfTheKnave__current_state, DECISION-0013 §2.3); шесть сцен §267 переписаны тем же изменением. - 32 правила, 8 шаблонов, 4 приоритета, 20
.lawtest, 16 сцен регрессии, KZ-differential байтовый (33 вызова), proof-analytics без непроверенных осей. Отчёт аудита переписан и называет ошибку первой редакции.
Кэрролл, «Алиса»: суд над Валетом Червей (07.09.2026)
- Новый пакет
corpus/laws/eng/carroll-alice-trial(Macmillan 1866, гл. XI—XII и Macmillan 1872, гл. V; PINNED_UNOFFICIAL_COPY по 53 страничным ревизиям английской Викитеки): суд автоматом §160 с попыткой перехода без правового эффекта §164 («сначала приговор, потом вердикт»), приоритет §116 БЕЗ объявленного основания рядом с приоритетом, у которого основание названо (Правило Сорок Два против «You may go»), и обязанность поддержания §124.2, неисполнимая ни в один день окна (варенье никогда не сегодня). Виновность — канал суждения §47.3 к присяжным, REQUIRES_JUDGMENT. 16 правил, 3 шаблона, 16.lawtestи 8 сцен регрессии; KZ-differential байтовый (19 вызовов). Мера §33.1 неприменима: у повествовательного источника единицы деления нет, и обе меры говорят это словами. Регистрация:LOWERED_ACTS, label-ratchet, scenario-manifest и храповик,dead-symbols,run_all.sh.
Позиционирование: Arxo исполняет канон (07.09.2026)
- DECISION-0167: формула «Arxo исполняет канон; модель формализует, Arxo исполняет и доказывает» принята владельцем; LAYERS-NEXT §8, README и CLAUDE.md обновлены, семантика и артефакты не тронуты.
jcgm/gum — оценивание неопределённости по GUM (06.09.2026)
- Новый пакет
corpus/laws/jcgm/gum(JCGM 100:2008, ABSTRACT_ONLY): типы A и B, закон распространения при некоррелированных и коррелированных входах, относительная форма для произведения степеней, U = k·uc, уровень доверия при условиях G.6.6, формула Уэлча–Саттертуэйта и таблица G.2 (p = 95 %), полнота записи 7.2.3; мост кCombinedStandardUncertaintyVIM 2.31. 100 правил, 66 сцен, регрессия и KZ-differential байтово. Дисперсии — точные дроби, корень —sqrt_bounds(E-0152), частное дробей —bounds_div. Регистрация:LOWERED_ACTS, label-ratchet, scenario-manifest, proof-analytics, template-manifest.
Пакеты OpenStax на термах E-0152 (06.09.2026)
openstax/fluids-oscillations-waves,electrodynamics,quantum,relativity,measurement: тринадцать вычисляющих правил черезsqrt_bounds,pi_bounds,sin_bounds/cos_bounds,bounds_mul,bounds_div(период маятника и пружины, гармонический закон, k из ε₀, поле провода из μ₀, ħ из h, γ по скорости, Доплер для света, длина вектора и компоненты по углу); тринадцать сцен, регрессия и KZ-differential по пяти семействам байтово.openstax/kinematicsиopenstax/particles: модуль скорости по двум составляющим (§4.5) и красное смещение из скорости удаления (§11.7) — ещё два правила и две сцены, регрессия 25/25 и 19/19, differential байтово.
Сертифицированные границы: корень, π, синус и косинус, умножение и деление отрезков (06.09.2026)
- §259.2 (errata E-0152, DECISION-0163): термы
sqrt_bounds,pi_bounds,sin_bounds,cos_bounds,bounds_mul,bounds_div;ln/exp/sqrtпринимают отрезок (монотонный подъём),sin/cos— по липшицевости. Деривация получила головыsqrt,pi,sin,cos,mul,divи форму подъёма;rederiveобеих реализаций разбирает их тем же кодом. Профили и счётчики работы прежние. 27 векторовCERT-*, differential байтово. law-eval: три отказа разбора порченой дроби в деривации совпадают с оракулом дословно (до этого — одно сообщение на все три).openstax/fluids-oscillations-waves: уровень звука в децибелах выводится правиломSoundIntensityLevelInDecibelsчерезbounds_div(ln x, ln 10); три сцены, семейство вписано в манифест сценариев.
Конечные сети Петри и химический пилот (06.09.2026)
- Добавлен
calc.petri_nets(P40): явно конечные ресурсы и переходы, плотные входные/выходные матрицы, версии маркировки, проверка предъявленного порядка, точная цель и первый отказ сrequired/available. Пропуски, повторы, противоречия, отрицательные и чрезмерные количества блокируют вычисление; после отказа последующие состояния не возникают. - Добавлен
calc.examples.reaction_network, связывающий вычислитель сcalc.stoichiometryбез обратной химической зависимости. Сценарии покрывают R1,R2,R1, конкурирующий R3×3, присутствующий и отсутствующий Pt и пропущенный состав. Python-команда только проецирует настоящийproofGraph. - Перед передачей в стехиометрию DSL проверяет полноту и однозначность участников, соответствий, элементов, составов и зарядов. Пропуск реагента, продукта или известного элемента больше не даёт ложный баланс. Все 113 запросов внутри сценариев проверены байтово, включая последующие evaluate; ожидаемые конфликты ключей заявлены явно в тестах.
- Обе реализации и байтовый differential: 7/7 сценариев вычислителя и 35/35 сценариев потребителя; слитый мир потребителя — 440 узлов. Добавлены воспроизводимые lock/deps, CLIR-снимок, декларативный набор тестов, каталог, MCP-титул и храповик меток. Ядро и семантика языка не менялись.
Проверка доказательств — calc.proof_checker (06.09.2026)
- Конечный фрагмент атомов, → и ∧: проверка структур, предпосылок и шагов, явные ошибки, зависимые строки, условное заключение с контекстом.
- Строгий JSON-вход, CLI, canonical evaluation и экспорт с полным входом и хэшем программы. 74/74 differential; 65/65 правил наблюдаются; 6 дополнительных проверок, 5 мутаций условий, закреплённый источник правил.
- Потребитель proof-consumer: проверка конкретного утверждения и всех предпосылок для того же объекта, свежие law.lock/deps, differential 5/5.
- Измерены цепочки, ветви и дефекты. 32 MP подтверждены обоими движками; для 100/1000 нет двойного подтверждения в 30-секундном бюджете. Команды и границы.
Ускорение арифметической рекурсии lawc (06.09.2026)
Semi-naive допускает чистые скалярные сравнения и add/sub/mul; агрегаты, вызовы и отрицание сохраняют прежнюю ветвь. Ошибка переводит правило в наивный режим до конца вызова, сохраняя диагностики и порядок вывода. Период 1/983 вычисляется за 0,25–0,28 с, период 1/10007 — за 3,64 с; результаты и полные доказательства в проверенных A/B совпали. Добавлены арифметические формы fuzz и тройная сверка стратегий с оракулом. Замеры и проверки.
Десятичные периоды и просмотр шагов — calc.long_division (06.09.2026)
Добавлены дробные цифры, минимальный период, неповторяющийся участок, конечная дробь и явное исчерпание бюджета. 94 сценария, differential 94/94, 62/62 правила наблюдаются в proofGraph; ядро не менялось. Интерактивный HTML показывает сохранённые результаты обеих реализаций и основания каждой цифры. 1/97: период 96, глубина 203. Для 1/983 при бюджете 256 глубина 521 и байты совпали; полный период 982 за 5,3 с получен lawc, оракул не завершился за 45 с. 1/10007 не завершился за 45 с у обоих движков. Подробности и команды — packs/primitives/mathematics-and-logic/long-division/DECIMALS.ru.md.
Skill maintenance — formalize-act (2026-09-06)
- Входной SKILL.md сокращён до 173 строк; инструкции и справочники переведены на английский с сохранением оригинальных цитат. Процедуры вынесены в workflow/verification/stub-contract, связанные ссылки и генераторы обновлены.
- Теневой протокол перезакреплён по стабильным маркерам четырёх документов; добавлены проверки безопасного repin и времён CLI. Фикстуры приведены к native procedure; живые журналы сохранены. Два существующих расхождения REQUIRES_JUDGMENT остаются видимыми тестами (см. README протокола).
Added
-
kz.constitution_kazssr— Конституция Казахской ССР 1978 года (04.09.2026). Республиканская сторона союзной цепи: узкий срез из пятнадцати статей (5, 68–75, 97–98, 115, 118, 172–173) плюс три изменяющих акта 1990–1991 годов, отвечающий на три вопроса — какой орган был вправе решить вопрос о выходе из СССР, что резервировалось за Союзом и как Конституция изменялась. EXECUTABLE 15 из 173, SOURCE_ONLY 158 (границами не прикрыты), байтов под фрагментами 97,8 %, посылок в один конец 0 из 37 правил. 68 сценариев регрессии, 7 тестов §267, 4 цели §270 на 35 мирах, differential 68 из 68 байтово. Источник — текстовый PDF worldstatesmen.org, извлечениеpdftotext -layout(умолчание снимает настоящие дефисы на переносе); поправки и дата закрытия окна — своими закреплёнными байтами Adilet. Редакция 1937 года объявленаUNAVAILABLEБЕЗ окна: даты 26.03.1937 нет ни в одних закрепляемых байтах. Цели §270 нашли два дефекта формализации при полностью зелёном differential: мост «перечень статьи 75 → ведение» действовал в мире без предъявленного акта, и один предикат нёс сразу факт о тексте статьи и правовое последствие. -
Пример деления столбиком для Lens: восемь Rust-запросов с проверкой повтора, локальные RU/EN-страницы, результаты и поиск ошибки. Вычислитель подключён к MCP; категория calc.* подписывается как не имеющая юрисдикции. Публичная публикация ожидает разрешённого доступа редактора.
-
jcgm/vim— метрологический словарь JCGM 200:2012 (06.09.2026): срез 25 пунктов, 18 определений и 12 явных правил, 75 сценариев; погрешность со знаком, виды неопределённости, калибровка, прослеживаемость, верификация/валидация и различие сопоставимости и совместимости. Регрессия 75/75; все evaluation-документы Rust и Python побайтово равны.abstract_only: URL и хэш прочитанного PDF без его перепубликации. Для штатного аудита восстановлено распознавание трёх формunit_declпосле изменения грамматики E-0150; селфтест аудитора пройден. -
calc.long_division: деление столбиком для целых до девяти разрядов, доказательства шагов и проверка записанного решения. Ошибки полей, пропуски после завершения ввода и итог проверяются правилами DSL; командаtools/show.pyотображает proofGraph. 60 сценариев, байтовый differential 60/60; 44 из 44 правил наблюдались в доказательствах. -
Классическая физика по OpenStax University Physics — семь пакетов уровней 1–3 (
corpus/laws/openstax/*, 06.09.2026): измерение и размерный анализ, кинематика, динамика, энергия и импульс, вращение и тяготение, жидкости и волны, термодинамика. 146 сцен, все обеими реализациями. Закреплены байты 143 модулей CNXML на коммитеd0ed34a58511; лицензия CC BY-NC-SA 4.0 названа в шапке каждогоsources.law. -
openstax/electrodynamics(главы 5–16 тома 2, 06.09.2026): заряд и его сохранение, закон Кулона, теорема Гаусса, потенциал, ёмкость, закон Ома с ГРАНИЦЕЙ применимости (омические и неомические вещества), правила Кирхгофа, сила Лоренца, поле прямого провода, законы Фарадея и Ленца, индуктивность и четыре уравнения Максвелла как ОДНО утверждение о полноте. 33 правила, 33 сцены, 40 фрагментов; закреплены байты ещё 84 модулей CNXML. 15 единиц электродинамики вunits.si(фарад, тесла, вебер, генри и др.). -
openstax/optics(главы 1–4 тома 3, 06.09.2026): показатель преломления, закон отражения, закон Снеллиуса и полное внутреннее отражение по ПРЕДЪЯВЛЕННОМУ синусу, формула тонкой линзы обратными метрами, увеличение и оптическая сила в диоптриях, когерентность как условие, светлая полоса двух щелей против ТЁМНОЙ полосы одной щели тем же уравнением, критерий Рэлея. 22 правила, 26 сцен, 25 фрагментов; закреплены байты 87 модулей CNXML тома 3. Единицаper_m(диоптрия). Тригонометрии в §58 нет: дело предъявляетsin θчислом — величину измеримую, которой оперирует и сам источник, — и утрачен ровно арксинус. -
ТРИ ТОМА OpenStax University Physics ВЗЯТЫ ЦЕЛИКОМ — пятнадцать пакетов уровней 1–3 покрывают тома 1, 2 и 3 без остатка; 314 модулей CNXML на коммите
d0ed34a58511, все свереныfetch --check. -
openstax/relativity(глава 5 тома 3, 06.09.2026): два постулата и опровержение галилеева c + v, относительность одновременности ОБЕИМИ сторонами, сверка лоренцева множителя рациональным тождеством γ²(c² − u²) = c² вместо корня, замедление времени против сокращения длины, преобразование Лоренца, релятивистское сложение скоростей, предельная скорость как ЗАПРЕТ, импульс, энергия и связь E² = p²c² + m²c⁴. 22 правила, 26 сцен, 27 фрагментов, 10 модулей. -
openstax/quantum(главы 6–8 тома 3, 06.09.2026): энергия фотона от ОДНОЙ частоты, работа выхода по таблице §6.4 и ПОРОГ фотоэффекта обеими сторонами, баланс Эйнштейна, волна де Бройля, соотношение неопределённостей, лестницы связанных состояний в проверочной форме (n²·E_n = E₁), ненулевая энергия основного состояния, четыре квантовых числа, принцип Паули и вместимость оболочек. 32 правила, 33 сцены, 42 фрагмента, 21 модуль. -
Скорость света, постоянная Планка и электронвольт БЕРУТСЯ ИЗ БРОШЮРЫ, а не предъявляются делом: правила-мосты читают определяющие константы таблицы 1
bipm.si_brochureи требуют, чтобы единица в таблице была та самая ("m s−1","J s","C"). Первое использование фактов брошюры предметным пакетом как ИСТОЧНИКА ЧИСЕЛ, а не словаря. -
Единица
J_sвpacks/units/si/units.json— законный синоним набораkg_m2_per_s: постоянная Планка есть действие, а kg·m²/s — момент импульса. -
openstax/condensed-matter(глава 9 тома 3, 06.09.2026): ионная и ковалентная связь, энергия диссоциации, вращательные уровни l(l+1)·E₀ᵣ, правило отбора Δl = ±1 С ГРАНИЦЕЙ ПРИМЕНИМОСТИ (симметричные молекулы дипольных переходов не испытывают вовсе), зоны и их вместимость 2N и 6N как прямое следствие запрета Паули, порог возбуждения фотоном через запрещённую зону, легирование, диод ТРЕМЯ случаями (прямое смещение, обратное, лавина выше пробоя), критическая температура, критическое поле и эффект Мейснера. 30 правил, 32 сцены, 37 фрагментов, 9 модулей. -
openstax/nuclear(глава 10 тома 3, 06.09.2026): A = Z + N и изотопы целочисленно, дефект массы и энергия связи через E = mc², закон радиоактивного распада и период полураспада СЕРТИФИЦИРОВАННЫМИ ГРАНИЦАМИ §259.1, активность в беккерелях, альфа/бета/гамма-распад и сохранение числа нуклонов и заряда порознь. 19 правил, 22 сцены, 28 фрагментов, 8 модулей. -
openstax/particles(глава 11 тома 3, 06.09.2026): барионы и мезоны, четыре закона сохранения ПОРОЗНЬ и каждый со своим запретом, странность с границей применимости (сохраняется в сильных взаимодействиях, не в слабых), заряд адрона точными третями (2/3 + 2/3 − 1/3 = 1 ровно), закон Хаббла. 15 правил, 18 сцен, 23 фрагмента, 8 модулей. -
Два дефекта источника, найденные обмером главы 9 (записаны в шапке
condensed-matter/02-bands-and-doping.law, а НЕ исправлены молча): глоссарий m58600 приписывает лишний валентный электрон АКЦЕПТОРУ, а недостающий — ДОНОРУ, тогда как тело §9.7 говорит обратное и подробно; и тело §9.7 в одной фразе называет основными носителями p-типа электроны, тогда как определение p-типа («the primary carriers of charge (holes) are positive») и глоссарий («conducts holes») говорят о дырках. Пакет формализует первичные утверждения тела; расхождение формализации с текстом — предмет отчёта, а не тихой правки. Третий такой случай после errata 28340 (§9.4 тома 1). -
Первый предметный потребитель сертифицированных границ §259.1. До этой волны
ln_bounds/exp_boundsприменял в корпусе один медицинский акт (MELD); закон распада — первое место, где экспонента нужна САМОМУ предмету и где её не обойти ни рациональным тождеством, ни проверочной формой. -
Два моста уровня 5.
openstax.second_law_readings— второй закон Ньютона двумя прочтениями подselection exactly_one(формулировки расходятся на переменной массе); законы Кеплера — два производителя одной головы без группы прочтений (основания не спорят). -
Уровень 4 — редакции учебника двумя датами. Определение абсолютно неупругого столкновения до и после errata 28340 (23.04.2026); обе редакции закреплены байтами, правила датированы
effective. -
calc.mechanics(packs/primitives/natural-sciences/mechanics) — общие механические расчёты по DECISION-0123: равноускоренное движение, работа, энергия, импульс, КПД и предел Карно. 10 сцен, differential байтово. -
15 производных единиц в
packs/units/si/units.json:Pa,Hz,per_s,Pa_s,kg_m_per_s,kg_m2,kg_m2_per_s,N_per_m,m3_per_s,W_per_m2,J_per_K,J_per_mol_K,mol_per_m3,m3_per_mol,m3_per_kg.
Changed
-
Задел
volume-3-modern-physicsснят. Каталог безlaw.toml, куда складывались байты глав 5–11 тома 3 до формализации, свою службу отслужил: все 56 его модулей разошлись по пакетамrelativity,quantum,condensed-matter,nuclearиparticles. Приём (каталог, невидимый сканерам по построению) описан в шапке фетчера и остаётся доступен. -
gen_units.pyотвергает размерность, которую §49.2 не выражает. Степень записывается повторением имени, и на отрицательном показателе генератор повторял его НОЛЬ раз — молча выбрасывая множитель. Электронвольт (L²·M·T⁻²) вышел так единицей размерности L²·M и упал лишь при конверсии в джоуль, далеко от места ошибки. Теперь непозитивный показатель и составная размерность у простой единицы отвергаются с указанием §49.2 и того, что такие величины берутся мостом к определяющим константам. -
bipm.si_brochureиla.newton.principiaполучилиpubу словарных деклараций: до этого не экспортировали НИЧЕГО и были непригодны как зависимость (импорт нёс пустой интерфейс §6). -
check_primitives.pyищет зависимость вычислительного пакета и вpacks/units/, а фазу 1 испытывает в СЛИТОМ мире: импорт несёт интерфейс, а не узлы (§23), и реестр единиц §49.2 живёт в узлахunits.si. Обе стороны differential получают одну программу — прежде асимметрия входов выглядела бы расхождением реализаций. -
bipm.si_brochureзарегистрирован вLOWERED_ACTS: прежде пакет не был вписан ни в один реестр.
Fixed
noteвpacks/units/si/units.jsonисправлен: синонимы по мультимножителю (N_sиkg_m_per_s,N_mиJ,Hzиper_s) ДОПУСТИМЫ. 06.09.2026 они были ошибочно сняты как «неразрешимые» —UNIT_UNKNOWNдавал ПРОТУХШИЙ снимокcorpus/clir/units-si.lawir.json, не пересобранный после правкиunits.json. Единицы восстановлены, верный порядок правки записан вnote:gen_units.pyИgen_kz_clir --only units-si.lawir.json.
DECISION-0157 / E-0150: масштабированная единица как атом (06.09.2026)
- §49.2: составная размерность, деление и скобки, сахар
unit atm = 101325 * Pa;; точная нормализация до §209 общим проходом check/lower и независимым оракулом. units.si:atm,eV,cal_th, конвенциональныйmmHgс первичными источниками. Существующие кратные сохраняют факторы и канон.- 36 новых векторов, 77/77 байтовый differential вычислений; 32 голдена units обновлены только по трём хэш-ключам. Три потребителя и lock-файлы проверены.
- Грамматика, hover, snippet, wasm и oracle bundle обновлены. Исправлены обнаруженные на baseline пробелы регистрации векторов и устаревший авторский тест датировки liver-status; семантика этих областей сохранена.
Добавлено (iupac/periodic-table, 06.09.2026)
- Корень химии рода «данные»: таблица стандартных атомных весов CIAAW 2024 (
corpus/laws/iupac/periodic-table,iupac.periodic_table). Страницаciaaw.org/atomic-weights.htmзакреплена байтами; строка таблицы<tr>…</tr>— фрагмент элемента, и каждое из 472 утверждений стоит на своей строке@source. 118pub constэлементов с английским названием (официальная метка) и русским (неофициальная); фактыelement,atomic_number,element_symbol,element_name; три формы веса тремя отношениями —standard_atomic_weight(e, v, u)(70),standard_atomic_weight_interval(e, lo, hi)(14),no_standard_atomic_weight(e)(34) — и сноски g/m/r перечислением. Выводимое:has_standard_atomic_weight,interval_standard_atomic_weight,atomic_weight_range([v − u, v + u] по толкованию самой страницы: иридий 192.217 ± 0.002 → 192.215…192.219),standard_atomic_weight_qualified; замыкание §70 надelementс доменомchecked_element— элемент 119 отвечает FALSE_ONLY, без факта домена NEITHER. Модулиsources.lawи01-standard-atomic-weights.lawпорождаетcorpus/tools/sources/sync/sync_iupac_periodic_table_fragments.py(--checkвпаян вrun_all.sh). Семействоiupac_periodic_table: 19 сцен, differential 19/19 байтово, два авторских теста, два свойства §270 (14 интервалов, 34 прочерка), разметка 133/0. Границы названы в шапкеpackage.law: период, группа и блок не взяты (PDF таблицы ИЮПАК без текстового слоя), редакции по датам не заведены, дальтон единицей не является (DECISION-0157 §7).
Добавлено (chem/stoichiometry — мост таблица → вычислитель, 06.09.2026)
- Первый корпусный потребитель
calc.stoichiometryи второй —iupac/periodic-table(corpus/laws/chem/stoichiometry,chem.stoichiometry). Два правила: границы атомного веса каждого элемента таблицы (atomic_number+atomic_weight_range) становятсяcalc.stoichiometry::element_mass(z, lo, hi), а состав частицы, предъявленный элементами таблицы (composition_of), — составом вычислителя по атомному номеру. Молярная масса воды по двум закреплённым источникам без единого числа в деле — [18.01471, 18.01599]; NaF — из диапазонов по неопределённостям; элемент вне таблицы — молчание. Якоря правил — наpub fragmentтаблицы (семь текстовых фрагментов CIAAW сталиpubтем же изменением: межпакетный@sourceвидит только экспорт, LDC-E1105). Семействоchem_stoichiometry7 сцен, differential 7/7;calc-stoichiometry.lawir.jsonвписан вLOWERED_ACTS,label-ratchet(unanchored = числу норм, как у calc-tiers) и титул MCP;[[tests]]вычислителя объявлен — с появлением снимка вcorpus/clirобнаружение сценариев требует секцию. Молярная масса в г/моль не выводится: M_u после 2019 не равна ровно 1 g/mol (CODATA 2018: 0,99999999965(30)), множитель ждёт закреплённогоcodata/constants.
Добавлено (calc.stoichiometry, 06.09.2026)
- Вычислитель стехиометрии уравнения (
packs/primitives/natural-sciences/stoichiometry, паспорт P37 каталога): баланс по каждому элементу и по заряду с громким дисбалансом, интервал молярной массы по границам атомных весов (Integer * Decimal), лимитирующий реагент сравнением дробей крест-накрест, теоретический выход и выход в процентах одним делениемInteger / Integer. Элемент — целое Z, мост кiupac/periodic-table— одно правило потребителя; взвешенные суммы — свёртками по индексу черезsupported§65 с предъявленным числом участников и строк, пропущенная строка — молчание, а не ноль. 15 сцен по одной на файл,check_primitives --only stoichiometry: обе реализации байтово. Коэффициенты не подбираются; «сбалансировано по всем элементам» — за агрегатом над выводимым (§111).
Изменено (chem/rules на корне iupac/periodic-table, 06.09.2026)
chem.rulesбольше не держит собственныйElement. Тип и 21 константа элементов (F, O, H; Cr, Cu, Nb…Au; K…Pb) сняты, модули 01, 03, 04, 08 читаютiupac.periodic_table::Elementиiupac.periodic_table::Fи далее; манифест объявляет[dependencies],law.lockзаписанlawc lock --write, CLIR закрепляет импортcontentHash-ом. Сцены семи наборов переписаны на квалифицированные имена (49 мест); миры всех тринадцати[[tests]]включаютiupac.periodic_table. Семействоchem_argumentationподнимает кап профиля §274 осью делаmax_arguments 4096(errata E-0127): умолчание 64 считает листом КАЖДОЕ принятое утверждение мира, а таблица приносит 472 — под ним ответом был бы RESOURCE_LIMIT, а не право. Все 13 семейств зелены обеими реализациями, регрессия и differential байтово. Храповики разметки и i18n уchem-rulesопущены осознанно на 22 переехавших объявления (185 → 163): метки живут у владельца, оверлейen.jsonперегенерирован без элементов.
Добавлено (формулы в Arxo Lens, 06.09.2026)
answers_app/mathtex.py— рендер формул без JavaScript. CSP Lens не пускает ни скриптов, ни внешних шрифтов, ниdata:-картинок, поэтому KaTeX и MathJax в браузере невозможны: слой строит MathML на сервере при показе, снимка не касаясь. Сегментация закреплённого TeX, одиннадцать макросов Stacks по токенам,latex2mathmlс пином версии, санитайзер по закрытому списку тегов и атрибутов, детерминированные лимиты до конверсии, откат в исходник при любом отказе — включая молчаливый провал конвертера, который печатает неизвестную команду текстом. Диаграммы\xymatrixпоказываются видимым блоком исходника. 24 теста.- 453 метки §218 пяти пакетов
stacks/*размечены\(…\)пятью параллельными агентами: в строках.lawдействует escape, поэтому слеши удваиваются; юникод не переписывается. Текст меток не изменён. Регрессия 101 сцена и differential трёх семейств зелены.
Изменено (Arxo Lens: общий читательский слой, 06.09.2026)
- Запасной вид данных перестал быть дампом JSON.
_dataв Lens теперь переводит имена полей ответов движка (label,rule,premises,missing,anchors,computedHead), показывает урны хвостом с полным адресом в подсказке, статусы (NEITHER,TRUE_ONLY, …) — словами общего словаря, а литералпредикат(аргументы)— подписью §218 объявления из словаря снимка; ложь у служебных полей (computedHead) не печатается. Ничего не отбрасывается по существу: полные значения живут в подсказках и в блоке JSON. То же обогащение получил чек-лист посылокviews.truth_block. Действует на ВСЕ разборы, включая опубликованные ранее, — перепубликация не нужна, потому что это чистый рендер.
Изменено (Arxo Lens, 06.09.2026)
- Блокеры §185 читаемыми карточками вместо дампа JSON. Проектор
project_blockersвapps/mcp/law_mcp/answer_presentation.pyдаётpresentation.blockers: правило со StableId, якоря, посылки по частям (предикат, его id, аргументы, статус); IR служит словарём, ненайденное имя оставляет исходную строку._blockers_readerв Lens рендерит их теми же карточками, что путь вывода: метка §218 на языке страницы, «Чего не хватает», источник читаемым локатором, идентификатор в раскрытии.anchor_titleпонимает локаторtag/<тег>. Дубльmissing/premisesсхлопнут,computedHead: Нетбольше не печатается. Старые снимки без проекции рендерятся прежней формой.
Errata E-0139 и пакет bipm.si_brochure (06.09.2026)
- Терм
unit_exponent(m, unit)§259.1 (E-0139). Показатель простой единицы в мультимножителе величины: алиас через цель, производная —UNIT_MISMATCH, незнакомое имя —UNIT_UNKNOWN, отсутствующий множитель — 0. Обе реализации, шесть реестров термов, семь векторов units, differential OK. Номер перенумерован с E-0138 из-за одновременной erratы о стратах. - Брошюра SI, модуль 06. Таблица 4 сверяется с реестром одним правилом над полными векторами показателей (154 факта); 13 равенств последнего столбца отдельно; интервал Цельсия — алиас
degC_interval = K, абсолютный перевод — формула §2.3.1 в голове правила. Реестрunits.si: +16 производных и +3 простых единицы, потребители перепинены. 89 сцен обеими реализациями, 25 голденов units перезаморожены после роста реестра (изменились только хэши программы).
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.