⚠️ Definition of Done: this issue must be completed in full, in a single PR. Do not split this
work across multiple PRs, and do not defer any Deliverable below to a follow-up issue. A PR that
satisfies only some of the Deliverables, stubs a required test, or leaves a checkbox
partially-done does NOT resolve this issue and will be closed.
Context
src/queue/review-evasion.ts's module header (lines 4-7) explicitly lists ReopenRecloseOutcome
among a set of names claimed "private to this file, since none of them had any caller outside this
cluster." That claim is false: export type ReopenRecloseOutcome = "reclosed" | "allowed" (line
331) is imported and used outside this file — src/queue/processors.ts:403 imports it and
processors.ts:6175 uses it. Every other name in that same header parenthetical
(withPrActuationLock, evaluateCloseEnforcementGate, hasMaintainerOrOwnerPermission,
REVIEW_EVASION_CLOSED_EVENT_TYPE) is correctly unexported — only ReopenRecloseOutcome breaks the
stated invariant.
This is a real, checkable false claim: a future contributor reading the header could reasonably
believe ReopenRecloseOutcome needs no cross-file impact check when reshaping it, when in fact
processors.ts depends on its exact shape. A related, lower-confidence stale pointer in the same
area: linked-issue-label-propagation-fetch.ts:44-46 says hasMaintainerOrOwnerPermission "lives in
src/queue/processors.ts" — it actually lives in review-evasion.ts, unexported.
Requirements
- Correct
review-evasion.ts's module header (lines 4-7) to remove ReopenRecloseOutcome from the
"private to this file" list, and note instead that it is exported and consumed by
src/queue/processors.ts.
- Correct
linked-issue-label-propagation-fetch.ts:44-46's comment, which misattributes
hasMaintainerOrOwnerPermission's location to processors.ts instead of review-evasion.ts.
Deliverables
Both Deliverables are required in the same PR.
Test Coverage Requirements
This is a doc/comment-accuracy fix with no behavioral change — no new runtime branch is introduced,
so no new test is required.
Expected Outcome
Both files' comments accurately describe the real export/location status of the names they
reference, so a future contributor doesn't skip a needed cross-file impact check based on a false
"private to this file" claim.
Links & Resources
src/queue/review-evasion.ts:4-7 (header claim), :331 (the export in question)
src/queue/processors.ts:403,6175 (the real cross-file consumer)
linked-issue-label-propagation-fetch.ts:44-46 (the second, related stale pointer)
Context
src/queue/review-evasion.ts's module header (lines 4-7) explicitly listsReopenRecloseOutcomeamong a set of names claimed "private to this file, since none of them had any caller outside this
cluster." That claim is false:
export type ReopenRecloseOutcome = "reclosed" | "allowed"(line331) is imported and used outside this file —
src/queue/processors.ts:403imports it andprocessors.ts:6175uses it. Every other name in that same header parenthetical(
withPrActuationLock,evaluateCloseEnforcementGate,hasMaintainerOrOwnerPermission,REVIEW_EVASION_CLOSED_EVENT_TYPE) is correctly unexported — onlyReopenRecloseOutcomebreaks thestated invariant.
This is a real, checkable false claim: a future contributor reading the header could reasonably
believe
ReopenRecloseOutcomeneeds no cross-file impact check when reshaping it, when in factprocessors.tsdepends on its exact shape. A related, lower-confidence stale pointer in the samearea:
linked-issue-label-propagation-fetch.ts:44-46sayshasMaintainerOrOwnerPermission"lives insrc/queue/processors.ts" — it actually lives inreview-evasion.ts, unexported.Requirements
review-evasion.ts's module header (lines 4-7) to removeReopenRecloseOutcomefrom the"private to this file" list, and note instead that it is exported and consumed by
src/queue/processors.ts.linked-issue-label-propagation-fetch.ts:44-46's comment, which misattributeshasMaintainerOrOwnerPermission's location toprocessors.tsinstead ofreview-evasion.ts.Deliverables
review-evasion.ts's header no longer claimsReopenRecloseOutcomeis private to the file;it accurately notes the real cross-file consumer (
processors.ts).linked-issue-label-propagation-fetch.ts's comment accurately namesreview-evasion.tsashasMaintainerOrOwnerPermission's real location.Both Deliverables are required in the same PR.
Test Coverage Requirements
This is a doc/comment-accuracy fix with no behavioral change — no new runtime branch is introduced,
so no new test is required.
Expected Outcome
Both files' comments accurately describe the real export/location status of the names they
reference, so a future contributor doesn't skip a needed cross-file impact check based on a false
"private to this file" claim.
Links & Resources
src/queue/review-evasion.ts:4-7(header claim),:331(the export in question)src/queue/processors.ts:403,6175(the real cross-file consumer)linked-issue-label-propagation-fetch.ts:44-46(the second, related stale pointer)