Tranche

A configurable PR triage tool for public GitHub repositories. It spots likely duplicates and gathers changes into reviewable batches. The model supplies the judgments; humans make the merge call.

Tranche binds to one repository per deployment: a directory holding the deployment contract (tranche.json), the captured PR corpus, the stored judgments, and the published reports. The binary holds no state and no global configuration. The repository under review stays read-only input, reached only through GitHub’s API — it stores nothing, hosts nothing, and needs no cooperation from its maintainers.

Duplicate discovery Review batches Bound reports Offline pipeline Published workbench

The pipeline

Fetch

Capture

Open-PR membership through gh, so the credential never touches a command line

Incremental captures reuse stored work when the evidence and policy have not changed. A refresh with nothing new spends zero model calls.

Judge

Model

One batched Jev call per PR: area, risk, fix probability, finish, effort, security

Question wording and the category taxonomy come from the deployment's contract, so each repository is reviewed against its own standards. A question the model answers unusably becomes null — never coerced to zero, because an unknown and a measured low are different facts.

Dupes

Compare

Candidate pairs by title and body similarity plus literal cross-references

Candidate pairs and duplicate groups give reviewers a starting point for comparing competing implementations; similar wording alone never proves equivalence.

Cluster and batch

Offline

Pure functions of the stored corpus — no model, no network

Groups become merge units of up to five PRs, security first, each carrying a ready-to-paste reviewer prompt. Every stage is safe to re-run.

Publish

Workbench

Machine-readable out/ for agents and a browsable HTML workbench for people

The binary embeds the workbench template and browser assets, so rendering needs no source checkout. Offline CLI and MCP commands read the same bound reports.

Bound evidence, inspectable limits

Each report records a digest of the inputs it was built from, and the gate refuses a report whose binding no longer matches. tranche info shows the counts and digests of the current report, so a reader always knows what observation they are looking at. Its “duplicates” are model suggestions, not verified facts — maintainers decide what happens to a PR, always.

The Omarchy demo

Tranche grew out of the Omarchy PR backlog: a large backlog where contributors propose competing fixes across installation, desktop configuration, shell tools, applications, and hardware support. The published workbench exposes the review queues, and a committed slice of the captured corpus lets regression tests rebuild reports without a model pass.

Install

git clone https://github.com/blackopsrepl/Tranche && cd Tranche
cargo install --path crates/tranche-cli --locked

The binary is self-contained: no interpreter, no daemon, no database, no service. A new deployment for any public repository starts with tranche init OWNER/REPO — then rewrite the starter taxonomy for that repository before making model calls.

Repository

Source and setup

Live Omarchy demo report

↑