Skip to content

Release CodeTruss CLI v0.2.38 - #21

Merged
DeliriumPulse merged 1 commit into
mainfrom
release/v0.2.38
Aug 7, 2026
Merged

Release CodeTruss CLI v0.2.38#21
DeliriumPulse merged 1 commit into
mainfrom
release/v0.2.38

Conversation

@DeliriumPulse

Copy link
Copy Markdown
Collaborator

Scope

  • Approved issue or context: the public mirror sat at 0.2.37 while codetruss.com served 0.2.38. The newest attested tag must not trail what the site distributes.
  • Intended change: mirror the 0.2.38 release commit 8fe9727, publish the immutable 0.2.38 artifacts, propagate the packaged changelog, and repoint the version-pinned README examples.
  • Explicitly out of scope: tagging (follows this merge), npm publication (separate manual dispatch), any 0.2.36 or 0.2.37 artifact or tag.

Validation

Exit codes were captured directly into variables, never read through a pipe.

Command Exit Result
pnpm install --frozen-lockfile 0 lockfile up to date, no drift
pnpm typecheck 0 clean
pnpm release:artifact 0 rebuilt to 8b6093e502e10402fa6f84cd2cac86c7db9c3e54502c7566f1635ce993b32ff7, byte-identical to the published archive; no drift in public/downloads after the rebuild
pnpm test 0 301 tests across 24 files, plus deterministic package format, release integrity verifier, and changelog policy suites
pnpm release:verify 0 Verified immutable CodeTruss CLI 0.2.38 release (8b6093e5…)
pnpm test:install 0 clean global install, guided setup, all hook installers exercised

Mirror fidelity: 114 files from release commit 8fe9727 across packages/cli and packages/analyzer-engine, zero content mismatches and zero file-mode mismatches. (packages/cli/SBOM.cdx.json is generated at release time and is not tracked here; every other file under packages/ is compared.)

Bytes match the live site. The archive, its SBOM, and codetruss-cli-latest.json in this branch are byte-identical (cmp, exit 0) to the ones downloaded from codetruss.com this run, and the versioned URL, the latest alias, and the digest recorded in latest.json all agree:

codetruss-cli-0.2.38.tgz    8b6093e502e10402fa6f84cd2cac86c7db9c3e54502c7566f1635ce993b32ff7
codetruss-cli-latest.tgz    8b6093e502e10402fa6f84cd2cac86c7db9c3e54502c7566f1635ce993b32ff7   (cmp exit 0)
latest.json .sha256 field   8b6093e502e10402fa6f84cd2cac86c7db9c3e54502c7566f1635ce993b32ff7

Falsification controls

Every verifier was proven to reject a known-bad input before its pass was trusted. Exit codes were captured explicitly — a | head pipeline 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 on a real tampered archive, not assumed: direct exit=1, '| head' exit=0.

Tamper Verifier Result
One flipped byte in codetruss-cli-0.2.38.tgz release:verify rejected (exit 1) — release metadata is not the canonical manifest for CLI 0.2.38
latest.tgz aliased to a different real release (0.2.37) release:verify rejected (exit 1) — latest.tgz does not match immutable codetruss-cli-0.2.38.tgz
Version string edited inside the published SBOM release:verify rejected (exit 1)
Forged .sha256 sidecar release:verify rejected (exit 1) — is not the canonical checksum
packages/cli/README.md drifted from the packaged copy release:verify rejected (exit 1) — does not contain the current README.md
Digest edited inside codetruss-cli-latest.json release:verify rejected (exit 1)
## 0.2.37 heading deleted from the changelog release:artifact rejected (exit 1) — release chain breaks between 0.2.38 and 0.2.36
Release notes left under ## Unreleased with no version heading release:artifact rejected (exit 1)
One flipped byte, checked against the sidecar shasum -a 256 -c rejected (exit 1)
GITHUB_REF_NAME=v0.2.37 against this package version release.yml tag-parity guard rejected (exit 1) — tag v0.2.37 does not match v0.2.38; the same guard accepts v0.2.38 (exit 0)

Every control was reverted and the tree reverified clean afterwards: git status empty, release:verify exit 0.

README claims, rechecked against the shipped binary

Claim Checked by Result
Version cli.cjs --version on the extracted 0.2.38 archive codetruss 0.2.38
verify-policy trust-key in --help cli.cjs --help listed
Analysis profile local-registry-v2 0.2.38 bundle present
Receipt rendering unchanged 0.2.37 → 0.2.38 receipt.ts, signing.ts, local-evidence.ts at both release commits byte-identical

