gitlink-cli/examples/workflows/pr-quality-gatekeeper/docs/verification.md

3.9 KiB
Raw Permalink Blame History

真实平台验证记录

全部针对 GitLink 线上真实平台 运行(gitlink-cli + Token 认证),非 mock。 他人仓库一律 dry-run只读零写入写操作只在自有 fork 演练。 运行环境macOSApple Silicon· Python 3.9 · @gitlink-ai/cli 0.2.0npm 官方发布版,零本地构建)。

A. dry-run真实 PR → PASS 90/100

对本仓库真实 PRpull_request_id 15222feat/org-team-projects8 个变更文件):

  • 路由正确分流README/docs/skill → doc-maintainerorg.go → go-reviewerorg_test.go → qa-reviewer
  • 评分确定性可手算复现review 40/40 · test 20/201 src/1 test· hygiene 10/15desc✓/issue✗/size✓· commit 15/15 · ci 5/10unknown= 90 → PASS
  • CI 取不到构建记录 → unknown:按策略不触发硬门禁(仅显式 failing 触发),只在 CI 维记半分
  • 产物:../examples/demo-outputs/scorecard-pass-90.md

B. 注入真实审查发现 → REQUEST_CHANGES 55/100

同一 PR注入 ../findings.example.json 重跑review_findings 40/40 → 5/401 major + 2 minor总分 90 → 55裁决翻转为 REQUEST_CHANGES

发现是真的,不是编的——三条均来自对该 PR 真实 diffhead bcc27bf)的代码审查,标注 shortcuts/org/org.go 真实行号,任何人拉取该分支可逐条复核。其中 major新增的 parseBool 只认字面 "true"--dry-run=1 会被静默当 false而该 flag 守护的是「批量移除团队全部项目」这一破坏性操作。

产物:../examples/demo-outputs/scorecard-findings-55.md

C. --apply 真实回写(自有 fork 演练)

在自有 fork 的演练 PR故意「改源码不带测试」上执行 --apply

  • 触发硬门禁 require_tests_for_src_changes → REQUEST_CHANGES 40/100
  • GitLink API 回执确认三件写操作全部落地:
    1. 评分卡评论回写到 PRcomment id 472741
    2. 自动创建 tracking issueid 143217),汇总硬门禁 + 必修项 + 建议 reviewer与 PR 双向回链
    3. 裁决标签挂载到 PR 背后 issuelabel +list 查 id → Raw API POST /:owner/:repo/issues/<issue_id>)——依赖本仓库的 label 命令0.2.0 起官方发布版自带)

D. 全仓批量体检113 个 open PR

gatekeeper_sweep.py 对本仓库全部 113 个 open PR 逐个 dry-run只读、零写入、零 AI 成本113/113 成功:

  • 裁决分布:PASS 105 · COMMENT 6 · REQUEST_CHANGES 2;分数 min 70 / 中位 90 / 均值 88.5 / max 95
  • 治理洞察:96% 的 open PR 未关联 issue2 个 PR 触发 require_tests_for_src_changes(改源码不带测试)
  • 完整报告(含全量明细表):../examples/demo-outputs/sweep-report-2026-06-10.md
  • 诚实口径批扫不注入审查发现review_findings 维未评、按满分计CI 统一 --skip-ciunknown 半分)——总分代表「除人工/AI 审查外的工程卫生分」,偏乐观

E. 单元测试(确定性回归护栏)

$ python3 tests/test_scoring.py
OK

锁定四个权威裁决案例PASS / REQUEST_CHANGES / COMMENT / 硬门禁直拒)的总分与裁决与 Skill 文档逐位一致;任何改动若破坏「同输入 → 同分 → 同裁决」,测试立即变红。

真实运行当场暴露过的问题(透明记录)

  • GitLink 的 PR 标题/描述在 pr +view 返回的 issue.subject/description,而非 pull_request 子对象——离线 mock 测不到,真实平台运行才暴露并修复。
  • npm 0.1.18 时代 --apply 的打标签步骤会报 unknown command "label"(彼时 label 命令尚未发布0.2.0 起官方发布版自带,整条闭环零本地构建跑通。