On 2026-09-24 01:09Z, ReviewGate parked emr-8fqbng (emricare/tonic, MR !294) with 'a verdict guard refused the reviewer's APPROVE'. The logs say:
- 01:07:59: 'approved without dispositioning 2 open finding(s); re-prompting (attempt 2)'
- 01:09:26: 'approved without dispositioning open finding(s) F1.2, F1.4 and the re-prompt budget is exhausted; rejecting the approval'
But the stored round-2 review row (/api/review_gate_rounds?task_id=emr-8fqbng) has a DISPOSITIONS block with - [ADDRESSED] F1.2 — .gitlab-ci.yml:57 … and :209 … and - [ADDRESSED] F1.4 — same fix as F1.2 …, plus [ADDRESSED] F1.3 and [OBSOLETE] F1.1. It also has 'Findings: none.' and 'VERIFICATION: FULL'. So the guard's disposition parser failed to see dispositions that are plainly there. Suspects:
- the parser stops at 'Findings: none.';
- the id format;
- it evaluates a different attempt's text than the one persisted.
The false park cost a re-prompt and a coordinator hand-ruling on a green, correct D0 fix that was blocking two P0 MRs.
D2 because it's a parser/guard fix with a regression test built from this exact findings text.
Acceptance
- Given this round's exact findings text, the disposition parser sees F1.1–F1.4 as dispositioned and the APPROVE is accepted.
- The guard evaluates the same attempt text that gets persisted as the round row. Test or assert that.
- When the guard does refuse, the park message quotes the disposition lines it did parse, so a coordinator can tell a parser miss from a real omission.
mix precommit passes.
On 2026-09-24 01:09Z, ReviewGate parked emr-8fqbng (emricare/tonic, MR !294) with 'a verdict guard refused the reviewer's APPROVE'. The logs say:
But the stored round-2 review row (
/api/review_gate_rounds?task_id=emr-8fqbng) has a DISPOSITIONS block with- [ADDRESSED] F1.2 — .gitlab-ci.yml:57 … and :209 …and- [ADDRESSED] F1.4 — same fix as F1.2 …, plus[ADDRESSED] F1.3and[OBSOLETE] F1.1. It also has 'Findings: none.' and 'VERIFICATION: FULL'. So the guard's disposition parser failed to see dispositions that are plainly there. Suspects:The false park cost a re-prompt and a coordinator hand-ruling on a green, correct D0 fix that was blocking two P0 MRs.
D2 because it's a parser/guard fix with a regression test built from this exact findings text.
Acceptance
mix precommitpasses.