Skip to content

Commit d0397ef

Browse files
authored
release: 0.9.0 — coverage counters removed, nullrun.shutdown() added (#45)
Version bump after PR #44: server-derived coverage replaces the in-process counter dicts (every llm_call span now carries metadata.tracked / metadata.streaming_skipped flags), and nullrun.shutdown() is the new public API for graceful WS close on script exit. CHANGELOG entry added above 0.8.3. The breaking-change list (coverage_report() removed, daemon thread gone, helper functions removed, two coverage tests deleted) is fully documented.
1 parent 921e917 commit d0397ef

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,49 @@ Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
77

88
---
99

10+
## [0.9.0] - 2026-06-29
11+
12+
Server-derived coverage replaces the in-process counter dicts.
13+
Counter-bump helpers are gone; every `llm_call` span now carries
14+
`metadata.tracked` and `metadata.streaming_skipped` flags so the
15+
backend's `coverage_pct` query can compute coverage from span
16+
metadata alone. Adds `nullrun.shutdown()` for clean WS close on
17+
script exit.
18+
19+
### Breaking changes
20+
21+
- `NullRunRuntime.coverage_report()` removed.
22+
- `NullRunRuntime._coverage_seen` / `_coverage_tracked` /
23+
`_coverage_streaming_skipped` instance attributes removed.
24+
- `NullRunRuntime.start_coverage_reporter()` daemon thread removed
25+
(no longer called from `init()`).
26+
- `_safe_bump_coverage` / `_bump_streaming_skipped` helpers removed
27+
from `nullrun.instrumentation.auto`.
28+
- `llm_call` wire shape: `metadata.tracked: bool` and
29+
`metadata.streaming_skipped: bool` are now authoritative; the
30+
separate `coverage_report` event is dropped.
31+
32+
### Added
33+
34+
- `nullrun.shutdown(timeout=2.0)`: sends a clean WebSocket close
35+
frame and drains in-flight events. Long-running scripts that
36+
exit via `sys.exit()` previously let the kernel RST the TCP
37+
socket, which the backend logged as WARN "Connection reset
38+
without closing handshake". Registering `nullrun.shutdown` in an
39+
`atexit` handler eliminates the noisy log. No-op if `init()`
40+
was never called.
41+
42+
### Tests
43+
44+
- `tests/test_llm_call_metadata_flags.py` pins the new contract:
45+
every `llm_call` span carries `metadata.tracked` or
46+
`metadata.streaming_skipped`. Coverage is now an out-of-process
47+
concern.
48+
- `tests/test_coverage_report.py` and `tests/test_coverage_seen_httpx.py`
49+
removed — coverage is no longer an SDK-side concept.
50+
51+
---
52+
1053
## [0.8.3] - 2026-06-29
1154

1255
Additive patch on top of 0.8.2. Closes the same silent zero-billing

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "nullrun"
7-
version = "0.8.3"
7+
version = "0.9.0"
88
# Long form used by PyPI page meta-description and search snippets.
99
# Kept under the 200-char preview threshold so the full line is visible
1010
# without an "expand" click. Keywords are matched against likely search

0 commit comments

Comments
 (0)