From 3449fb165b302339452c432d7b01b41e7773a11f Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 31 Oct 2026 18:44:39 +0000 Subject: [PATCH] fix(ship): a reply collect refused as no review keeps its NOT_REVIEWED row (Rule 25 with #3701) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- lib/review-ledger.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/review-ledger.ts b/lib/review-ledger.ts index df56bdb48..6711187ba 100644 --- a/lib/review-ledger.ts +++ b/lib/review-ledger.ts @@ -299,7 +299,8 @@ export function verify(ledger: string): { rows: VerifyRow[]; clean: boolean; bri if (unavailableOutput(o) && parsed.length) { status = 'MISMATCH'; notes.push('unavailable_output_has_findings'); } else if (!unavailableOutput(o)) { if (off.length) { status = 'MISMATCH'; notes.push(`merged_line_differs=${JSON.stringify(off)}`); differs.push(...off); } - if (parsed.length !== ids.length) { status = 'MISMATCH'; notes.push(`merged_count_differs=${parsed.length}/${ids.length}`); } + // A reply collect refused as no review (a wrong-tree reader, GST-482) records no ids whatever it holds; verify reports it NOT_REVIEWED. + if (parsed.length !== ids.length && !(o.review === false && !ids.length)) { status = 'MISMATCH'; notes.push(`merged_count_differs=${parsed.length}/${ids.length}`); } } } if (status === 'MATCH' && !reviewed(o)) {