Skip to content

Release CodeTruss CLI v0.2.39 - #22

Merged
DeliriumPulse merged 2 commits into
mainfrom
release/v0.2.39
Aug 7, 2026
Merged

Release CodeTruss CLI v0.2.39#22
DeliriumPulse merged 2 commits into
mainfrom
release/v0.2.39

Conversation

@DeliriumPulse

@DeliriumPulse DeliriumPulse commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

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

Source is mirrored from the 0.2.39 release commit 4dbd312, not from in-progress
work — main has since moved on to unrelated changes: 117 files across
packages/cli and packages/analyzer-engine, zero content mismatches and zero
file-mode mismatches against that commit's trees. The count grows from 114
because the registry gains comment-slop.ts, overengineering.ts, and the
shared comments.ts lexer they read; packages/cli/SBOM.cdx.json stays
generated and gitignored here, as it has since 0.2.13.

pnpm release:artifact rebuilds the bundle to the exact published digest
feb9a7454abaf2c25bdeade2a6e638137290df8c0725a447e3aca04aef2bd8f0, 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.39 archive, checksum, and SBOM to public/downloads and
    repoint the latest.* aliases and manifest. The 0.2.38 archive stays: it is a
    tagged, attested release.
  • Update release-reference.json to the published archive, its SBOM, and the
    bundle digest 85f3475cb84d4ce349d43a0c81c68cbf40bd573e731c5e731eeff55ae7405c4b.
  • Mirror the source 0.2.39 carries — the two new analyzers and the comment
    lexer, the registry that seats them, the Convex carve-out in dead-code.ts, the
    v3 receipt renderer and its frozen v2 predecessor, and their 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, and say
    15 analyzers where the README describes what runs today. The receipt excerpt
    keeps its "real 0.2.36 run" provenance and its local-registry-v2,
    13-analyzer wording: 0.2.39 ships a frozen v2 renderer that reproduces that
    wording byte for byte, so the excerpt is still what that run printed.
    Relabelling it v3 would assert a run that was never made.

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

Summary by CodeRabbit

  • New Features

    • Added Comment Signal and Speculative Structure analysis, increasing the local registry to 15 analyzers.
    • Receipts now include comment metrics, expanded coverage disclosures, and omitted hosted-only checks.
    • Added support for Convex deployment exclusions and improved structural analysis reporting.
  • Compatibility

    • Updated receipt profiles to local-registry-v3 while preserving rendering for earlier profile versions.
  • Release

    • Released CLI version 0.2.39 with updated downloads, checksums, SBOMs, and verification references.

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

Source is mirrored from the 0.2.39 release commit 4dbd312, not from in-progress
work — main has since moved on to unrelated changes: 117 files across
packages/cli and packages/analyzer-engine, zero content mismatches and zero
file-mode mismatches against that commit's trees. The count grows from 114
because the registry gains `comment-slop.ts`, `overengineering.ts`, and the
shared `comments.ts` lexer they read; `packages/cli/SBOM.cdx.json` stays
generated and gitignored here, as it has since 0.2.13.

`pnpm release:artifact` rebuilds the bundle to the exact published digest
feb9a7454abaf2c25bdeade2a6e638137290df8c0725a447e3aca04aef2bd8f0, 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.39 archive, checksum, and SBOM to public/downloads and
  repoint the latest.* aliases and manifest. The 0.2.38 archive stays: it is a
  tagged, attested release.
- Update release-reference.json to the published archive, its SBOM, and the
  bundle digest 85f3475cb84d4ce349d43a0c81c68cbf40bd573e731c5e731eeff55ae7405c4b.
- Mirror the source 0.2.39 carries — the two new analyzers and the comment
  lexer, the registry that seats them, the Convex carve-out in dead-code.ts, the
  v3 receipt renderer and its frozen v2 predecessor, and their 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, and say
  15 analyzers where the README describes what runs today. The receipt excerpt
  keeps its "real 0.2.36 run" provenance and its `local-registry-v2`,
  13-analyzer wording: 0.2.39 ships a frozen v2 renderer that reproduces that
  wording byte for byte, so the excerpt is still what that run printed.
  Relabelling it v3 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

Review Change Stack

Warning

Review limit reached

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

Next review available in: 52 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: ae250df5-535f-45ff-9223-5c40459acbba

📥 Commits

Reviewing files that changed from the base of the PR and between 516a027 and 1f235b9.

📒 Files selected for processing (1)
  • README.md
📝 Walkthrough

Walkthrough

Changes

Analyzer and release update

