Skip to content

chore: release v3.9.0#822

Merged
carlos-alm merged 2 commits intomainfrom
release/3.9.0
Apr 4, 2026
Merged

chore: release v3.9.0#822
carlos-alm merged 2 commits intomainfrom
release/3.9.0

Conversation

@carlos-alm
Copy link
Copy Markdown
Contributor

Summary

  • Bump version to 3.9.0 (minor: --db flag on branch-compare and info is user-facing)
  • Add CHANGELOG entry for all 20 commits since v3.8.1
  • Restore missing libc fields in package-lock.json Linux entries
  • Update ROADMAP version header, BACKLOG date, README benchmark version

Test plan

  • npm install succeeds with updated lock file
  • CHANGELOG renders correctly on GitHub
  • ROADMAP checklist items match actual codebase state

@claude
Copy link
Copy Markdown

claude bot commented Apr 4, 2026

Claude finished @carlos-alm's task —— View job


PR Review: chore: release v3.9.0

Todo List

  • Phase 1: Root cause analysis - determine what problem this PR solves
  • Phase 2: Configuration change detection - check for high-risk changes
  • Phase 3: Test integrity - watch for red flags in testing
  • Phase 4: Code quality review
  • Phase 5: Backlog compliance assessment
  • Final Assessment: Provide structured review with rating and recommendation

Phase 1: Root Cause Analysis ✅

Problem Being Solved: Legitimate release preparation for v3.9.0 containing 20 commits of actual functionality and bug fixes since v3.8.1.

Key Changes Identified:

Phase 2: Configuration Change Detection ✅

Risk Assessment: ✅ LOW RISK - No problematic configuration changes detected.

Analysis:

  • Only version bumps in package.json and Cargo.toml (3.8.1 → 3.9.0)
  • No biome/linting rule changes, test timeout modifications, or TypeScript strict mode changes
  • Package-lock.json changes are minimal (just version updates)

Phase 3: Test Integrity ✅

Risk Assessment: ✅ LOW RISK - No test files modified.

Analysis:

  • No test files changed in this PR
  • No removed or weakened assertions or eslint-disable comments added

Phase 4: Code Quality Review ✅

Quality Assessment: ⚠️ MINOR CONCERN - Script name inconsistency detected.

Analysis:

  • CHANGELOG.md: Well-structured, comprehensive, accurately reflects 20 commits with proper PR references
  • Documentation updates: Consistent version/date updates across ROADMAP.md, BACKLOG.md, README.md
  • Issue detected: .versionrc.json calls sync-native-versions.js but package.json calls sync-native-versions.ts - this may explain why optional dependencies remain at 3.8.1 instead of 3.9.0

Phase 5: Backlog Compliance Assessment ✅

Zero-dep: ✅ - No new runtime dependencies added
Foundation-aligned: ✅ - Fully compliant with FOUNDATION.md principles:

  • P1 (always-current): Engine parity fixes improve graph accuracy
  • P4 (zero-cost core): All features work without API keys
  • P5 (embeddable-first): --db flag enhances programmatic usage
  • P8 (not an agent): Pure analysis tooling, no code generation

Problem-fit: 5/5 - Directly addresses core problem:

  • --db flag reduces token waste by enabling cross-repo analysis without rebuilds
  • Engine parity fixes prevent AI hallucination from incorrect graph data
  • Performance improvements reduce rebuild overhead

Breaking: No - All changes are purely additive
Tier: 1 (zero-dep ✓ + foundation-aligned ✓)

Root Cause Analysis

Problem Being Solved: Proper semantic versioning release for substantive new functionality and critical engine parity fixes.
Why This Approach: Standard release workflow using commit-and-tag-version with comprehensive changelog generation.
Risk Assessment: Low risk - legitimate feature release, not masking underlying issues.

Backlog Compliance

  • Zero-dep: ✓ — builds on existing tree-sitter/SQLite infrastructure
  • Foundation-aligned: ✓ — enhances core analysis capabilities without violating principles
  • Problem-fit: 5 — directly reduces AI token waste and prevents hallucinated dependencies
  • Breaking: No — purely additive functionality
  • Tier: 1

