Skip to main content

Crate spar

Crate spar 

Source
Expand description

spar: two coding agents alternate implementing and reviewing GitHub issues until a pull request converges.

A single model reviewing its own work grades its own homework. Two models with different training and different failure modes catch different things, and the disagreements are the useful part.

Re-exports§

pub use error::Result;
pub use error::SparError;

Modules§

agent
Driving one CLI.
cli
The command line.
config
Configuration, and the agent presets that make a new CLI a data change rather than a code change.
error
One error type. Every failure that a user could plausibly cause carries a sentence explaining what to do about it, because a failure whose reason is missing from the message costs more than the failure itself.
jsonx
Getting structured data back out of a model, and hashing it stably.
logging
Progress goes to stderr so stdout stays parseable. --quiet silences progress but never silences a warning or an error: those are exactly what quiet mode would otherwise bury.
model
The shapes that cross the boundary between spar and a model, and the shapes spar keeps for itself.
proc
Running external commands.
repo
git and gh. Every outbound string passes through the style and concision gates before it reaches GitHub.
review
Alternating custody until a PR converges.
review_only
Reviewing a pull request without touching it.
schema
JSON schemas for the three structured exchanges.
style
Two gates over every string spar sends to GitHub.
triage
Both agents judge every issue independently, then the two verdicts are reconciled mechanically.

Macros§

bail
Return early with a SparError.
log
logdim
logwarn
spar_err
Build a SparError with format! syntax.