You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Toise v0.13.0 — one answer per question
Three places where the same question had two answers, or none. No wire-contract
break, no data migration; everything additive.
The ADR 0020 identity overlay reaches GraphQL as canonical(id, asOf). It was
reachable only over MCP, so a GraphQL consumer had to walk same_as itself and
pick its own threshold — which is how two read surfaces come to disagree about
whether two entities are one machine. The walk now lives in one place and both
surfaces call it. It is a top-level query rather than a field on Entity so asOf
selects the graph the belief is read from: a group is derived from edges, and
edges change.
host.id gets a normative rendering — a lowercase hyphenated UUID — and the
conformance kit fails on the raw 32-hex machine-id and on uppercase hex,
wherever the key appears. Same file, two renderings, two entities, and nothing
in the graph saying they are one. A producer already emitting another form must
coordinate the change rather than switch on upgrade.
The db.instance.id fallback is specified as <db.system.name>:<port>@<host.id>,
reusing the @<host.id> shape already defined for service.instance. The tier was
missing, so a producer invented address:port — byte-identical on every machine,
collapsing every local database into one entity whose attributes flipped between
servers. Local databases now gain a runs_on, entering their host's impact radius
for the first time.
The contract documents how to migrate an identity, and the trap that follows: the
cascade removes a bridging same_as along with the deleted entity, so a
current-state query reads zero after the cutover and looks like a failure to
emit. Verify with a dated read at the cutover instant.
Log format change: the liveness sweep line is now "liveness sweep expired stale
records" with entities= and relations= rather than a single count=, which
conflated the two under a label that said entities.
ADR 0034 proposes network.segment. Proposed, not implemented.
The conformance check reaches producers via pkg/emit/v0.8.0.