A calibrated confidence score for every change, computed from the change itself. Clear the threshold and the floors, it merges, no human. Fall short, it escalates. Async by default: open a slice, get notified as CI and reviews land, never block.
no dashboard required. the slice is an async aggregation point; the agent is a background waiter, not a blocker.
A change is a slice. A slice is reviewed in segments. The gate returns one verdict. That is the whole vocabulary.
A unit of change you open (commit, push). cachet's "PR." Carries a score and a list of what it's waiting on.
A reviewable sub-chunk of a slice. Reviewed in parallel; a finding names one; you fix only it and re-vet only it.
The single decision: merge · revise · blocked · review · pending. Aggregates confidence, CI and every reviewer into one verdict.
One command opens the slice, follows it, and lands it. The exit code is the verdict, so an agent branches on it directly, with no jq-and-while pipeline to babysit.
# open from the pushed ref, stream progress, land on a clean verdict $ git push && cachet slice open --follow slice_8f3 · confidence mid · waiting: ci, review:coderabbit · bar: high ✓ ci.passed 47s ! review:coderabbit 1 finding on seg_b · confidence mid→low → fix seg_b, git push re-vets only the changed segment ✓ resolved · confidence high · clears bar · floors pass ✓ merge → queue → landed on main 0 humans · signed + logged # exit code = verdict. want per-event hooks? `cachet slice watch --json` streams NDJSON.
| exit | verdict | the agent does |
|---|---|---|
| 0 | merge / landed | done: admitted to the queue, or landed on main |
| 10 | revise | fix actionable findings (or queue eviction), push, re-vet |
| 11 | blocked | hard floor failed (secret, security); must change |
| 12 | review | human required; escalate, stop |
| 13 | waiting | CI or reviews still outstanding; keep watching |
fix is edit + git push. no patch command. pushing to the slice re-vets only the segments that changed.
cachet reports confidence in plain bands, None, Low, Mid, High, Excellent, calibrated against real outcomes: a "High" means the change lands clean about 90% of the time, measured by reverts and incidents. Most of the risk signal is computed; the model judges the soft part; the hard cases escalate. (A continuous value stays under the hood for ordering and config.)
reviews are optional. built-in or plugins (CodeRabbit, Greptile, Snyk): zero, one, or many. they feed the confidence; they don't gate it unless you ask.
# cachet.yml auto_merge: require: high # auto-merge at this confidence or better require_pass: [security, secrets] # hard floors, independent of confidence review: plugins: [] # [] is confidence-only. add [coderabbit, greptile] to enrich require_review: [] # [coderabbit] makes a passing review a floor paths: "infra/**": { require: excellent } # only the highest confidence lands unattended "docs/**": { require: mid } # cheap to land
Unattended merge is only defensible if the chain under it is stronger than a green checkmark.