33All notable changes to TRACER are recorded here. This project follows semantic
44versioning.
55
6+ ## Unreleased
7+
8+ ### Changed (breaking)
9+ - Require Python 3.12 or newer; drop support for Python 3.9–3.11. CI tests
10+ Python 3.12, 3.13, and 3.14, plus the minimum core dependencies on 3.12.
11+ - Allow NumPy 1.26.4 through 2.x so Python 3.14 can install compatible wheels.
12+ Require scikit-learn 1.4.2+ and joblib 1.3.2+ in core, and PyTorch 2.4.1+
13+ for the optional embedding extras. Remove the obsolete NumPy downgrade advice.
14+ - Build releases and run the documented Python sidecar on Python 3.14.
15+
16+ ### Removed (breaking)
17+ - The ` tracer ` command-line executable and command implementations. Use the
18+ Python APIs for fitting, scanning, updating, reports, and serving predictions.
19+ - The Tracer app client, authentication, and automatic app telemetry exporters
20+ in both Python and JavaScript. Existing app credentials no longer trigger
21+ uploads. Local recording, custom sinks, and explicitly configured generic
22+ HTTP exports remain available.
23+ - App connection instructions and command-line documentation. All current
24+ examples use the library APIs.
25+
626## 0.3.3 (2026-06)
727
828### Fixed
@@ -20,48 +40,27 @@ versioning.
2040 ` ValueError ` messages. Previously the count excluded blank lines, so
2141 the reported line was lower than the actual position of the bad record.
2242
23- ## 0.3.1 (2026-06)
24-
25- ### Changed
26- - ` tracer cloud ` commands that take a tracer (` get ` , ` training ` , ` analytics ` ,
27- ` label-space ` , ` traces ` , ...) now accept either the tracer slug or its id.
28- - ` tracer cloud scan ` works without logging in, matching the public web scan.
29-
30- ### Fixed
31- - ` tracer cloud keys create ` and ` tracer cloud ingest-keys create ` now honor
32- ` --json ` and emit the created record (including the one-time secret) as JSON.
33-
3443## 0.3.0 (2026-06)
3544
3645### Added
37- - ` tracer.watch ` : a decorator (and HTTP fallback) that observes the LLM calls
38- your pipeline already makes and ships them, free, to Tracer Cloud, where they
39- accumulate and auto-optimize once there are enough. Captures the full request
40- and response on the OpenTelemetry GenAI (` gen_ai.* ` ) schema, with pluggable
41- sinks (local file, Tracer Cloud, OTLP, or several at once).
46+ - ` tracer.watch ` : a decorator that records LLM calls on the OpenTelemetry
47+ GenAI (` gen_ai.* ` ) schema, with pluggable local and generic export sinks.
4248- ` @tracer-llm/watch ` : a zero-dependency JavaScript/TypeScript mirror of the watch
4349 decorator (async-context aware), so JS pipelines get the same one-line
4450 observability as Python.
45- - ` tracer cloud ` : a full command-line interface for Tracer Cloud, at parity with
46- the dashboard. Browser or password login, then manage tracers (create, quick
47- and bulk uploads, agentic ` onboard ` , rename, delete), training (retrain,
48- auto-retrain, promote/rollback, live status), routing (` route ` ), test
49- batteries, the model library, API keys, observability ingest keys, billing,
50- analytics, trace selection (` traces ` ), and a public ` scan ` .
5151- Lazy package initialization so ` import tracer ` stays fast and only pulls in the
5252 heavy pieces when you actually use them.
5353
5454### Changed
55- - ` tracer scan ` is more robust on messy uploads: tolerant input/label aliasing
56- and a clarification path so ambiguous files still produce a result.
55+ - Trace ingestion accepts additional input and label aliases.
5756
5857### Docs
59- - New guides for the watch decorator and the ` tracer cloud ` CLI .
58+ - New guide for the watch decorator.
6059
6160## 0.2.0 (2026-06)
6261
6362### Added
64- - ` tracer scan ` : a fast, conservative day-one read of a traces file, before any
63+ - ` tracer. scan() ` : a fast, conservative day-one read of a traces file, before any
6564 training. It groups traffic by similarity and measures, on a held-out slice it
6665 never saw, how much a near-free model can answer at your target agreement,
6766 using exact Clopper-Pearson bounds, with an optional per-1k and monthly savings
@@ -72,24 +71,20 @@ versioning.
7271 far from the training distribution (kNN distance, global and per-predicted-label
7372 thresholds) regardless of surrogate confidence, so off-distribution traffic goes
7473 to the teacher instead of getting a confident guess.
75- - ` tracer fit --trees ` to opt in the tree surrogates, and ` --skip ` to drop named
76- candidates from the zoo .
74+ - ` FitConfig.skip_candidates ` to drop named candidates from the zoo, including
75+ tree surrogates when a lighter sweep is desired .
7776- Trace loaders accept common key aliases for both input and label
7877 (` input/query/text/prompt/question ` and
7978 ` teacher/teacher_output/label/intent/output/answer ` ).
80- - Bring-your-own embeddings for ` tracer scan ` : local sentence-transformers by
81- default (` --embed-model ` ), a precomputed ` .npy ` (` --embeddings ` ), or your own
82- HTTP embedding endpoint (` --embed-url ` , with header and response-key options).
79+ - Bring-your-own embeddings for ` tracer.scan() ` : pass a precomputed array with
80+ ` embeddings= ` , or select a local sentence-transformers model with ` model= ` .
8381
8482### Changed
8583- The parity gate now certifies on an exact held-out lower bound instead of an
8684 in-sample point estimate, so a policy cannot clear the target by in-sample luck
8785 and then break the contract on real traffic. Coverage is now monotonic in the
8886 target, and a hybrid select-then-verify procedure recovers coverage at strict
8987 targets that a plain held-out split discarded.
90- - Tree surrogates (decision tree, random forest, extra-trees, gradient boosting)
91- are now off by default in ` tracer fit ` ; the default zoo is the fast linear and
92- MLP heads. Use ` --trees ` for hard, high-class-count tasks.
9388- The HTML report is restyled to the light Tracer theme, and the word "audit" is
9489 dropped across the report and docs.
9590
0 commit comments