Books / Canons / Experimental Notes

Experimental Notes and Reproducibility

These notes preserve the historical experiment summaries behind the English edition of Canons. Dates and hashes below are those recorded with the manuscripts. They are not claims that the whole corpus was rerun for this edition. Abbreviated hashes are fingerprints, not complete artifacts.

The machine-readable index marks unavailable fields as null. Historical inputs are identified by scenario modules and source revisions where retained; the historical engine version and full certificate files are not recorded consistently. A result summary cannot replace a complete input, output or certificate. The supplemental Harrier archive retains complete inputs and results for the scoped rerun made on 10 October 2026.

The source checkout used for that supplemental run is revision 01bf047e392252b92f6abebc5408428ad47cec32. It is distinct from the older model revisions quoted in the historical summaries.

Let Us Calculate

This section introduces or draws together the experiments. It has no separate retained run record; consult the chapter-specific notes above.

Four Answers to One Case

All answers were obtained on 05.09.2026 on the committed model corpus/clir/la-protagoras-euathlus.lawir.json (package la.gellius.protagoras_euathlus, schema law.core.ir/0.2), program hash sha256:dc587738dca1ea564f60cf25e29bd90eafa974e5467b0e7c73358196494b6c37 (theoryHash, reported as programHash in every manifest; semanticHash sha256:6a66eebb…). Last change of the CLIR: commit 783fcd169 of 04.09.2026 (freeze of semantics 0.2). The model is the same as in the withdrawn draft of this chapter (commit 71e83f097); the runs are the same runs.

  • Regression, family protagoras: 7/7 PASS.

  • Differential check_kz_differential.py --only protagoras: 31 evaluate calls byte-identical (liblaw_ffi == lawref), OK.

  • Certificates check_kz_certificates.py --only protagoras --no-ffi: OK; 31 oracle and 31 engine certificates, leaves 156, rule steps 82, queries 9; not proved by core v1: 20 applications of the four defeasible rules (§104), 2 TRUE_ONLY on an unverified step; outside core v1: interpretation_selection ×16, norm_creation ×15, NEITHER ×11, BOTH ×4, FALSE_ONLY ×2 (§62/§69), 2 judgment requests checked structurally (§47.3).

  • lawc test on tests/01…05.lawtest: 5/5 PASS.

  • Cells (resultHash, first eight hex digits; legal time 1000-01-01 for the first suit, 1000-02-01 for the second):

    Selected Judges for Protagoras Judges for Euathlus
    none NEITHER f36aceda NEITHER 92a86232
    CaptioProtagorae TRUE_ONLY 70012ca4 TRUE_ONLY a9941485
    CaptioEvathli FALSE_ONLY d07da996 FALSE_ONLY 62f42f33
    both BOTH 576b54f3 BOTH 56a4f6da

    Before the verdict: merces_debetur NEITHER under all four selections (00712ce1, 24acba46, 1c2ed0b5, 0b17ed2a); victoria(PROTAGORAS, LisPrima) NEITHER, REQUIRES_JUDGMENT (c5090362), one judgment request: authority Iudices, form SententiaPetitio. Second suit: TRUE_ONLY under all four (60cac87e, 3eef4e0c, 0f1ef70a, 2f6e41a3), ReliquumDare ACTIVE; proof graph 16 nodes: VictoriaIudicata, IpseOravit ×2, PrimaVictoria, MercesExPacto, norm_creation ReliquumSolvendum. Conflicts in the "both" cells: INCOMPARABLE, rivals ExSententiaDebebitur/ExPactoNihilDebebitur (for Protagoras) and ExPactoDebebitur/ExSententiaNihilDebebitur (for Euathlus), no defeated candidates, no priority edges. Positions: SententiaeParere ACTIVE only in the branch for Protagoras.

  • "In plain words" in the body renders truthStatus/evaluationStatus and the judgmentRequests entry; it is a translation, not a quotation.

  • Public MCP (codeHash sha256:e5ef5591…) still served the previous model sha256:49b7d015… on 05.09.2026: BOTH (f4c11f77…), REQUIRES_JUDGMENT, NEITHER with whyNot; its provenance labels the jurisdiction as Kazakhstan while the package declares none (server labelling defect, not reported).

The first version, and the measurement behind "equal strength"

  • Symmetry: the first edition of MercesExPacto read vicit_primam_causam without lis_prior; in the branch for Euathlus the base gave TRUE_ONLY under every reading. Recorded in the headers of 01-pactum.law and 03-captiones.law; guarded by scenarios PE-03 and PE-04. The body calls the repair a reading, per Sol's review of 05.09.2026: the symmetry was required of the model and does not prove the reading.
  • Strength: probe of 30.08.2026 on the minimal pair, both defeasible → BOTH; strict positive against defeasible negative → TRUE_ONLY with no issue; both strict → NON_EXECUTABLE_RULE. Header of 03-captiones.law.

When an Exception Changes the Answer

