Skip to content

fix(review-evasion): a one-shot-closed PR's only explanation comment is swallowed on failure — closed with no visible reason, forever #8802

Description

@JSONbored

Context (ORB round-2 adversarial audit)

All 7 close-enforcement guards in src/queue/review-evasion.ts (draft-dodge :307-320, reopen-reclose :504-510, self-close :733-743, review-evasion-draft :893-903, draft-cycle :1062-1072, draft-pr-close-policy :1219-1229, synchronize-close-policy :1350-1360) post the contributor's ONLY explanation via `createIssueComment(...).catch(() => undefined)`. These closes are independent of the gate-check comment — a secondary-rate-limit/5xx on the comment leaves a permanently closed one-shot PR with zero visible reason, and no reconciliation sweep backfills it.

Fix

Either bounded retry of the explanation comment (RetryableJobError), or extend the reconcile sweep to detect "closed by loopover, no marker comment present" and backfill. Prefer the sweep (covers all 7 sites at once + heals historical cases). Tests for the backfill detection both ways.

99%+ patch coverage, branch-counted.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions