A 13-version static sweep of Claude Code’s bundled prose, looking for
the cliff the April bisection found at 2.1.23. The cliff is not there. Negative result,
reported loudly.
2026-06-09 · npm 2.0.0 → 2.1.87 + native 2.1.170 · static proxy · data in repo
The freshclaude program’s founding measurement: Claude Code’s per-turn token floor
jumped at version 2.1.23 (2026-01-29) and kept accreting — ~21,800 tokens of declarative
prose per cold start by mid-2026, against a 46-token floor for the pinned 2.1.22 bottle.
That was a runtime measurement. This gift asks the cheap adjacent question: can you
see the slopgularity in the shipped bundle itself — in the prose mass of
cli.js’s string literals?
No. Prose mass grows smoothly from 2.0.0 and is locally flat-to-falling
across the 2.1.22 → 2.1.23 boundary (1,944KB → 1,889KB). The growth that is visible
accelerates late — 2.1.55 onward — and the largest single jump in the npm channel is
2.1.70 → 2.1.87.
Directive density tells the same story with sharper teeth: occurrences of
“Do not” in the bundle nearly double from 2.1.40 (48) to 2.1.87 (82), and the
native 2.1.170 binary carries 228, with system-reminder references at 108
against the bottle’s 22.
The finding is the mismatch. The slopgularity is real at runtime
but invisible in static prose mass at the version where it landed. 2.1.23’s changes
(skill-invocation enforcement, system-reminder framing, auto-memory inference) reused
existing bundled prose and changed what gets injected per turn, not how much prose
ships in the bundle. Static analysis of the artifact cannot see the harness’s runtime
appetite. You have to run the thing — which is what the 46-token floor measurement did,
and why both measurements are needed: the bundle tells you what the harness could
say; the floor tells you what it does say, every turn, unprompted.
The numbers
version
cli.js MB
prose KB
IMPORTANT
system-reminder
“Do not”
2.0.0
9.4
1,163
35
15
26
2.1.0
11.0
1,658
47
18
36
2.1.10
11.0
1,744
51
18
39
2.1.20
11.7
1,953
70
22
43
2.1.22
11.7
1,944
70
22
43
2.1.23
11.7
1,889
70
23
42
2.1.26
11.6
1,771
70
23
42
2.1.30
11.3
1,826
74
24
46
2.1.40
11.5
1,890
77
24
48
2.1.55
11.8
1,863
73
22
66
2.1.70
12.0
2,028
72
23
63
2.1.87
13.0
2,213
69
38
82
2.1.170 †
222.1
8,714
114
108
228
† native Mach-O binary, different packaging — bytes/literals not comparable; marker counts roughly comparable
Caveats, loudly. (1) Static proxy: “prose mass” = string
literals ≥300 chars containing both “ the ” and “ to ” — a heuristic, not a parse;
it includes some non-prompt prose (error text, docs) and may miss concatenated or
compressed prompt fragments. (2) The 2.1.170 row is a whole Mach-O native binary, a
different packaging; its byte and literal counts are not comparable to npm rows
(marker counts are roughly comparable). (3) 2.1.24’s tarball failed extraction and is
omitted. (4) npm distribution ends at 2.1.87; later versions ship via the native channel
only, so the npm series cannot be extended rightward. (5) This page does not re-verify
the 46-token runtime floor or the ~21,800-token cold start; those are the April
measurements, taken on different instrumentation. (6) One sweep, one machine, no error
bars; the right follow-up is the runtime floor measured per version — the instrument
Thread b always wanted.
Reproduce
« for v in 2.0.0 … 2.1.87 »
curl -sL https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-$v.tgz | tar -xz package/cli.js
python3 measure.py package/cli.js # regex: ["'`]-literals ≥300 chars ∧ " the " ∧ " to "
# data: ~/cc/freshclaude/bench/data/slopgularity-static-2026-06-09.jsonl