Browse docs
Docs /start/your-first-verdict
Getting started

Your first verdict

Your PR now has an Izri check. This page explains what it is telling you.

Where the verdict appears

Izri publishes to two surfaces, both driven by the same underlying report:

  • The check run. One check named Izri. Its conclusion is the izri/quality umbrella verdict; its body is a table with one row per signal that ran (izri/scope, izri/tests, and so on), each expanding to that signal's findings. This is the surface branch protection reads.
  • The sticky comment. One comment on the PR, edited in place on every subsequent push rather than appended. You get the current verdict, not a scroll of stale ones.

Both update on every push to the head branch.

Reading the umbrella

The umbrella resolves to one of three states:

State Meaning
passing No hard rule fired, and the soft composite cleared the threshold.
failing A hard rule fired, or the composite fell below threshold.
unknown Not enough signal to judge — usually a delta still in flight, or every child skipped.

unknown is not a pass. If you require the check in branch protection, treat it as "wait", not "go".

Reading a signal

Each child reports independently and can be in a state the umbrella is not:

Child state Meaning
passing Ran, found nothing blocking.
failing Ran, found something that fails this signal.
pending Queued or still running.
error The analyzer itself crashed. This is a hard rule — it fails the umbrella rather than being silently ignored.
skipped Not applicable to this diff, or not enabled on your plan.

skipped is the one to internalize: a backend-only diff skips izri/visual, and that is a healthy verdict, not a gap. The composite redistributes weight across the signals that actually ran, so a skipped signal doesn't drag your score down.

When a signal fails

Failures come in two flavors, and the difference decides whether you're blocked.

Hard rules fail the umbrella outright, regardless of every other signal:

  • a change in a forbidden category for the PR's declared type
  • a failed test run, or a run that broke before producing results
  • a changed file that no test exercised at all
  • any analyzer that crashed

Everything else is a soft signal feeding a weighted composite that must reach 70. Scope alignment, the tests score (the lower of pass rate and diff coverage), the hallucination score, and visual delta each contribute; a mediocre score on one can be carried by the others.

Some findings never block at all. sensitive_path is emitted at info — it is a "look here" hint pointing at something worth a human glance, not a gate. pr_type_mismatch is warn. Only error-severity findings block by default.

So a failing umbrella means one of exactly two things: a hard rule fired, or the composite came in under 70. The check output tells you which.

Next steps

Reading this with an agent? /docs/start/your-first-verdict.md serves the raw markdown.

Edit this page on GitHub →All docs