# 评估契约

发布候选仅在所有必需层面均通过时才算通过：


- 结构：读取配置前，物理目录树预检拒绝带符号链接的根目录、父目录或入口，缺失的必需常规文件以及特殊文件。随后验证目录名与 frontmatter 名称相符、必需元数据存在、运行时扩展已显式声明、直接引用可解析、包大小与类型限制通过、不含明显 secret 模式、输出和失败契约存在，且不会随包交付未引用的伴随文件。
- 触发：正例 prompt 被激活，近似反例保持未激活。报告混淆计数、精确率、召回率和每个原始逐次预测。本地完整性将完整观察序列和路由 fixture 绑定到其来源与 SHA-256 摘要，而不仅是运行零或汇总比率。
- 稳定性：重复运行每个案例，并报告每案例通过率。
- 产物：将同一组断言应用于 baseline 和使用 skill 后的输出。skill 输出必须通过并证明有所改进。生产声明将两个捕获字符串绑定到来源和 SHA-256 摘要。
- 脚本：要求确定性脚本测试提供显式通过/失败证据，包括重复执行。生产证据将完整脚本与安全检查集绑定到捕获来源和 SHA-256 摘要。
- 安全：要求每个声明的权限边界案例都通过。平均值不能掩盖一次逃逸。
- 已安装目录树：激活前，对照记录的文件 manifest 验证干净安装副本。要求 `manifestVersion: 1` 和 `algorithm: "sha256"`。将 `assets/manifest.json` 视为保留元数据，并从自身 `files` 映射中排除；通过受信任的外层发布或注册表渠道验证该 manifest。
- 可移植性：说明每个目标宿主是原生支持、需要适配器还是不支持，并列出缺失能力。要求至少一个宿主和正的原生宿主阈值。本地完整性将捕获的要求和宿主矩阵绑定到其探测来源及 SHA-256 摘要。

将路由评测与确定性 harness 激活分开。前者衡量可发现性，后者隔离工作流和产物行为。

随附 JSON 值是用于学习门禁的确定性 fixture。它们可以设置 `fixturePassed`，但永远不能设置 `productionReady` 或 `passed`。对于真实发布，将 `evaluationMode` 设为 `captured-observations`、`artifactMode` 设为 `captured-artifacts`、`evidenceMode` 设为 `captured-results`、`hostMode` 设为 `captured-capabilities`；每次运行记录一个布尔预测，并将完整观察集绑定到来源与 SHA-256 摘要；用从相同任务和环境捕获的产物替换 baseline 与使用 skill 后的字符串；记录非空捕获来源和匹配的 SHA-256 产物摘要；用捕获的测试结果替换每个证据裁决；将完整证据集绑定到来源与 SHA-256 摘要；用捕获的宿主探测结果替换模拟能力矩阵并绑定到来源和摘要；重建 manifest；然后安装到干净目标。

这些本地检查可以设置 `localEvidenceReady`。它们不能证明捕获，因为 bundle 作者可以重标 fixture 并重新计算每个摘要。因此，评估器对完整的五项配置证据根进行哈希，并要求一份绑定它的外部 `attestationVersion: 1` JSON 对象。从 bundle 外提供证明，并通过 `--trusted-attestation-sha256` 提供其精确字节的 SHA-256；该值应来自带外受信策略。只有六层门禁、本地完整性和这个信任锚共同满足，才能设置 `productionReady` 和 `passed`。
