Context
reviewEvasionProtection's field doc (src/types.ts:1123-1128) claims: "off" (the default) disables detection entirely. Both halves are stale/wrong: (1) "off" is no longer the default — PR #4011 (src/db/repositories.ts:593, normalizeReviewEvasionProtection:7546-7548) flipped the effective default to "close". (2) Even when explicitly set "off", detection is not fully disabled: the ready↔draft cycling detector (processors.ts:5604-5613) unconditionally bumps a persistent DB counter (bumpPullRequestDraftConversionCount, db/repositories.ts:3758-3770, deliberately never reset/scoped) for every author-driven draft conversion — only the enforcement (close action) is gated on the setting.
A repo running "off" silently accumulates a cycling count in the background. If later changed to "close" (explicitly, or by removing the override, which now also resolves to "close"), the very next legitimate draft conversion can be immediately auto-closed as "repeated cycling" even though enforcement was never previously active — a genuine one-shot false-positive close risk, the same class of issue this project's own history treats as serious (see prior "Review-evasion protection PR #3414" and "Contributor-Trust false-closure fix" incidents).
Requirements
- Primarily a doc fix. If the false-positive-on-reenable behavior is deemed unacceptable, a separate follow-up could snapshot/reset the counter at the transition moment — scope that as its own change, not bundled here.
Deliverables
Expected Outcome
The field doc accurately describes both the real default and the always-on background counter, so a maintainer setting this to "off" understands what it does and doesn't suppress.
Links & Resources
- Evidence:
src/types.ts:1123-1128; src/queue/processors.ts:5604-5613; src/db/repositories.ts:593,7546-7548,3758-3770
Part of #5270 (roadmap epic).
Context
reviewEvasionProtection's field doc (src/types.ts:1123-1128) claims:"off" (the default) disables detection entirely. Both halves are stale/wrong: (1)"off"is no longer the default — PR #4011 (src/db/repositories.ts:593,normalizeReviewEvasionProtection:7546-7548) flipped the effective default to"close". (2) Even when explicitly set"off", detection is not fully disabled: the ready↔draft cycling detector (processors.ts:5604-5613) unconditionally bumps a persistent DB counter (bumpPullRequestDraftConversionCount,db/repositories.ts:3758-3770, deliberately never reset/scoped) for every author-driven draft conversion — only the enforcement (close action) is gated on the setting.A repo running
"off"silently accumulates a cycling count in the background. If later changed to"close"(explicitly, or by removing the override, which now also resolves to"close"), the very next legitimate draft conversion can be immediately auto-closed as "repeated cycling" even though enforcement was never previously active — a genuine one-shot false-positive close risk, the same class of issue this project's own history treats as serious (see prior "Review-evasion protection PR #3414" and "Contributor-Trust false-closure fix" incidents).Requirements
Deliverables
types.ts:1123-1128— "off" is now an explicit opt-out; the default is "close" as of chore(review): review reviewEvasionProtection DB default (off -> close) #4011.Expected Outcome
The field doc accurately describes both the real default and the always-on background counter, so a maintainer setting this to "off" understands what it does and doesn't suppress.
Links & Resources
src/types.ts:1123-1128;src/queue/processors.ts:5604-5613;src/db/repositories.ts:593,7546-7548,3758-3770Part of #5270 (roadmap epic).