bisectrunk¶
bisectrunk finds the commit that changed a result.
It searches for behavior changes in a Git repository while owning the
repetitive work around each candidate: isolated checkout, installation,
execution, classification, caching, and reporting.
Why¶
A typical use case starts with report drift. A notebook or report rendered correctly months ago, the downstream project has not changed, but an unpinned dependency has.
Give bisectrunk a known-good revision, a known-bad revision, and shell hooks.
It evaluates multiple candidates at once and returns the exact upstream commit,
or an honest candidate set when broken commits make a unique answer impossible.
Example¶
bisectrunk bisect --repo ../dependency --good v1.0.0 --bad main \
--setup './install-into "$BISECTRUNK_ENV" "$BISECTRUNK_WORKTREE"' \
--run './check-project' --jobs 8
Beyond bisect¶
Use scan when behavior may be non-monotone, run while developing hooks, and
resume after an interruption. No R or Python runtime is built into the binary;
the hook contract works with any toolchain.