跳转至

测试与证据分层

状态: 公开证据指引,2026-11-05。测试通过并不说明它证明了什么;必须先知道证据层级。 引用测试为 Core 能力、集成证据或采用证据前,请先阅读本页。

层级

层级 证据 能证明 不能证明
L1 Core 契约与行为 pkg/... 测试、spec/vectors/、API 快照 Go 参考实现具备声明的本地行为或契约 已发布包、其他 SDK 或生产行为
L2 SDK 一致性 language/... 测试、parity 与 conformance runner 某个 SDK 声明范围与其向量一致 完整 Go 对齐、真实 provider 或采用
L3 已发布包消费者 language/go/examples/consumer-go、consumer-python、consumer-typescript、consumer-java Registry 产物可安装、构建并走通允许/拒绝等公开 API 路径 Core 内部、生产安全或有人采用
L4 应用配方 身份绑定、治理验收胶水、长时操作 fixture 与 verifier/fencing 演示 参考应用模式及声明的失败边界 Core 拥有外部服务、存储、验证器或策略决策
L5 采用实验 Agent Adoption Lab 记录 固定条件下编程工具如何发现、选择、集成与保留 框架本身正确性
L6 生产与运行 部署、平台、硬件与独立评审记录 被测部署或环境 其他环境或未来 revision

已验证 始终限定于 revision、产物和日期;后续提交不会扩展它。

language/go/examples/consumer-go 映射

文件 层级 实际触及的 Core 接缝 配方/应用行为
main_test.go L3,并通过公开 API 触及 L1 行为 工具循环、Policy 允许/拒绝、发布包导入 确定性 fixture 与输出
governed_test.go L3/L4 最终参数重授权、审批编辑重授权、Policy 错误传播 缺少 Policy/范围守卫属于应用检查;Core 保留 nil-policy 嵌入

身份配方已移到 examples/recipes/identity-go。 它通过可信 context 提供已验证 principal;principal、角色、租户、过期均是应用逻辑, 不是 Core 身份服务。

长时操作套件已移到 examples/recipes/long-running-go, 避免 starter 混合 L3 包检查与 L4 配方。它是有价值的参考集成,也明确了应用必须自己承担 什么;它不是 Core 提供持久操作、HTTP 认证、效果验证、lease 或 fencing 的证据。只有其 Run 取消断言触及 Core 接缝。

Core 层的对应行为在 pkg/agent 测试(策略拒绝、最终参数授权、允许工具、取消)和 spec/vectors 中单独验证。

配方到 Core 证据映射

配方断言 已有 L1 证据
最终参数与审批编辑重授权;Policy 错误 fail closed pkg/agent/tool_authorization_test.go 的 TestFinalToolArgumentsAuthorized
最终工具名与 allowlist TestFinalToolNameChecksAllowlist、TestFinalToolNameReauthorized、TestAllowedToolsBlocksInvocation
工具取消阻止后续工具 pkg/agent/tool_cancel_test.go 的 TestRunStopsStartingToolsAfterCancellation
完成/清理期间取消 completion_cancel_test.go

因此配方消费的是已有 Core 证据,而不是建立新 Core 能力。没有为长时操作配方新增 Core API 或测试。

是否应把配方能力内化进 Core?

不要仅因配方测试通过就内化。只有全部满足才考虑:

  1. 有明确消费者,且不止一个应用需要。
  2. 语义稳定,属于本地 Agent 执行,而不是外部服务、存储、身份系统或传输。
  3. 适合公开 API,不为单一产品扩大 API。
  4. 已理解负向测试与兼容性影响。
  5. 若是共享行为,需要 spec/ 契约、向量、parity 和 SDK 影响评审。

持久 operation 存储、HTTP 认证、独立效果验证、fencing store 与 lease 过期目前都不满足。 它们继续属于应用、集成或产品责任。未来若要共享异步 operation 生命周期,应作为带 conformance 向量的 Spec profile 提案,而不是默认新增 Core API。

引用测试

Execution Correctness Suite 提案使用 EC-D、EC-I、EC-O 验证轨道, 不重新定义 L1/L2/L3。每项实际测试分别标注本文 L1-L6 证据分类和 EC 轨道;数据库/机器人确定性 fake 不是实际集成或设备证据,集成通过不自动满足运行验证。

写明层级、revision、命令与结果,例如:

  • “L1:SHA ... 的 pkg/agent 测试”
  • “L3:SHA ... 的 Go 2.5.2 发布包消费者测试”
  • “L4:SHA ... 的长时操作配方;不是 Core 能力声明”
  • “L5:not run;无采用数据”

不得把配方 fixture 当成 Core 功能证据,也不得把消费者安装当成采用证据。