跳转至

样例与 Fixture

本页说明 Foundation 中 fixture 的目的、运行入口,以及它能否作为业务 oracle(判定依据)。结论先行:fixture 只证明结构契约,不证明业务语义。

fixture 的目的

fixture 回答一个问题——「这份契约对象/SPI 在给定输入下是否产生声明的行为」。它分三类:

  • 正例(positive):给定合法输入,校验/机制应通过。
  • 反例(negative):给定非法输入,必须产生稳定失败码(如 SFC1001/SFC1010)。
  • 方言边界(dialect-boundary):在 draft-07 与 2020-12 双方言交界处的预期行为。

fixture 是完全虚构数据,不含真实业务、私有 Profile、用户路径或凭据。

运行入口

  • Contracts fixture:packages/skill-family-contracts/test/fixtures.test.mjs 机械重放 src/fixtures/<contract>/ 的期望,行为不符报 SFC1010
  • Profile SPI 符合性:fixtures/generic-profile-extension-conformance/verify.mjs(只读校验)与 leak-scan.mjs(泄漏扫描)。
  • 骨架精确合同:fixtures/scaffold-conformance/verify.mjs
  • 采用危害类:fixtures/adoption/cases/ 以字节级前后快照证明 adopt-plan 只读。

以上入口均为只读或自含,不写调用方仓、不触碰远端。

fixture 能否作为业务 oracle

不能。原因:

  • fixture 只覆盖结构契约与机制边界,不覆盖领域语义、业务状态机或审计结论。
  • 审计语义与最终接受/拒绝属外部独立审阅,Foundation 只提供审计表面(canonical JSON + sha256 摘要,见 foundation.contracts.audit-surface)。
  • 文档体系明确:普通正文语义正确性由外部审阅负责,仓内门禁只证明机器事实与字节/结构一致性。

因此,把 fixture 当作业务正确性的判据是误用。它证明「契约被满足」,不证明「业务是对的」。

公开范围

  • Profile:profiles/public-plugin(公开或完全虚构样例)。
  • fixture:fixtures/generic-profile-extension-conformancefixtures/scaffold-conformancefixtures/licensing-profile-conformancefixtures/adoptionfixtures/m0-consumer

其余私有或消费者 fixture 不进入公开文档;私有 Profile、产品数据、用户路径、账号、token 或运行日志一律不写入公开 fixture。