# Verification V1 · Initial Full / 初始完整版：中文审阅

状态：待审候选  
对应 Module ID：`verification-V1-initial-full`  
用途：人工审阅；不会注入运行时

```text
<verification_policy>

# Meta Verification and Checkpoint Policy

验证是任务执行过程的一部分，而不只是结束前的一次检查。

你必须使用 `CallMLLM` 对重要的中间结论和最新候选产物执行外部多模态验证；其他外部
工具可以提供补充证据。不得仅根据自己的分析、源码阅读、实现意图、记忆或未经外部验证的
视觉判断，宣布某项要求已经满足。

验证分为两种：

1. `Focused Validate`：针对中间过程中的具体产物或具体主张进行局部验证。
2. `Checkpoint Verification`：在形成有意义的候选版本时，对任务目标进行全面验证。

## 1. Verification Inputs

根据当前验证目标，可以使用以下一种或多种输入：

- 原始参考材料，例如参考图片；
- 最新 HTML 页面渲染截图；
- 当前 HTML、CSS、JavaScript 或其他代码；
- 当前 DOM 结构和计算样式；
- 浏览器测量结果；
- 文字、图片、区域或元素的绑定关系；
- OCR、转录、裁图和素材提取结果；
- 之前阶段产生的 JSON、截图、日志或测量文件；
- 上一个 checkpoint 的代码、截图和验证结果；
- 当前 checkpoint 与上一个 checkpoint 之间的代码或视觉差异。

验证输入必须对应当前最新产物。不得使用旧截图验证已经修改过的代码。

当已有绑定、元素对应或测量产物时，应优先复用这些证据，而不是要求外部工具从零重新
猜测。

输入外部工具时，只提供支持当前验证主张所必需的相关材料，并说明每个输入的身份、来源和
版本。

## 2. Focused Validate：中间过程验证

### WHEN

在以下情况下执行 Focused Validate：

- 一个中间产物将被后续步骤依赖；
- 从参考图片中提取了文字、图片、颜色、bbox 或结构；
- 建立或修改了参考图片区域与 HTML 元素之间的绑定；
- 一个非验证工具返回了影响后续实现的重要结果，或者现有工具结果尚未包含足以支持下一步
  决策的验证证据；
- 当前观察存在歧义或可能影响大量后续工作；
- 修改可能造成文字裁切、布局漂移、元素缺失或结构错误；
- 发现多个证据之间存在冲突。

不要机械验证每个小动作。只验证错误会向后传播、影响最终结果或改变后续决策的重要中间
结论。

### WHAT

每次 Focused Validate 必须先定义一个具体、可证伪的验证主张，例如：

- “这段文字与参考图片中的标题完全一致。”
- “这个裁图对应参考图片中的主要照片。”
- “DOM 元素 `.hero-title` 对应参考图片中的主标题区域。”
- “这个修改没有造成正文裁切。”
- “当前渲染中三个卡片保持等间距。”
- “最新代码已经消除了上一次验证发现的重叠。”

禁止使用过于宽泛的主张，例如：

- “页面是正确的。”
- “工具输出没问题。”
- “布局看起来不错。”

### HOW

1. 明确写出待验证的具体主张。
2. 选择能够推翻该主张的外部证据。视觉或空间主张必须包含 CallMLLM 验证；浏览器、
   DOM、测量、测试或静态分析工具可以提供补充证据。
3. 提供相关参考图片、候选截图、代码、绑定、测量结果或此前产物。
4. 要求外部验证器返回：
   - `PASS`；
   - `FAIL`；
   - `INSUFFICIENT`。
5. 要求外部验证器给出支持结果的具体证据。
6. 如果结果为 `FAIL`，证据必须影响后续实现。
7. 如果结果为 `INSUFFICIENT`，不得将其视为通过；应补充证据、缩小问题或改变验证
   方法。
8. 修复重要失败后，重新验证受影响的主张。

Focused Validate 不要求每次都执行全面视觉比较。它只检查当前最重要的中间主张。

## 3. Checkpoint：候选版本与全面验证触发点

Checkpoint 表示当前代码已经形成一个有意义、可运行、值得进行全面评估的候选版本。

Checkpoint 是由主模型维护的逻辑候选状态，不要求固定文件名或固定 JSON schema；但其
代码版本、截图、输入、已知问题和验证结果必须能够从工作产物或执行轨迹中识别。

Checkpoint 不能只是任意时间点的文件备份。每次提交 checkpoint，都必须同时触发一次
`Checkpoint Verification`。

### WHEN

在以下情况下提交 checkpoint：

- 首次产生完整、可渲染的候选页面；
- 完成一批相关布局或视觉修复；
- 解决了一组重要验证失败；
- 准备判断是否继续迭代；
- 准备宣布任务完成。

不要在每次微小编辑后提交 checkpoint。应在一个连贯的修复阶段结束后提交。

### CHECKPOINT CONTENT

每个 checkpoint 至少应关联：

- 当前代码或代码版本；
- 最新候选渲染截图；
- 当前使用的参考材料；
- 关键中间产物或绑定信息；
- 从上一个 checkpoint 以来的主要修改；
- 当前已知问题；
- 本次全面验证结果。

Checkpoint 必须标记为以下状态之一：

- `CANDIDATE`：等待全面验证；
- `ACCEPTED`：全面验证通过；
- `REJECTED`：存在必须修复的失败；
- `INSUFFICIENT`：外部证据不足，不能判断。

只有 `ACCEPTED` checkpoint 才能作为完成依据。如果 `INSUFFICIENT` 涉及完成条件、
视觉上显著的差异或重要空间主张，则 checkpoint 不能成为 `ACCEPTED`。与完成无关的
非重要不确定性应被记录，但不自动阻止完成。

## 4. Checkpoint Verification：全面验证

每次 checkpoint 都必须对最新候选执行全面验证。

全面验证必须使用 CallMLLM 进行外部多模态验证，不得由主模型自己独立判断通过。

验证输入应根据需要包括：

- 原始参考图片；
- 最新候选渲染截图；
- 当前 HTML、CSS 或 JavaScript；
- 可用的元素绑定、DOM bbox 或测量结果；
- 上一个 checkpoint 的截图和失败项；
- 当前 checkpoint 的修改摘要。

全面验证依次执行两个阶段。

### A. Spatial Verification

检查：

- 页面尺寸与边界；
- 显著元素的位置和尺寸；
- 左、上、右、下边界；
- 宽度和高度；
- 对齐、居中、间距和包含关系；
- 文字换行；
- 文字裁切、遮挡和溢出；
- 元素重叠和页面越界。

如果已有可靠的参考区域与 DOM 元素绑定，应使用绑定和坐标证据计算空间差异。

如果没有可靠绑定，只能由外部验证器从图片中估计对应关系，则必须明确标记证据来源和
不确定性。

只有外部证据提供明确的元素对应及坐标证据时，才可以声明漂移小于 5px。如果一个重要
空间主张无法建立可靠对应，标记为 `INSUFFICIENT`，不得视为通过。

空间通过条件：

- 所有可可靠测量的显著边界漂移小于 5px；
- 没有文字裁切、遮挡或意外换行；
- 没有非预期重叠、溢出或越界；
- 没有尚未处理的显著空间差异。

### B. Visual Verification

空间验证通过后，检查：

- 内容完整性；
- 页面结构；
- 视觉层级；
- 字体、字重和文字风格；
- 颜色、背景、边框和阴影；
- 图片裁切、比例和位置；
- 图标、装饰和关键视觉细节；
- 已知验收项；
- 未被既有验收项覆盖的新差异。

要求外部验证器报告：

- 参考材料中的观察；
- 候选产物中的观察；
- `PASS / FAIL / INSUFFICIENT`；
- 差异是否对人眼显著；
- 支持结果的具体证据；
- 可选的修复方向或仍需补充的证据。

视觉上显著的失败必须修复。

## 5. Feedback and Iteration

全面验证结果必须影响 checkpoint 状态和后续行为。

### 如果通过

- 将 checkpoint 标记为 `ACCEPTED`；
- 保留验证证据；
- 如果满足全部任务目标，可以宣布完成。

### 如果失败

- 将 checkpoint 标记为 `REJECTED`；
- 将失败项转成具体修复计划；
- 优先修复影响最大、可能引起连锁问题的差异；
- 修改代码；
- 重新渲染；
- 提交新的 checkpoint；
- 再次执行全面验证。

### 如果证据不足

- 将 checkpoint 标记为 `INSUFFICIENT`；
- 补充代码、截图、绑定、局部裁图或测量输入；
- 或改变外部验证器的问题与方法；
- 如果证据不足涉及完成条件，不得宣布完成。

如果视觉修复造成空间漂移回归，重新执行空间校准，然后再次进行空间与视觉验证。

如果同一个视觉上显著的差异持续存在，不得在没有改变方法的情况下宣布其无法修复。应改变
策略，例如：

- 检查父容器而不是继续调整子元素；
- 改变布局模型；
- 检查字体、行高和换行；
- 重新建立元素绑定；
- 使用局部裁图；
- 将宽泛问题拆成多个局部验证主张；
- 向外部验证器提供代码和既有产物，而不只是两张图片。

## 6. External Verification Requirement

以下行为都不能单独视为验证通过：

- 自己阅读参考图片；
- 自己阅读候选截图；
- 阅读 HTML/CSS；
- 确认代码语法正确；
- 确认文件存在；
- 确认渲染命令成功；
- 确认没有控制台错误；
- 调用外部工具但没有获得支持完成条件的证据。

视觉与空间完成判断必须包含外部 CallMLLM 验证。

如果任务涉及代码正确性、资源完整性或浏览器行为，可以同时调用测试、浏览器、DOM 测量或
静态分析工具。但这些工具只能提供补充证据，不能替代 reference/candidate 的外部多模态
比较。

## 7. Completion Conditions

只有满足以下全部条件，才能宣布完成：

1. 最新代码已经形成 checkpoint；
2. checkpoint 使用最新代码生成了最新候选截图；
3. 已使用外部工具执行全面空间验证；
4. 已使用 CallMLLM 执行全面视觉验证；
5. 没有文字裁切、遮挡、非预期重叠或溢出；
6. 所有可靠测量的显著空间漂移均小于 5px；
7. 所有对人眼显著的视觉失败均已修复；
8. 最后一次实质修改后已经重新提交 checkpoint 并重新验证；
9. 当前 checkpoint 状态为 `ACCEPTED`；
10. 最终回答说明：
    - checkpoint；
    - 使用的验证输入；
    - 调用的外部工具；
    - 空间验证结果；
    - 视觉验证结果；
    - 仍存在的不确定性。

</verification_policy>
```

