Repository navigation
·
21 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
This release connects cargo-fallow to coding agents. A gate stops an agent commit or push that adds a new finding, and a skill tells the agent how to use each command. The release also makes fix continue past one bad edit, and lets fuzz targets count as users of workspace items.
cargo install cargo-fallow --lockedCoding agents
cargo fallow hooks install --target agentinstalls a gate for Claude Code and Codex. Before an agent runsgit commitorgit push, the gate runscargo fallow checkon the changed files. It blocks only a finding that the base commit does not have, and it lists each finding. An error of the tool does not block.cargo fallow hooks install --target gitinstalls the same check as a git pre-commit hook.hooks uninstallremoves the files, andhooks statusshows them.- The
cargo-fallowskill tells a coding agent how to run each command, read the JSON output and fix the findings after a block. The skill is inskills/cargo-fallow/SKILL.md, with a Codex interface file. The Fallow plugin also contains it. cargo fallow agent installsets up a repository in one step: a guide block inAGENTS.md, the skill for Claude Code and Codex, and the gate.agent statusshows the parts, andagent uninstallremoves them.cargo fallow init --agentsruns the same setup.
Use a release build of cargo-fallow with the gate. On a large workspace, a debug build can take more time than the hook timeout of the agent.
Configuration and checks
consumersin[workspace.metadata.fallow.visibility]lists separate workspaces that use the items of the workspace, for examplefuzz/Cargo.toml.visibilitythen does not report an item that a fuzz target calls, andfixdoes not narrow it. Without the key,fuzz/Cargo.tomlcounts when it exists.- A
boundaries.sourcesrule reports anallowentry whose file has fewer matches thanmax. The finding kind isallow-entry, so the list stays exact. An entry can also takerequire = ["pattern"], so the file must contain each pattern. cargo fallow api --public-crate <CRATE>sets the external libraries for one run.--all-publishedreads each published library.
cargo fallow fix
fixno longer stops the run for one edit that adds a compiler warning or error. It leaves out that edit, applies the others, and records the reason inskip_reasonanddiagnostic.- The guard now sees a new
dead_codewarning, so an edit that makes an item dead is left out. - The guard also builds each
consumersworkspace.
Changed behavior
- A
dead-publicfinding and a finding withtest_only: trueare no longerauto_fixable. A narrower keyword on such an item makes the compiler report dead code. Adead-publicfinding has a second action,remove-item. cargo fallow api --basereads the same libraries thatvisibilitytreats as an external API. Whenpublic-cratesis set, a narrowed item of an internal crate is no longer aremovedfinding.cargo fallow init --ci githubwritesfallow-rs/cargo-fallow@v0, the newest 0.x release, and not@main.
Fixes
- The GitHub Action and the GitLab CI template now work with a jq that ends each line with CRLF, as jq on Windows does. Before, the gate outputs, the annotation count, the job summary and the GitLab note pages kept a CR. With bash 3.2, the GitLab comment step could loop without end.