LDC-E1347 — Transition carrier of a non-event type
For LLMs5 sections
What it means
Section titled “What it means”A transition carries an event: the record in the carrier slot must be built from an event type or a subtype of the event family, with the identifier and timestamp the history is ordered by. A constructor from any other type — a plain record, a memo, anything without that shape — yields a fact no history can read, so the compiler stops at the constructor.
The repair is to carry an event: build the constructor from a declared event with its required fields. A well-carried transition reads under every history.
Example
Section titled “Example”language "law.core" version "0.2";package demo.diagnostics version "0.1.0";namespace "urn:law:demo:diagnostics";
entity Tenant;const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");record Memo { subject: Text;}procedure Review(t: Tenant) { state Open initial; state Closed terminal; transition Decide { from Open; to Closed; }}assert attempted_transition(Joe, Decide, Memo { subject: "note" });language "law.core" version "0.2";package demo.diagnostics version "0.1.0";namespace "urn:law:demo:diagnostics";
entity Tenant;const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");event Filed { tenant: Tenant;}procedure Review(t: Tenant) { state Open initial; state Closed terminal; transition Decide { from Open; to Closed; }}assert attempted_transition(Joe, Decide, Filed { id: "ev-1", time: @2026-01-01T00:00:00Z, tenant: Joe });Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.