The receipt excerpt still reads "Abridged from a real 0.2.36 run" because that is its true provenance, and the rendering code is byte-identical under 0.2.38. Relabelling it would assert a run that was never made. packages/cli/src/scope-inference.ts is the only source file that changed between the two release commits.

Privacy and network impact

  • No private code, credentials, keys, receipts, or customer data are included.
  • This change adds or modifies no network egress, telemetry, provider authentication, sync/upload behavior, or command execution.

The one source change narrows an in-memory scope-inference rule. It reads the working set that was already collected and touches no I/O.

Release impact

  • User-visible behavior: none from this repository. It mirrors an already-shipped release.
  • Release impact: none / patch (mirror sync)
  • Changelog, version, package, SBOM, release-reference, website, or documentation updates: all included. packages/cli/CHANGELOG.md mirrored verbatim, root CHANGELOG.md regenerated from it so its release body stays byte-identical, release-reference.json repointed to the 0.2.38 archive (8b6093e5…), its SBOM (182f1b01…), and the bundle digest (8d6039e2…).

What 0.2.38 fixes

With no allow globs configured, a single changed file could seat its own parent directory as an inferred scope root. On a turn touching several directories with one file each, every directory vouched for itself, so scope drift — the detection that runs on an unconfigured first run — could not fire at all. The scope was being read off the very change it was meant to judge. The single-file allowance stays, narrowed back to what it was introduced as in 0.2.32: the whole turn's fallback, not a grant each directory can claim for itself.

Receipt schema, inferred classification disclosure, and every signed Markdown rendering are unchanged, so receipts already on disk verify byte for byte.

npm

npm latest is @codetruss/cli@0.2.24 (verified against the registry this run — it is still the only published version). Publication remains a separate, manually dispatched, reviewer-gated workflow.

Bring the public mirror up to the shipped release. The mirror sat at 0.2.37
while codetruss.com served 0.2.38; the newest attested tag should never trail
the bytes the site hands out.

Source is mirrored from the 0.2.38 release commit 8fe9727, 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
8b6093e502e10402fa6f84cd2cac86c7db9c3e54502c7566f1635ce993b32ff7, 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 this run are byte-identical
to the ones built from this tree.

- Add the immutable 0.2.38 archive, checksum, and SBOM to public/downloads and
  repoint the latest.* aliases and manifest. The 0.2.37 archive stays: it is a
  tagged, attested release.
- Update release-reference.json to the published archive, its SBOM, and the
  bundle digest 8d6039e227c2b959dc509bd2f4cf02d1d874203fb53b911656d15916aa4dcc03.
- Mirror the one source change 0.2.38 carries — scope-inference.ts and its
  tests — plus the packaged changelog, and regenerate the root changelog from it
  so the release body stays byte-identical to what ships inside the archive.
- Repoint the version-pinned README install and verification examples. The
  receipt excerpt keeps its "real 0.2.36 run" provenance: receipt.ts, signing.ts
  and local-evidence.ts are byte-identical 0.2.37 to 0.2.38, so relabelling it
  would assert a run that was never made.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@DeliriumPulse, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 3 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 99bf253f-3a7a-4293-a574-c6bb365ea6ff

📥 Commits

Reviewing files that changed from the base of the PR and between f420be1 and 2dbc760.

📒 Files selected for processing (14)
  • CHANGELOG.md
  • README.md
  • packages/cli/CHANGELOG.md
  • packages/cli/package.json
  • packages/cli/src/scope-inference.ts
  • packages/cli/test/scope-inference.test.ts
  • public/downloads/codetruss-cli-0.2.38.sbom.cdx.json
  • public/downloads/codetruss-cli-0.2.38.tgz
  • public/downloads/codetruss-cli-0.2.38.tgz.sha256
  • public/downloads/codetruss-cli-latest.json
  • public/downloads/codetruss-cli-latest.sbom.cdx.json
  • public/downloads/codetruss-cli-latest.tgz
  • public/downloads/codetruss-cli-latest.tgz.sha256
  • release-reference.json

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@DeliriumPulse

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@DeliriumPulse

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@DeliriumPulse
DeliriumPulse merged commit c29284b into main Aug 7, 2026
10 checks passed
@DeliriumPulse
DeliriumPulse deleted the release/v0.2.38 branch August 7, 2026 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant