Repository navigation
the honest ruler
Five measured defects fixed — every one found by weighing the corpus, not by reading release notes.
The headline: attachment bytes now measure the attachment, not the envelope. v0.3.0 counted each attachment record's whole JSONL line — uuid, timestamps, cwd, even a duplicated rendered field. Measured over 25,888 attachment events: 1.44× aggregate inflation, 30.5% of what tare reported was record envelope, not context. Worst type: output_style at 12.9×. v0.4.0 measures the attachment object's own payload. On the same corpus the total drops from 92.9 MB to 64.4 MB.
Also fixed:
skill_listingper-skill keys — the parser cut bullets at the first colon, so plugin-namespaced skills (desplega:brainstorm,frontend:*, …) never matched and their bytes landed on the plain-named skill above them. 60% of skill-listing bytes sat on the wrong key (sdd-verifyreported 5.17 MB; truth: 21.7 kB). Now matched by longest prefix against the declared names.- Cache-read cost — the 0.1× weight was a constant, but Claude Fable 5.1 / Mythos 5.1 price cache reads at 0.025×. Session-model dollar totals stay pinned to the measured bill; only the intra-session split was wrong, 4× over-weighting cache reads on the 3rd-most-common model in the corpus.
instructionsattachments (the CLAUDE.md/AGENTS.md chain — the largest keyed-opportunity attachment type) now attribute per file path under a newinstruction_filedimension.deferred_tools_record— the initial full tool catalogue — now attributes byentries[].nameundermcp_tool, closing the asymmetry with its_deltasibling.
Meaning shift, said out loud: every attachment share printed before this release was measured in the inflated unit. They are superseded, not diffable. The README's example report is regenerated with v0.4.0: attachments measure 64.4 MB / 19.3% of the corpus where v0.3.0's ruler said 24.8%.
Bonus: this release's research also checked Anthropic's "~100 tokens per Skill" claim against measured corpus data. It holds — median ~60 estimated tokens per skill per listing (p90 ~72), whole listing ~7.5k tokens, re-injections 1.1% of listing bytes. Analysis in thoughts/angel/research/2026-09-07-skill-token-claim-check.md.
190 tests, zero dependencies, stdlib only. TestReportReproducible, TestValidateRejects and TestReportMarkdownVariesOnlyByTimestamp all green.