The merge gates are now one computation, MergeGates, shared by mr show (a gates block: approvals counted and required, owners outstanding per file, open threads, checks, fast-forward), the merge request page (the same block), and mr merge, which names every unmet gate in one refusal instead of the first. The check gate moves in from the merge path. mr review reports counts and says when a verdict is advisory. Page render test, e2e covering the block before and after reviews and the combined refusal.
Closes #199
retargeted from review-survives-rebase to main: !342 merged
2026-09-08 02:35 UTC