0.5.0¶
Released 2026-06-11.
The time-travel and producer-SDK release. The bi-temporal log becomes queryable in the past tense, failures become predictable, and producers get a real SDK with a byte-pinned published contract.
Not a wire-contract break, no data migration. Sharper behaviors (GraphQL
first clamp, TLS 1.2 floor, bounded tombstones) are in the
0.4 → 0.5 migration guide.
Added¶
- As-of time travel everywhere. Every graph-reading MCP tool takes
as_of, and GraphQLentity/entities/relationstakeasOf: the answer is the graph as it was at that instant, folded from the event log. "Show me db-07's dependencies as they were last Tuesday" is one call. Anas_ofolder than the retention horizon is refused explicitly. impact_of— the blast radius. Propagate a hypothetical failure and get back everything it takes down, nearest first, following each relation type's dependency direction (a host failing takes down what runs on it; connectivity breaks both ways). Zero impact is a first-class answer.describe_type— the per-type zoom: observed attribute keys with examples, empirical relation shapes and peers; endpoint shapes and failure direction for relation types. Eleven MCP tools total.- The
toise-emitproducer SDK + conformance kit (pkg/emit). Declare entities and relationships, callState/Delete— the SDK builds the spec-correct payload deterministically.conformance.Checkvalidates any producer's output in its own CI; the checked-in fixture v1 is the published contract, reproduced byte-for-byte by the SDK and accepted with zero rejections by Toise's own ingest tests. - Subscription filters and an honest gap signal.
entityChanged/relationChangedtake a server-sideChangeFilter; a consumer that falls behind seesdropped > 0on the next event instead of a silent gap. - Liveness survives restarts: producer references and relation deadlines ride the snapshot with absolute deadlines — a producer that died during the downtime is swept on the first tick after boot.
- Opt-in open vocabulary (
accept_unknown_types): well-shaped types outside the built-in registry flow end to end, counted on/metrics— a new producer lot no longer needs a lockstep Toise release. - Per-tenant maintenance observability:
toise_maintenance_runs_total{op,outcome,tenant}+ last-duration gauges.
Changed¶
- Projection memory is bounded by the live graph: the most recent 1024
tombstones per tenant stay readable by id; older deletions answer not-found
with an
entity_historypointer. - GraphQL
firstclamped to 200; TLS floor raised to 1.2 with per-handshake certificate reload; the store stamps an on-disk format version; boot logs any data-dir entry skipped as a non-tenant directory.