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 theizri/qualityumbrella 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
- The four signals — every weight and hard rule in one table.
- Verdicts and exit codes — how this maps to CI exit codes.
- Troubleshooting — when the verdict isn't what you expected.
Reading this with an agent? /docs/start/your-first-verdict.md serves the raw markdown.
Edit this page on GitHub →All docs