Skip to content

Commit 507fb86

Browse files
awksedgreepclaude
andcommitted
Release v0.7.6: live tail for traces
Also records v0.7.5 in the changelog, which its release commit omitted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent da914b3 commit 507fb86

5 files changed

Lines changed: 55 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,53 @@ capability document remains authoritative for a particular binary pairing.
1010
See 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

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ default-members = [
1717
resolver = "2"
1818

1919
[workspace.package]
20-
version = "0.7.5"
20+
version = "0.7.6"
2121
edition = "2021"
2222
license = "MIT"
2323

servers/Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

servers/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ members = [
99
resolver = "2"
1010

1111
[workspace.package]
12-
version = "0.7.5"
12+
version = "0.7.6"
1313
edition = "2021"
1414
license = "MIT"
1515

0 commit comments

Comments
 (0)