Changes for version 0.09 - 2026-09-16

  • Fixes: the flamegraph dropped the ROOT SPAN of every trace. The store hands back a parent span id and the trace page ran it through the resolver written for Trace::analyse's parent INDEX, so the root indexed itself, assembly read that as a cycle and the frame builder skipped it. Both were called `parent`; they are `parent_span_id` and `parent_index` now, so the two cannot be confused again. The waterfall beside it was always right, which is why this went unseen.
  • Fixes: collapsing a subtree in the waterfall hid the wrong rows. Rows are emitted chronologically, so descendants are not adjacent when sibling subtrees overlap in time; it walked forward while depth was greater. Collapse is by parent identity now, and every row carries data-parent.
  • Fixes: a span in a cycle has depth -1 and was indented -9px, out of its own cell. Clamped, and such a row no longer collapses.

Modules

an OpenTelemetry observability and logging backend
rule evaluation, and the two states everybody forgets
where the configuration lives
configuration in PostgreSQL
the default configuration store
the settled part of a window, computed once
reading and writing what the screens are configured with
a panel is an OQL string with a title
OTLP protobuf, read as records
the alert evaluation pass, and its delivery
planning and running a query
aggregated self-time across traces
poll the services being observed
the OTLP receiver
ingest keys
three limits, failing three different ways
the log tail, and what it admits losing
compressed log blocks and the trigram filter
laying out the service graph
compressed metric chunks
query results as chart figures
one query language over traces, metrics and logs
compaction, rollups and deletion
grouping, silences, and the outbox key
chart primitives
what a query can decide without reading
one segment carrying all three signals
immutable segments, series ids and the symbol table
sealing, and the read path over what is sealed
where a webhook is allowed to point
the tenant seam, kept honest
spans, trace assembly and the service graph
the screens, and what they are given to render
the write-ahead log
the settled chunks, computed where nobody is waiting
mount Punk::Observe in a Punk application