Separate fact time from record time
Intent
Section titled “Intent”I want to keep the date of a fact’s effect separate from the dates of observation and recording.
Wrong form and why it stays silent
Section titled “Wrong form and why it stays silent”evidence Doc: Record { status verified; observed_at @2026-09-03; }On an assertion the observed/recorded fields allow Date. On evidence the observed_at/recorded_at fields require Instant: neighbouring carriers have different contracts.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.d.r08 version "0.1.0";namespace "urn:recipe:d-evidence:08";
entity Person;entity Record;relation eligible(p: Person);assert eligible(entity_ref("urn:recipe:d-evidence:08:p")) { id "urn:recipe:d-evidence:08#entry"; origin external_snapshot; valid [@2026-09-01, @2026-09-10); observed @2026-09-03; recorded @2026-09-12;}Frozen execution scene
Section titled “Frozen execution scene”In the table P and Q are different entities of the page, C is a case; full identifiers are pinned in the scenes.
| Input on 13.09.2026 (a different date is named in the scene) | Question | Answer |
|---|---|---|
| before the start | truth(eligible(P)) | NEITHER / COMPUTED |
| inside the window | truth(eligible(P)) | TRUE_ONLY / COMPUTED |
| excluded right bound | truth(eligible(P)) | NEITHER / COMPUTED |
| knowledge cut before recording | truth(eligible(P)) | TRUE_ONLY / COMPUTED |
before validity window gives neither
test "before validity window gives neither" { given { context { legal_time @2026-08-31; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
} evaluate truth(eligible(entity_ref("urn:recipe:d-evidence:08:p"))); expect truth_status == NEITHER; expect evaluation_status == COMPUTED; expect issue(ASSERTION_OUTSIDE_VALID);}inside validity window establishes
test "inside validity window establishes" { given { context { legal_time @2026-09-05; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
} evaluate truth(eligible(entity_ref("urn:recipe:d-evidence:08:p"))); expect truth_status == TRUE_ONLY; expect evaluation_status == COMPUTED;
}excluded right bound rejects
test "excluded right bound rejects" { given { context { legal_time @2026-09-10; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
} evaluate truth(eligible(entity_ref("urn:recipe:d-evidence:08:p"))); expect truth_status == NEITHER; expect evaluation_status == COMPUTED; expect issue(ASSERTION_OUTSIDE_VALID);}early knowledge cut keeps established truth
test "early knowledge cut keeps established truth" { given { context { legal_time @2026-09-05; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-04T09:00:00Z; timezone "UTC"; }
} evaluate truth(eligible(entity_ref("urn:recipe:d-evidence:08:p"))); expect truth_status == TRUE_ONLY; expect evaluation_status == COMPUTED;
}Counterfactual
Section titled “Counterfactual”Diagnostic mutation (lower-case) — LDC-E1307.
Original fragment:
relation eligible(p: Person);Replacement:
relation eligible(p: Person);case Bad { evidence Doc: Record { status verified; observed_at @2026-09-03; } }The paired scenes above pin the change of outcome.
Boundary
Section titled “Boundary”On this path ingest filters valid by legal_time; observed/recorded are kept for audit, but themselves do not cut an assertion by knowledge_time. A historical snapshot is chosen by the supplier; explicit available for documents is shown in Accept admissible evidence. We do not promise an automatic bitemporal filter where there is none.
Date in evidence is checked by lowering the case (lower-case): a single check still does not execute transport. The refusal form in the sidecar places the document in case Bad. An ordinary assertion carries only a weak bound on knowledge time; availability of policy documents has a separate executable slot.
Pitfall
Section titled “Pitfall”On an assertion the observed/recorded fields allow Date; on evidence the observed_at/recorded_at fields require Instant: neighbouring carriers have different contracts.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.