Verdict
A verdict is the binary output of a grade: either approve or
request_changes (with reasons). It’s computed deterministically from a
report’s findings against a configured set of thresholds.
{ "kind": "approve" }{ "kind": "request_changes", "reasons": [ "1 error finding (max allowed: 0)", "63 warn findings (max allowed: 50)" ]}The verdict is part of every Report.
Thresholds
Section titled “Thresholds”Verdicts are derived from [verdict] in .sextant/config.toml:
[verdict]max_errors = 0 # any errors → request_changesmax_warns = 50 # > 50 warns → request_changes (default: u32::MAX)| Field | Default | Effect |
|---|---|---|
max_errors | 0 | Findings with severity: error over this count flip the verdict. |
max_warns | u32::MAX | Same, for warns. The default is “never block on warns”. |
info findings never affect the verdict.
A verdict has two modes — controlled by which command produced the report:
Absolute mode
Section titled “Absolute mode”Used by:
sextant grade(default whole-file mode)sextant grade --diff- The
grade_diffandgrade_filesMCP tools
Counts every finding against thresholds. Whatever’s in the report is what’s measured.
Regression mode
Section titled “Regression mode”Used by:
sextant grade --pr- The GitHub Action
Counts only findings that are new relative to a baseline-graded base SHA. A PR that exposes pre-existing problems but doesn’t introduce new ones approves.
This is why the Action runs sextant grade --pr: it gives “this PR
makes the codebase worse” semantics rather than “this codebase has
debt” semantics. Pre-existing debt is its own problem.
Reasons
Section titled “Reasons”When the verdict is request_changes, reasons lists the specific
threshold checks that failed. Both PR mode and absolute mode populate
this — agents and review comments can quote it directly.
Default behaviour
Section titled “Default behaviour”Out of the box (max_errors = 0, no max_warns), Sextant blocks only
on errors. Warns surface in the report and the agent’s context but
don’t gate.
To make warns blocking, set max_warns in your config:
[verdict]max_errors = 0max_warns = 0 # any new warn blocks the verdictSee also
Section titled “See also”- Configuration → verdict — threshold tuning.
- Finding → severity — which count goes where.
- Report — where the verdict lives.