Automated Bisect
The same kind of regression, a second time. This time, git drives the entire real search itself.
check-times.sh is failing again — 45 more real "add a recipe" commits landed, and one of them is broken the exact same way as before. Lab 3.3.1's manual walk worked, but it needed a real human to run the check and type good or bad six times.\n\ngit bisect run automates that entire real loop: give it a real command that exits 0 for good and non-zero for bad, and git checks out every real midpoint, runs that command itself, and keeps going completely unattended until it names the exact commit responsible. The same real binary search, zero manual steps.
One Real Command, the Whole Search
git bisect start HEAD HEAD~45
git bisect run sh check-times.sh
git checks out each real midpoint itself, runs sh check-times.sh against it, reads the real exit code — 0 means good, anything else means bad — and keeps going until only one commit remains.
Any Real Pass/Fail Signal Works
git bisect run npm test
git bisect run ./run-integration-tests.sh
git bisect run make check
git bisect run does not care what the command actually does — only its real exit code. Any script, test suite, or one-liner that can answer "does this commit have the bug" automates the exact same search.
Same Ending, Zero Manual Steps
# bd3a361... is the first bad commit
# bisect found first bad commit
git bisect reset
The real output ends the same way as the manual walk — the exact commit, named directly — but nobody had to run the check or type good/bad even once.
git bisect run <command>
Fully automates a bisect search — git checks out each real midpoint and runs the given command itself, reading its real exit code as the good/bad answer. Confirmed directly in this lab: the same 45-commit search that would have taken several manual rounds completed with a single command.
🚨 A Second Real Regression
Forty-five more commits landed. check-times.sh is failing again.
cd ~/team-recipes && sh check-times.shstudent@lab:~$ cd ~/team-recipes && sh check-times.sh BAD: recipe-73.md (Cook time: 'quick')
🤖 Let git Run the Entire Search
One real command drives the whole bisect, start to finish.
cd ~/team-recipes && git bisect start HEAD HEAD~45cd ~/team-recipes && git bisect run sh check-times.shcd ~/team-recipes && git bisect resetstudent@lab:~$ cd ~/team-recipes && git bisect start HEAD HEAD~45 Bisecting: 22 revisions left to test after this (roughly 5 steps) [405d1a42afe71f1d5c72a1b6b3879803edfd95da] Add recipe: Baked Dip student@lab:~$ cd ~/team-recipes && git bisect run sh check-times.sh running 'sh' 'check-times.sh' All recipes OK Bisecting: 11 revisions left to test after this (roughly 4 steps) [ded063dd7c614dad06663d71d6c328056a86d611] Add recipe: Zesty Risotto running 'sh' 'check-times.sh' BAD: recipe-73.md (Cook time: 'quick') Bisecting: 5 revisions left to test after this (roughly 3 steps) [92709479f845376c969b77a7b55a12c85750d1ff] Add recipe: Fiery Bowl running 'sh' 'check-times.sh' BAD: recipe-73.md (Cook time: 'quick') Bisecting: 2 revisions left to test after this (roughly 1 step) [31752dc4eb9e38e8b92d8776b24f7a0513691cd9] Add recipe: Sweet Chili running 'sh' 'check-times.sh' BAD: recipe-73.md (Cook time: 'quick') Bisecting: 0 revisions left to test after this (roughly 0 steps) [8e18c14cc0c07fe821296399ffc3b0890b9cce12] Add recipe: Chilled Frittata running 'sh' 'check-times.sh' BAD: recipe-73.md (Cook time: 'quick') 8e18c14cc0c07fe821296399ffc3b0890b9cce12 is the first bad commit commit 8e18c14cc0c07fe821296399ffc3b0890b9cce12 Author: Ada Lovelace <ada@example.com> Date: Fri Jan 2 15:30:00 2026 +0000 Add recipe: Chilled Frittata recipe-73.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 recipe-73.md bisect found first bad commit student@lab:~$ cd ~/team-recipes && git bisect reset Previous HEAD position was 8e18c14 Add recipe: Chilled Frittata Switched to branch 'master' Your branch is ahead of 'origin/master' by 102 commits. (use "git push" to publish your local commits)
🩹 Fix the Real Culprit
Same shape of fix as Lab 3.3.1 — inspect it, fix it, confirm it.
cd ~/team-recipes && cat recipe-73.mdcd ~/team-recipes && sed -i 's/Cook time: quick minutes\./Cook time: 15 minutes./' recipe-73.mdcd ~/team-recipes && git add recipe-73.mdcd ~/team-recipes && git commit -m 'Fix invalid cook time in recipe-73.md (found via git bisect run)'cd ~/team-recipes && sh check-times.shstudent@lab:~$ cd ~/team-recipes && cat recipe-73.md Recipe: Chilled Frittata Cook time: quick minutes. student@lab:~$ cd ~/team-recipes && sed -i 's/Cook time: quick minutes\./Cook time: 15 minutes./' recipe-73.md student@lab:~$ cd ~/team-recipes && git add recipe-73.md student@lab:~$ cd ~/team-recipes && git commit -m 'Fix invalid cook time in recipe-73.md (found via git bisect run)' [master 4eea8a1] Fix invalid cook time in recipe-73.md (found via git bisect run) 1 file changed, 1 insertion(+), 1 deletion(-) student@lab:~$ cd ~/team-recipes && sh check-times.sh All recipes OK
Lab 3.3.2 complete. A second real regression, found with zero manual bisect steps:\n\n\n check-times.sh failing again : ✅ confirmed\n git bisect run : ✅ fully automated\n Exact commit found : ✅ recipe-73.md\n Fixed forward : ✅ check passes again\n
Enable JavaScript to run the live terminal and track your progress.