All answers were obtained on 05.09.2026 on the committed model of the repository at commit da47581a1. Program hash sha256:a6be790a57edcb00100c47ebef2322e88408c3a0954a8c4776638fc15cc79418 (the theoryHash of corpus/clir/eu-air-passenger-rights.lawir.json, reported as programHash in the manifest of every call); the file's semanticHash is sha256:5eaa1328d1585ade284d5e650a9fdde983ab31bef132b08a3ac3f58d68898c62, schema law.core.ir/0.2, last changed by commit 783fcd169 of 04.09.2026. Package eu.transport.air_passenger_rights, measure §33.1 EXECUTABLE 19 of 19 articles.

  • Regression of family air_passenger_rights: 40/40 PASS, about nine seconds.

  • Differential (check_kz_differential.py --only air_passenger_rights): 40 evaluate calls byte-identical (liblaw_ffi == lawref), OK, about 23 seconds.

  • Certificates (check_kz_certificates.py --only air_passenger_rights --no-ffi): OK. 40 oracle and 40 engine certificates; leaves proved 809, rule steps 283, queries 1; safety §190 rechecked for 283 applications; L1 §107: 272 candidates, 12 defeats compared against the checker's model of priority, 260 survived. Not proved by core v1: applications of the defeasible rules (RegulationAppliesWithinScope ×33, WithinScopeOnPresentedPassenger ×33, CancellationGivesCompensation ×18, PassengerUninformedUnlessCarrierProves/R1 ×18 and others), 20 TRUE_ONLY results resting on an unverified step. Outside core v1: norm_creation ×276, FALSE_ONLY ×10, NEITHER ×9, interpretation_selection ×3, closure anti-membership ×2, judgment request ×1 checked structurally.

  • Hand-written tests tests/01…05.lawtest: lawc test 5/5 PASS.

  • Cells of the chapter, oracle through corpus/kz/engine.py with the case builders of corpus/kz/acts/air_passenger_rights.py (_in_scope, _cancelled, _distance_basis, _flight_profile(1200, True)), legal time 2026-08-26; resultHash, first eight hex digits:

    Row Query Status resultHash
    told the day before right_to_compensation TRUE_ONLY 3fbee61e
    told the day before compensation_due(…, 250 EUR) TRUE_ONLY 3c2a46ea
    two weeks, not proved right_to_compensation TRUE_ONLY a9e2b1fa
    two weeks, not proved passenger_treated_as_uninformed TRUE_ONLY 2d533b7a
    two weeks, not proved compensation_due(…, 250 EUR) TRUE_ONLY 5ed9be3d
    two weeks, proved right_to_compensation FALSE_ONLY 1e2dfa47
    two weeks, proved passenger_treated_as_uninformed FALSE_ONLY 3a7e40fd
    two weeks, proved compensation_due(…, 250 EUR) NEITHER 4469c18c
    two weeks less one hour, proved right_to_compensation TRUE_ONLY 770df4bb
    two weeks less one hour, proved compensation_due(…, 250 EUR) TRUE_ONLY f85d562e
    extraordinary circumstances pleaded carrier_exempt_from_compensation NEITHER, REQUIRES_JUDGMENT, authority Court 782f5eb0
    extraordinary circumstances pleaded right_to_compensation TRUE_ONLY 922ec0f6
    extraordinary circumstances pleaded compensation_due(…, 250 EUR) TRUE_ONLY c2c1e615
    extraordinary circumstances pleaded right_to_reimbursement_or_rerouting TRUE_ONLY 33d19dd0
    court found them (origin adjudicated) right_to_compensation FALSE_ONLY 12c45267
    free non-public fare regulation_applies FALSE_ONLY 0a5194e5
    frequent flyer ticket regulation_applies TRUE_ONLY d58fc4ea
    in scope, no exclusion regulation_applies TRUE_ONLY d775d3d4
    delayed four hours, 5 000 km right_to_compensation NEITHER 2cb7a1ae
    delayed four hours, 5 000 km right_to_care TRUE_ONLY 1e98ba74

    The "told the day before" case adds to the scenario builders scheduled_departure_time 2026-08-26T10:00Z and informed_of_cancellation_at 2026-08-25T10:00Z; the two-week cases use 2026-08-12T10:00Z (336 hours) and 2026-08-12T11:00Z (335 hours); the delay case is scenario APR-14/15 (_flight_profile(5000, False), expected departure four hours after the scheduled one). No issue of any severity in any call.

  • The defeat record. In the "two weeks, proved" answer the proof graph holds 26 assertions, 23 rule applications, 10 norm_creation, 7 candidate_closure and 2 defeat nodes. One defeat node: outcome DEFEATED, reason priority, priorityPath naming TwoWeeksNoticeOverCompensation with higher = InformedTwoWeeksAheadDefeatsCompensation, lower = CancellationGivesCompensation; the other is the presumption's own priority (PassengerUninformedUnlessCarrierProves/R2 over /R1). The query node's premise is the application of the exception. There is no conflicts record: the collision is resolved, unlike chapter one's INCOMPARABLE.

  • Duties listed beside the base answer (positions ACTIVE): OfferArticleEightChoice, OfferMeals, OfferCommunications, ProvideWrittenNoticeToPassenger, ExplainAlternativeTransportToPassenger, DisplayCheckInNoticeAtCheckIn, NoLimitationOrWaiverOfObligations; ReportOnOperationOfRegulation UNDETERMINED (the Commission's report of Article 17, window closed in 2007).

  • Public MCP (codeHash sha256:e5ef5591…), serving an older model of this package (programHash sha256:09dc7f81…): the "two weeks, proved" case with entity names passenger-1, flight-1, carrier-1, member-state-1 and instants as ISO strings — FALSE_ONLY, resultHash sha256:c0ebb2eb…, 18 rules applied including InformedTwoWeeksAheadDefeatsCompensation; vulnerableTo lists three further rules that could remove the right if their missing premises were supplied (ExtraordinaryCircumstancesDefeatCompensation, FreeOrReducedFareOutsideScope, GibraltarApplicationSuspended). The body does not rely on this call; the table's amount cannot be asked through MCP because the grid's input relation (…:table:compensation/input) is not addressable from the tool. The provenance again names the jurisdiction as the Republic of Kazakhstan while the act's own title says "юрисдикция EU, НЕ Республика Казахстан": the same labelling defect of the server layer as in chapter one.

When Does a Document Count as Evidence?

All answers were obtained on 05.09.2026 on the committed model of the repository at commit da47581a1: package demo.expense_evidence, packs/demo/expense-evidence/clir/expense-evidence.lawir.json, semanticHash = theoryHash = programHash sha256:989d4367de0af5be5b4a3658013ac1da42be2d79b12d87c3e70a5d3b83b80f26; policy ExpenseEvidenceV1, profile law.core.evidence-policy/0.1, evidencePolicyHash sha256:11c006b4…. The CLIR was last changed by commit 20912fe36 of 05.09.2026 ("DECISION-0126 ревизия: пять находок внешней проверки"); the package by 1475abc6b of the same day. The base case is scenes/base.lawcase, lowered on every run by lawc lower-case; the scenes of the chapter are derived from it by removing or editing documents, verifications and support edges, as run_demo.py does.

  • Demo run_demo.py: four scenes NEITHER → TRUE_ONLY → NEITHER → TRUE_ONLY, about two seconds. The report prints, for the rejected confirmation of purchase 99, NO_ACCEPTANCE_RULE_APPLIED and the blocker AcceptPayment: 10 of 11 conjuncts matched; unmet doc_purchase(doc-B91, purchase:42).

  • Demo differential tools/differential.py: the three tests of tests/reimbursement.lawtest byte-identical (lawref == lawc eval), PASS.

  • Hand-written tests: lawc test … --program clir/expense-evidence.lawir.json 3/3 PASS (wrong-payment, right-payment, bare-assertion-does-not-bypass).

  • Profile gate verify/ci/gates/silence/check_evidence_policy.py: 44 vectors of the profile, 44 groups of the plan's matrix covered, 16 goldens asserting what is claimed, engines free of policy-specific conditions — OK.

  • Chapter differential: the thirteen questions of the table, built from the lowered base case with content hashes recomputed by lawref.authoring.content_hash, evaluated by the oracle (EvaluationRequest.from_dict, semantics 0.2) and by lawc eval on the same wire request; all thirteen canonical documents byte-identical, PASS, about twenty seconds.

  • Cells (resultHash, first eight hex digits, from the differential run):

    Row Question Status resultHash
    A17, R25, B91 (purchase 99) reimbursable NEITHER 65176fcb
    A17, R25, B91 paid NEITHER 53d07928
    + B92 reimbursable TRUE_ONLY d26180dd
    B92 and B93, B92 withdrawn reimbursable TRUE_ONLY a935dae8
    no bank document, assert paid origin adjudicated reimbursable NEITHER; blocked PROTECTED_PREDICATE_REQUIRES_EVIDENCE, issue PROTECTED_ASSERTION_BLOCKED info c4a6b0ec
    B92, its verification recordedAt 2027-01-01 reimbursable NEITHER; AUTHENTICATION_NOT_AVAILABLE 3beba549
    B92 without verification reimbursable NEITHER; AUTHENTICATION_MISSING 41863d8c
    B92 with amount 1 KZT reimbursable NEITHER; NO_ACCEPTANCE_RULE_APPLIED 2b1448c7
    A17 naming employee 999 reimbursable NEITHER; blocker AcceptApproval 7 of 9, unmet claim_employee(purchase:42, employee:999); B92 accepted e6674ae1
    + X77 bank_reversal refuting paid reimbursable NEITHER 18853c31
    + X77 paid BOTH 10af4674
    second doc-B92 about purchase 99 reimbursable no result; issue EVIDENCE_ID_COLLISION fatal 44142de6
    B92's edge valid [2027-01-01, 2028-01-01) reimbursable NEITHER; EDGE_NOT_CURRENT a4b4bd67

    Accepted supports carry proof references to support_admission nodes (bac12c13… for R25, 209a4259… for A17, 73b3d805… for B92, acfffe42… for B93).

  • Certificates. check_proof_certificates.py certifies vector LAY-L3-EVP-ACCEPTED and rejects seven forged acceptance graphs; it runs over the whole vector corpus and was not re-run for this chapter. The statement in the boundary box rests on STATUS.md of 05.09.2026 and the package README.

  • Observed weakness, to report. For the one-tenge confirmation the report's blockers for the B92 edge bind the conjuncts to document B91 (the "deepest satisfiable prefix" is found with the wrong document), so no single unmet conjunct names the amount; the reviewer's finding R5 is closed for the wrong-purchase case and not for this one. Named in the boundary box under "not proved by anyone".

  • No public MCP call: the demo package is not served by the public corpus profiles.

Who Gets to Decide What Is Reasonable?

All answers were obtained on 05.09.2026 on the committed model corpus/clir/us-leonard-v-pepsico.lawir.json (package us.sdny.leonard_v_pepsico, schema law.core.ir/0.2), program hash sha256:e55fa9566c2273130b103a7d368347d65711b6a35a5996561660dc32e493e2f6 (theoryHash, reported as programHash in every manifest; semanticHash sha256:1fe57916…). Last change of the package and CLIR: commit 6f896fcaa of 05.09.2026 07:20. Legal time of every case is the opinion's date, 1999-08-05 (the edition window opens there).

  • Regression of family leonard_v_pepsico: 44/44 PASS.

  • Differential check_kz_differential.py --only leonard_v_pepsico: 44 evaluate calls byte-identical (liblaw_ffi == lawref), OK.

  • Certificates check_kz_certificates.py --only leonard_v_pepsico --no-ffi: OK. 44 oracle and 44 engine certificates; leaves proved 326, rule steps 61, queries 7; safety §190 rechecked for 61 applications; L1 §107: 254 candidates, 36 defeats compared, 218 survived. The package README's note that the Lean core rejects 16 of 28 certificates by the §181.1 defect is stale as of this run: all 44 pass.

  • Hand-written tests tests/01…06.lawtest: lawc test 6/6 PASS.

  • Cells (oracle through corpus/kz/engine.py, fact lists copied from corpus/kz/acts/leonard_v_pepsico.py; resultHash, first eight hex digits):

    Case Query Status resultHash
    facts as found (CLAIM) claim_fails TRUE_ONLY; rules ClaimFailsBecauseTheAdvertisementWasNotAnOffer, ClaimFailsForWantOfAWriting 8d84cc66
    facts as found offer_of(commercial, harrier) FALSE_ONLY (AdvertisementIsNotAnOffer) e3a5c732
    facts as found positions none c43b6183
    facts as found objectively_understood_as_offer NEITHER, REQUIRES_JUDGMENT, authority Court, predicate reasonable_person_would_understand_as_offer 8b191eb9
    facts as found evidently_done_in_jest NEITHER (no findings in the case) 9a5eb595
    + judgment negative (origin adjudicated) objectively_understood_as_offer NEITHER, COMPUTED, no request 813d311d
    + judgment negative claim_fails TRUE_ONLY 52b64cd9
    + judgment positive objectively_understood_as_offer TRUE_ONLY (ObjectiveUnderstandingEstablished) 21ed84ac
    + judgment positive claim_fails TRUE_ONLY a98d123f
    commercial + five findings (JEST) evidently_done_in_jest TRUE_ONLY (CommercialWasEvidentlyDoneInJest) e0d21a2a
    four findings (no military_purpose_of) evidently_done_in_jest NEITHER a58d160c
    Lefkowitz-style ad, judgment positive, no writing (LP-33C) claim_fails TRUE_ONLY (ClaimFailsForWantOfAWriting only) d376e293
    the same offer_of(commercial, tshirt) TRUE_ONLY (LefkowitzException) 20a1eea4
    + signed writing (all_cured) claim_fails NEITHER 27b6717d
    + signed writing positions DeliverTheItem ACTIVE ecc20b5b
    facts as found why_not sufficient_writing blocker SignedWritingEstablishingTheRelationshipSuffices: contract_for_sale_of_goods SATISFIED; writing, signed_by_the_party_charged, establishes_contractual_relationship UNDETERMINED 95cb9261
    facts as found why_not entitled_to_delivery one blocker, no conjunct breakdown (declared limit §185 on defeasible rules, LP-39) 8ee06b55

    "For the court" and "for the jury" in the body are regression scenarios LP-28A and LP-28B (for_the_court TRUE_ONLY on a contract-formation question appropriate for summary judgment; for_the_jury TRUE_ONLY when the question requires experience of subtle social dynamics, Gallagher). No issue of any severity in any call.

  • Public MCP: not called for this chapter.

A Right You Must Exercise

All answers were obtained on 05.09.2026 on the committed model corpus/clir/fide-laws-chess.lawir.json (package fide.laws.chess, schema law.core.ir/0.2), program hash sha256:ed75d93bde3f92fd1b5213b240db8c1c076cac526c3b56d0361da0963134cad8 (theoryHash, reported as programHash in every manifest; semanticHash sha256:f4f8a786…). Last change: commit 6f896fcaa of 05.09.2026 07:20. Legal time of every case: 2023-06-01 (the Laws in force from 2023-01-01).

  • Regression of family fide_chess: 16/16 PASS.

  • Differential check_kz_differential.py --only fide_chess: 16 evaluate calls byte-identical (liblaw_ffi == lawref), OK.

  • Certificates check_kz_certificates.py --only fide_chess --no-ffi: OK. 16 oracle and 16 engine certificates; leaves proved 50, rule steps 18, queries 4; safety §190 rechecked for 20 applications; L1 §107: 2 candidates, 0 defeats compared. Not proved by core v1: MoveIsIllegal ×15, SecondIllegalMoveEndsTheGame ×2, CastlingLegal, ThreefoldClaimCorrect, FivefoldAutomaticDraw, FiftyMoveClaimCorrect (conjunct or head outside core v1: §52/§57 arithmetic, §113), 7 TRUE_ONLY resting on an unverified step, ThreefoldClaimDraws on an unverified step (§180). Outside core v1: 140 closure anti-membership leaves (§70/§196), 5 NEITHER, 1 judgment request checked structurally.

  • Hand-written tests tests/01…03.lawtest: lawc test 3/3 PASS.

  • Chapter differential: the twenty-one questions below, built with the case builders of corpus/kz/acts/fide_chess.py (_players, _case), evaluated by the oracle (EvaluationRequest.from_dict, semantics 0.2) and by lawc eval on the same wire request; all twenty-one canonical documents byte-identical, PASS.

  • Cells (resultHash, first eight hex digits):

    Record Query Status resultHash
    White to move, occurrence count 3 game_drawn NEITHER 26e6a66b
    + draw_claimed(White) game_drawn TRUE_ONLY (ThreefoldClaimCorrect, ThreefoldClaimDraws) a2abedba
    White to move, count 3, draw_claimed(Black) game_drawn NEITHER 0f69806f
    White to move, count 2, draw_claimed(White) game_drawn NEITHER a570242d
    count 5, no claim game_drawn TRUE_ONLY (FivefoldAutomaticDraw) 76a9d50e
    White to move, 50 moves, draw_claimed(White) game_drawn TRUE_ONLY (FiftyMoveClaimCorrect, FiftyMoveClaimDraws) 20d59c7b
    White to move, 50 moves, no claim game_drawn NEITHER bcc81110
    75 moves, no claim game_drawn TRUE_ONLY (SeventyFiveAutomaticDraw) 85fcb919
    75 moves, checkmate_delivered(White) game_drawn FALSE_ONLY, one defeat node (CheckmateOverSeventyFiveMoves, lex_specialis) 1cb1bc88
    the same game_won_by(White) TRUE_ONLY (CheckmateWins) c50f4bfd
    completed_illegal_move_count(White, 2) game_lost_by(White) TRUE_ONLY (SecondIllegalMoveLoses) 0560c10c
    completed_illegal_move_count(White, 1) game_lost_by(White) NEITHER eb3d23e4
    count 2 + king_cannot_be_checkmated(White) game_drawn TRUE_ONLY (SecondIllegalMoveDrawnIfMateImpossible) 474f81e7
    the same game_lost_by(White) NEITHER dc26ec4c
    White to move, piece_can_be_moved(king) must_move_first_touched_piece NEITHER, REQUIRES_JUDGMENT, authority FIDEArbiter, predicate piece_touched_intentionally f6932c55
    + judgment positive (origin adjudicated) must_move_first_touched_piece TRUE_ONLY (MustMoveFirstTouchedPiece) 11ae71b6
    + judgment negative must_move_first_touched_piece NEITHER, COMPUTED, no request ba84e176
    castling side declared, king not recorded as moved castling_legal TRUE_ONLY (CastlingLegal, closure) ecf9d336
    + piece_has_moved(king) castling_legal NEITHER a9815a5b
    game started, attempted_transition PlayMove, move not meeting 3.1–3.9 valid_transition(PlayMove) NEITHER (MoveIsIllegal) 9004f793
    the same with move_meets_articles_3_1_to_3_9 valid_transition(PlayMove) TRUE_ONLY (MoveIsLegal) e81f14e0

    MoveIsIllegal fires in every case through the closure over move_meets_articles_3_1_to_3_9; it is not part of any answer above except the procedure rows. No issue of any severity in any call.

  • Public MCP: not called for this chapter.

What the Model Leaves Out

All answers were obtained on 05.09.2026 on the committed model corpus/clir/kz-social-code.lawir.json (package kz.corpus.socialcode, schema law.core.ir/0.2), program hash sha256:ad71b29e332956f513045b6e2405891a5e2c60fd292d6cca745d88378ae20c99 (theoryHash, reported as programHash in every manifest; semanticHash sha256:44c49df3…). Last change of the package and CLIR: commit 2d33c8c40 of 05.09.2026 11:50. The public MCP catalogue reports semanticHash sha256:01d66f14… for the same package: the server serves a different build; its catalogue line ("EXECUTABLE 180 §33.1") and its search results were used in the body only for what the catalogue says about depth and for the absence of predicates on special social services, both of which hold on the committed model as well (zero nodes reference SC_ART131, SC_ART133, SC_ART154; 22 rules reference SC_ART206).

  • Pension cells (oracle EvaluationRequest.from_dict, semantics 0.2, and lawc eval on the same wire request; all seven byte-identical, PASS). Facts: pension_system_participation_full_years(person, N), basic_pension_applicable_subsistence_minimum(person, 50851 KZT); query calculated_state_basic_pension_amount(person, X KZT); resultHash, first eight hex digits:

    Years Legal time Asked amount Status Rule resultHash
    8 2026-09-01 35 595,70 TRUE_ONLY BasicPension2026Base 024a556c
    20 2026-09-01 45 765,90 TRUE_ONLY BasicPension2026Growth 9a39afc4
    40 2026-09-01 60 004,18 TRUE_ONLY BasicPension2026Cap 59fa0950
    20 2026-09-01 45 765,00 NEITHER (Growth fired; amount differs) 7959dee9
    40 2027-06-01 61 021,20 TRUE_ONLY BasicPension2027Cap 7000cd11
    34 2026-09-01 60 004,18 TRUE_ONLY BasicPension2026Cap dd39cec3
    34 2027-06-01 60 004,18 TRUE_ONLY BasicPension2027Growth a54ca209

    Rules (09-basic-pension-amount.law, all strict, effective windows 2026 and 2027+): base 70 % for ≤ 10 years; growth 70 % + 2 % × (years − 10) for 10 < years < 34 (2026) / < 35 (2027); cap 118 % (2026) / 120 % (2027). The subsistence minimum is an empirical case fact (kind empirical, key(person)), not derived from the imported kz.corpus.budget; the budget-2026 package pins 50 851 KZT (budget-2026.law, assertion of kz.corpus.budget_code::subsistence_minimum(2026, 50851 KZT)).

  • Regression of family vysluga_pensiya (links kz.corpus.socialcode through link_deps): 6/6 PASS; differential 13 evaluate calls byte-identical, OK. The registry's SOC-01/SOC-03 anchors run under the full regression, not under a family key.

  • Depth measure check_formalization_depth.py --only kz-social-code: {EXECUTABLE 180, ANCHORED 0, INTERPRETED 0, SOURCE_ONLY 92, UNEXPLAINED 92, EXCLUDED 0, —: 0}, matches the baseline verify/ci/data/formalization-depth.json. Per-article list from boundaries.py corpus/laws/kz/codes/social-code/sources/social-code/ru.txt corpus/clir/kz-social-code.lawir.json: the 92 source-only articles are 1, 2, 10-1, 42–75, 83, 86, 114, 116, 122–125, 130–171, 173, 174, 176, 193 and others (special social services 131–142, national preventive mechanism 143–153, disability rights and rehabilitation 154–171).

  • Corpus-wide depth (baseline of 04.09.2026 23:56, 374 acts): totals EXECUTABLE 16 816, ANCHORED 2 072, SOURCE_ONLY 2 675, UNEXPLAINED 1 140, EXCLUDED 118, INTERPRETED 16, outside packages 18 041 article-units; 89 acts fully executable; 4 acts with no measure at all (eu-nomenclature-gri, kz-gats-financial-services, mng-yasa, us-liver-status). Examples named in the body: kz-customs-code {EXECUTABLE 124, ANCHORED 466}; kz-civil-code {EXECUTABLE 414, ANCHORED 1, EXCLUDED 10}; la-protagoras-euathlus {EXECUTABLE 10, INTERPRETED 1, ANCHORED 5}; us-leonard-v-pepsico {EXECUTABLE 13, ANCHORED 3, SOURCE_ONLY 3}; fide-laws-chess {EXECUTABLE 6, —: 6}; eu-air-passenger-rights {EXECUTABLE 19}; de-bgb-1896 {EXECUTABLE 37, —: 1 723}.

  • Provenance kinds (count of materialization_status in corpus/laws/**/sources.law on 05.09.2026): PINNED_UNOFFICIAL_COPY 303, PINNED_OFFICIAL_BYTES 89, ABSTRACT_ONLY 30, UNAVAILABLE 17, PINNED_EDITORIAL_RECONSTRUCTION 9, DYNAMIC_OFFICIAL_PAGE 1, empty 10; officiality: official 300, unofficial 171, translation 3, empty 11. Examples: official bytes intl/echr-1950, intl/ilo-c138; reconstruction eng/animal-farm-1945, ru/vershki-koreshki; abstract only intl/general-average, ru/zolotaya-rybka; unavailable us/three-laws-robotics; dynamic page fatf/recommendations; un/charter and us/constitution PINNED_UNOFFICIAL_COPY (transcripts).

  • Social Code provenance (02-sources.law): edition SOCIAL_CODE_224_RU, officiality official, materialization_status PINNED_UNOFFICIAL_COPY, adopted 2023-04-20, in force from 2023-07-01; publication https://adilet.zan.kz/rus/docs/K2300000224/compare, left column, retrieved 2026-08-27T21:40:11Z, content_hash sha256:f053dbeb…, 272 fragments.

  • Certificates: not run for this chapter. The depth measure is guarded by check_formalization_depth.py (one-way ratchet; --canary mutations) and is not certified by the Lean core.

Who Chose This Reading?

All seven-day answers were obtained on 05.09.2026 on the committed model corpus/clir/eu-air-passenger-rights.lawir.json (program hash sha256:a6be790a…, as in chapter two). Facts: the in-scope set, cancellation, reimbursement_chosen_on(p, f, 2026-08-01), reimbursement_paid_on(p, f, 2026-08-08 | 2026-08-09); legal time 2026-08-26; the reading enters as case.options.selectedInterpretations = ["…#SevenDayReimbursementStart"] (the wire schema accepts options only inside case, DECISION-0111 §2.2). Oracle EvaluationRequest.from_dict and lawc eval on the same wire request; all five byte-identical, PASS. resultHash, first eight hex digits:

Case Query Reading Status resultHash
paid 08.08 reimbursement_within_seven_days none NEITHER; manifest.interpretations empty 2aa2e730
paid 08.08 the same SevenDayReimbursementStart TRUE_ONLY (ReimbursementWithinSevenDaysOfChoice) 33c9bae6
paid 09.08 the same SevenDayReimbursementStart NEITHER 1e953693
paid 09.08 the same none NEITHER 2b49346b
paid 08.08 right_to_reimbursement_or_rerouting none TRUE_ONLY 6ef316c4

The family regression (40/40) and differential (40/40) of chapter two cover scenarios APR-27, APR-28, APR-29 and APR-38 (the same reading with the package-travel exclusion, FALSE_ONLY).

  • Interpretation (07-reimbursement-and-care.law): interpretation SevenDayReimbursementStart of EU261_ART_8 { status disputed; label en official "…"; include ReimbursementWithinSevenDaysOfChoice; }; the included rule is defeasible and reads days_between(chosen, paid) <= 7. Two further interpretations of the same package carry no include (ReasonablyExpectsStandard, ReducedMobilityStandard, ReasonableRelationToWaitingTime): open standards that qualify the content of a duty, not its existence; the header explains why they must not remove the rule from the base theory.
  • Labels and overlays. corpus/clir/kz-constitution-rights.lawir.json (semanticHash sha256:72b7cecb…, theoryHash sha256:37583296…, last change commit 71e83f097 of 05.09.2026): rule CitizenNonExtraditionImmunity, labels ru-KZ official and kk-KZ official, anchors KZ_CONSTITUTION_2026_ART14_RU and …_ART14_KK. Overlays corpus/laws/kz/constitution/rights/i18n/{en,la,zh,ar,uz,ky}.json (format law.i18n/0.1, 118 entries each, every entry status: translation; the kk.json overlay carries official for the Kazakh text). Verbalisation contentHash: Russian pack, no overlay sha256:ab05dc05…; the same with any overlay but the Russian pack sha256:ab05dc05… (the pack selects the language); English pack law.verb.en/pack-0.2.0.json + en.json sha256:c15f6805…; Latin pack
    • la.json sha256:7c9e9a4d…. The program hashes are unchanged in all four runs; §218 / errata E-0010 keep labels out of the semantic-hash preimage; DECISION-0070 keeps overlays out of the compiler entirely.
  • Reports (DECISION-0100): tool law_report, facet feedback; fields package (checked against the catalogue), category ∈ {missing-norm, wrong-outcome, label-mismatch, broken-address, source-text, other}, expected, observed, optional fragment, predicate, callId; the handler is pure, the transport journal records the call with MCP_REPORT_* fields and the package semanticHash; triage outside the server with two outcomes (rule fix / recorded decision); the fiqh-nikah precedent of 03.09.2026; confirmed findings go to the findings ratchet of DECISION-0095 with a disposition. Not built: a confirmation metric. No report was filed for this chapter.
  • Approvals (DECISION-0006): the subject is one verbalised block per declaration; subjectSemanticHash is the node's semantic hash; states current, stale_semantics, stale_verbalization, orphaned (LDC-E8202); a block with a totality gap cannot be approved above draft (LDC-E8201); an approval is necessary, not sufficient, for VERIFIED (§33.1); storage, signatures and the dispute mechanics are recorded as open.
  • Certificates: not run for this chapter.

The Day the Answer Changes

All figures were obtained on 05.09.2026 on the committed model corpus/clir/kz-dogovornaya-penya.lawir.json (theoryHash sha256:b25ac0b7…, last change commit 8f4b819d1 of 05.09.2026; repository HEAD 118294aac). The world is four packages: kz.private.dogovornaya_penya 0.1.0 (contentHash sha256:f2892d3e…), kz.corpus.civilcode 0.1.0 (sha256:9d304acf…), calc.obligations and calc.accruals (DECISION-0123, P02 and P03). programHash sha256:768d605e… in every run. Contract text sources/dogovornaya-penya/ru.txt, sha256:9b41a46f…. Semantics law.core/0.2.

Runs through corpus/laws/kz/study/dogovornaya-penya/tools/raschet.py <input.json> --differential; the flag executes every call a second time through liblaw_ffi and compares canonical bytes (§208). Inputs derived from scenarios/kontrolnyi-primer.json (principal 1000000.00, due 2026-06-10, payment PP-001 400000.00 credited 2026-06-21, paymentHistoryConfirmedComplete: true):

Variant Calculation date Penalty Principal Total Status semanticHash differential
base 2026-06-30 16 000 (10 000 + 6 000) 600 000 616 000 computed 3561fff4 26/26
date 2026-06-20 10 000 1 000 000 1 010 000 computed 3c7ec7b3 22/22
date 2026-07-31 34 600 (10 000 + 24 600, 41 days) 600 000 634 600 computed 60e8e969 26/26
cap 2026-12-31 126 400 → cap 100 000 (194 days) 600 000 700 000 computed 71e6fceb 26/26
paymentHistoryConfirmedComplete: false 2026-06-30 periods 10 000 + 6 000 shown, final None None None incomplete; blockers §185: payment_history_confirmed_complete NEITHER, contract_calculation_date unbound cc429e22 26/26
field absent 2026-06-30 — — — invalid-input, exit 2 (clause 5.2) — —
duplicate payment id 2026-06-30 — — — invalid-input, exit 2 (clause 4.2) — —
allocations: [] 2026-06-30 20 000 (20 days on 1 000 000) 1 000 000 1 020 000 computed; CONSTRAINT_VIOLATED … #UnallocatedPaymentIsNamed bf63aa5c 22/22

Every computed run also carries the legal question: penalty_recoverable answers REQUIRES_JUDGMENT, judgment request §47.3 to authority Court, urn:kz:private:clir:dogovornaya-penya#court_awarded_penalty (clause 6.3; Civil Code art. 297). penalty_final and court_awarded_penalty are distinct predicates with no rule between them.

Family checks on the same date: run_kz_regression.py --only dogovornaya-penya --only holidays --only civil_terms → 32/32 PASS (composition dogovornaya-penya 21, holidays 6, civil_terms 4); check_kz_differential.py with the same families → 101 evaluate calls byte-identical, OK.

Calendar cells: model corpus/clir/kz-official-calendar-2026.lawir.json (theoryHash sha256:2fc5bdf6…, last change 783fcd169 of 04.09.2026), resource corpus/clir/kz-official-2026.calendar.json, policy {"start_count": "next_day", "include_end": true, "roll": "next_working_day", "cutoff": null} (Civil Code art. 173/175/176, as documented in corpus/kz/acts/official_calendar.py). Oracle engine.evaluate on EvaluationRequest.build; resultHash, first eight hex digits:

Cell From Days Result Trace resultHash
CIV-01 2026-12-04 (Fri) 10 2026-12-14 rolled false 725d594c
CIV-02 2026-12-06 (Sun) 10 2026-12-17 rolled true (16.12 Independence Day, law 267-II) 25083515
CIV-04 2026-03-16 (Mon) 5 2026-03-26 rolled true (21–23.03 Nauryz; 24–25.03 moved rest days, art. 5 para. 3 of law 267-II) aae1c06d
CIV-03 2026-12-04, filed 19:30, cutoff 18:00 10 2026-12-15 cutoffShifted true 59bc14e5
is_working_day 2026-12-16 — false — d7358cb5

The history told in the body: until 30.08.2026 scenario CIV-04 was described as a chain of three acts, with 24–25.03 attributed to a government resolution on moving rest days; no resolution with that subject exists, the moved days follow from the law on holidays itself. The comment in official_calendar.py records the correction; the dates did not change.

One Case, Five Legal Traditions

The comparative chain is DECISION-0091 (spec/decisions/0091-comparative-private-law-chain.ru.md, 02.09.2026; plan docs/plans/domains/IUS-PRIVATUM-CHAIN-PLAN.ru.md, phases Ф0–Ф8 closed 02.09.2026). Shared vocabulary doctrine.ius_privatum (corpus/laws/doctrine/law/ius-privatum/, CLIR corpus/clir/doctrine-ius-privatum.lawir.json, theoryHash sha256:f1182dbd…); heads ius_efficax, ius_nudum, remedium_sine_iure over remedium_competit, remedium_datur, remedium_exclusum. Casus registry corpus/laws/doctrine/law/ius-privatum/casus/*.lawtest (31 files, 12 numbered casus with variants), expectations per link in casus/matrix.json with anchors, written from the text before the run.

Links, legal time per link (from matrix.links), CLIR and theoryHash on 05.09.2026 (repository HEAD 118294aac; all CLIR last regenerated in 783fcd169 of 04.09.2026, the Kazakh pair in 8f4b819d1 of 05.09.2026):

Link Legal time CLIR theoryHash
Gaius, Institutiones IV (c. 161) 0161-06-01 rom-gai-institutiones 0c1d00c7
Justinian, Institutiones (533) 0533-12-30 rom-institutiones-iustiniani e876d041
Mejelle (1869–1876) 1900-06-01 osm-mejelle d3991a5b
Code civil (1804) 1810-01-01 fr-code-civil-1804 cced74d9
BGB (1896, in force 1900) 1900-06-01 de-bgb-1896 86af955b
Civil Code of Kazakhstan (268-XIII, 409-I) 2026-09-02 kz-civil-code-special + kz-civil-code d3b19025, b743cd52

Cells of the published hall apps/registry/index/casus/matrix.json (generator verify/ci/tools/casus_matrix.py, committed 2080f6db0 of 02.09.2026; summary 173 cells, 173 matches, 0 mismatches, 13 skipped); resultHash, first eight hex digits:

Casus Question Gaius Justinian Mejelle Code civil BGB KZ nullum
01 venditio a non domino ius_efficax(Titius, Maevius) TRUE_ONLY d916915d (GAI_4_003) TRUE_ONLY 131bf3c7 (INST_2_1_40) TRUE_ONLY 507123c4 (MJL_ART368) FALSE_ONLY 2aa37ad2 (CC_ART2279) FALSE_ONLY a63babf4 (BGB_P932) FALSE_ONLY 2b695790 (GK_ART261) NEITHER 5662149d
05 furtum et venditio the same, stolen thing TRUE_ONLY (GAI_4_003) TRUE_ONLY (INST_2_6_2) TRUE_ONLY (MJL_ART890) TRUE_ONLY (CC_ART2279 al. 2) TRUE_ONLY (BGB_P935) TRUE_ONLY (GK_ART261) NEITHER
07a usucapio mobilis anno movable, one year NEITHER 928383d4 (GAI_2_042) TRUE_ONLY 8ce1f7f7 (INST_2_6_PR) TRUE_ONLY 4c7f6aec (MJL_ART1660) FALSE_ONLY 1018e95d (CC_ART2279) TRUE_ONLY 06f66db9 (BGB_P937) TRUE_ONLY cc1f06c6 (GK_ART240) NEITHER 9ae0b90b
07d usucapio immobilis annis triginta land, thirty years NEITHER 51c5cabc NEITHER 037dcf16 FALSE_ONLY 17c77920 (MJL_ART1660, 1674) NEITHER a4d7bbcc (CC_ART2262) FALSE_ONLY 7cd8561a (BGB_P194, 222) NEITHER f224f282 (GK_ART240) NEITHER 7f1ad91f
09e praescriptio ius nudum ius_nudum(Titius, Seius) NEITHER (REQUIRES_JUDGMENT, GAI_4_110) skipped TRUE_ONLY (MJL_ART1674) TRUE_ONLY (CC_ART1235) TRUE_ONLY (BGB_P222) TRUE_ONLY (GK_ART187) NEITHER

Family checks on 05.09.2026: run_kz_regression.py --only ius_privatum_casus → 204/204 PASS; check_kz_differential.py --only ius_privatum_casus → 204 evaluate calls byte-identical (liblaw_ffi == lawref), OK. verify/ci/tools/casus_matrix.py --check → FAIL, 32 of 32 index files stale: the committed hall of 02.09.2026 predates the CLIR regeneration of 04–05.09.2026. Regenerated on 05.09.2026 into the scratchpad (casus_matrix_sandbox.py, same generator, output redirected): 217 cells, 0 verdict changes, 204 resultHash values changed (every non-skipped cell), 13 unchanged (skipped); every link's world semanticHash changed (e.g. Gaius dc73db35 → 86cf9bec, BGB 3902cbc2 → 2c687682). Today's hashes for casus 01: Gaius ff3268f4, Justinian a8ce2e37, Mejelle 2c4ffe34, Code civil d2065bc7, BGB 33342e2d, KZ adb62614, nullum 0c5a66bc; for 07a: ca178ab0, 2335ed48, 9565525a, db5d2182, 0c365027, ddd5af7d, e4f17f7e. The committed index was not rewritten by this chapter.

Source wording used in the body (pinned texts): Gaius IV.3 (la.txt, "In rem actio est, cum aut corporalem rem intendimus nostram esse…"), II.42 ("Vsucapio autem mobilium quidem rerum anno completur, fundi uero et aedium biennio"); Justinian 2.1.40 ("…a domino tradita alienatur"), 2.6.pr (movables one year, immovables two, under the ius civile; the Institutes then state the new three-year and ten/twenty-year terms); Mejelle art. 368 (sale of another's property suspended on the owner's approval), 97, 890, 1660, 1674 (ar.txt); Code civil art. 2279 ("En fait de meubles, la possession vaut titre. Néanmoins celui qui a perdu ou auquel il a été volé une chose, peut la revendiquer pendant trois ans…"), 550, 2262, 2265, 1235; BGB § 932 ("Durch eine nach §. 929 erfolgte Veräußerung wird der Erwerber auch dann Eigenthümer, wenn die Sache nicht dem Veräußerer gehört, es sei denn, daß er … nicht in gutem Glauben ist"), § 935, § 937 ("Wer eine bewegliche Sache zehn Jahre im Eigenbesitze hat, erwirbt das Eigenthum"), § 985, § 194, § 222; Civil Code of Kazakhstan art. 261 para. 1, art. 240 para. 1 (seven years immovable, five years other property), art. 260, 178, 187. Paraphrases of the Arabic and Latin in the body are the author's; the Mejelle's cell notes in matrix.json are the modeller's readings.

First-run red cells (from STATUS.md, 02.09.2026): Code civil casus 01 gave TRUE_ONLY (no rule reading a purchase as titre translatif, art. 550; rule added from the text, expectation untouched); BGB casus 01 gave NEITHER twice (first the exceptio — § 932 does not take away the § 985 claim; then the intentio — the former owner's claim was never stated as § 985); Code civil casus 07d expected FALSE_ONLY, recorded NEITHER with the reason in the cell note (art. 2262 extinguishes the action thirty years from its birth; the casus states years of possession, so the acquisitive side works).

A Counterexample Before an Amendment

Package ru.afanasyev.vershki_koreshki 0.1.0 (corpus/laws/fiction/afanasyev/vershki-koreshki/, language 0.2; jurisdiction = "none", instrument = "agreement", sourceFidelity = "reconstruction"); CLIR corpus/clir/ru-vershki-koreshki.lawir.json, theoryHash sha256:da7fb6b4…, last change 783fcd169 of 04.09.2026; repository HEAD 118294aac; all runs 05.09.2026. Witnesses pinned in sources/vershki-koreshki/: Afanasyev No. 24 operational (ru.txt, 148 lines; slices e1-god-pervyy.txt, e2-god-vtoroy.txt as the two editions, materialization_status PINNED_EDITORIAL_RECONSTRUCTION), No. 23 and No. 25 as divergent witnesses, Grimm KHM 189 "Der Bauer und der Teufel" (de.txt). Editions RAZDEL_GOD_PERVYY (tops to the bear) and RAZDEL_GOD_VTOROY (roots to the bear); stand-in legal times 1000-06-01 and 1001-06-01.

Check Result
run_kz_regression.py --only vershki_koreshki 16/16 PASS (VK-01A/B/C, VK-02, VK-03A/B, VK-04, VK-05, VK-06, VK-07, VK-08A/B)
check_kz_differential.py --only vershki_koreshki 16 evaluate calls byte-identical, OK
lawc test on tests/01…06 6/6 PASS (gets_worthless_part TRUE_ONLY in 01 and 03; gets_valuable_part TRUE_ONLY in 02 and 04; deceit_established REQUIRES_JUDGMENT in 05; receives NEITHER across editions in 06)
positions VK-05 / VK-06 DutyToDeliverAllottedPart SATISFIED in both historical years
lawref impact-editions … 1000-06-01 1001-06-01 --scenarios impact-scenarios verdict SEMANTIC-CHANGE; §215 diff added=5, removed=4; scenarios 4, outcome changed 4: year-one-turnip NEITHER→NEITHER, year-one-wheat TRUE_ONLY→NEITHER, year-two-turnip NEITHER→TRUE_ONLY, year-two-wheat NEITHER→NEITHER; bank blind to the change: 9 norms touched, none exercised by any scenario; 3 rules without proven application (DECISION-0019 C)
lawref amend … --target amend-target-bear-gets-value.json --scenarios impact-scenarios not found; 42 evaluations; edit space 8 operations, exhausted: true, editSpaceTruncated: false, maxEdits: 2; exit 1
lawref loophole … --goal loophole-goal.json --depth 2 --budget 8000 3602 evaluations, walk exhausted; alphabet truncated 24 of 66 atoms; predicates left without any action: allotted, deceived_in_division, delivered, party_to_contract, took_own_part; verdict SPACE-TRUNCATED, exit 4; NORMS_NOT_IN_PROJECTION on both date groups (edition windows)
the same with --alphabet-cap 80 --dates-cap 6 --budget 30000 verdict NOT-FOUND, exit 0; 26 534 evaluations, walk exhausted, alphabet 66 of 66, dates 6; the goal's background is 3 assertions (sowed_together ×2, sown) while the historical world of year-two-wheat carries harvested, valuable_part, worthless_part and took_own_part ×2 on top of it (plus the dead chose_crop), i.e. at least five facts, so depth 2 cannot reach it: the negative is a statement about depth 2

The impact tool's blindness to positions was closed 31.08.2026 (README of the package: before that date the report printed "outcome changed: 2" and called both historical scenarios unchanged; the O-1 outcome projection compared only {results, issues}, while §134 positions live at the root of the evaluation document). The loophole verdicts SPACE-TRUNCATED / BUDGET-EXHAUSTED (exit 4) were added 01.09.2026 (STATUS.md, "lawref loophole: капы пространства получили флаги, а «не найдено» — вердикт"), with the tale's three-place action took_own_part recorded as the second witness (29.08.2026).

Maine: package us.me.ranked_choice (21-A M.R.S. § 723-A; corpus/laws/us/maine-ranked-choice/), CLIR corpus/clir/us-maine-ranked-choice.lawir.json, theoryHash sha256:4145cb49…, last change 783fcd169 of 04.09.2026; world of scenarios KZ-ME723A-03/04 built by the runner's _election("r", "ABC", ["ABC", "ABC", "BAC", "BAC", "CAB"], recorded_removals=(("C", 1),)) (26 assertions, scratchpad/maine_goal.py); goal truth declared_the_winner(governor, C) expected TRUE_ONLY. lawref loophole corpus/clir/us-maine-ranked-choice.lawir.json --goal … --depth 1 --budget 400 --alphabet-cap 80 --dates-cap 4 → verdict FOUND, 256 evaluations, walk truncated by the findings cap (5 findings), every finding one step ballots_cast_for_office(urn:us:me:office:governor, ?) on dates 2018-01-01, 2018-01-02, 2026-09-01; exit 1. The documented run of 02.09.2026 (verification.ru.md, commit a2673f555) reports 326 evaluations and the same single step. Family checks: run_kz_regression.py --only maine_ranked_choice → 16/16 PASS; check_kz_differential.py --only maine_ranked_choice → 41 evaluate calls byte-identical, OK. Statute text (sources/…/en.txt, line 67): "If a candidate has been assigned ranking number one on more than 50% of all ballots cast for the particular office for which the candidate is running, including but not limited to ballots on which ranking number one is blank, on which there is an overvote at ranking number one or on which ranking number one was assigned to an excluded candidate, that candidate is declared the winner…"

What the Checker Actually Proves

Checker engines/checker/ (Lean 4, toolchain leanprover/lean4:v4.33.0, lean-toolchain); modules LawCore/{A3, Argumentation, Arith, Cert, Cert181, Check, Closure, Conservativity, Const, Defeasible, Json, Precedent, Sha256, Strata, Support, Term}.lean plus Main.lean, 3 899 lines total (wc, 05.09.2026); no external dependencies (no mathlib, no import Lean; §197). Last change of LawCore/ in 20912fe36 of 05.09.2026 (the review commit of chapter eleven touched Check.lean); README last changed d6dbc8796 of 29.08.2026.

Theorems and axioms, printed with lake env lean on 05.09.2026:

Theorem Statement (paraphrase) Axioms
LawCore.cert_sound (Cert.lean:102) if CertOK rules base proven cert, every step's conclusion is positively in the base or in Derives rules base (least model §103) none
LawCore.certOKB_sound the executable certOKB returning true implies CertOK propext, Quot.sound
LawCore.safe_head_grounded (Term.lean:170) a safe rule's head is ground under any substitution grounding its body (§190) propext, Classical.choice, Quot.sound
LawCore.no_explosion (Support.lean:85) raising an atom to BOTH changes no other atom's status (§5.4) propext
LawCore.strict_opposition_defeats (Defeasible.lean:123) a strict derivation is not defeated by a defeasible one (§114) propext

sorryAx appears nowhere (README; the #print axioms output above lists none).

Runs on 05.09.2026 (lake build: 39 jobs, OK; lake exe lawcheck self-test OK: closure §103, canon §208 round-trip and three refusals, SHA-256 §180, arithmetic §57–§58, L1 §107 three defeat paths). Verbose certificate checks on canonical ir/case/expected of three vectors (scratchpad/lc_*.json):

Vector Report
t/T001 (P without not P gives TRUE_ONLY) nodes 2; proved: leaves 1, steps 0, queries 1; no assumptions; OK
errata/ERR-E0062-MOD-SIGN nodes 3; proved: leaves 1; assumptions: apply:EuclidWitness "conjunct or head outside core v1 (§52/§57/…)", query "TRUE_ONLY rests on an unverified step (§65/§66)"; OK
lay/LAY-L3-EVP-ACCEPTED nodes 12; safety §190 checked 2; assumptions: eight evidence-projection nodes "projection bound to raw input; the projection §78.2.3 itself is outside core v1, external premise", support-admission "structurally verified (policy, document, link, polarity, …)", apply:AcceptPaid and apply:Settle "rest on an unverified step (§180)", query:settled unverified; OK

Gate verify/ci/gates/proofs/check_proof_certificates.py (whole vector corpus, eleven forgeries, positive strength check, four DECISION-0118 canaries, closure §179 without Lean): run 05.09.2026, OK. Closure §179: 379 graphs, no dangling premises, canary on a detached premise reddens; priorityPath §181.2 checked; 4/4 forgeries §180–§180.1 rejected (content-id, uniqueness, Kahn order, set-like array); 386 certificates checked by the core: leaves proved 401, rule steps 69, queries 47, safety §190 rechecked at 103 applications, L1 candidates 105, defeats 34, survived 63, admitted 338 (§104 candidates, division §59, conjuncts outside v1); 386 engine certificates checked, rule steps 72; 387 calls by handle, 0 subprocess fallbacks; 7/7 forgeries rejected (substitution, premise, leaf, cycle, dangling reference, status); strength §104 read (defeasible: 0 proved steps against 1 for strict); 2/2 sum forgeries rejected; opaque head operand → named assumption; 6/6 §181.1 forgeries rejected; 2/2 defeat forgeries rejected (§107 recomputed); 2/2 judgment-node forgeries rejected (§47.3); 7/7 acceptance-phase forgeries rejected; certification boundary §78.2.9 printed; 2/2 AF and 2/2 PREC forgeries rejected

Live acts, check_kz_certificates.py --only zheti_zhargy --only us_declaration --no-ffi (two of the four packages named in the §54 constant finding of 28.08.2026): run 05.09.2026: regression 181/181 PASS (zheti_zhargy 165, us_declaration 16); 216 live-act certificates checked: leaves 3 644, rule steps 6 401, queries 107 proved, safety §190 rechecked at 6 426 applications, L1: candidates 65, defeats 3 compared, 62 survived; 216 engine certificates checked with the same 6 401 steps; but 5 oracle certificates and the same 5 engine certificates REJECTED (zh-12d-multiple-offences-same-matter, zh-132-two-witnesses-prove, usd-13, usd-15, usd-16), each with ОШИБКА: urn:proof:closure:…: множества id сертификата не отсортированы либо содержат дубликат (§180.1/§181.1); gate exit 1. No errors of the §54 constant class. The closure-certificate class is recorded in STATUS.md as qualified under invariant 8 as an oracle defect (entries of 30.08–31.08.2026: candidate_closure lists only the supporting candidate in allApplicableCandidateIds where §181.1 demands all applicable; leonard-v-pepsico 16 of 28, repka 8 of 26, zhirenshe 3 of 30, f1_sporting 17 of 28 at the time; both engines byte-identical, fix requires errata); chapter four's run of 05.09.2026 shows leonard_v_pepsico 44/44 accepted, so the earlier message has gone; today's message names sortedness and uniqueness of the id sets (§180.1/§181.1, the DECISION-0118 set-like check), and no entry relates it to the earlier class. The map of the unproved (top): 36 × BlasphemyEstablishedBySevenWitnesses conjunct or head outside v1, 33 × TRUE_ONLY resting on an unverified step, 19 × DeathSentenceIsPunishment defeasible candidate; outside v1: 256 norm_creation nodes, 60 NEITHER statuses, 18 interpretation_selection nodes. Chapter four's run of the same gate on leonard_v_pepsico: 44 oracle and 44 engine certificates, 326 leaves, 61 steps, 7 queries proved; L1: 254 candidates, 36 defeats compared, 218 survived.

Hand forgeries (scratchpad/forge_ch13.py): vector t/T005 (nodes 4: leaf, apply:S1, query, one node outside v1; genuine report: leaves 1, steps 1, queries 1, safety §190 1, OK). F1 premise removed from apply:S1 → exit 1, ERROR … content-id does not match the SHA-256 of the canonical content (§180), "REJECTED — certificate not verified". F2 leaf argument urn:entity:acme altered → exit 1, литерал листа не совпадает с assertion urn:law:vectors:t005#assert-a байт-в-байт (§208). F3 conclusion argument altered → exit 1, the content-id error and a second error on the same node. Node ids are SHA-256 of canonical node content (§180), so any edit to a node trips the id check before the semantic one.

README figures (29.08.2026): 89 certificates of live acts, 473 leaves and 272 rule applications proved, safety §190 rechecked at 273 applications; 272 rather than 391 because the core reads rule strength (§104 candidates are not proofs); 119 applications had counted as proved before strength was read.

Findings by the checker recorded in errata: E-0019 (found 26.08.2026, qualified 27.08: proof graph not required to be closed under premises; SPEC defect; closure now checked on every vector without Lean), E-0022 (27.08.2026: rule_application node without rule/substitution allowed by evaluation.schema.json; schema defect, prose intact); STATUS entry "Ядро Lean отвергает сертификаты при ОБЪЯВЛЕННОЙ константе §54 (28.08.2026, не закрыто)": criminal-code 117/120, us-declaration 38/35, zheti-zhargy 34/33, state-duty 7/7 rejected while the differential stayed green; LawCore/Const.lean (README table, errata E-0049 p. 1) now dereferences constants in a pre-pass "before reading the program, the same walk and table as both engines".

A Computed Obligation, an Unfinished Dispute

Package intl.minsk.package_2015 0.1.0 (corpus/laws/intl/minsk-package-2015/, language 0.2, layer L3, jurisdiction = "International", instrument = "agreement", sourceFidelity = "pinned_unofficial_copy", issuer "участники Трёхсторонней контактной группы"); CLIR corpus/clir/intl-minsk-package-2015.lawir.json, theoryHash sha256:a5e2bb6c…, last change 783fcd169 of 04.09.2026; source sources/minsk-package-2015/ru.txt (the Russian text as annexed to UN Security Council resolution 2202 (2015)); all runs 05.09.2026. STATUS.md measurements of 29.08.2026: depth §33.1 EXECUTABLE 13, ANCHORED 0, SOURCE_ONLY 0; byte coverage 99.9 % (11 856 of 11 872, 16 fragments); 71 rules, 0 dead; labels §218 117 declarations and 90 norms; 53/53 scenarios byte-identical lawref ↔ lawc. 03.09.2026: check_minsk_readings argumentation profile §274 checked against lawc byte for byte, 5/5.

Runs of this chapter:

Check Result
scenario family minsk_package (corpus/kz/acts/minsk_package.py, 53 scenarios MINSK-01…52 with variants) 53/53 PASS, run in-process (scratchpad/run_minsk.py); the shared registry on HEAD 0e2621dc9 (15:20) failed with KeyError: 'tutorial.archive' from a neighbouring package under packs/examples/tutorial/ added at 15:13–15:20, so run_kz_regression.py --only minsk_package, check_kz_differential.py and check_kz_certificates.py could not start
lawc test tests/minsk-01…02.lawtest 2/2 PASS
lawref process on the CLIR procedure MinskImplementation(Settlement), initial Signed; 7 states, 6 transitions (DeclareCeasefire, WithdrawHeavyWeapons, OpenDialogue, HoldLocalElections, EnactConstitutionalReform, RestoreBorderControl); note SINK_STATE on BorderControlRestored; no structural defects
byte differential (scratchpad/diff_ch14.py) 12 cells, all byte-identical oracle (EvaluationRequest.from_dict) == lawc eval; see table

Readings (09-sequencing-readings.law): SecurityFirstReading of MINSK_P10 { status disputed; include ElectionsRequireSecurityConditions; } and LiteralOrderReading (both status disputed, interpretation_group with selection any_of); the only differentiating predicate is elections_precondition_met, derived by no base rule; both included norms are listed in corpus/interpretation-gated.json.

Journals (journals/point-ten-pending.json, point-ten-completed.json, law.process.journal/0.1, instance urn:intl:minsk:case:settlement-1), six steps each: 2015-02-15 DeclareCeasefire; 2015-03-03 WithdrawHeavyWeapons (started and completed, monitoring from the first day); 2015-03-10 OpenDialogue (dialogue, Rada resolution, memorandum line); 2015-10-25 HoldLocalElections (elections held, questions agreed in the contact group, OSCE standards, ODIHR monitoring; in the completed journal also foreign_formations_withdrawn and illegal_groups_disarmed); 2015-12-20 EnactConstitutionalReform (reform in force, decentralisation, permanent special-status law with all eight measures of the note to point 11); 2015-12-30 RestoreBorderControl.

lawref process-run (the reading passed as case.options.selectedInterpretations, scratchpad copies of the journals):

Journal Reading Elections step Last frame 2015-12-30 Findings
point ten pending none HoldLocalElections NEITHER, no effect [CeasefireInForce, DialogueOnElections, HeavyWeaponsWithdrawn, Signed] ATTEMPT_WITHOUT_EFFECT ×3 (steps 3, 4, 5); STUCK on 2015-12-30
point ten pending SecurityFirst NEITHER, no effect the same ATTEMPT_WITHOUT_EFFECT ×3; STUCK
point ten pending LiteralOrder TRUE_ONLY, effect [BorderControlRestored, …, LocalElectionsHeld, Signed] none
point ten completed none NEITHER, no effect stuck at dialogue ATTEMPT_WITHOUT_EFFECT; STUCK
point ten completed SecurityFirst TRUE_ONLY, effect BorderControlRestored reached none
point ten completed LiteralOrder TRUE_ONLY, effect BorderControlRestored reached none

Positions on the pending journal's last frame: WithdrawalMustStartByDayTwo SATISFIED (due 2015-02-18), RadaMustAdoptResolution SATISFIED (due 2015-03-15), UkraineMustAdoptPermanentSpecialStatusLaw and UkraineMustCarryOutConstitutionalReform SATISFIED (due 2016-01-01), CeasefireDuty ACTIVE, ContactGroupMustAgreeElectionQuestions SATISFIED, ContactGroupMustIntensifyActivity and DutyToDefineSocioEconomicModalities ACTIVE.

Truth cells, legal time 2015-12-30, facts = all journal steps, resultHash first eight hex digits (oracle == lawc in every row):

Journal Reading local_elections_valid full_border_control_due
pending none NEITHER aba1c564 NEITHER 3a1066b4
pending SecurityFirst NEITHER c2f443e5 NEITHER 3527a48b
pending LiteralOrder TRUE_ONLY 1a90582c TRUE_ONLY ced738ae
completed none NEITHER 187f9b54 NEITHER 69fb778e
completed SecurityFirst TRUE_ONLY 8d185316 TRUE_ONLY 24e71b0f
completed LiteralOrder TRUE_ONLY f4b3b438 TRUE_ONLY 8503b8b8

Decision table withdrawal-distance.lawtable.json (law.decision/0.1, hitPolicy: unique, total: true; inputs mlrs, long_range_listed Boolean; output zone_km Integer; emits withdrawal_zone_km): rows artillery-100mm-and-above (false, false → 50), mlrs-general (true, false → 70), mlrs-long-range-listed (true, true → 140), tactical-missile-system (false, true → 140). The calibre threshold (≥ 100 mm) is a rule guard, not a table column: total: true over an Integer would force a number the document does not give (runner note 3). Scenario pairs: MINSK-06…09 (zones from the table), MINSK-10 (below-calibre: no zone, no duty), MINSK-11 (exactly 100 mm), MINSK-14/15 (withdrawal day 14 vs 15), MINSK-16/17 (monitoring from day one), MINSK-18/19 (Rada day 30 vs 31), MINSK-20/21 (dialogue first vs second day after withdrawal), MINSK-22/23 (release day 5 vs 6), MINSK-30/31 (closed window: undetermined vs violated with an established non-performance), MINSK-33…40 (readings), MINSK-46/47 (point ten).

Calculemus, Amended

This section introduces or draws together the experiments. It has no separate retained run record; consult the chapter-specific notes above.

Sources checked for this revision

Kazakhstan Civil Code, Article 297 was checked through the official Adilet API on 10 October 2026. It permits reduction of an excessive penalty at the debtor’s request. Clause 6.3 of the synthetic supply contract is a separate modelling choice.

The constitutional example uses the 2026 edition, adopted on 15 March and in force from 1 July, not the 1995 text. Its pinned Russian text is attributed to the official presidential source; the manuscript’s rule labels must be read together with the treaty exception.

The chess chapter uses the FIDE Laws effective from 1 January 2023. The first completed illegal move adds two minutes to the opponent’s clock in the standard rules; repetition also depends on the available legal moves.

Supplemental Harrier check, 10 October 2026

The original LP-33C and LP-35 examples used a T-shirt while assigning the transaction a hypothetical price of USD 700,008.50. The revised narrative uses the Harrier throughout. The supplemental inputs replace the item consistently, keeping that price and the expressly positive judicial finding. The archive contains the program, assertions, query, full result and comparison record for each retained call. These are hypothetical examples, not findings about the historical commercial. No new certificate-checking claim is made for these supplemental runs.

Both implementations produced identical canonical answer bytes for four supplemental calls: the negative finding remains NEITHER with no open judgment request; the definite Harrier offer without writing yields TRUE_ONLY for claim failure; with writing, claim failure is NEITHER and the delivery obligation is ACTIVE. Monetary decimals are compared using the established canonicalisation, so 700008.50 and 700008.5 are the same term.