# 定向 fixture(`packs//fixture.html`)
> 这份契约单独成文,**不占用 [`docs/收录标准.md`](收录标准.md) 的章节号**,避免与其它同时改收录标准的 PR 产生编号重复与合并冲突。收录标准 §2 的文件白名单与 §8 的自查项都指向本文。
>
> 状态:草案(2026-10-31)。可执行版本是 `tools/check-pack.mjs`(`inspectFixture` / `inspectFixtureInBrowser`)。
默认的内置 fixture 覆盖“第三方插件面板在手机上的一般失败模式”,但它只有一局面板:定向到某个具体插件的 pack 如果只在这局 fixture 上跑,pack 的 CSS 没有目标元素、运行时断言只能空转,实际是“假验证”。因此:
- **存在 `packs//fixture.html` 时**,`check-pack` 用它替代内置 fixture,并用于全部四轮测量:移动基线 / 装包 / opt-out / 桌面零回归。
- **不存在时**回退内置 fixture,并在报告里标注:人类可读输出打印 `fixture:内置(未提供 packs//fixture.html,回退内置 fixture)`;`--json` 的每个 pack 带 `fixture: { kind: "builtin" | "custom", path, bytes }`。静默回退是不允许的——evidence 必须按 §3 写清用的是哪种 fixture。
- `fixture.html` 不参与运行时:它只是校验输入。`install.mjs` 会把它随包复制进 `$DSH_HOME/mobile-access/extensions//`,宿主会忽略它(运行时只读 `extension.json` / `mobile.css` / `mobile.js` / `host.mjs` / `assets/`)。
## 1. 文件契约(静态层)
| 项 | 规则 |
|---|---|
| 位置/名字 | 只认 `packs//fixture.html`(与包目录同级,不嵌套) |
| 体积 | ≤ **256 KB**;**空文件或超限直接失败**,并且该 fixture 不再被加载(浏览器解析与运行时层都会 SKIP) |
| 形式 | 完整 HTML 文档:`` / `` / `` / `` 齐全,UTF-8;只允许 DOM 与内联 `