Skip to content

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 GraphQL entity/entities/relations take asOf: 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. An as_of older 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-emit producer SDK + conformance kit (pkg/emit). Declare entities and relationships, call State/Delete — the SDK builds the spec-correct payload deterministically. conformance.Check validates 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 / relationChanged take a server-side ChangeFilter; a consumer that falls behind sees dropped > 0 on 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_history pointer.
  • GraphQL first clamped 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.