Layer / File(s) Summary
Comment signal analysis
packages/analyzer-engine/src/comments.ts, packages/analyzer-engine/src/comment-slop.ts
Added comment classification and a comment-signal analyzer. It reports redundant comments, narrative comments, density metrics, and bounded findings.
Speculative structure analysis
packages/analyzer-engine/src/overengineering.ts, packages/analyzer-engine/src/dead-code.ts, packages/analyzer-engine/src/registry.ts
Added speculative-export and log-and-rethrow detection. The analyzer applies framework, convention, generated-file, and Convex exclusions.
Receipt profiles and comment metrics
packages/cli/src/types.ts, packages/cli/src/receipt.ts, packages/cli/src/local-sast.ts, packages/cli/test/*, packages/cli/README.md
Advanced the local profile to local-registry-v3, preserved v2 receipt compatibility, and added comment-signal receipt metrics and tests.
v0.2.39 release publication
CHANGELOG.md, README.md, packages/cli/CHANGELOG.md, packages/cli/package.json, public/downloads/*, release-reference.json
Updated release documentation and publication metadata for CLI version 0.2.39, including checksums and SBOM files.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ANALYZERS
  participant commentSlopAnalyzer
  participant overengineeringAnalyzer
  participant receipt.ts

  ANALYZERS->>commentSlopAnalyzer: analyze eligible source files
  commentSlopAnalyzer-->>ANALYZERS: findings and comment metrics
  ANALYZERS->>overengineeringAnalyzer: analyze exported symbols and catch blocks
  overengineeringAnalyzer-->>ANALYZERS: structural findings and metrics
  ANALYZERS->>receipt.ts: provide pass results
  receipt.ts-->>receipt.ts: render comment metrics and profile disclosure
Loading

Possibly related PRs

  • DeliriumPulse/codetruss-cli#19: Updates release metadata, changelogs, artifacts, checksums, SBOMs, and release-reference.json for another CLI version.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change: releasing CodeTruss CLI version 0.2.39.
Description check ✅ Passed The description clearly covers scope, validation, artifacts, release impact, and source synchronization, although it does not reproduce the template headings or privacy checkboxes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v0.2.39

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 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/analyzer-engine/src/registry.ts`:
- Around line 36-37: Update the documented registry analyzer count and the CLI
receipt test assertion from 13 to 15 to reflect the newly registered
commentSlopAnalyzer and overengineeringAnalyzer entries.

In `@packages/cli/src/receipt.ts`:
- Around line 295-318: The reported comment signal must count unique files
rather than summing overlapping category counts. Update commentSignalLines() to
derive reported from the union of files reported by redundantCommentFiles and
narrationCommentFiles, preserving the existing wording; update the corresponding
fixture/assertion in packages/cli/test/receipt.test.ts lines 211-230 to expect
the deduplicated file count.

In `@packages/cli/src/types.ts`:
- Around line 36-48: Update the documentation above LOCAL_ANALYSIS_PROFILE to
accurately describe the serialized fields: state that local-registry-v3
identifies the analyzer set rather than claiming the profile block contains an
explicit analyzer count. Keep the existing id/versioning rationale and frozen
renderer references unchanged.

In `@README.md`:
- Line 7: Update the receipt example in README.md to use the current v3 format
and 15-analyzer output, or explicitly label it as a historical v2 compatibility
example so it is not presented as current CLI output.
🪄 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: d3a70c5c-f7fa-4c39-a13e-1ea784e214ea

📥 Commits

Reviewing files that changed from the base of the PR and between c29284b and 516a027.

📒 Files selected for processing (24)
  • CHANGELOG.md
  • README.md
  • packages/analyzer-engine/src/comment-slop.ts
  • packages/analyzer-engine/src/comments.ts
  • packages/analyzer-engine/src/dead-code.ts
  • packages/analyzer-engine/src/overengineering.ts
  • packages/analyzer-engine/src/registry.ts
  • packages/cli/CHANGELOG.md
  • packages/cli/README.md
  • packages/cli/package.json
  • packages/cli/src/local-sast.ts
  • packages/cli/src/receipt.ts
  • packages/cli/src/types.ts
  • packages/cli/test/analysis-profile.test.ts
  • packages/cli/test/local-sast.test.ts
  • packages/cli/test/receipt.test.ts
  • public/downloads/codetruss-cli-0.2.39.sbom.cdx.json
  • public/downloads/codetruss-cli-0.2.39.tgz
  • public/downloads/codetruss-cli-0.2.39.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

Comment thread packages/analyzer-engine/src/registry.ts
Comment thread packages/cli/src/receipt.ts
Comment thread packages/cli/src/types.ts
Comment thread README.md
The example is labelled as a real 0.2.36 run, but the paragraph above it now
says fifteen analyzers, and a reader landing on the profile block has no reason
to connect `local-registry-v2` and thirteen to the older run rather than to
today's output. The label now names the profile it prints and what this release
prints instead, which is also the behaviour 0.2.39 guarantees: the v2 renderer
is frozen so a receipt signed under it still verifies as signed.

Raised by CodeRabbit on #22.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DeliriumPulse
DeliriumPulse merged commit bd83905 into main Aug 7, 2026
10 checks passed
@DeliriumPulse
DeliriumPulse deleted the release/v0.2.39 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