Releases: B1ueMu3ic4m/approximately
Releases · B1ueMu3ic4m/approximately
Release list
approximately v2.22.0
- the stdio flush: the MCP server answers over real pipes. a subprocess smoke of the flagship entry point found the biggest bug of the night — the serve loop wrote each response with stdout.write and never flushed, and piped stdout block-buffers, so
approximately mcphung against every real client (Claude Desktop, Zed, anything that pipes). Every prior test drove handle_request in-process; the transport was never exercised. cmd_mcp now flushes per response, and a real-pipe subprocess smoke (tools/list, doctor, initialize) pins the transport forever. 1 test that could only exist as a subprocess.
Full Changelog: v2.21.4...v2.22.0
approximately v2.21.4
- Prometheus sees the tokens.
metrics --prometheusgainsapproximately_tokens_total— the store-wide usage counter Grafana can graph and alert on (rate > 0 on an idle store = something ran; sudden jumps = a burn to investigate), covering both the text and --json doors. 1 test.
Full Changelog: v2.21.3...v2.21.4
approximately v2.21.3
- status speaks tokens: totals and burns in the snapshot. the store health snapshot (status, --json, MCP status) carries total_tokens and the token-burn count — the last health surface that could not answer "how expensive is this store, and is anything burning". Prose gains the tokens line; 1 test.
Full Changelog: v2.21.2...v2.21.3
approximately v2.21.2
- the capabilities table tells the whole story. the README table had drifted — Log interop and Slowness rows were duplicated (an edit accident) and neither mentioned the new dialects; the duplicates are gone, interop reads OTLP/native, Slowness became "Slowness & token burn", and a Spend row joins the table — the money chain is on the front page.
Full Changelog: v2.21.1...v2.21.2
approximately v2.21.1
- fuzz round 15: annotations on the OTLP wire. analyst-controlled strings (author, note, verdict) now cross to a tracing backend — the round-4 contract applies. Event names sanitize to [a-z0-9_.-] (a hostile verdict cannot smuggle a name), missing wall-clocks fall back to the root span's start (never epoch 0), giant notes stay capped, random annotation fuzz roundtrips idempotently. Found and hardened en route: store.annotate crashed on non-string args (a direct API call with an int verdict) — arguments are coerced. 5 tests, fixed seed.
Full Changelog: v2.21.0...v2.21.1
approximately v2.21.0
- context audit: a nonsense budget is a loud error. the context-runtime audit (the subsystem the night had not touched) —
ContextRuntime(budget<=0)used to be silently honored as "evict everything"; it is now a ValueError, the degenerate-behavior pin upgraded to the real contract, and the oversized-single-pin semantics (over budget and kept, because an empty context is worse) documented by the neighboring test. The rest of the audit came back clean.
Full Changelog: v2.20.4...v2.21.0
approximately v2.20.4
- tokens in the tables people actually read. the report timeline gains a tokens column (unmetered steps show an honest dash) and the fleet card's busiest-agents table gains one too — the counts the token family runs on are visible where the traces are. 1 test.
Full Changelog: v2.20.3...v2.20.4
approximately v2.20.3
- the spool pass counts token burns too. ingest-time signals are now symmetric — the pass report counts failure modes AND token burns among the newly imported traces (JSON field + prose "token burns: N"), so a watch line flags the expensive run without waiting for the fleet pass. 1 test.
Full Changelog: v2.20.2...v2.20.3
approximately v2.20.2
- the sweep reaches the fixture doors. benchmark, calibrate and convert-mast join the JSON-door sweep via the shipped benchmark corpus — every --json door in the CLI is now swept with real argv, parseable output asserted.
Full Changelog: v2.20.1...v2.20.2
approximately v2.20.1
- diff/bisect cross stores: imported vs baseline.
similarhad --other-store; diff and bisect get it — compare an imported OTLP trace against a healthy reference that lives in a different store, without merging first. The OTLP flow's postmortem question ("what diverged from the baseline?") now answers across stores. 3 tests. - the version bump that silently no-oped. the cross-store round's sed looked for
version = "2.19.0"while main already carried 2.20.0 — the bump matched nothing, the merge shipped at 2.20.0, and autotag correctly said "nothing to release". The lesson is now mechanical: bumps use an any-version regex and are verified with grep in the same breath. Item 253 rides this release.
Full Changelog: v2.20.0...v2.20.1