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
| Capability | Status | What it means |
|---|---|---|
| Deterministic decisions | ● shipped | The same definition, instance, operation and arguments give the same Decision and the same serialized bytes. |
| No IO in the kernel | ● shipped | entity-core reads no clock, filesystem, network, environment or random source and depends only on serde and serde_json. |
| A refusal changes nothing | ● shipped | A refused operation leaves the caller's instance untouched and produces no events. |
| Closed definition documents | ● shipped | A misspelled key, an unknown condition operator or a condition with two operators is refused, not ignored. |
| Three-valued rules | ● shipped | A comparison over a value nobody observed answers unknown, and the refusal names every missing path. |
| Accumulated validation | ● shipped | An object with several broken values reports every error, each with its path. |
| Prefix and suffix conditions | ● shipped | starts_with and ends_with compare bytes, case-sensitively, under every semantics (0.24.0). |
| Increment assignments | ● shipped | A 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 | ● shipped | A 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 | ● shipped | A ref field names another entity type; validate_all refuses a reference to a type nobody registered. |
| Named outcomes (service/1) | ● shipped | Operations and creations carry ordered branches with guards, effects, responses and declared refusals; the kernel selects the branch. |
| Responses checked against their schema | ● shipped | A 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) | ● shipped | A copied optional argument stays absent, present or null through replay and retry. |
| Typed update actions (service/3) | ● shipped | Set, Preserve and Remove actions apply after the outcome is selected and are kept in the record. |
| Logical identity and derived addresses | ● shipped | A service definition may declare an identity field; derived creation computes the storage address from it. |
| Text length in service rules | ● shipped | A 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 | ● shipped | A 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 | ● shipped | replay re-executes a complete decision record and refuses a record whose result was altered. |
| Legacy event folding | ● shipped | rehydrate folds an event-only history and refuses an event no operation emits on its transition. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Storage
| Capability | Status | What it means |
|---|---|---|
| Provider conformance suites | ● shipped | One black-box suite holds Memory and File stores to the same write contract. |
| File Store v2 and its migration | ● shipped | entity store migrate-file copies a pre-0.15 store out of place; --dry-run writes nothing. |
| SQLite provider | ● shipped | State, history and events commit in one SQLite transaction. |
| PostgreSQL provider | ● shipped | The same contract against a server the caller connects to; the gate runs it only when ENTITY_POSTGRES_URL is set. |
| Remote protocol | ● shipped | A store behind a caller-provided transport; a server that did not answer is Unreachable, never Absent. |
| Hybrid authority and catch-up | ● shipped | Authority, read path, offline and divergence behaviour are declared; divergences replay later with catch_up. |
| Document queries | ● shipped | entity-query pages one entity type by JSON containment; a cursor is bound to the query that issued it. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Recorded execution
| Capability | Status | What it means |
|---|---|---|
| Asynchronous executor with exact retries | ● shipped | entity-executor runs complete recorded commands over async storage ports; a retry returns the original result. |
| Explicit definition versions | ● shipped | execute_versioned and batch_versioned decide on a version the caller names (0.26.0). |
| Eventlog providers | ● shipped | entity-eventlog keeps complete records on Eventlog file, sqlite, postgres and tree providers, provisioned explicitly before an open. |
| Forked subjects and merge | ● shipped | On a tree store two branches that both decided for one subject fork it; BatchAction::Merge joins the heads. |
| Recorded refusals | ● shipped | An executor built with recording_refusals records each refusal once and moves no subject. |
| Batch import of legacy histories | ● shipped | import_anchors establishes a batch of imported boundaries in one append group, and a retry of it settles. |
| Tree stores keep each text once | ● shipped | A 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 | ● shipped | CapturePolicy::ProviderTracked reuses a verified observation SQLite proves unchanged (0.26.0); held to its own executable contract. |
| Open from a persisted checkpoint on SQLite | ● shipped | With durable open checkpoints enabled, a ProviderTracked open verifies the persisted checkpoint and the appends since it, not the whole history. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Surfaces
| Capability | Status | What it means |
|---|---|---|
| The entity command | ● shipped | Validate, inspect, graph, create, execute, list and store migrations from one Rust binary with typed exit codes. |
| Moves outcomes in YAML | ● shipped | A 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 | ● shipped | A build with the eventlog-providers feature provisions and uses an Eventlog File store; no gate step builds that feature. |
| Lifecycle and reference graphs | ● shipped | Text, Mermaid, DOT, SVG and HTML, the same bytes on every run. |
| Entity pages, OpenAPI and AsyncAPI | ● shipped | entity generate docs writes a static bundle and replaces only a directory it generated. |
| MCP tools over stdio | ● shipped | Schema-derived create, get, list, events and operation tools; a stale call is refused and changes nothing. |
| Definition-specific Rust CLI | ● shipped | entity generate rust-cli compiles a command with one subcommand per entity and operation. |
| Agent skill | ● shipped | entity skill renders a version-stamped Agent Skills document; replacing a file needs --force. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Contracts
| Capability | Status | What it means |
|---|---|---|
| Executable ESS contracts for five libraries | ● shipped | entity-core, entity-store, entity-executor, entity-shell and entity-query are checked against their ESS scenarios by the gate. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Planned
| Capability | Status | What it means |
|---|---|---|
| JSON Schema for the definition format | ○ planned | A schema generated from the Rust definition types. |
| Definition migrations | ○ planned | Moving stored instances from one definition version to another. |
| entity explain | ○ planned | Why an operation is or is not permitted from the current state. |
| Named predicates and schema fragments | ○ planned | Reusable named rules, reusable schema fragments and definition inheritance. |
| Definitions served over HTTP and NATS | ○ planned | Registered definitions served as an HTTP and a NATS interface; today OpenAPI and AsyncAPI are contracts only. |
More columns: swipe horizontally, or focus the table and use the arrow keys.