Configuration
Everything that decides anything lives in .yieldpoint.json,
committed, so a team tunes it in review rather than forking the tool.
A minimal file
{
"project": "billing-service",
"test_contract": {
"protected_patterns": ["tests/**"],
"assertion_monotonicity": "repair"
},
"structure": { "severity": "advisory", "max_file_lines": 300 },
"metrics": { "enabled": true }
}
Sections
| Section | Decides |
|---|---|
test_contract | Which paths are protected, and how hard each contract rule bites. |
structure | Size and shape limits. Reported, but do not fail a run unless gates is true. |
refactor | Dangling references and removed exports. |
boundaries | Layer zones, and what may import what. |
ci | Whether removing or disabling a CI step is reported. |
routing | How churn, complexity and importance escalate a verdict. |
loop_breaker | When an agent is going round without making progress. |
generated | How generated files are detected, and what a hand-edit means. |
linters | Optional external linters. Off by default, curated argv only. |
metrics | Local accounting, and your token price for the cost estimate. |
voice | What gets spoken aloud, for voice-driven sessions. |
scan | What a repository audit ignores. |
An unknown section or key is reported as a warning, never ignored silently — believing you configured something while a default quietly applies is worse than a wrong value.
What stops a commit
A finding that says something was taken away fails the run. A finding that
describes the shape of the code does not — it is printed, counted, and
visible in scan, but it does not stand between you and a commit.
$ yieldpoint review
REPAIR 1 finding(s)
22 files:0 [change_too_large]
This change adds 1472 lines across 22 files, over the limit of 1200.
→ Reported, not blocking. These describe shape, not a weakening.
Set structure.gates true in .yieldpoint.json to make them binding.
The reasoning is about what happens next rather than about severity: a gate that
fires on ordinary days gets passed --no-verify out of habit, and the habit
does not distinguish a long function from a deleted assertion.
Severities
Every rule resolves to one of these, and the CLI's exit code follows the worst one.
There is no "advisory" severity: a finding either has a status that fails the run or the
rule is off. The editor hook is separately installable in an advisory mode
that reports without blocking, which is a property of that surface, not of a rule.
| Severity | Means |
|---|---|
off | Not evaluated at all. |
repair | The agent can fix this itself; hand it back the prescription. |
escalate | A person needs to look. Retrying will not help. |
block | Do not apply, do not retry. Reserved for rules with a measured false-positive rate. |