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).
Summary
The v3.16.0 release attempt (tag pushed at commit
2e0e94f, 2026-07-17) failed at the "Pre-publish benchmark gate" step inpublish.ymlbecause of genuine performance regressions against thev3.15.0baseline:(source: https://github.com/optave/ops-codegraph-tool/actions/runs/29568520693, job "Pre-publish benchmark gate")
Because that gate failed,
publish/publish-devwere both skipped — v3.16.0 was never actually published to npm, andpackage.jsononmainis still at3.15.0. Thev3.16.0git 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 severaldomain/graph/builder/anddomain/graph/builder/stages/changes that are plausible candidates for a build-time regression:crates/codegraph-core/src/domain/graph/builder/pipeline.rscrates/codegraph-core/src/domain/graph/builder/stages/build_edges.rscrates/codegraph-core/src/domain/graph/builder/stages/detect_changes.rscrates/codegraph-core/src/domain/graph/builder/stages/import_edges.rscrates/codegraph-core/src/domain/graph/builder/stages/insert_nodes.rscrates/codegraph-core/src/domain/graph/resolve.rscrates/codegraph-core/src/domain/graph/builder/barrel_resolution.rscrates/codegraph-core/src/db/connection.rsBisecting
v3.15.0..2e0e94fagainst the incremental/full build benchmarks (scripts/benchmark.ts,scripts/incremental-benchmark.ts) should narrow this down.Related
Filed alongside a separate CI fix (
detect-changesjob inci.ymlwas trusting the danglingv3.16.0tag as "last published release," causing every PR's Engine-parity/Test jobs to fall back to the stale published3.15.0native binary instead of building fresh).