Skip to content
docs
Arxo ↗

LDC-E1347 — Transition carrier of a non-event type

For LLMs5 sections

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.

Arxo Law
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" });
Arxo Law
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 });

The engine reports this in its own wording:

Output
example.law:19:30: error LDC-E1347: transition carrier: type constructor "Memo" is not a §79 event and not an `Event` subtype — it has neither the `id` the §79.1 value table is collected by, nor `time` whose start orders the §161.1 history

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.