docs(contributing): add hold-gate PR queue prioritization rubric - #1188
Merged
Merged
Conversation
## Planning Artifact Adds docs/contributing/hold-gate-rubric.md (new file) — the concrete proposal for the hold-gate PR queue prioritization rubric identified in #1043, incorporating the release-gate expedite policy consolidated from #1082, and scheduled in Phase 0 of the org-wide roadmap (#1073). Contents: - Three-tier prioritization rubric (P0: security/supply-chain/core integrity, P1: release-gate/defects/SSOT blockers, P2: tests/docs/routine refactors) - Release-gate expedite lane (<48h turnaround for approved release/ready PRs per common#1082 consolidation) - Streamlined acceptance criteria for test coverage PRs (~40% of queue backlog) - Factory seven-label contract compliance (tiers as review metadata/sorting signals, preserving canonical labels in docs/skills/label-workflow.md) - Preflight obsolescence check (#1054) to eliminate dead PRs - Operating metrics aligned with Phase 0 targets (<40 PR queue depth) Cross-references added in CONTRIBUTING.md, docs/contributing/reviewer-ladder.md, docs/skills/pr-review/SKILL.md, and docs/skills/pr-review/references/triage-operations.md. Refs #1043 Refs #1082 Refs #1029 Refs #1073 Hive-Run: #1043 Hive-Plan: phase-0/prioritization-rubric Hive-Spec: acmm-hold-gate#prioritization-rubric Assisted-by: Gemini 3.8 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: repires <repires@users.noreply.github.com>
castrojo
approved these changes
Sep 23, 2026
castrojo
pushed a commit
that referenced
this pull request
Sep 25, 2026
… duplicate PRs (#1201) # bluefin-common PR ## What does this change? Adds `docs/contributing/self-collision-preflight.md` — a planning draft for a preflight step that intersects a lane's own open PRs before it files again — and links it from `CONTRIBUTING.md`, `docs/factory/agentic-model.md`, and `docs/skills/pr-review/references/duplicate-cluster.md`. ## Why? Closes #1060 The hold-gated protocol lists open PRs at kick time precisely so a lane can prove its new filing is disjoint from work already in flight. Within one lane that check failed: the quality lane opened two duplicate pairs covering identical file clusters within three days (`finpilot#285`/`#303`, `finpilot#296`/`#299`), costing four review slots for two pieces of work. **All four named PRs are already resolved** — `#285` merged 2026-09-04, `#296` merged 2026-09-05, `#299` merged 2026-09-06, `#303` closed 2026-09-06 without merge. The queue adjudicated them rather than any rule preventing the second filing, so the actionable remainder is the rule. ### Why this is a draft and not a direct edit to the hard rules The issue proposes "a lane may not open a PR whose file cluster intersects its own open hold-gated PRs." I re-audited the **31 open app-authored PRs** across the ten repositories tracked in #1058 on 2026-09-23 and found **no confirmed intra-lane duplicate cluster**. Every file-cluster intersection that exists is legitimate work the prohibition would have blocked: | Intersecting pair | Same lane? | Why it is not a duplicate | |---|---|---| | `bluefin#1227` / `#1310` | `app/mergeraptor` | Distinct dependency digest bumps (`projectbluefin/common:latest` vs `ublue-os/brew:latest`) sharing `image-versions.yml` | | `server#238` / `#239` | `app/mergeraptor` | Distinct dependency digest bumps (`projectbluefin/actions` vs `taiki-e/install-action`) sharing `.github/workflows/build.yml` | | `dakota-iso#142` / `#146` | `app/hivecommons-hive` | A cosign-verification security fix and a host-side config SSOT refactor, both touching `justfile` | | `common#1186` / `#1187` | human (`repires`) | Two human PRs closing different issues (#1161, #1160) sharing `Justfile` and `.github/workflows/unit-tests.yml` | A shared file is not proof of duplication — that is already the factory's rule at review time ([`common-rationalizations.md`](https://github.com/projectbluefin/common/blob/main/docs/skills/pr-review/references/common-rationalizations.md), [`duplicate-cluster.md`](https://github.com/projectbluefin/common/blob/main/docs/skills/pr-review/references/duplicate-cluster.md)). The real finpilot duplicates shared an *intent and closing issue*, not merely a path. So the draft proposes the evidenced alternative: **intersect, compare hunks and closing-issue sets, then either comment on the existing PR or disclose the overlap in the new body** — a disclosure rule rather than a prohibition, which keeps the judgment where the evidence is and makes it visible to the reviewer. It is drafted rather than applied because it binds filing behavior org-wide. That matches the precedent set for the sibling strategist findings: #1043 → `hold-gate-rubric.md` (#1188) and #1052 → `agent-lane-throttle.md` (#1197), both merged as drafts pending a maintainer decision. Nothing in the draft changes agent runtime behavior, adds a label, or adds a CI gate. ## PR pipeline ``` opened ──▶ 4-review ──▶ approved ──▶ merged ``` > A maintainer reviews and approves; merge goes through the merge queue. > Select `blocked` or `hold` to pause the work. ## Checklist - [x] PR title follows Conventional Commits (`fix:`, `feat:`, `docs:`, `ci:`, `refactor:`, etc.) - [x] `just check` passes - [x] `pre-commit run --all-files` passes (all 15 hooks green, including skill front-matter, `docs/SKILL.md` index, internal markdown links, and the generated `docs/skills/index.json` catalog) - [x] Skill doc updated if the change affects agent-facing conventions or behavior — `docs/skills/pr-review/references/duplicate-cluster.md` gained a prevention pointer to the draft; `docs/factory/agentic-model.md` gained a pointer from the existing duplicate-PR rule - [x] `AGENTS.md` / `docs/SKILL.md` / `docs/skills/` links remain valid (`scripts/check-doc-links.sh` passes) - [ ] CI is green after push — pending ## AI attribution This change was not authored via GitHub Copilot, so the Copilot-specific `Co-authored-by` trailer is deliberately omitted rather than asserted. The attribution trailer names the actual model: ``` Assisted-by: deepseek/deepseek-v4.1-flash via Hive ``` — hive: backend=litellm model=deepseek/deepseek-v4.1-flash --- 🐝 **Hive Agent**: `contributor` | **SHA:** `a8fcea8` Signed-off-by: sramkrishna <sramkrishna@users.noreply.github.com> Co-authored-by: sramkrishna <sramkrishna@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
bluefin-common PR
What does this change?
Adds a concrete 3-tier hold-gate PR queue prioritization rubric proposal (
docs/contributing/hold-gate-rubric.md) and updates contributing and review skill documentation.Why?
Closes #1043
Addresses #1082
Hold-gated PR inventory grew rapidly to 95 PRs competing flatly on a FIFO basis for scarce human review. This planning artifact establishes:
system_files/shared/**,Containerfile).release/readyorci(promote)PRs, carrying forward the consensus from [strategist] Hold-gate drawdown (-21%, 95→75) not redirected to release gates: bluefin#1115 approved + release/ready, unmerged 17 days #1082).docs/skills/label-workflow.md.main([strategist] Hold-gated agent PRs silently superseded by merged human fixes — no obsolescence detection #1054) to close dead PRs before burning review cycles.PR pipeline
Checklist
fix:,feat:,docs:,ci:,refactor:, etc.)just checkpassespre-commit run --all-filespasses (all skill frontmatter, index, and doc-link validators pass)docs/skills/skill-improvement.md— updateddocs/skills/pr-review/SKILL.mdandtriage-operations.md)AGENTS.md/docs/SKILL.md/docs/skills/links remain validgh run list --repo projectbluefin/common --limit 5AI attribution
Assisted-by: Gemini 3.8 via GitHub Copilot
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
— hive: backend=agy
🐝 Hive Agent:
contributor| SHA:24a57d5