Release CodeTruss CLI v0.2.45 - #39
Merged
Merged
Conversation
Syncs the 0.2.45 source from the private monorepo.
codetruss-cli-0.2.45.tgz
sha256 0ced9ca92b28a96faf997a1c45911fd2dd77bb4107fdd3153d88692139c714ce
That is the digest the website serves and the digest in release-reference.json,
rebuilt from this tree and compared rather than copied across.
0.2.45 closes a suppression bypass. `codetruss-ignore: <reason>` makes one
promise — that a PASS can never be reached by editing text — and it did not
hold. `markerFor` checked comment-only placement on the line ABOVE a finding,
so on the finding's own line the marker counted wherever those characters
appeared, including inside a string literal. A minified bundle is one physical
line, so one planted string dismissed every finding in the file, and dismissed
findings stop gating the verdict. Markers are now read only from a comment,
decided by the same classifier the comment analyzers ship; excluded and
generated content is not read at all; and the reason is redacted against the
credential patterns before it is quoted onto a signed receipt. Anyone on an
older CLI still has that hole.
Also in this release: the size analyzer counted comments as "lines of code",
which manufactured severity a customer could disprove with `wc`, and the
open-redirect rule matched only two method names, so it could not see
`<Link href={returnTo}>`, `location.href = next` or `router.push(next)`.
No dependency moves: package.json, pnpm-lock.yaml, pnpm-workspace.yaml, and
.npmrc are untouched, and public/downloads/grammars/ is carried verbatim.
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.45 source from the private monorepo, byte for byte against the monorepo git objects (198 files compared by blob hash, 0 mismatches).
That is the digest the website serves today and the digest now in
release-reference.json. It was not copied into the reference:pnpm release:artifactwas run against this tree and the rebuilt archivecmps clean against bothcodetruss.com/downloads/codetruss-cli-0.2.45.tgzand the monorepo's copy. The samecmpagainst 0.2.44 exits 1, so the comparison is capable of failing.What 0.2.45 is
codetruss-ignore: <reason>makes one promise — that aPASScan never be reached by editing text — and it did not hold.markerForchecked comment-only placement on the line above a finding, so on the finding's own line the marker counted wherever those characters appeared, including inside a string literal. A minified bundle is one physical line, so a single planted string dismissed every finding in the file, and dismissed findings stop gating the verdict.Markers are now read only from a comment, decided by the same classifier the comment analyzers ship. Where no classifier covers the language, the marker is honored only on a line whose every preceding character is whitespace or comment punctuation. Generated, vendored, and excluded content is no longer read at all — that text had no author who could have meant it. And the reason, which runs to end of line and lands verbatim on a signed receipt and in the hosted database, is redacted against the credential patterns before it is quoted.
This is release-blocking rather than routine: every user on 0.2.44 or older has a verdict that can be edited into a pass.
Two more defects ride along. The size analyzer measured non-blank lines and printed the number as "lines of code", which manufactured severity a reader can disprove with
wc— two of this repository's own HIGH findings existed only because of it. And the open-redirect rule matched two method names, so it could not see<Link href={returnTo}>,location.href = nextorrouter.push(next), which is how redirects are written here; it missed a live open redirect in this codebase on that basis.Not touched
package.json,pnpm-lock.yaml,pnpm-workspace.yamland.npmrcare unchanged — 0.2.45 moves no dependency.public/downloads/grammars/is carried verbatim, and no previously published artifact is modified.Checked locally before opening
pnpm validatepasses against this branch: typecheck,release:artifact,pnpm test(34 files, 425 tests),release:verify, andtest:install. The rebuilt archive reproduced0ced9ca9…exactly, andrelease-reference.json's three digests were each recomputed from the files rather than transcribed.🤖 Generated with Claude Code