Skip to content

Finding

A finding is one rule firing against one piece of code. A grade returns a list of findings; the verdict is computed from their severities.

{
"rule_id": "builtin.size.fn-length",
"severity": "warn",
"message": "Function `dispatch` is 78 lines (warn at 60)",
"path": "src/handlers.rs",
"line": 88,
"end_line": 165
}
FieldTypeNotes
rule_idstringThe id of the rule that fired. Pass to explain_rule for full context.
severityinfo | warn | errorSee Severity below.
messagestringHuman-facing description of the violation, often with a fix hint.
pathstringFile path relative to the repo root.
linenumber?First line of the violation. Optional — file-scope findings may omit it.
end_linenumber?Last line of the violation, inclusive. Optional.

Severities are ordered: info < warn < error.

SeverityMeaning
infoInformational signal. Never blocks a verdict. Use for “good to know” findings.
warnAdvisory. Counts toward [verdict] max_warns. Default thresholds let warns through.
errorBlocks the default verdict (max_errors = 0). Use sparingly — for rules you’d block a PR over.

The default [verdict] thresholds are max_errors = 0 and max_warns = u32::MAX. The agent surfaces all of them; CI gates only on errors. Tune to taste in .sextant/config.toml.

Findings within a report are deterministically sorted by:

  1. Severity, descending — errors first.
  2. Path, ascending.
  3. Line, ascending.

That ordering is preserved across all output formats (JSON, markdown, SARIF) so diffs between reports are stable.

Diff-mode grades attach a finding only when its line range overlaps with the diff. PR-mode grades go further: they compare findings to a baseline-graded base SHA and report just the new ones — see Scopes and Verdict → regression mode.

  • Report — the bundle of findings.
  • Verdict — how findings translate to approve/request_changes.