Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phoenix Release Guard

面向游戏研发流水线的证据驱动发布门禁与质量治理平台。Phoenix 将 JUnit、SARIF、 行覆盖率、性能基线、测试历史和代码变更统一成一个可解释的 PASS/BLOCK 结论,并为 每条规则保留 actual / threshold / message 轨迹。发布结论绑定全部输入哈希,可追加到 SHA-256 链式审计账本。

核心能力

  • 多源证据摄取:JUnit XML 精确到 testcase,SARIF 2.1.0 按 rule + fingerprint 去重并排除 accepted suppression;覆盖率复核百分比与行数,性能比较要求 current / baseline 指标集、单位和方向一致。
  • 变更风险评分:按路径映射组件,用 diff churn、组件权重和 criticality 输出 0–100 分及逐文件解释;高风险变更可强制质量负责人审批。
  • 风险选测:必跑用例 + 加权 set-cover,在覆盖所有受影响组件的约束下优先选择 高收益短用例,并估算相对全量回归节省时间;门禁反查 JUnit,确保“已选择”真的执行。
  • flaky detection:结合失败率平衡度、相邻运行状态翻转率、最小样本数和 Wilson 95% 区间,区分稳定失败与非确定性失败。
  • 可审计决策:证据文件与 policy 全量 SHA-256,并在解析前后复核;相同输入产生 相同 decision ID;JSONL hash chain 对缺失/空/畸形账本失败关闭,拒绝续写已损坏链。

纯 Python 标准库实现,无运行时第三方依赖;需要 Python 3.11+。

快速演示

仓库自带一套可通过的 RC 证据:

python -m phoenix_guard demo --output-dir build
python -m phoenix_guard verify-ledger build/audit.jsonl

对自己的流水线运行:

python -m phoenix_guard evaluate \
  --manifest path/to/release.json \
  --policy path/to/policy.json \
  --output build/decision.json \
  --ledger build/audit.jsonl

其他独立能力:

python -m phoenix_guard select-tests \
  --manifest examples/release.json --policy examples/policy.json
python -m phoenix_guard flaky --history examples/fixtures/history.json
python -m phoenix_guard benchmark --iterations 1000

Windows PowerShell 可将续行命令写成单行。也可执行 python -m pip install -e . 安装 phoenix-guard 命令。

Manifest 与 policy

examples/release.json 声明 release、changed files、审批与六类证据路径;相对路径以 manifest 所在目录为基准。examples/policy.json 声明质量阈值、组件 glob、权重、 required tests 与测试目录。示例本身既是可执行 demo,也是格式契约。

发布门禁当前覆盖:

  1. JUnit 失败/错误数;
  2. SARIF error 与 warning 数;
  3. 行覆盖率;
  4. 最坏方向修正后的性能回退;
  5. 风险选测是否完整执行;
  6. 当前失败是否命中 flaky 分类;
  7. 高风险变更是否具备指定审批。

CLI 对 BLOCK 返回退出码 2,便于直接接入 CI。

测试

python -m unittest discover -s tests -v

测试覆盖多格式解析、覆盖率计数一致性、性能指标缺失/方向、风险评分、加权选测、 flaky 分类、严格策略阻断、decision ID 确定性及账本篡改检测。完整设计与信任边界见 docs/architecture.md

已复现实测(2026-07-30)

环境:Python 3.12.3,Intel Core i7-4600U。

验证项 实际结果
unittest 18/18 passed,0.404 s
demo 证据门禁 8/8 gates PASS,risk 53.10
风险选测 2/6 tests,覆盖 2/2 changed components
预计回归耗时 9,680 ms → 1,200 ms,节省 87.60%
flaky 分析 3 tests / 8 runs,识别 1 个 flaky(score 0.7875)
性能基线 最坏回退 5.36%,低于 8% policy
审计账本 1 record,hash chain 验证通过
benchmark --iterations 1000 8.183 s,122.21 evaluations/s

选测节省率来自示例 catalog 的声明时长;基准用于本地 policy-engine 回归,不代表包含 外部 CI 下载与执行测试的端到端耗时。

目录

phoenix_guard/
  ingest.py    JUnit / SARIF / coverage / performance 解析
  risk.py      变更风险与测试选择
  flaky.py     历史稳定性统计
  policy.py    证据编排、规则与决定指纹
  ledger.py    append-only SHA-256 hash chain
  cli.py       evaluate / select-tests / flaky / audit / demo / benchmark
examples/      完整 RC manifest、policy 与证据 fixtures
tests/         标准库 unittest
docs/          架构、算法与信任边界

信任边界

  • JSONL 链用于发现误改、断链和中间记录篡改;没有外部可信 head 时,无法单独证明尾部 未被截断,也不能阻止拥有写权限的人重算整条链。生产环境应把 head 锚定到远端存储或 签名服务,并采用单写者。
  • 示例中的 approvals 是 manifest 声明,不是认证签名。接入真实流水线时应由 CI 身份 或审批系统生成,不能接受提交者任意填写。
  • 风险选测的耗时节省来自 catalog 估算;门禁只验证选中测试出现在 JUnit 中,不代表 已测量真实墙钟时间。

License

MIT

About

Evidence-driven game release gates with risk-based test selection, flaky detection and hash-chain audit.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages