Release

Announcing Toise 0.17.0 — saying what an answer is worth

Released 2026-09-21 · written up 2026-09-30

Some values look more solid than they are. An entity id looks durable; a nanosecond timestamp looks exact. 0.17.0 publishes what Toise already knew about both, so a consumer can use them safely. Additive: new fields and an argument that accepts more forms. Every existing call keeps working.

A handle that survives failover

An entity id is minted locally by each replica, and minted again when an entity returns after the resurrection window. A consumer that keeps one across a failover or an outage can find it resolves to nothing.

Every entity now carries identity_fingerprint (identityFingerprint on GraphQL). It derives from the identifying attributes alone, so it is identical on every node and across incarnations. Every read surface that accepts an id accepts a fingerprint. The id stays, documented for what it is: local to one node and one incarnation.

Reach an entity by the identity you hold

Asking about a known host used to take two calls: one to trade host.id for an entity id, one for the real question. The handle argument now also accepts the identity written inline:

host:host.id=6ccc0dcc-...
service.listener:service.endpoint=h1:80/tcp,network.transport=tcp

No tool grows a new parameter. The three forms cannot be confused: an id carries no colon, a fingerprint a colon and no =, an identity both. Matching stays exact.

Timestamps that state their resolution

event_time is when a producer observed a fact, not when the fact became true. Without knowing the producer's cadence, a consumer can read too much into a gap: 47 seconds between two observations says little about order when the cadence is 30 seconds.

The engine already knew each producer's declared interval. It is now published: get_entity and entity_history carry a resolution block, and GraphQL exposes Entity.resolution. It states the coarsest interval among the producers referencing the entity, and it is absent rather than approximate when none is declared. It ships as a sentence as well as a number, so it is read the right way.

Also in this release


Get it

go install github.com/toise-dev/toise/cmd/toise-server@v0.17.0

Binaries for linux and darwin (amd64 / arm64) are on the release, each with a checksum, and the container image is on GHCR. See the 0.17.0 docs and the changelog.