Markdown for LLMs
Evidence and admission
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Evidence and admission
## 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
- 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](/handbook/files/filled/eai-scope-card.md), which states the case shape the suite covers.
## 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](/handbook/files/fixtures/evidence-admission/README.md) 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
- 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
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
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:
```law
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
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
The run below was executed for this page with tool version `law` 0.1.0, semantics law.core/0.2:
```text
$ law test corpus/laws/kz/laws/employee-accident-insurance
law 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#GoalEstablishedCapacityLossHasPayout
total: 7 checked, 7 passed, 0 failed, 0 not run; code 0
```
The 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](/handbook/files/fixtures/evidence-admission/README.md) — one protected predicate, one policy, six scenes. Observed with the same tool version:
```text
$ law test docs/handbook/files/fixtures/evidence-admission
law 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 conflict
total: 6 checked, 6 passed, 0 failed, 0 not run; code 0
```
Each 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
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
Continue with [Time and calendars](/handbook/time-calendars/), which pins every dated fact and every norm window to an explicit axis.
## Sources
- [Evidence exercise](/tutorials/exercise-evidence/) — the drill behind the pass-or-fail pairs.
- [Duty](/tutorials/duty/) — the burden as a duty with bearer, aim, and window.
- [Four states of support](/tutorials/four-states/) — what each verdict preserves.
- [Reading an answer](/guide/reading-an-answer/) — where the typed report lives.
- [Diagnostics](/diagnostics/) — refusal codes and their meanings.
- [Readings and judgment](/handbook/interpretations-judgment/) — the previous stage.