Release CodeTruss CLI v0.2.37 - #20
Merged
Merged
Conversation
Bring the public mirror up to the shipped release. The mirror sat at 0.2.36 while codetruss.com served 0.2.37; the newest attested tag should never trail the bytes the site hands out. Source is mirrored from the 0.2.37 release commit 7f007d8, not from in-progress work: 114 files across packages/cli and packages/analyzer-engine, zero content mismatches and zero file-mode mismatches against that commit's trees. `pnpm release:artifact` rebuilds the bundle to the exact published digest 082a03fe5dd2d9c516acc76504e0bb45bc7d3b5a1fa7308fb2d627ce07a3c627, and `pnpm release:verify` confirms it byte-for-byte against the immutable website archive now recorded in release-reference.json. The archive, its SBOM, and the latest.json manifest downloaded from codetruss.com are byte-identical to the ones built from this tree. - Add the immutable 0.2.37 archive, checksum, and SBOM to public/downloads and repoint the latest.* aliases and manifest. The 0.2.36 archive stays: it is a tagged, attested release. - Update release-reference.json to the published archive (082a03fe…), SBOM (deea220e…), and bundle (2e531188…) digests. - Mirror packages/cli/CHANGELOG.md verbatim, which carries the repair this release shipped: 0.2.36 had overwritten the `## 0.2.35 — 2026-08-07` heading, orphaning that release's notes. Both entries are restored, and the root CHANGELOG.md is regenerated from it so its release body stays byte-identical. - Version-pinned install and attestation examples in README.md now name 0.2.37. The receipt excerpt still says "a real 0.2.36 run" because that is what it is, and it remains accurate: the receipt's Analysis profile, "What the local security pass checked", "What did not run", and PASS-disclaimer template is byte-identical between the 0.2.36 and 0.2.37 bundles (sha256 4d0df00a…, compared from the two extracted dist/cli.cjs). Rewriting it to claim a 0.2.37 provenance would have been a claim without a run behind it. Checked against the extracted 0.2.37 binary rather than carried forward: `--version` reports 0.2.37, `--help` still lists `verify-policy trust-key`, and the analysis profile is still `local-registry-v2`. Every verifier used here was falsification-checked before its pass was trusted, with explicit exit-code capture rather than a pipeline status: - one flipped byte in the versioned archive: rejected - latest.tgz aliased to a different real release (0.2.36): rejected - version string edited inside the published SBOM: rejected - forged .sha256 sidecar: rejected - packages/cli/README.md drifted from the packaged copy: rejected - 0.2.36 heading deleted from the changelog: release build rejected - release version left undocumented in the changelog: release build rejected npm still trails at 0.2.24; publication remains a separate manual dispatch and the README and changelog say so. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughCLI 0.2.37 adds PID-safe Windows process cleanup, changelog release-chain validation, updated release documentation, and refreshed package artifacts, checksums, SBOMs, manifests, and release references. ChangesCLI 0.2.37 release
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/cli/scripts/changelog-policy.mjs`:
- Line 30: Update the changelog parsing around changelog.split to split on both
LF and CRLF line endings, ensuring heading matching works regardless of checkout
format. Add a CRLF-formatted fixture covering release heading detection for the
release:artifact flow.
In `@packages/cli/src/git.ts`:
- Around line 453-463: Replace the PID/liveness shutdown logic in
terminateVerificationProcessTree with a pre-established Windows job object or
equivalent containment mechanism that terminates descendants safely even after
the leader exits; apply the same mechanism to local-provider process handling in
packages/cli/src/local-command.ts lines 55-65. Update
packages/cli/test/verification-timeout.test.ts lines 58-87 to verify descendants
stop before the sentinel is removed, such as by detecting a stale heartbeat.
Ship the fix in a new released version, not a mirror-only source edit, and keep
published TypeScript byte-identical to the committed release archive.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 751902bd-0d68-4246-8ea5-9dba7615a5d7
📒 Files selected for processing (18)
CHANGELOG.mdREADME.mdpackages/cli/CHANGELOG.mdpackages/cli/package.jsonpackages/cli/scripts/build-release.mjspackages/cli/scripts/changelog-policy.mjspackages/cli/scripts/test-changelog-policy.mjspackages/cli/src/git.tspackages/cli/src/local-command.tspackages/cli/test/verification-timeout.test.tspublic/downloads/codetruss-cli-0.2.37.sbom.cdx.jsonpublic/downloads/codetruss-cli-0.2.37.tgzpublic/downloads/codetruss-cli-0.2.37.tgz.sha256public/downloads/codetruss-cli-latest.jsonpublic/downloads/codetruss-cli-latest.sbom.cdx.jsonpublic/downloads/codetruss-cli-latest.tgzpublic/downloads/codetruss-cli-latest.tgz.sha256release-reference.json
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.
Scope
7f007d8, publish the immutable 0.2.37 artifacts, propagate the changelog repair that release shipped, and repoint the version-pinned README examples.Validation
pnpm install --frozen-lockfile— lockfile up to datepnpm typecheck— clean (exit 0)pnpm release:artifact— rebuilt to082a03fe5dd2d9c516acc76504e0bb45bc7d3b5a1fa7308fb2d627ce07a3c627, byte-identical to the published archive.git statusshows no drift inpublic/downloadsafter the rebuild.pnpm test— 295 tests across 24 files, all passing, plus the deterministic package format, release integrity verifier, and new changelog policy suites (exit 0)pnpm release:verify—Verified immutable CodeTruss CLI 0.2.37 release (082a03fe…)pnpm test:install— clean global install, guided setup, all hook installers exercisedMirror fidelity: 114 files from release commit
7f007d8, zero content mismatches and zero file-mode mismatches. (112 at 0.2.36, plusscripts/changelog-policy.mjsandscripts/test-changelog-policy.mjs.)Bytes match the live site. The archive, SBOM, and
codetruss-cli-latest.jsonin this branch are byte-identical (cmp, exit 0) to the ones downloaded from codetruss.com this run.Falsification controls
Every verifier was proven to fail on tampered input before its pass was trusted. Exit codes were captured explicitly — a
| headpipeline reports head's status, so the same known-bad input reads as exit 0 through a pipe and exit 1 under direct capture. That was demonstrated, not assumed.codetruss-cli-0.2.37.tgzrelease:verifylatest.tgzaliased to a different real release (0.2.36)release:verifylatest.tgz does not match immutable codetruss-cli-0.2.37.tgzrelease:verify.sha256sidecarrelease:verifynot the canonical checksumpackages/cli/README.mddrifted from the packaged copyrelease:verifydoes not contain the current README.md## 0.2.36heading deleted from the changelogrelease:artifactrelease chain breaks between 0.2.37 and 0.2.35release:artifactEvery control was reverted and the tree reverified clean afterwards.
README claims, rechecked against the shipped binary
cli.cjs --versionon the extracted 0.2.37 archivecodetruss 0.2.37verify-policy trust-keyin--helpcli.cjs --helplocal-registry-v24d0df00a…)The receipt excerpt still reads "Abridged from a real 0.2.36 run" because that is its true provenance and the rendered sections are byte-identical under 0.2.37. Relabelling it 0.2.37 would have been a claim with no run behind it.
Privacy and network impact
The two new scripts are release-time changelog checks; they read
packages/cli/CHANGELOG.mdand nothing else.Release impact
packages/cli/CHANGELOG.mdmirrored verbatim, rootCHANGELOG.mdregenerated from it so its release body stays byte-identical,release-reference.jsonrepointed to the 0.2.37 archive, SBOM, and bundle digests.The changelog repair 0.2.37 shipped
CLI 0.2.36 overwrote
## 0.2.35 — 2026-08-07with its own heading, orphaning the entire local-SAST release's notes and erasing 0.2.35 from the history. 0.2.37 restores both entries and adds a build-time guard so it cannot recur:pnpm release:artifactnow fails unless the version being built documents itself and every release heading forms one unbroken descending chain. That guard is falsification-checked above, in both directions.npm
npm
latestis@codetruss/cli@0.2.24(verified against the registry this run — it is the only published version). Publication remains a separate, manually dispatched, reviewer-gated workflow.Summary by CodeRabbit