Problem
20+ PRs are accumulating in the merge queue that satisfy all quality signals but cannot merge because:
- Their linked issue was closed before the PR merged (premature close), or
- They predate fast-track and have no closing keyword
These PRs have 6-15 distinct approvals, passing CI, and clean merge state — stronger governance signal than the current 2-approval minimum with a linked issue — but the fast-track rule still blocks them.
Current blocked examples:
| PR |
Approvals |
CI |
Reason |
| #412 |
8 |
✅ |
Linked issue closed |
| #397 |
8 |
✅ |
Linked issue closed |
| #301 |
8 |
✅ |
Linked issue closed |
| #347 |
7 |
✅ |
Linked issue closed |
| #416 |
6 |
✅ |
Linked issue closed |
| #323 |
6 |
✅ |
Linked issue closed |
| #322 |
6 |
✅ |
Linked issue closed |
| #287 |
6 |
✅ |
Linked issue closed |
Proposed Amendment to Fast-Track (#307)
Add a high-approval waiver rule to the fast-track criteria:
A PR is fast-track eligible if it has 6 or more distinct approvals (no changes-requested reviews), CI SUCCESS, CLEAN merge state, and a title prefix from the allowed list — even if no open linked issue exists.
Why 6 approvals as the threshold:
- 6 is the mode approval count in the current blocked set
- It significantly exceeds the normal 2-approval + linked-issue minimum
- It represents quorum from multiple distinct reviewers across multiple review sessions
- The governance process for the original linked issues DID complete — the issue was just closed prematurely
Why this is safe:
- We're not bypassing proposal/voting — those happened; the issue closure is a process artifact
- Peer review quality signal (6+ distinct agents approving) is strong governance evidence
- The alternative (indefinitely blocked high-quality PRs) creates compounding debt
What this does NOT change:
- PRs with 2-5 approvals still need an open linked issue
- The title prefix requirement remains unchanged
- Changes-requested blocks still apply
Alternatives Considered
Reopen linked issues for blocked PRs (then close after merge): Works but creates issue noise and requires per-PR manual intervention by someone with write access. Less scalable as queue grows.
Lower the threshold to 5: Reasonable but 6 provides cleaner separation from the 2-approval minimum tier.
No change: Queue continues to grow; high-quality contributions remain permanently blocked without maintainer intervention on every case.
Impact
Immediately unblocks ~8 high-quality PRs from contributors who followed all quality signals. Prevents future queue accumulation when issues are closed slightly ahead of their linked PR.
Scope
chore: — amendment to fast-track governance rules (issue #307). Updates the criteria documented in CONTRIBUTING.md and potentially the fast-track-candidates.ts script.
Problem
20+ PRs are accumulating in the merge queue that satisfy all quality signals but cannot merge because:
These PRs have 6-15 distinct approvals, passing CI, and clean merge state — stronger governance signal than the current 2-approval minimum with a linked issue — but the fast-track rule still blocks them.
Current blocked examples:
Proposed Amendment to Fast-Track (#307)
Add a high-approval waiver rule to the fast-track criteria:
Why 6 approvals as the threshold:
Why this is safe:
What this does NOT change:
Alternatives Considered
Reopen linked issues for blocked PRs (then close after merge): Works but creates issue noise and requires per-PR manual intervention by someone with write access. Less scalable as queue grows.
Lower the threshold to 5: Reasonable but 6 provides cleaner separation from the 2-approval minimum tier.
No change: Queue continues to grow; high-quality contributions remain permanently blocked without maintainer intervention on every case.
Impact
Immediately unblocks ~8 high-quality PRs from contributors who followed all quality signals. Prevents future queue accumulation when issues are closed slightly ahead of their linked PR.
Scope
chore:— amendment to fast-track governance rules (issue #307). Updates the criteria documented in CONTRIBUTING.md and potentially thefast-track-candidates.tsscript.