Finds the exact commit behind a behavior change.

v0.1.0 · 2.04mib · status: experimental the cli surface may still change while we ship the first stable release

Crux is an analyzer of behavioral regressions in Git repositories written in Rust. It is available as a standalone binary which is around 2 MiB in size. Git is its only external dependency. The user defines the behavior using a command, defines the commit range and Crux traverses the history by executing the provided command on both ends and then using binary search over the commits between them to determine the exact flip commit in about twelve executions, regardless of whether the range covers approximately 1,000 commits.

After the search is performed, the found commit is minimized. Crux uses partial hunks on the parent and executes the command until there are only those lines left in the diff that cause behavioral changes, resulting in the causal diff. Transitions of vendored dependencies are extracted from the manifests and lockfiles in both revisions and presented along with version evidences; in case some commits cause behavioral changes only in combination, they are shown as pairs. In case where there is no single flip point, Crux returns the candidate list, not the speculatively chosen single commit.

Guardians are the protectors. They define the protected behaviors once in the repository and propagate them to watch mode that will re-execute them each time on checking, differentiate the drift into the code drift and environment drift based on the signatures and produce Markdown output ready to be pasted into a pull request.

All operations are local. There is neither daemon nor configuration involved. The only network activity is attributed to the possible --upstream-deep upstream attribution; all state data is kept in .crux/ directory in the repository. Removing that directory leaves the repository pristine.

support crux

Back crux every month & your name goes on the wall. Every tier brings early access builds, sneak peeks & a special Discord channel. Builder adds your name on the Discord. Patron takes the top spot with a comment you write & a spot on the GitHub repo once it ships.

every tier renews monthly. subscribe on polar & pick the tier that fits.