01 · A human-written MR
Not every change comes from the bot.
Here an engineer bumps ingress-nginx by a minor and,
in the same MR, turns on allowSnippetAnnotations so one
team can add a custom header. Two lines, easy to approve on a
Friday.
02 · Ask for a review
Add the bot as a reviewer, or comment.
Putting the assistant in the MR's reviewers list runs the
default persona once per commit. A /review comment
does the same; /review all runs every configured
persona; /review premium runs just one.
Only people on the trigger allowlist can start a review by
comment. Unknown persona names are dropped with a warning and the
rest still run.
03 · Personas, in parallel
A stable name in front, a swappable model behind.
Personas are the interface your team learns: default for a
balanced review, premium for high-stakes MRs, quick
for a cheap second opinion. Each maps to a model profile in
configuration. When a better model ships, the pointer changes and
nothing else does.
Reviews are keyed on MR, commit and persona, so a persona never
reviews the same commit twice. A force-push makes it eligible again.
04 · Read more than the diff
Check the claims against the repository.
Each reviewer sees the diff and the MR description, and can be
given read-only tools to open neighbouring files: the values the
chart already sets, the Ingress objects that would use the new
setting In development.
An approval that needed evidence it did not have (a changelog, a
CRD schema) is marked contested rather than passed through as
a clean yes.
05 · One comment per persona
Every header names the persona and the model.
You always know which model produced which opinion. Each comment
carries a verdict, a quality score, what was verified and what
worries it, and the commit it reviewed.
Here two personas approve. premium requests changes: the
snippet setting lets anyone who can write an Ingress inject NGINX
configuration, which is why the chart turned it off by default.
06 · The synthesis
Where they agree, and the finding only one of them made.
When two or more personas ran, a synthesis comment tallies the
verdicts, lists shared concerns and highlights unique findings. A
lone dissent is not averaged away; it is the headline.
07 · A label you can filter on
The worst verdict wins.
The MR is stamped review::LGTM, review::NC
or review::COMMENT, taking the most cautious persona's
verdict. A re-review replaces the label, so the MR list always
shows the current state.
08 · Bot MRs get a second reviewer
An independent review with no pipeline context.
The assistant's own reviewer shares its prompts and its blind
spots. So every MR the assistant opens is also read cold by an
independent reviewer that knows nothing about how the MR was
produced. It checks that the title matches the diff, that nothing
secret leaked, and that the change lands somewhere that is actually
deployed.
Its verdict is a separate label: xrev::LGTM,
xrev::NC (needs changes) or xrev::DNM (do
not merge).