Skip to main content
Status | Entity RuntimeWhat Entity Runtime ships today and what is planned, capability by capability.Entity Runtimereferenceentity-runtimereferenceadopterdeveloperreference

Status

44 capabilities are shipped and 5 are planned, as of 2026-10-07. Shipped means released in a tagged version and held by a named test or gate step in the repository; entity-runtime-docs generates this page and website/data/status.json from one list and fails when a test it names is gone. Planned means a draft on the plan, not built. The changelog records every change a user sees, release by release.

Kernel​

CapabilityStatusWhat it means
Deterministic decisions● shippedThe same definition, instance, operation and arguments give the same Decision and the same serialized bytes.
No IO in the kernel● shippedentity-core reads no clock, filesystem, network, environment or random source and depends only on serde and serde_json.
A refusal changes nothing● shippedA refused operation leaves the caller's instance untouched and produces no events.
Closed definition documents● shippedA misspelled key, an unknown condition operator or a condition with two operators is refused, not ignored.
Three-valued rules● shippedA comparison over a value nobody observed answers unknown, and the refusal names every missing path.
Accumulated validation● shippedAn object with several broken values reports every error, each with its path.
Prefix and suffix conditions● shippedstarts_with and ends_with compare bytes, case-sensitively, under every semantics (0.24.0).
Increment assignments● shippedA set value written as increment: n adds n to a required integer or number field inside the decision, exactly, and a sum the field's kind cannot hold is refused rather than wrapped.
Clear assignments● shippedA set value written as cleared: true leaves an optional field absent after the operation, names it in the decision's removed fields, and replays to the same bytes.
Typed references● shippedA ref field names another entity type; validate_all refuses a reference to a type nobody registered.
Named outcomes (service/1)● shippedOperations and creations carry ordered branches with guards, effects, responses and declared refusals; the kernel selects the branch.
Responses checked against their schema● shippedA service response is validated against its declared fields, alphabet and max_length included, before the decision is returned.
Optional values keep their absence (service/2)● shippedA copied optional argument stays absent, present or null through replay and retry.
Typed update actions (service/3)● shippedSet, Preserve and Remove actions apply after the outcome is selected and are kept in the record.
Logical identity and derived addresses● shippedA service definition may declare an identity field; derived creation computes the storage address from it.
Text length in service rules● shippedA service rule reads the length of a declared string as path.count, counted in Unicode scalar values with no normalization (0.27.0).
Text alphabets● shippedA service string field or argument may declare an alphabet; a value outside it is a validation error naming the first offending character, and generated contracts carry it as x-alphabet (0.27.0).
Verified decision replay● shippedreplay re-executes a complete decision record and refuses a record whose result was altered.
Legacy event folding● shippedrehydrate folds an event-only history and refuses an event no operation emits on its transition.

Storage​

CapabilityStatusWhat it means
Provider conformance suites● shippedOne black-box suite holds Memory and File stores to the same write contract.
File Store v2 and its migration● shippedentity store migrate-file copies a pre-0.15 store out of place; --dry-run writes nothing.
SQLite provider● shippedState, history and events commit in one SQLite transaction.
PostgreSQL provider● shippedThe same contract against a server the caller connects to; the gate runs it only when ENTITY_POSTGRES_URL is set.
Remote protocol● shippedA store behind a caller-provided transport; a server that did not answer is Unreachable, never Absent.
Hybrid authority and catch-up● shippedAuthority, read path, offline and divergence behaviour are declared; divergences replay later with catch_up.
Document queries● shippedentity-query pages one entity type by JSON containment; a cursor is bound to the query that issued it.

Recorded execution​

CapabilityStatusWhat it means
Asynchronous executor with exact retries● shippedentity-executor runs complete recorded commands over async storage ports; a retry returns the original result.
Explicit definition versions● shippedexecute_versioned and batch_versioned decide on a version the caller names (0.26.0).
Eventlog providers● shippedentity-eventlog keeps complete records on Eventlog file, sqlite, postgres and tree providers, provisioned explicitly before an open.
Forked subjects and merge● shippedOn a tree store two branches that both decided for one subject fork it; BatchAction::Merge joins the heads.
Recorded refusals● shippedAn executor built with recording_refusals records each refusal once and moves no subject.
Batch import of legacy histories● shippedimport_anchors establishes a batch of imported boundaries in one append group, and a retry of it settles.
Tree stores keep each text once● shippedA new tree store is eventlog-tree/2; an eventlog-tree/1 store reads the same after migration (0.25.0).
Provider-tracked reads on SQLite● shippedCapturePolicy::ProviderTracked reuses a verified observation SQLite proves unchanged (0.26.0); held to its own executable contract.
Open from a persisted checkpoint on SQLite● shippedWith durable open checkpoints enabled, a ProviderTracked open verifies the persisted checkpoint and the appends since it, not the whole history.

Surfaces​

CapabilityStatusWhat it means
The entity command● shippedValidate, inspect, graph, create, execute, list and store migrations from one Rust binary with typed exit codes.
Moves outcomes in YAML● shippedA service/1 outcome with a moves effect, written as the one-key mapping JSON uses, loads through entity-yaml and the entity command.
Eventlog File through the command● shippedA build with the eventlog-providers feature provisions and uses an Eventlog File store; no gate step builds that feature.
Lifecycle and reference graphs● shippedText, Mermaid, DOT, SVG and HTML, the same bytes on every run.
Entity pages, OpenAPI and AsyncAPI● shippedentity generate docs writes a static bundle and replaces only a directory it generated.
MCP tools over stdio● shippedSchema-derived create, get, list, events and operation tools; a stale call is refused and changes nothing.
Definition-specific Rust CLI● shippedentity generate rust-cli compiles a command with one subcommand per entity and operation.
Agent skill● shippedentity skill renders a version-stamped Agent Skills document; replacing a file needs --force.

Contracts​

CapabilityStatusWhat it means
Executable ESS contracts for five libraries● shippedentity-core, entity-store, entity-executor, entity-shell and entity-query are checked against their ESS scenarios by the gate.

Planned​

CapabilityStatusWhat it means
JSON Schema for the definition format○ plannedA schema generated from the Rust definition types.
Definition migrations○ plannedMoving stored instances from one definition version to another.
entity explain○ plannedWhy an operation is or is not permitted from the current state.
Named predicates and schema fragments○ plannedReusable named rules, reusable schema fragments and definition inheritance.
Definitions served over HTTP and NATS○ plannedRegistered definitions served as an HTTP and a NATS interface; today OpenAPI and AsyncAPI are contracts only.