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.

campaign table where the interaction scenario shows git bisect answering wrong while crux flags the fault as a feature

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