CONCEPT · WHAT IT FLAGS

Nothing’s broken. So why is it saying something?

A tension is a decision, not a defect.

Two services each reach an external API a different way. Neither is wrong. Nothing breaks — until the difference costs someone an afternoon. A linter sees nothing here, because there is nothing to see in either file on its own: it only exists between them.

We are trained to think a reviewer’s job is to find what is wrong, and to stay quiet when nothing is broken. But some of the most expensive problems in software aren’t defects at all. Preston surfaces those as tensions: not “you made a mistake,” but “these two things can’t both stay true forever — someone should decide which one wins, on purpose, before reality decides for you.” A note, not an alarm. That is why it is amber and never red.

one dimension, two conventionstension · a note
billing-service
wraps every outbound call in its own HTTP adapter
← →
notifications-service
calls fetch directly, no adapter
would resolve if — one repo adopts the other’s convention, or the org agrees both are fine, on purpose.
why? ▸two repos is the vivid case; just as often the two sit side by side in one.

A tension is one of four things Preston tracks, and they split two and two: the first pair is what it flags, the second is what it remembers so it can stay quiet.

Tensiona note

Two reasonable choices that quietly assume different things. Nobody is wrong — they coexist fine right up until the day they’d have to agree.

Riskthe one that bites

A real gap or hazard. It is the only one of the four that can stop a merge — which is why it, and only it, is red.

Decisionremembered

A choice your team made on purpose. Preston remembers it so a review reads in that light instead of re-litigating it — it shapes how Preston reads, it is not a filter.

Promisedeferred

A finding the team accepted to address later, with a stated condition that ends the deferral. Preston keeps it from being re-raised while the promise stands, and reports whether its ending condition is being watched.

The second pair is the quiet part — how Preston knows when saying nothing is the right answer, which is a whole page of its own.

↳ THE TOOL

tensions finds exactly this — scope: "org"for a clash between two repos’ conventions, the default scope: "repo"for two live claims inside one repo that can’t both be right.