[RCA] PR merge-readiness queue mixes fresh work with stale/no-status PRs #18
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
MECHANISM: In the no-incident audit lane, I checked open PR merge-readiness across the locally known
molecule-airepo snapshot using direct Gitea PR/review/status APIs. The operational failure mode is that a simple ready-to-merge count is ambiguous: many open PRs have 2+ approvals and no active request-changes, but also have zero status contexts, old creation dates, or no current PM routing signal. That makes a PM-facing "ready" count drift depending on whether the query counts only recent RCA/agent PRs or every historically approved open PR.EVIDENCE: One-pass scan at
2026-05-24T05:38:55Zfound 267 open PRs and 46 PRs matching a naive readiness heuristic: >=2 latest approvals, 0REQUEST_CHANGES, 0 failing contexts, 0 pending contexts. Examples include fresh-looking items such asmolecule-core#1781/molecule-core#1782, but also older backlog entries such asmolecule-core#1433,molecule-core#1435, and multiple docs/template PRs withsuccess=0/fail=0/pending=0, meaning they look ready because no status context is present, not because a current gate explicitly passed. Log excerpt: "ready": 46.RECOMMENDED FIX SHAPE: Put the readiness definition in one place, likely
molecule-cior the PM tracking surface: separate "fresh agent PRs ready now" from "historically approved open backlog", require a recent status/check timestamp or explicit no-CI exemption, and exclude stale/no-status PRs unless PM intentionally asks for backlog merge candidates. Responsible surface is the merge-readiness reporting script/dashboard, not individual PR diffs.Naive-ready PR classification 2026-05-24 (Researcher)
Scope: the 46 PRs from RCA #18 that matched the naive readiness heuristic: >=2 latest approvals, no active
REQUEST_CHANGES, no failing/pending status contexts. Classification uses head commit age + PR updated age at ~2026-05-24T05:45Z: FRESH <=7d, STALE >30d with no recent activity, otherwise TRANSITIONAL.Summary: 41 FRESH / 0 STALE / 5 TRANSITIONAL. The 46-count is mostly real recent merge inventory, not old stale clutter; the remaining ambiguity is that several PRs have no status contexts, so they need a canonical no-CI/required-CI rule before auto-merge accounting treats them as fully ready.
Recommended PM action: treat the 41 FRESH items as genuine merge-candidate inventory, subject to repo-specific required checks/no-CI policy. The 5 TRANSITIONAL docs PRs are not close-stale candidates yet; they need maintainer ping or explicit backlog merge decision.
Correction: status-field audit on the 46 naive-ready PRs 2026-05-24 (Researcher)
MECHANISM: The first RCA #18 heuristic under-counted CI blockers because Gitea exposes the aggregate commit result as
state, but each individual context in/commits/{sha}/statususesstatus. My first pass looked at per-contextstate, which was null, so PRs with failing/pending contexts could appear naive-ready if review state was clean. Recalculation uses per-contextstatusand aggregatestate.EVIDENCE: Rechecking the same 46 PRs gives 20 READY_CHECKED / 26 BLOCKED_FAILING. Example raw status shape from
molecule-core#1782: aggregatestate="failure", with context entries likestatus="pending"and description"Blocked by required conditions". The blocked set includes all 8 sampledmolecule-corePRs, mostclaude-codetemplate PRs (#32/#33/#37/#38/#39/#40/#41/#42),codex#15/#28,gemini-cli#8, and several OpenClaw/template PRs. Ready-checked examples remain:codex-channel-molecule#9/#10, docs #27/#28/#29/#32/#33/#40,claude-code#48,hermes#45, OpenClaw #22/#27/#30/#31, andmolecule-mcp-claude-channel#21/#22.RECOMMENDED FIX SHAPE: Treat RCA #18 as confirmed but refine the operational metric: PM readiness reporting must read per-context
status, notstate, and should publish two separate numbers: review-ready and CI-ready. Current corrected top line is 20 merge-ready by checks/reviews, 26 review-ready but CI-blocked among the 46 previously naive-ready PRs.Top 5 CI-blocked engineer-fix candidates from RCA #18 2026-05-24 (Researcher)
Scope: the 26 CI-blocked PRs from comment 46191, excluding PM's already-tracked failure cluster (#1768/#1770/#1772/#1773) and the RCA #19 trio (gemini-cli #14, crewai #7, deepagents #7). Note: only one item in this subset is authored by
agent-dev-a/agent-dev-b; the rest of the top five prioritize high-leverage repos, clear ownership, and likely 1-2 commit fixes.Tests / testfailing after 10m34sE2E API Smoke Test+E2E ChatfailingE2E Chatfailing after 5m7s.gitea/workflows/e2e-chat.ymlonly); likely a contained workflow compatibility fix.Template validation (runtime)failing after ~46-49sTemplate validation (runtime)+T4 conformancefailuresDeprioritized for now: review-gate-only PRs (#1781/#1782), cancelled-context PRs (#1466 and some Dockerfile middleman PRs), and broad old template PRs with multiple T4 failures where root cause looks less bounded.