Critical Concerns

⚠️ Script Name Inconsistency: .versionrc.json references sync-native-versions.js while package.json calls sync-native-versions.ts. This discrepancy likely caused optional dependencies to remain at 3.8.1 instead of being bumped to 3.9.0. The PR description mentions "restore missing libc fields" but this appears incomplete.

Final Recommendation

  • Rating: ⭐⭐⭐☆☆ (3/5)
  • Action: APPROVE WITH CONDITIONS
  • Reasoning: This is a legitimate and well-structured release with substantial functionality that directly addresses the core problem. The engine parity fixes are particularly valuable for AI agent accuracy. However, the script name inconsistency should be addressed before merge to ensure proper native dependency versioning in future releases.

Recommended Fix: Align script references in .versionrc.json and package.json to use the same file extension, and verify native dependencies are properly versioned.


@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Apr 4, 2026

Greptile Summary

This is the release PR for v3.9.0, bumping package.json and Cargo.toml to 3.9.0, adding a CHANGELOG entry covering engine parity, the --db flag on branch-compare/info, and 10 other fixes and improvements, while also restoring missing libc fields for Linux entries in package-lock.json and updating the README benchmark stamp and ROADMAP/BACKLOG headers.

The optionalDependencies for native platform packages remain at 3.8.1 (not 3.9.0) in package.json — this is intentional: commit-and-tag-version does not invoke the version npm lifecycle hook, so scripts/sync-native-versions.ts was not called during the bump. The publish.yml workflow explicitly calls that script before publishing, so the npm-published package will correctly reference 3.9.0 native binaries. One minor omission: the fix from #821 (fix: repair impact workflow that never posted PR comments) was merged into this branch via the final merge commit but is absent from the v3.9.0 CHANGELOG.

Confidence Score: 5/5

Safe to merge — all changes are release bookkeeping with no logic modifications.

All seven changed files are documentation, metadata, or lock-file updates. The apparent mismatch between the 3.9.0 package version and the 3.8.1 native optionalDependencies is intentional and handled correctly by the publish workflow. No P0/P1 findings were identified.

No files require special attention.

Important Files Changed

Filename Overview
package.json Version bumped to 3.9.0; optionalDependencies for native binaries intentionally remain at 3.8.1 (sync handled by publish workflow).
CHANGELOG.md Well-formatted 3.9.0 entry with 2 features, 9 bug fixes, and 1 performance item; fix #821 (merged via final merge commit) is absent but it's a CI workflow fix rather than a user-facing change.
package-lock.json libc fields restored for linux-arm64-gnu (glibc), linux-x64-gnu (glibc), and linux-x64-musl (musl) entries; integrity hashes and versions look correct.
crates/codegraph-core/Cargo.toml Version bumped to 3.9.0 in sync with package.json; no other dependency changes.
README.md Benchmark version stamp updated to v3.9.0 (2026-04-04); resolution precision/recall metrics added.
docs/roadmap/ROADMAP.md Version header updated to 3.9.0 and date refreshed to 2026-04-04.
docs/roadmap/BACKLOG.md Last-updated date bumped to 2026-04-04; no content changes.

Sequence Diagram

sequenceDiagram
    participant Dev as Developer
    participant PR as Release PR #822
    participant Workflow as publish.yml
    participant NPM as npm registry

    Dev->>PR: npm run release (commit-and-tag-version)
    Note over PR: version → 3.9.0<br/>optionalDeps stay at 3.8.1<br/>(lifecycle hook not called)
    Dev->>PR: Restore libc in package-lock.json
    Dev->>PR: Update CHANGELOG / README / ROADMAP
    PR->>Workflow: Trigger workflow_dispatch after merge
    Workflow->>Workflow: Build native binaries (6 platforms)
    Workflow->>Workflow: npm version 3.9.0 --allow-same-version<br/>(runs version lifecycle → sync-native-versions.ts)
    Workflow->>Workflow: sync-native-versions.ts<br/>optionalDeps updated 3.8.1 → 3.9.0
    Workflow->>NPM: Publish @optave/codegraph-* @ 3.9.0
    Workflow->>NPM: Publish @optave/codegraph @ 3.9.0<br/>(optionalDeps now point to 3.9.0)
