fix(review): the payload decides the engine, and a tie keeps the reviewer finding

An engine's brief-conflict mark could lower a reviewer agent's MAJOR: ingest kept an engine field a reviewer wrote on its own finding, and on a severity tie the survivor depended on payload order (engine first gave ALLOW, reviewer first WARN). ingest now takes engine from the payload source; Pass 1 and the workflow dedup keep the reviewer-agent finding on a tie. Prose (coordinator Pass 1, Handover 6) follows. Decision 13, operator 12.10.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-10-12 18:50:56 +02:00
commit 305ac9284f
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
6 changed files with 140 additions and 12 deletions

View file

@ -90,7 +90,10 @@ Two findings collide when their `(file, line, rule_key)` triplets are
identical. When findings collide:
- Keep the finding with the highest catalogue severity (BLOCKER >
MAJOR > MINOR > SUGGESTION).
- If the severity tie, prefer the finding from
- If the severity ties, prefer a reviewer-agent finding over an engine
finding (one from `claude-code-review` / `claude-security-review`), so an
engine's brief-conflict mark never lowers what a reviewer agent asserted;
among reviewer-agent findings, prefer the finding from
`brief-conformance-reviewer` (its findings are anchored to the brief).
- Concatenate the kept finding's `detail` with a one-line note: "Also
flagged by {other reviewer}: {their title}." This preserves