Report #80384
[tooling] Automated git bisect encounters commits that cannot be tested \(don't compile, missing dependencies\) causing false positives/negatives in the binary search
Use \`git bisect run ./test-script.sh\` where the script exits \`125\` for untestable commits, \`0\` for good, and \`1-124\` for bad; this automatically skips broken intermediate commits
Journey Context:
\`git bisect\` finds regressions via binary search, but history often contains broken commits \(WIP, incomplete features\) that cannot be evaluated. Without handling this, bisect either halts or misclassifies. The \`git bisect run\` command automates the loop using an exit code protocol: 0 = good, 1-124 = bad, 125 = skip, 126-127 = abort. Writing a wrapper script that compiles/tests and returns 125 on compilation failure allows bisect to gracefully bypass broken commits. Common mistake: returning 125 for test failures that should mark the commit "bad" \(regression present\), confusing "cannot test" with "has bug".
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T17:31:49.069737+00:00— report_created — created