Loading

Reviews (2): Last reviewed commit: "Merge branch 'main' into release/3.9.0" | Re-trigger Greptile

@carlos-alm
Copy link
Copy Markdown
Contributor Author

Addressing the review feedback from both Claude and Greptile:

Script name inconsistency (.versionrc.json → .js vs .ts) — Claude correctly identified that .versionrc.json references sync-native-versions.js while only .ts exists. This is a pre-existing bug not introduced by this PR. The npm version lifecycle in package.json correctly runs the .ts version via node-ts.js, so the .versionrc.json postbump is both redundant and broken. Created follow-up issue: #823

Native binary optional deps at 3.8.1 — Both reviewers flagged that @optave/codegraph-* optional deps remain at 3.8.1 while root version is 3.9.0. This is expected behavior: the publish.yml workflow builds native binaries at the tagged version and publishes them as part of the release. Since all 3.9.0 changes are JS-side, the 3.8.1 native binaries are fully compatible. The optional deps will be updated to 3.9.0 by the workflow when it publishes the native packages.

No code changes needed for this PR — both findings are either pre-existing (tracked in #823) or working as designed.

@carlos-alm
Copy link
Copy Markdown
Contributor Author

@greptileai

@carlos-alm
Copy link
Copy Markdown
Contributor Author

@claude

@claude
Copy link
Copy Markdown

claude bot commented Apr 4, 2026

Claude finished @carlos-alm's task —— View job


Updated PR Review: chore: release v3.9.0

Todo List

  • Review user's response to previous feedback
  • Evaluate explanations for identified issues
  • Provide updated assessment and recommendation

Assessment Update

Thank you for addressing the previous review feedback. After reviewing your explanations, I can confirm both issues are properly understood:

✅ Script Name Inconsistency - Properly Tracked

You're correct that this is a pre-existing bug not introduced by this PR. I can confirm:

  • .versionrc.json:19 references scripts/sync-native-versions.js
  • Only scripts/sync-native-versions.ts exists
  • package.json:99 correctly uses the .ts version via node-ts.js
  • The .versionrc.json postbump script is indeed redundant and broken

Creating issue #823 to track this separately is the right approach.

✅ Native Binary Versions - Expected Behavior

Your explanation of the release workflow makes perfect sense:

  • Root package: 3.9.0
  • Cargo.toml: 3.9.0
  • Optional deps: 3.8.1 (will be updated by publish.yml when native binaries are built)

Since all v3.9.0 changes are JS-side, the 3.8.1 native binaries remain fully compatible. This is working as designed.

Final Recommendation

✅ APPROVED - This is a well-structured release PR that:

  • Properly bumps version for the new --db flag functionality (justifies minor bump)
  • Includes comprehensive CHANGELOG covering all 20 commits since v3.8.1
  • Updates all documentation consistently
  • Both flagged issues are either pre-existing (tracked separately) or expected behavior

The PR is ready to merge. The release workflow will handle the native binary version alignment automatically.


carlos-alm added a commit that referenced this pull request Apr 4, 2026
Add Step 7b to the release skill that verifies all script references
in .versionrc.json and package.json lifecycle hooks point to files
that actually exist. Also fix .js → .ts reference in the skill docs.

Prevents the class of review comments seen on #822 where broken script
paths went undetected until reviewers caught them.
@carlos-alm carlos-alm merged commit 0c03120 into main Apr 4, 2026
20 checks passed
@carlos-alm carlos-alm deleted the release/3.9.0 branch April 4, 2026 09:39
@github-actions github-actions bot locked and limited conversation to collaborators Apr 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant