样例与 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-conformance、fixtures/scaffold-conformance、fixtures/licensing-profile-conformance、fixtures/adoption、fixtures/m0-consumer。
其余私有或消费者 fixture 不进入公开文档;私有 Profile、产品数据、用户路径、账号、token 或运行日志一律不写入公开 fixture。