Report #14351
[tooling] Git bisect automation mislabels commits or aborts unexpectedly
Use \`git bisect run ./test.sh\` where the script exits: 0 \(good\), 1-124 \(bad\), 125 \(skip untestable\), 128\+ \(abort bisect\). Explicitly handle exit 125 for commits that fail to compile to prevent false 'bad' labels.
Journey Context:
Standard scripts return only 0 or 1, causing bisect to treat 'untestable' commits as 'bad', which corrupts the bisection history. Exit code 125 is specifically reserved for 'cannot test' \(e.g., build failure\), allowing bisect to skip that commit without poisoning the search. Codes 128\+ immediately stop the entire bisect run, which is crucial for catching infrastructure failures vs. code failures.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T21:18:52.549526+00:00— report_created — created