Three files changed
Forty-seven call paths touched
Niro reviews every changed line against the call graph behind it - the callers it breaks, the tests that never cover it, the repos it reaches. What lands on your PR looks exactly like this.
Every finding carries
its own evidence
Four parts, always the same four. A claim without them is withdrawn before you see it.
Every comment names its pass - graph-impact, security, patch-drift - so you can turn off the ones that waste your time, per repo.
What breaks, stated flatly. No severity theatre, no paragraph of hedging - the claim is falsifiable or it does not post.
Read from CodeGraph, not inferred from the diff. Caller by caller, repo by repo, with the untested paths marked ✗.
Confidence and the challenge verdict, on the comment itself. A finding that could not defend itself never reached you.
A reviewer who flags everything
gets ignored
The same diff, reviewed twice. On the left, every comment a diff-only linter bot posted. On the right, the ones that survived Niro’s challenge pass - where each finding has to justify itself against the graph before it reaches you.
Diffs show what moved. Graphs show what breaks.
CodeGraph holds every call path across your repositories. Review reads it before commenting - so "three files changed" becomes forty-seven call paths, each checked for a covering test.
Eleven passes.
Each one a flag you own.
Every pass is one capability with one prompt behind it, off by default. This is the full list - nothing runs that is not on it.
In your PRs,
on your terms
Installed against the repos you choose. Reviews arrive as PR comments where the conversation already is.
Nothing calls a provider directly. What leaves is auditable in one place.
No source, no diff content, no prompts. Paths and counts only - written into the service principles, not bolted on.
Every pass is flag-gated and defaults off. Adoption is a decision, not a surprise.
Before you point
it at a repo
Which platforms does PR review support?
GitHub today, as a GitHub App installed against the repositories you choose rather than a bot account holding a seat. GitLab, Bitbucket and Gitea are indexed over an access token, but do not yet receive review comments.
Will it flood our pull requests?
Ten passes read the diff and an eleventh argues with all of them; whatever it refutes is withdrawn before a human sees it. Every capability is also flag-gated and defaults off, so adoption is a decision rather than a surprise - you turn on the passes that earn their place.
Does this replace human review?
No. It reads the graph behind the diff and reports the call paths a diff view cannot show you, including which of them no test covers. Deciding what to do about them is still a reviewer's job.
Does our diff reach your logs, or a model provider directly?
Neither. No source, no diff content and no prompts are written to logs - paths and counts only, written into the service principles rather than bolted on afterwards. Every model call goes through one gateway, so what leaves is auditable in a single place.
Point it at
one noisy repo
The one where review comments are ignored. Compare what gets posted with what your current tooling posts.