Evidence and admission
Task and place
Section titled “Task and place”Until now a stated fact was believed on sight. In a dispute that no longer holds: the question becomes what counts as established at all. This stage sits at the scenarios and case steps, after the rules are fixed. It separates three layers — admission of support, burden of proof, and truth of the matter — so that a lost document is never mistaken for a refuted fact.
Inputs
Section titled “Inputs”- The case material: documents with publisher, dates, content hash, and content fields; verifications pinning someone else’s hash check; supports linking documents to statements.
- The admission policy: package rules saying which supports count, written before the case arrives.
- The running example suite as the no-policy baseline: plain claims, no documents, all seven passing.
- The filled EAI scope card, which states the case shape the suite covers.
Actions
Section titled “Actions”- Keep four words apart: a claim is a stated literal with its supply note; a document is a published item with a hash; a support links one document to one statement, for or against; admission is the policy decision that a support counts. For a protected predicate under a selected policy, only an admitted support gives the literal any support; unprotected predicates still establish by plain claim, policy or no policy.
- Judge each support on its own. One document may be admitted for one statement and rejected for another. A rejected support gives support to neither side — and a rejection is never proof of the denial.
- Run the pass-or-fail pairs below through the policy. The starred rows are proven by the admission drill quoted on this page; the rest restate the evidence drill’s taxonomy.
| Presented material, policy selected | Support verdict | Statement |
|---|---|---|
| bank confirmation plus matching hash check plus support ★ | admitted | payment established |
| self-issued confirmation, everything else in order | rejected | payment undecided |
| confirmation with no hash check | rejected | payment undecided |
| check whose hash mismatches the document ★ | rejected | payment undecided |
| confirmation about another purchase ★ | rejected | payment undecided |
| bare claim of the protected payment fact, no document ★ | blocked | payment undecided |
| admitted reversal, refuting side ★ | admitted | payment denied |
| admitted confirmation and admitted reversal together ★ | both admitted | payment conflicted |
- Read the typed report, not the graph, for why a support failed: each support gets a decision with causes, each document gets availability, currency, and authenticity checks with a hash-binding flag.
- Place the burden separately as a duty over an epistemic aim: who must present what by when. An unmet burden leaves the duty unfulfilled — still no denial of the fact. Unproven and absent are different layers, and nothing in the core bridges them for free.
Decisions
Section titled “Decisions”- Which predicates are protected — established only through admitted support — and which stay open to plain claims.
- The acceptance rules: what counts as a sound document and a well-formed support.
- Where the burden duties sit, with bearers, aims, and windows.
Artifact
Section titled “Artifact”The artifact is the admission policy with its acceptance rules plus a reading of one report per support: admitted or rejected, with causes. The running example contributes the degenerate artifact: no policy at all, so every fact enters by plain claim and there is nothing to admit or reject.
EAI example
Section titled “EAI example”The employee accident insurance package, version 0.1.0, language 0.2, zero dependencies, explicit local imports, pinned to edition EAI_EDITION with materialization PINNED_UNOFFICIAL_COPY — an Adilet API copy retrieved 2026-09-13, sha256 pinned, local copy kept in the package — selects no evidence policy: a search over the package sources finds no policy declaration. Every claim in both suites carries the plain supply note, checked across all seven claims:
test "EAI-LOSS-THIRTY-QUALIFIES" { given { context { decision_time @2026-09-13T12:00:00+05:00; knowledge_time @2026-09-13T12:00:00+05:00; legal_time @2026-09-13; timezone "Asia/Almaty"; } assert "loss": capacity_loss_percent(entity_ref("urn:kz:eai:worker:30"), 30) { origin case_input; } } evaluate truth(insurance_payout_due(entity_ref("urn:kz:eai:worker:30"))); expect truth_status == TRUE_ONLY;}With no policy selected, stated facts establish directly: loss thirty has payout while loss twenty-nine stays undecided, the class twenty-two premium derives 29600 KZT on an insured sum of one million, the late penalty derives exactly 3000 KZT.
Say plainly what that proves and what it does not. It proves the rules behave as written under the stated facts. It does not prove any document authentic, any loss figure true, any payroll figure real, or any burden met — the suite presents no documents, runs no checks, and assigns no burden. Those would need a policy, material, and duties the package does not contain.
Pitfall
Section titled “Pitfall”Four confusions, one root: treating a weak record as a strong one. A rejected support read as a refutation. A document certifying itself through its own status field — self-description grants no privilege. A bare claim of a protected predicate expected to work while a policy is selected — it is blocked, with an informational flag. An unmet burden read as a denial of the fact.
Verification
Section titled “Verification”The run below was executed for this page with tool version law 0.1.0, semantics law.core/0.2:
$ law test corpus/laws/kz/laws/employee-accident-insurancelaw test kz.corpus.employee_accident_insurance: world kz.corpus.employee_accident_insurance ok [kz.corpus.employee_accident_insurance#authored] tests/core.lawtest / EAI-EMPLOYER-MUST-INSURE ok [kz.corpus.employee_accident_insurance#authored] tests/core.lawtest / EAI-MINING-CLASS-22-PREMIUM ok [kz.corpus.employee_accident_insurance#authored] tests/core.lawtest / EAI-LOSS-THIRTY-QUALIFIES ok [kz.corpus.employee_accident_insurance#authored] tests/core.lawtest / EAI-LOSS-TWENTY-NINE-IS-NOT-INSURER-PAYOUT ok [kz.corpus.employee_accident_insurance#authored] tests/core.lawtest / EAI-SPECIAL-LATE-PAYMENT-PENALTY ok [kz.corpus.employee_accident_insurance#authored] tests/goals.lawtest / GoalEstablishedCapacityLossHasPayout-world ok [kz.corpus.employee_accident_insurance#authored] tests/goals.lawtest / urn:kz:corpus:clir:employee-accident-insurance#GoalEstablishedCapacityLossHasPayouttotal: 7 checked, 7 passed, 0 failed, 0 not run; code 0The baseline proves the degenerate half: with no policy selected, every stated fact establishes directly and all seven pass. The policy half is proven by the admission drill — one protected predicate, one policy, six scenes. Observed with the same tool version:
$ law test docs/handbook/files/fixtures/evidence-admissionlaw test demo.handbook.evidence_admission: world demo.handbook.evidence_admission ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / admitted support establishes ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / rejected support leaves undecided ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / hash mismatch leaves undecided ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / bare claim of protected fact is blocked ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / admitted refuting support denies ok [demo.handbook.evidence_admission#authored] tests/admission.lawtest / admitted for and against conflicttotal: 6 checked, 6 passed, 0 failed, 0 not run; code 0Each scene was inspected in the suite file; the material, the verdict, and the policy rule that decides it read:
| Scene | Presented material | Statement | Deciding rule |
|---|---|---|---|
| admitted support establishes | confirmation of purchase 42, matching hash check | TRUE_ONLY | AcceptPayment fires |
| rejected support leaves undecided | genuine confirmation about purchase 99 | NEITHER | identity conjunct fails, support not accepted |
| hash mismatch leaves undecided | check pins a hash the document lacks | NEITHER | ev_authentic never projects, SoundDocument fails |
| bare claim of protected fact is blocked | assert paid(42), no document | NEITHER | predicate protected, claim contributes nothing |
| admitted refuting support denies | accepted reversal alone | FALSE_ONLY | AcceptReversal fires |
| admitted for and against conflict | accepted confirmation plus accepted reversal | BOTH | both fire; conflict reported, not resolved |
Read the report behind the table: the two NEITHER rejections fail at different rules — identity versus soundness — and the suite distinguishes them by construction, since each scene varies exactly one defect. Denial arrives only through the fifth scene’s admitted reversal; no rejection in the file proves a denial.
Criterion: the baseline passes seven of seven with no policy, and the drill passes six of six with the policy selected — the admitted pair, two distinct rejections, the blocked bare claim, the denial, and the conflict. A package that adds a policy must show the same shape passing before it claims any admission behavior.
Limits
Section titled “Limits”Admission answers whether a statement is established on what was presented. It never answers who had to present — that is the burden duty — and never answers whether the matter is really so. An acceptance rule reads only the policy’s own slots and heads: the phase that decides admissibility may not depend on the derivation it makes possible. And a bare NEITHER after a rejection says nothing about the other side; denial always needs its own admitted support.
Next step
Section titled “Next step”Continue with Time and calendars, which pins every dated fact and every norm window to an explicit axis.
Sources
Section titled “Sources”- Evidence exercise — the drill behind the pass-or-fail pairs.
- Duty — the burden as a duty with bearer, aim, and window.
- Four states of support — what each verdict preserves.
- Reading an answer — where the typed report lives.
- Diagnostics — refusal codes and their meanings.
- Readings and judgment — the previous stage.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.