0.2.0¶
Released 2026-06-08.
A breaking wire-contract release. 0.2.0 realigns Toise onto the merged
OpenTelemetry entity-events specification
(specification/entities/entity-events.md, merged 2026-06-04) and removes the
transitional relation extension. What changes is the wire contract producers
emit; stored event-log data and the GraphQL/MCP query schemas are unaffected.
Toise is pre-1.0/alpha, so this is a clean break with no compatibility shim — update producers in lockstep. See the 0.1 → 0.2 migration guide.
Changed¶
- Relationships are embedded-only. Edges now ride embedded on the source
entity's state event as an
entity.relationshipsarray ({ relationship.type, entity.type, entity.id }naming the target); removal is by absence. The engine, change taxonomy, and bi-temporality are unchanged — the ingest boundary still translates each descriptor into a first-class relation event. - Ingest realigned onto the merged OTel entity-events spec. Entity events are
identified by the LogRecord
EventName(entity.state/entity.delete), not an attribute; attribute keys drop theotel.prefix and rename (entity.type,entity.id,entity.description); the liveness interval isentity.report.intervalin seconds (wasotel.entity.intervalin milliseconds — a unit fix); the relationship descriptor field isrelationship.type;entity.idis typedmap<string,string>. - Process identity follows the OTel semantic conventions —
{ process.pid, process.creation.time }, so PID reuse across a restart is a new process, not a mutated one.
Added¶
- Layered configuration for
toise-server— built-in defaults < YAML file (--config/TOISE_CONFIG) < environment (TOISE_*) < flags. Unknown YAML keys are rejected; secrets are sourced from the environment only. See Configuration. - GraphQL API reference — schema, Relay pagination, the bi-temporal
eventTime/recordedAt/asKnownAtmodel, worked queries, and the guardrails. See GraphQL API. connected_torelation type and topology-as-entities — ports asnetwork.interfaceentities linked byhas_interface, with bareconnected_toadjacency, so edges stay attribute-free under the embedded model.graph-vizexample — a live GraphQL-subscriptions client rendering the graph in real time.
Removed¶
- The
entity.relation.*relation extension — separate relation LogRecords, edge attributes, and the strict-purity routing path are gone. Relationships are embedded-only.
Fixed¶
- WebSocket subscriptions no longer hit the per-request timeout. The GraphQL subscription upgrade is routed around the timeout handler, so long-lived subscriptions work.
Upgrading¶
The breaking change is entirely in what producers emit. Update your producers
to the embedded-relationships, EventName-keyed wire shape described in
Ingesting data, then upgrade toise-server. The full,
field-by-field migration is in the
0.1 → 0.2 migration guide.