Skip to content

patrol: H16 — open non-draft PR stuck in merge-conflict (mergeable_state dirty) beyond threshold #9980

Description

@os-warren

Maintainer ruling (2026-08-19, PM chat): 「同意你的建议」—— 批准 devx 事故复盘的两条提议之一(另一条是 lanes 读锚判据,独立卡)。事故出处:PR #9826 合并冲突挂 4 小时无人发现 —— 冲突不红、不响、不产生事件,且 auto-merge 已挂时所有代理信号都读作健康;os-steve 的私人检查器已修,但板面级仪器(H1–H15)无一条看 mergeable_state。教训原话:「一个无法表达某状态的仪器,会把它报成它能表达的最近状态。」

Scope — scripts/pm/check-half-states.mjs,一条新 report-only 谓词(经现有巡逻上锚)

H16:开放、非 draft 的 PR 处于合并冲突(mergeable_state = dirty)超过阈值 → 锚上一行,点名 PR 与其 Fixes 卡。要点:

  • 阈值为命名常量 + rationale 注释(参照 DOMAIN_HALF_STATE_STALE_HOURS 先例;建议 ~2h —— 冲突多由 base 前进造成,给正常解决留窗口)。
  • 平台事实必须处理:mergeable_state 不在列表 API 里,要逐 PR GET;且 GitHub 异步计算 mergeability,读到 unknown/null 时不判(照本文件「不能命名就不 vouch」的窄性纪律,跳过而非报告)。逐 PR GET 只对 sweep 已列出的开放 PR 发起,量小;draft 跳过。
  • Report-only:修复动作(合 base 解冲突)永远是车道 PM 的,谓词只报告。双渲染器普通行,不 loud。
  • 自测:dirty 超阈/未超阈、unknown 跳过、draft 跳过、clean 干净——每形状正负钉住;编号顺延 H16,头部枚举与 H1–Hn 范围文本同步。

Serial

热文件 check-half-states.mjs 空闲(PR #9963 已落地;#9966 属 devx 道且目标是 ci-failure.mjs)。非治理面。Graded pm:queue, S/M(skills 座,own-lane,session ae0d8bd1-5667-5f58-8ff8-fa22ec154325)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions