Document v2.1.234; re-measure v2.1.170+ against the declared env registry - #7
Document v2.1.234; re-measure v2.1.170+ against the declared env registry#7lroolle wants to merge 1 commit into
Conversation
…stry Adds v2.1.234 (994 vars, +77/-8 vs v2.1.218) and corrects the extraction method for every release from v2.1.170 on. Why the correction. Builds since ~v2.1.170 do not read `process.env.X` at each call site. They declare the whole set once, typed, and install it as a proxy object, so call sites read `V.X` -- and `V` is a minifier-assigned name that changes between builds. A `process.env.`-only grep therefore undercounted a modern build by hundreds of names and, worse, reported a variable as *removed* when a build merely moved it behind the proxy. The published v2.1.197 -> v2.1.218 diff claimed 126 removals on that basis; re-measured it is 20, and sampled entries (CLAUDE_CODE_ENABLE_TASKS, OTEL_METRICS_EXPORTER, ANTHROPIC_BETAS) are all present in v2.1.218's registry. New extractors: - scripts/extract-registry.py -- reads the declared registry with its parser types. Detects the schema-helper identifier by frequency instead of hardcoding a minified name, so it survives rebuilds; refuses to report a registry for pre-v2.1.170 builds that have none. - scripts/extract-direct-reads.py -- literal process.env reads, with Bun's string-concatenation artifacts (BUN_ENVprocess, NODE_ENVContent) resolved by two data-derived rules. Anything still ambiguous goes to concat_artifacts.txt and is excluded rather than guessed at. extract-binary.sh now runs both, unions them into all_vars.txt, and applies the FLAGGED.md codename hold itself, so validate-extraction.sh gate (c) passes by construction rather than by hand. Corrected diffs (previously published numbers in parentheses): v2.1.139 -> v2.1.170 +163 (55) -1 (45) v2.1.170 -> v2.1.197 +68 (22) -9 (7) v2.1.197 -> v2.1.218 +94 (9) -20 (126) v2.1.218 -> v2.1.234 +77 -8 The +163 at v2.1.170 is a build-structure boundary, not a code change of that size: it is the first release with a registry, so the first whose full config surface is visible at all. v2.1.234 highlights: a 24-variable SELF_HOSTED_RUNNER_* block, 10 artifact variables, the harbor_kite cross-session messaging keys (CLAUDE_CODE_HARBOR_KITE, _HARBOR_KITE_CLOUD, _MESSAGING_SOCKET, _MESSAGING_TOKEN), and five new DISABLE switches. All six versions regenerated from one code path; all pass validate-extraction.sh; re-running the pipeline reproduces v2.1.234 byte-identically. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review note: how to read a 12k-line diff+12,347 across 43 files, but the human-authored surface is ~700 lines:
Reproduce any version: scripts/extract-binary.sh <binary> v2.1.234
scripts/compare-release.sh v2.1.218 v2.1.234
scripts/validate-extraction.sh v2.1.234v2.1.234 reproduces byte-identically on a re-run; all six versions pass The judgement call worth a reviewer's attentionThis PR rewrites already-published artifacts for v2.1.170, v2.1.197 and v2.1.218. That is history being amended, so it should be a deliberate call rather than a side effect. The case for doing it: the published v2.1.197→v2.1.218 diff claimed 126 removals that never happened. Leaving a known-wrong number in place, in a repo whose whole premise is "verifiable rather than asserted", is worse than amending it. Each affected The case against: a reader who cited the old counts now finds different ones with no tag to pin against. If you'd rather preserve the published record verbatim, the alternative is to leave v2.1.170–218 untouched and only apply the new method from v2.1.234 forward — at the cost of a version-over-version diff that isn't apples-to-apples. I went with correctness; say the word and I'll split it. |
Adds
v2.1.234(994 vars, +77/-8 vs v2.1.218) and corrects the extraction method for every release from v2.1.170 on.Why the correction
Builds since ~v2.1.170 do not read
process.env.Xat each call site. They declare the whole set once, typed, and install it as a proxy object:VandVeare minifier-assigned names that change between builds. Aprocess.env.-only grep therefore undercounted a modern build by hundreds of names and — worse — reported a variable as removed when a build merely moved it behind the proxy.The previously published v2.1.197 → v2.1.218 diff claimed 126 removals. Re-measured against the registry it is 20. Sampled entries from that list (
CLAUDE_CODE_ENABLE_TASKS,OTEL_METRICS_EXPORTER,ANTHROPIC_BETAS) are all present in v2.1.218's registry.Corrected diffs
The +163 at v2.1.170 is a build-structure boundary, not a code change of that size: it is the first release with a registry, so the first whose full config surface is visible at all. Labelled as such in the summaries.
New extractors
scripts/extract-registry.py— reads the declared registry with parser types (str/bool/triBool/int/enum, plus enum options and int defaults). Detects the schema helper by frequency instead of hardcoding a minified name, so it survives rebuilds. Refuses to report a registry for pre-v2.1.170 builds that have none (threshold guard) rather than emitting noise.scripts/extract-direct-reads.py— literalprocess.envreads, with Bun's string-concatenation artifacts (BUN_ENVprocess,NODE_ENVContent) resolved by two rules derived from the data, not a fix-up table. Anything still ambiguous goes toconcat_artifacts.txtand is excluded rather than guessed at.extract-binary.shruns both, unions them intoall_vars.txt, and now applies theFLAGGED.mdcodename hold itself — sovalidate-extraction.shgate (c) passes by construction instead of by hand.New artifact per version
registry.tsvregistry.txtdirect_reads.txtprocess.env.<NAME>readsall_vars.txtconcat_artifacts.txtstrings(1)boundary accidents, excludedv2.1.234 highlights
SELF_HOSTED_RUNNER_*— 24 new variables: lifecycle/drain timers, isolation and trust (LOCK_TO_ACCOUNT,TRUST_WORKSPACE,CONFINE_REPO_SETTINGS), pool and environment secrets, hooks, health port.harbor_kite) —CLAUDE_CODE_HARBOR_KITE,_HARBOR_KITE_CLOUD,_MESSAGING_SOCKET,_MESSAGING_TOKEN.DISABLE_*switches, and the three per-signal OTLP header overrides are back.Verification
validate-extraction.shpasses for all six.extractions/v2.1.234/byte-identically._held/remains gitignored.🤖 Generated with Claude Code