You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix Bencher reporting permanently broken on pushes to main
The benchmark workflow passed --start-point main --start-point-hash
<github.event.before> for push-to-main events. Since main IS the
base branch, Bencher tried to look up a version of main at the
"before" hash — which often didn't exist (e.g., docs-only commits
skipped by paths-ignore). This caused a 404, the report was never
stored, and subsequent pushes also failed because their "before" hash
was also missing. This cascading failure meant no main data was
stored after the first version (Jan 18).
Fix: don't pass --start-point args for pushes to main (thresholds are
defined inline via --threshold-* args). For PRs/dispatch where the
start-point hash may be missing, retry without --start-point-hash so
the report still gets stored using the latest available baseline.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# If bencher failed due to missing baseline data (404 Not Found) and there
642
-
# are no regression alerts, treat as a warning instead of failing the workflow.
643
-
# This commonly happens when the PR base commit was a docs-only change
644
-
# skipped by paths-ignore, so no benchmark data exists in Bencher.
651
+
# If bencher failed because the start-point hash doesn't exist in
652
+
# Bencher (e.g., the base commit was a docs-only change skipped by
653
+
# paths-ignore), retry without --start-point-hash so the report
654
+
# still gets stored using the latest available baseline.
645
655
#
646
-
# Safety checks before overriding exit code:
647
-
# 1. stderr must contain "404 Not Found" (HTTP status from Bencher API)
648
-
# 2. stderr must NOT contain regression indicators ("alert", "threshold",
649
-
# or "boundary") to avoid suppressing actual performance regressions
650
-
if [ $BENCHER_EXIT_CODE -ne 0 ] && grep -q "404 Not Found" "$BENCHER_STDERR" && ! grep -qiE "alert|threshold violation|boundary violation" "$BENCHER_STDERR"; then
651
-
echo "⚠️ Bencher baseline not found for start-point hash '$START_POINT_HASH' — this is expected when the base commit was not benchmarked (e.g., docs-only changes skipped by paths-ignore)"
652
-
echo "⚠️ Benchmark data was collected but regression comparison is unavailable for this run"
653
-
echo "📋 Bencher stderr output:"
654
-
cat "$BENCHER_STDERR"
655
-
echo "::warning::Bencher baseline not found for start-point hash '$START_POINT_HASH' — regression comparison unavailable for this run"
656
-
BENCHER_EXIT_CODE=0
656
+
# Bencher emits: 'Head Version (..., Some(GitHash("<sha>"))) not found'
657
+
# when the pinned hash isn't in its DB. A single combined pattern
658
+
# avoids false-positive matches across unrelated lines.
0 commit comments