Commit 65bd28a
authored
ci(bench): add per-PR perf canary for extractor/graph/native changes (#1488)
* chore: gitignore napi-generated artifacts in crates/codegraph-core
* chore(tests): remove unused biome suppression in visitor.test.ts
* fix(titan-run): sync --start-from enum and phase-timestamp list with actual phases
* fix(hooks): track Bash file modifications via before/after git status diff
Adds snapshot-pre-bash.sh (PreToolUse Bash) + track-bash-writes.sh
(PostToolUse Bash): the pre-hook captures git status --porcelain to a
per-worktree temp file before each Bash call; the post-hook diffs the
before/after state and appends newly modified or created files to
.claude/session-edits.log.
This closes the gap where files written by sed -i, printf redirects,
tee, heredocs, or build tools (Cargo.lock, lockfiles) were never
recorded, causing guard-git.sh to emit false-positive BLOCKED errors.
Closes #1457
* chore(native): remove dead code (unused var, method, variant, fields)
- clojure.rs: annotate lifetime-anchor assignment to silence false-positive
- cfg.rs: remove never-called start_line_of method
- complexity.rs: remove never-constructed NotHandled variant; convert
irrefutable if-let patterns to plain let destructures
- dataflow.rs: remove never-read callee fields from CallReturn/Destructured
- incremental.rs: remove never-read lang field from CacheEntry
cargo check and cargo clippy both clean after these changes.
* refactor(native): extract emit_pts_alias_edges params into PtsAliasCtx struct
* fix(wasm): sort call targets by confidence before emit to match native engine
* fix(bench): add 2 warmup runs and raise INCREMENTAL_RUNS to 5 for incremental tiers
* ci(bench): add per-PR perf canary for extractor/graph/native changes
Adds .github/workflows/perf-canary.yml — a path-filtered workflow that
fires on PRs touching src/extractors/, src/domain/graph/, or crates/**
and runs only the incremental-benchmark suite (full build + no-op +
1-file rebuild, both engines). Catches the class of regressions that
accumulated invisibly across the Phase 8.x PRs and were only detected
at v3.12.0 publish time.
The regression guard gains BENCH_CANARY=1 mode: raises thresholds to
50%/100%/150% (standard/noisy/WASM) and skips the build, query, and
resolution suites — only incremental checks run. This absorbs shared-
runner timing variance while still blocking catastrophic regressions
(+98% full build, +1827% 1-file rebuild from v3.12.0).
Closes #1433
* ci(bench): add permissions block, self-referential path filters, drop excess fetch-depth
- Add `permissions: {}` to lock down token scope for the read-only canary
- Add `scripts/update-incremental-report.ts` and
`tests/benchmarks/regression-guard.test.ts` to path filter so PRs that
modify the canary machinery itself also trigger the canary
- Remove `fetch-depth: 0` (full history not needed; canary compares against
committed benchmark data, not git refs)
- Align `node-version: 22` with the integer format used in ci.yml1 parent 08bdc55 commit 65bd28a
2 files changed
Lines changed: 152 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
19 | 29 | | |
20 | 30 | | |
21 | 31 | | |
| |||
26 | 36 | | |
27 | 37 | | |
28 | 38 | | |
| 39 | + | |
| 40 | + | |
29 | 41 | | |
30 | | - | |
| 42 | + | |
31 | 43 | | |
32 | 44 | | |
33 | 45 | | |
| |||
41 | 53 | | |
42 | 54 | | |
43 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
44 | 59 | | |
45 | | - | |
| 60 | + | |
46 | 61 | | |
47 | 62 | | |
48 | 63 | | |
| |||
86 | 101 | | |
87 | 102 | | |
88 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
89 | 108 | | |
90 | | - | |
| 109 | + | |
91 | 110 | | |
92 | 111 | | |
93 | 112 | | |
| |||
622 | 641 | | |
623 | 642 | | |
624 | 643 | | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
625 | 648 | | |
626 | 649 | | |
627 | 650 | | |
| |||
641 | 664 | | |
642 | 665 | | |
643 | 666 | | |
644 | | - | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
645 | 670 | | |
646 | 671 | | |
647 | 672 | | |
| |||
670 | 695 | | |
671 | 696 | | |
672 | 697 | | |
673 | | - | |
674 | | - | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
675 | 702 | | |
676 | 703 | | |
677 | | - | |
| 704 | + | |
678 | 705 | | |
679 | 706 | | |
680 | 707 | | |
681 | 708 | | |
682 | 709 | | |
683 | 710 | | |
684 | | - | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
685 | 714 | | |
686 | 715 | | |
687 | 716 | | |
| |||
714 | 743 | | |
715 | 744 | | |
716 | 745 | | |
717 | | - | |
| 746 | + | |
718 | 747 | | |
719 | 748 | | |
720 | 749 | | |
| |||
817 | 846 | | |
818 | 847 | | |
819 | 848 | | |
820 | | - | |
| 849 | + | |
821 | 850 | | |
822 | 851 | | |
823 | 852 | | |
| |||
0 commit comments