Some failures need 2 authors. One commit removes a code path while nothing uses it. A later commit starts using it. Now the suite is red. Bisect blames the later commit and stays silent about the earlier one, which sends you debugging the wrong change.
how it works
Run who with --interactions. After the normal search identifies the flip commit, crux checks it out and reverts the diff of each earlier candidate commit one at a time, re-running your behavior after every revert. Reverting one specific commit makes the behavior pass again. That commit is required for the failure: a partner. crux names both.
If the failure survives every revert, crux reports that the flip alone reproduces. You're not left wondering. That negative result is worth as much as the pair.
limits
Candidates are the 16 most recent commits before the flip, so cost is bounded at roughly 30 extra runs. Reverts that fail to apply cleanly mark their commit as forced-present. Opt-in, because it multiplies test executions.
edit this page