Skip to content

Журнал изменений

Version [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 получили единый $id https://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 (три правила над ℚ, три сценария), CLIR rocq-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, action forbearance-цели §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_differential 724/724 векторов байтово, наборы kz.corpus.vred_ts (три семейства) и kz.corpus.ogpovts (семь) обоими оценщиками, KZ-differential профиля, cargo test -p law-eval (кроме заранее красного guard::tests::comparisons_match_json_evaluator…, не связанного с правкой), clippy law-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-issue EDITIONS_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) (день принятия либо дата Суда); пересмотр решений и иммунитет §128 FinalJudgmentStands с явным изъятием дела заявителя; «иной порядок» — изъятие в общем полномочии, без приоритета; частичное признание — 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, builder text_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-import emit, 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, builder wildcard, 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 исправлено утверждение «anonymous assert IDs are positional» — это правило 0.1, а не 0.2.
  • Проверено: профиль sh verify/ci/run_all.sh PASS (3 семейства обоими оценщиками, регрессия vred_ts 33/33, 35 вычислений байтово идентичны, векторы 1218, check_differential 668/668, check_backends OK); coverage_matrix --check 0 замечаний; compare.py --check актуально; mutants.py 20/20; check_source_pinning --only 0 нарушений; boundaries.py EXECUTABLE 11 / SOURCE_ONLY 2; lint.py по всем 15 файлам 0 замечаний. Замороженные пакеты не проверялись.

Пилот «бланк из канона»: акт осмотра по приложению 2 vred-ts (09.09.2026)

  • Новая демо-поверхность apps/demos/akt-osmotra/ (строка манифеста, скелет DECISION-0066). Генератор без семантики читает CLIR kz-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.py 8 дел, 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-TYPE Python и 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 открыты pub 29 символов для фактов и результатов сцен; логика не менялась. Снимки 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.sanction 0.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 обеими реализациями байтово (22 vocab.systems, 37 arxo.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: guards partial_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; мост к CombinedStandardUncertainty VIM 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. 118 pub 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_stoichiometry 7 сцен, 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.