@@ -10,11 +10,53 @@ capability document remains authoritative for a particular binary pairing.
1010See the [ compatibility statement] ( docs/COMPATIBILITY.md ) and
1111[ upgrade guide] ( docs/UPGRADE.md ) .
1212
13- <!-- release-target: 0.7.4 -->
13+ <!-- release-target: 0.7.6 -->
1414
1515## [ Unreleased]
1616
17- No changes recorded after ` 0.7.4 ` .
17+ No changes recorded after ` 0.7.6 ` .
18+
19+ ## [ 0.7.6] — 2026-08-20
20+
21+ ### Added
22+ - ** Traces gained a live tail** : ` GET|POST /select/timeless/api/spans/tail `
23+ streams admitted spans as ` application/x-ndjson ` , the streaming twin of
24+ ` /select/timeless/api/spans ` . Logs have had one since the query surface
25+ landed; traces had no route and no hub behind one, so a subscriber had
26+ nothing to attach to and simply received nothing — indistinguishable from a
27+ system producing no spans.
28+
29+ Filters are the search surface's live-matchable parameters under the same
30+ names — ` service ` , ` name ` , ` kind ` , ` status ` — so one filter moves between a
31+ search and a tail unchanged. Time bounds and paging are deliberately absent:
32+ a live stream is already bounded by now, and there is no page to skip to.
33+ ` attributes ` additionally takes a JSON object of span attributes that must
34+ all match exactly, which is how a stream pins itself to one host.
35+
36+ Matching happens server-side, per subscriber, before serialisation. A row
37+ carries the dashboard row shape plus ` service ` , so a streamed span and a
38+ searched one describe the span identically. A ` kind ` or ` status ` outside the
39+ enumerated set, or an ` attributes ` value that is not a JSON object of
40+ scalars, is rejected rather than ignored: accepting ` kind=srever ` would
41+ stream nothing and look exactly like a system with no matching spans.
42+
43+ Spans publish only once storage has durably accepted the batch, so a
44+ subscriber never sees a span a search would not return. Slow consumers drop
45+ spans rather than backpressuring ingest.
46+
47+ - ` timeless_traces_tail_spans_sent_total ` ,
48+ ` timeless_traces_tail_spans_dropped_total ` and
49+ ` timeless_traces_tail_active_subscribers ` in the traces ` /metrics `
50+ exposition — what distinguishes a quiet system from a saturated subscriber.
51+
52+ ## [ 0.7.5] — 2026-08-20
53+
54+ Recorded after the fact; the release itself carried no changelog entry.
55+
56+ ### Fixed
57+ - The metrics scrape endpoint reported ` samples: 0 ` for every successful
58+ scrape. Samples are now counted from the body before it moves into the
59+ ingest queue, so the number reflects what was actually scraped.
1860
1961## [ 0.7.4] — 2026-08-15
2062
0 commit comments