Problem
Each benchmark run is isolated — no trending, no relative regression detection. A 50% slowdown that stays under the critical threshold goes unnoticed. Two prior PRs (#1720, #1767) attempted this but were closed without merging. The branch feat/240-benchmark-history-tracking has solid prior art to build on.
Approach
- Orphan
benchmark-data branch stores benchmarks/history.json (last 50 entries)
- Workflow steps: fetch history → run benchmarks → append + trim → commit to orphan branch
- Relative regression detection: flag when current p95 exceeds rolling mean of last 10 runs by >25%
- Permissions:
contents: read → contents: write (push to benchmark-data branch only)
New Files
scripts/ci/benchmark-trend.ts — trend report generator (adapt from feature branch)
scripts/ci/benchmark-utils.ts — shared stats/parsing utilities
scripts/ci/benchmark-utils.test.ts — unit tests
Modified Files
scripts/ci/benchmark-performance.ts — load previous run, add delta regression check
.github/workflows/performance-monitor.yml — add history fetch/commit/trend steps
package.json — add benchmark:trend script
Problem
Each benchmark run is isolated — no trending, no relative regression detection. A 50% slowdown that stays under the critical threshold goes unnoticed. Two prior PRs (#1720, #1767) attempted this but were closed without merging. The branch
feat/240-benchmark-history-trackinghas solid prior art to build on.Approach
benchmark-databranch storesbenchmarks/history.json(last 50 entries)contents: read→contents: write(push to benchmark-data branch only)New Files
scripts/ci/benchmark-trend.ts— trend report generator (adapt from feature branch)scripts/ci/benchmark-utils.ts— shared stats/parsing utilitiesscripts/ci/benchmark-utils.test.ts— unit testsModified Files
scripts/ci/benchmark-performance.ts— load previous run, add delta regression check.github/workflows/performance-monitor.yml— add history fetch/commit/trend stepspackage.json— addbenchmark:trendscript