Skip to content

v0.9.3

Choose a tag to compare

@wdhwg001 wdhwg001 released this 01 Sep 06:32
· 94 commits to main since this release

Everything since v0.9.1: two new labels, a token-accounting correction, and the documentation catch-up that motivated the extra patch. (v0.9.2 was tagged but never released; this release carries its changes. Saved numbers move in two places, both on purpose: label censuses split, and stats token totals drop.)

New in 0.9.2

  • Label agent.thinking.narration (taxonomy -> 27). Since at least Claude Code 2.1.170 the API can return a SECOND thinking block in an assistant message: a one-sentence, user-language summary of the reasoning beside it, distinguished only by a tag encoded inside the base64 signature (clients 2.1.241+ render it dim under the hint word summarized). csift counted these as reasoning. Classification is by signature alone, whole-string decoded, with every failure path degrading to plain agent.thinking; the decode is byte-gated so large-corpus search keeps its previous speed. Hits carry a [narration summary] marker; verbatim never replays narration; -t agent.thinking still selects both leaves, and pure reasoning is -t agent.thinking -T agent.thinking.narration. Historical records re-classify by design (narration exists on disk from 2026-06-10), conserving the label-census sum.
  • Label user.unsent (taxonomy -> 28). A message that was sent, esc-recalled into the input box, edited and re-sent leaves the ORIGINAL on disk, sharing the resend's parentUuid - previously collapsed to a bare count. Drafts are now searchable and censusable under their own leaf: a matching draft renders as its own annotated unit (<tok>-draft, JSON superseded_draft:true, null turn_index), turn numbering is untouched, and user.message counts are unchanged. Measured limits documented: a recalled-then-abandoned message has no resend sibling and is undetectable; a QUEUED text edited before dispatch never becomes a user record at all (the bytes survive only in queue-operation lines, csift non-records).
  • stats narration census: narration_blocks per model (block counts only - the token split is not derivable from the jsonl) and unknown_thinking_tags (a new API tag value surfaces without a csift release).

Fixed in 0.9.2

  • stats token sums: Claude Code repeats the identical message.usage object on every per-block record of one API message, and stats summed per record - an over-report measured at 2.2x to 3.5x per field and model. Sums now dedupe per transcript by message.id (per-field MAX, immune to the compaction-replay shape that rewrites an id with zeroed usage); id-less records count individually; the scope TOTAL still sums transcripts. Printed totals drop accordingly.

Fixed in 0.9.3

  • The root help's hand-written SUBCOMMANDS block still listed eleven commands, contradicting the generated list one screen below: status and wait join it and the span-default enumeration.
  • The status/wait help described owner-process liveness as a signal-0 probe - a mechanism that never shipped. Corrected to the ps-based probe with the /proc fallback.
  • The --siblings policy text gains the narration cap of 1, in the help and every reference document.
  • README catches up two releases: thirteen subcommands with status and wait rows, a live-status highlight, Quickstart rows for status / wait / user.unsent / the label census, and the 0.8.1+ flags in their rows. SPEC gains per-command sections for status (6.13) and wait (6.14) and rewrites its stats section to the deduped token accounting; SKILL's superseded-draft bullet and JSON reference catch up.

Verification

  • 965 unit + 496 e2e; line coverage 95.43% (above the 0.9.1 baseline); a scoped mutation census over the touched files (602 mutants, new code fully killed, residue classified); the narration decode byte-gated back to noise-level cost on a 685MB transcript. 0.9.3 changes no behavior (help strings and documents only); the full suite ran green on each of its three commits.
  • All eight platform binaries built at the v0.9.3 tag with the full test suite green on every Linux and Windows lane; macOS binaries built with path-privacy remapping.

Full details: CHANGELOG 0.9.2 + 0.9.3 and the SPEC section 6 ledgers.