Skip to content

[自动合并 P3-4] 自动合并 SLI 面板 + 每周抽样审计 #98

Description

@randypanding

目标

定义并落地自动合并的门禁自身 SLI(用数据知道"是否成功"),外加固定成本的人类环节:每周随机抽样 3 个已自动合并的 PR 做审计。把 review 从 100% 覆盖降为统计抽样——这是"人类不成为瓶颈"的正确形态。

背景(源自 #81 §8)

自动化程度不能凭感觉。核心指标:自动合并率、人类触碰数/merged PR(目标→0)、门禁逃逸率(被 revert + 事后发现的问题 / 周——真正的风险指标,必须有分母)、卡死 PR 数与停留 P95、gate 假红率、熵增指标(抑制标记净增、覆盖率趋势、新增依赖数)。抽样审计让人类判断的成本与 PR 数量脱钩——不是消灭人类判断。

涉及文件

  • CI-Workflows.github 仓新增 SLI 采集脚本(scripts/sli-report.sh 之类)
  • 周期 workflow(每周跑,产出 issue/讨论区报告)
  • governance/policy/(指标定义、阈值、抽样参数:每周 3 个、随机种子可复现)
  • 审计 issue 模板

执行步骤

  1. 实现 SLI 采集(数据源:GitHub API——PR 时间线、reviews、check runs、revert 事件、workflow runs):
    • 自动合并率 = auto-merged / total merged PR;
    • 人类触碰数 / merged PR(人工 comment/review/手动合并/手动 rerun 计数);
    • 门禁逃逸率 = (revert 数 + drift-check/生产事后发现数) / 周,带分母;
    • 卡死 PR 数、PR 停留时长 P95;
    • gate 假红率(flaky 重试才通过的占比,消费 P2-9 的 flaky 记录);
    • 熵增:抑制标记净增(消费 P2-2 计数)、覆盖率趋势(消费 P2-3 数据)、新增依赖数(消费 P2-5 数据)。
  2. 周期 workflow 每周产出报告 issue(含周环比),关键指标越阈值自动升级(如逃逸率 >0 连续两周 → P1 issue)。
  3. 每周抽样审计:自动开审计 issue,含随机 3 个本周已自动合并 PR 的链接 + 审计 checklist;随机种子记录在 issue 中(可复现、防"挑软的抽"质疑)。
  4. 审计发现的问题回流:逃逸样本归因后回写指标,必要时触发门禁补强 issue。

验收标准

  • 每周自动产出 SLI 报告,六项指标齐全且分母正确。
  • 每周自动开出含 3 个随机样本的审计 issue,种子可复现。
  • 指标越阈值自动升级。

测试方法(预先指定)

T1 指标正确性(核心,回放测试)

  1. 用过去 30 天的真实组织数据离线跑采集脚本。
  2. 人工用 gh 命令独立核算其中 3 个指标(自动合并率、人类触碰数、卡死 PR 数——抽样核对,如取 2 个仓 × 2 周)。
  3. 断言脚本输出与人工核算完全一致;不一致先修脚本再谈上线。

T2 分母陷阱(单元级):构造 fixture 数据(JSON 形式的 PR/review/run 记录):

  • 零 PR 的周 → 各比率指标输出 "N/A" 而非除零崩溃或 100%;
  • 全人工合并的周 → 自动合并率 = 0 且告警;
  • 含 revert 事件的周 → 逃逸率分子正确计入。

T3 抽样可复现与无偏(核心)

  1. 同一周数据 + 同一 seed 跑两次 → 断言抽中样本完全相同(可复现)。
  2. 不同 seed → 样本不同(非固定)。
  3. 统计粗检:对模拟的 100 个 PR 总体跑 1000 次抽样,断言每个 PR 被抽中频率在期望值的统计容差内(卡方粗检 p>0.01)——证明抽样无系统性偏好。

T4 端到端(正向):workflow 手动触发一次 → 断言产出 SLI 报告 issue + 审计 issue,格式符合模板,链接可点。

T5 阈值升级(注入):注入"逃逸率连续两周 >0"的 fixture → 断言自动开出 P1 升级 issue。

依赖

  • P2-2 / P2-3 / P2-5 / P2-9(熵增与假红指标消费这些卡的数据产出;它们未落地前对应指标可先标记 "pending" 上线,不阻塞本卡)
  • P2-6(逃逸率的 revert 数据源)

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    auditauto-merge自动合并计划(#81)工作卡governance治理体系相关

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions