Skip to content

build-perf regression blocking v3.16.0: full build +42%, incremental rebuild +53-83% #2127

Description

@carlos-alm

Summary

The v3.16.0 release attempt (tag pushed at commit 2e0e94f, 2026-07-17) failed at the "Pre-publish benchmark gate" step in publish.yml because of genuine performance regressions against the v3.15.0 baseline:

Full build: 3521 → 5000 (+42%, threshold 25%)
1-file rebuild: 112 → 205 (+83%, threshold 75%)
1-file rebuild: 113 → 206 (+82%, threshold 75%)
1-file rebuild: 117 → 179 (+53%, threshold 50%)
1-file rebuild: 117 → 180 (+54%, threshold 50%)

(source: https://github.com/optave/ops-codegraph-tool/actions/runs/29568520693, job "Pre-publish benchmark gate")

Because that gate failed, publish/publish-dev were both skipped — v3.16.0 was never actually published to npm, and package.json on main is still at 3.15.0. The v3.16.0 git tag exists on origin but has no corresponding release. This is the release currently blocked.

Impact

This is a real regression (full + incremental build time), not a flaky benchmark — it needs to be bisected and fixed before v3.16.0 (or whatever the next version is) can ship.

Suspected area

git diff --name-only v3.15.0 2e0e94f -- crates/ shows ~50 changed extractor/builder files between the two, including several domain/graph/builder/ and domain/graph/builder/stages/ changes that are plausible candidates for a build-time regression:

  • crates/codegraph-core/src/domain/graph/builder/pipeline.rs
  • crates/codegraph-core/src/domain/graph/builder/stages/build_edges.rs
  • crates/codegraph-core/src/domain/graph/builder/stages/detect_changes.rs
  • crates/codegraph-core/src/domain/graph/builder/stages/import_edges.rs
  • crates/codegraph-core/src/domain/graph/builder/stages/insert_nodes.rs
  • crates/codegraph-core/src/domain/graph/resolve.rs
  • crates/codegraph-core/src/domain/graph/builder/barrel_resolution.rs
  • crates/codegraph-core/src/db/connection.rs

Bisecting v3.15.0..2e0e94f against the incremental/full build benchmarks (scripts/benchmark.ts, scripts/incremental-benchmark.ts) should narrow this down.

Related

Filed alongside a separate CI fix (detect-changes job in ci.yml was trusting the dangling v3.16.0 tag as "last published release," causing every PR's Engine-parity/Test jobs to fall back to the stale published 3.15.0 native binary instead of building fresh).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions