Release CodeTruss CLI v0.2.50 - #43
Merged
Merged
Conversation
Syncs 0.2.50 from the private monorepo, and with it the source of 0.2.47, 0.2.48 and 0.2.49, which were merged there but never tagged. The website manifest already advertises 0.2.50 and a releaseUrl that 404s until this is tagged, so shipping it is what makes our own published verify instructions work again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncs the 0.2.50 source from the private monorepo, byte for byte against the monorepo git objects (168 paths compared by blob hash, 0 mismatches, 0 missing).
That digest was not copied into
release-reference.json:pnpm release:artifactwas run against this tree, resolved from this repository's own lockfile, and the rebuilt archivecmps clean against both the monorepo's copy and the bytes codetruss.com is serving right now — as does thedist/cli.cjsinside it. The samecmpagainst 0.2.49 exits 1, so the comparison is capable of failing.Why this one matters beyond the changelog
https://codetruss.com/downloads/codetruss-cli-latest.jsonalready advertises 0.2.50, and itsreleaseUrl—.../releases/tag/v0.2.50— currently 404s, because the release does not exist yet. So does the verify command the same manifest publishes. A user following our own published verification instructions fails today. Tagging this merge is what makes the advertised URL resolve.0.2.47, 0.2.48 and 0.2.49 were merged to the monorepo but never tagged, so this sync carries four versions of source in one step rather than one. Those three stay unreleased; there is precedent (0.2.42 is served with no tag). Only the current advertised version needs to be real.
What 0.2.50 is
dead-codespent 26 of a 27-second analysis and bought nothing with it. The pass concatenated every indexed JS/TS file into one string — 18.2 MB oncalcom/cal.com— then ran one regular expression per candidate module against the whole of it: O(candidates × corpus bytes), about 1,500 sweeps of an 18 MB string. It bought nothing because the pass has been saturated at its 20-finding output cap the entire time, so more scanning changed only which candidates were examined, never how many findings came out.It now reads the corpus twice, builds one index of the filename stems the repository actually references, and answers each candidate with a set lookup. Per the change's own measurements on
calcom/cal.com@b2c28a23(7,691 files, 517,420 LOC),dead-codedrops from 25.8s to 0.03s and the deterministic analyzer phase from 27.3s to 1.5s. The analyzer phase also gained a clock, so a pass that runs long is now visible instead of inferred.The findings are unchanged, and that was checked rather than assumed. The old expression matched a filename stem wherever it appeared — inside strings, comments, unrelated tokens — and a tidier index that quietly stopped doing so would begin reporting live modules as dead. The replacement reproduces that looseness exactly: on four pinned repositories (cal.com, astro, TanStack/query, hono) the reported findings, the findings withheld behind the cap, the completeness flags and the pass metrics are byte-identical before and after, and a differential run against the original expression agrees on all 60,600 generated cases. Stems containing whitespace or a quote character can straddle the delimiters the index keys on, so those candidates keep the original whole-corpus test — the fallback exists so the rewrite cannot narrow the rule by accident.
Also carried, from the three unreleased versions
for (const event of salesforceEvents)made everyevent.<anything>an untrusted source. Root names are now gated on an actual binding.Not touched
pnpm-workspace.yaml,.npmrc,pnpm-lock.yamland.github/are unchanged — the sync never writes mirror-owned files.public/downloads/grammars/is carried verbatim. No previously published artifact is modified:git statusunderpublic/downloads/reports nothing outsidecodetruss-cli-0.2.50.*and thelatestpointers, so 0.2.44/0.2.45/0.2.46 still have exactly the bytes they were attested with.Checked locally before opening
pnpm install --frozen-lockfileresolves with the lockfile untouched (the only source change topackages/cli/package.jsonis the version string).pnpm validatepasses against this branch: typecheck,release:artifact,pnpm test(34 files, 425 tests),release:verify, andtest:install. The rebuilt archive reproduced1f5fc0d4…exactly, andrelease-reference.json's three digests were each measured off the files rather than transcribed.The blob-hash comparison was run a second time against the pre-sync tree as a negative control: it reported 19 mismatched and 3 missing paths and exited 1, so a sync that silently dropped a file would not have passed.
🤖 Generated with Claude Code