Files
NotesAgentic/docs/development/OpenNexus生产验收Runner.md
T

2.8 KiB

OpenNexus 生产验收 Runner

scripts/phase3-production-acceptance.py 是第三阶段 A/B/C/D/S/E 验收 ID 的统一入口。它只把仓库登记的逐 ID driver 结果计为生产验收;普通单元测试、隔离冒烟和历史人工汇总不会自动换算成通过。

查看固定的 30 项清单:

python scripts/phase3-production-acceptance.py --list-cases --json

复制 scripts/phase3-acceptance-config.example.json 到仓库外,将占位值改成唯一 run_id 并设置平台 profile。data_root 可直接使用绝对路径,也可像模板一样通过环境变量引用。第一次运行只接受不存在或空目录并写入与 run_id 绑定的隔离标记;后续只能由同一 run 复用。个人 Vault、仓库或 .git 的父目录/子目录、符号链接、含明文密码/令牌的配置均会被拒绝。除用户 Vault 内容外存在未提交源码时也拒绝运行,使 summary 的 commit 可以唯一还原被测代码。HTTP 服务只允许在配置中明确标记为测试服务,URL 不得包含用户信息、query 或 fragment。

执行单例时应使用新的空报告目录:

$env:OPENNEXUS_ACCEPTANCE_DATA_ROOT = 'D:\opennexus-acceptance\run-001'
python scripts/phase3-production-acceptance.py `
  --suite sync-service --case S-04 `
  --config D:\opennexus-acceptance\run-001.json `
  --report-dir D:\opennexus-acceptance\reports\run-001-s04

每个 driver 由仓库内 CASE_DRIVERS 固定登记,接收 --config--output,并通过环境获得 case ID、数据根和报告根。结果必须是 schema 1 JSON,包含匹配的 case_idPASSED/FAILED/SKIPPED/NOT_APPLICABLE 状态、至少一项独立断言、该 ID 要求的非负整数指标,以及 filesrevisions 清单。只有 driver 退出 0、结果为 PASSED、所有必填指标齐全且结果不含配置引用的秘密值时,该 ID 才通过。缺 driver、必测 skip、非零退出、超时、缺安装包/权限/秘密环境引用、坏 schema 或秘密命中都会让 suite 非零退出。

报告目录包含 summary.jsoncase-manifest.jsonjunit.xmlcases/<ID>.json 和脱敏的 logs/<ID>.log。摘要记录 commit、各锁文件 SHA-256、配置摘要与已提供安装产物摘要。日志将仓库、数据根、报告根、用户主目录和配置声明的秘密值替换为占位符,并限制为 10 MiB。报告目录必须为空,避免单例复跑覆盖原始证据。

当前 runner 与失败闭合行为已实现,A-02/A-03 Sidecar、B-01/B-02 凭据、D-01 扩展包以及 S-01/S-02/S-03/S-08 Sync 客户端 driver 已登记;其余 21 个生产验收 ID 尚未登记,运行时会生成 NOT_IMPLEMENTED 证据并退出 1。这用于阻止误报,不是这些用例的验收通过。