Winch Labs

Reviews

Fixes

A finding tells you something is wrong. A fix proposes the correction.

What happens

You click Fix with Garboard on a finding. A model drafts a corrected version of the file. The draft is put through the gate. If it passes, you are shown the diff; accepting it commits to your pull request’s own head branch.

Your branch, your pull request, your review, your merge.

The constraint that matters

A generated fix goes through review.RunChecks — the same function an external pull request goes through. Not a parallel implementation intended to match: the same code path.

Tests including TestRun_GateBlocksPR and TestRun_GatePassesWhenFixed fail if generated output can bypass it, and TestAdoptedRuleReachesTheFixRegate asserts that a rule your organisation adopted applies to Garboard’s own output too.

Garboard cannot approve its own homework. A fix that would trip a rule is not offered.

It needs an API key. The gate does not.

Fixes require an Anthropic API key, because a model writes them. The deterministic gate is entirely unaffected without one — parsing, conventions, findings, evidence, blocking all work with no key, on every plan. Without a key you get findings and no proposed fixes.

That split is the product: the model writes, the parser judges.

Forge

Forge is the same idea for new infrastructure: describe what you want, get a draft. It commits files and opens a pull request a human reads. It is gated identically — TestForgeDraftIsGatedByAdoptedRules — so a Forge draft that violates your own adopted rules never becomes a pull request.

Both Fix and Forge are the only paths that write repository content at all. See what Garboard writes.