# 验证

Roles:

- Tester
- Auditor

调用方提供一份验证请求：要验证的内容，以及任何相关上下文。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应以仓库变更回执作为 Tester 每个提交的权威标识，并从仓库权威来源取得每个返回的修订，而不取自任一角色的陈述。
审核最多进行两轮。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

## 初次验证

### VERIFY-1

Boss 给出的验证请求即后续各提示以 `<caller-input>` 引用的请求，供后续各轮完整保留。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应以仓库变更回执作为 Tester 该提交的权威标识，而不取自任一角色的陈述。

当 Boss 给出一份验证请求时，Captain shall prompt Tester:

> 针对下面的请求，依据规约验证当前分支。
> 阅读 specs/ 下的每个规约条目（以 @specs/map.md 为索引）以及现有测试。
> 补齐缺失的测试用例，使每个规约条目至少对应一条可执行的测试。
> 运行全部测试，并记录实际结果。
> 在 docs/verification/ 下编写追溯矩阵：列出每个规约条目 ID 对应哪些测试，以及这些测试各自是否通过。
> 在 docs/verification/ 下另写一份测试报告：运行了什么、各项总数、每个失败，以及每个仍未覆盖的规约条目及其原因。
> 将这些改动在当前分支上提交为一个新提交，遵循 @specs/packages/git.md；不要创建或切换分支，也不要改写任何已有提交。
> 报告该提交、测试总数，以及矩阵中仍未覆盖的规约条目数量。
>
> > 验证请求：<caller-input>

Results:
- `verified`: Tester 在当前分支上提交了一个新提交，其中包含补齐的测试、追溯矩阵和测试报告。Output shall include `testerOutput: <verbatim final text>` and `latestCommit: <commit identity>`.

## 审核轮次

### VERIFY-2

审核最多进行两轮；这是第一轮。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应从仓库权威来源取得返回的修订，而不取自任一角色的陈述。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

当 Tester 完成初次验证提交时，在第一轮审核中，Captain shall prompt Auditor:

> 针对下面的提交开始一次验证审核。
> 阅读该提交、docs/verification/ 下的追溯矩阵和测试报告、specs/ 下的规约条目，以及相关测试。
>
> 检查追溯矩阵是否覆盖 specs/ 下的全部规约条目，以及其中引用的每条测试是否确实存在。
> 检查每条映射的测试是否真正验证了对应规约条目所要求的行为——而不只是涉及同一模块或验证了更弱的条件——并且是可执行的，而非被跳过或桩实现。
> 检查测试报告是否如实反映实际结果；必要时重新运行测试，凡是总数、通过/失败状态或遗漏与测试实际结果不符之处，均应指出。
> 说明矩阵中仍未覆盖的规约条目数量。
> 列出编号的发现，各轮编号保持一致，每条注明其涉及的规约条目 ID、测试或报告段落。
> 对 Tester 的任何反驳，接受或提出质疑。
> 只指出影响覆盖、测试作为证据的有效性或报告真实性的问题——不涉及风格。
> 不要修改文件或提交；只报告发现。
>
> > 验证请求：<caller-input>
> > 验证提交：<latest-commit>
> > Tester 输出：<tester-output>

Results:
- `hasFindings`: Auditor 提出或保留了一条或多条发现；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。Output shall include `auditorOutput: <verbatim final text>`.
- `noFindings`: Auditor 明确报告已无任何发现，包括追溯矩阵没有遗漏任何规约条目；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。在此结果下 `verify` 结束，并返回本轮审核所评估的确切仓库修订（取自仓库权威来源）作为验证提交，以及 Auditor 以文本形式报告的未覆盖规约条目数量。Output shall include `evaluatedRevision: <repository revision>` and `uncoveredCount: <uncovered spec item count as reported text>`.

### VERIFY-3

审核最多进行两轮；这是第二轮、也是最后一轮。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应从仓库权威来源取得返回的修订，而不取自任一角色的陈述。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

当 Tester 修复了第一轮的发现并提交了新提交时，在第二轮审核中，Captain shall prompt Auditor:

> 第二轮、也是最后一轮审核开始，请特别关注最新的修复提交。
> 阅读最新的修复提交，并查看下面 Tester 的答复。
>
> 检查追溯矩阵是否覆盖 specs/ 下的全部规约条目，以及其中引用的每条测试是否确实存在。
> 检查每条映射的测试是否真正验证了对应规约条目所要求的行为——而不只是涉及同一模块或验证了更弱的条件——并且是可执行的，而非被跳过或桩实现。
> 检查测试报告是否如实反映实际结果；必要时重新运行测试，凡是总数、通过/失败状态或遗漏与测试实际结果不符之处，均应指出。
> 说明矩阵中仍未覆盖的规约条目数量。
> 列出编号的发现，各轮编号保持一致，每条注明其涉及的规约条目 ID、测试或报告段落。
> 对 Tester 的任何反驳，接受或提出质疑。
> 只指出影响覆盖、测试作为证据的有效性或报告真实性的问题——不涉及风格。
> 不要修改文件或提交；只报告发现。
>
> > 验证请求：<caller-input>
> > 最新提交：<latest-commit>
> > Tester 输出：<tester-output>

Results:
- `hasFindings`: Auditor 提出或保留了一条或多条发现；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。Output shall include `auditorOutput: <verbatim final text>`.
- `noFindings`: Auditor 明确报告已无任何发现，包括追溯矩阵没有遗漏任何规约条目；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。在此结果下 `verify` 结束，并返回本轮审核所评估的确切仓库修订（取自仓库权威来源）作为验证提交，以及 Auditor 以文本形式报告的未覆盖规约条目数量。Output shall include `evaluatedRevision: <repository revision>` and `uncoveredCount: <uncovered spec item count as reported text>`.

### VERIFY-4

审核最多进行两轮；这是第二轮、也是最后一轮。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应从仓库权威来源取得返回的修订，而不取自任一角色的陈述。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

当 Tester 反驳了第一轮的全部发现且未提交时，在第二轮审核中，Captain shall prompt Auditor:

> 第二轮、也是最后一轮审核开始。
> 由于 Tester 反驳了全部发现，没有新的提交；请查看下面 Tester 的答复。
>
> 检查追溯矩阵是否覆盖 specs/ 下的全部规约条目，以及其中引用的每条测试是否确实存在。
> 检查每条映射的测试是否真正验证了对应规约条目所要求的行为——而不只是涉及同一模块或验证了更弱的条件——并且是可执行的，而非被跳过或桩实现。
> 检查测试报告是否如实反映实际结果；必要时重新运行测试，凡是总数、通过/失败状态或遗漏与测试实际结果不符之处，均应指出。
> 说明矩阵中仍未覆盖的规约条目数量。
> 列出编号的发现，各轮编号保持一致，每条注明其涉及的规约条目 ID、测试或报告段落。
> 对 Tester 的任何反驳，接受或提出质疑。
> 只指出影响覆盖、测试作为证据的有效性或报告真实性的问题——不涉及风格。
> 不要修改文件或提交；只报告发现。
>
> > 验证请求：<caller-input>
> > Tester 输出：<tester-output>

Results:
- `hasFindings`: Auditor 提出或保留了一条或多条发现；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。Output shall include `auditorOutput: <verbatim final text>`.
- `noFindings`: Auditor 明确报告已无任何发现，包括追溯矩阵没有遗漏任何规约条目；进度报告、状态更新或稍后给出结果的承诺不支持任何审核结果。在此结果下 `verify` 结束，并返回本轮审核所评估的确切仓库修订（取自仓库权威来源）作为验证提交，以及 Auditor 以文本形式报告的未覆盖规约条目数量。Output shall include `evaluatedRevision: <repository revision>` and `uncoveredCount: <uncovered spec item count as reported text>`.

## 修复发现

### VERIFY-5

审核最多进行两轮；Tester 答复第一轮的发现后，开始第二轮审核。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应以仓库变更回执作为 Tester 任何新提交的权威标识，而不取自任一角色的陈述。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

当 Auditor 在第一轮审核中提出发现时，Captain shall prompt Tester:

> 逐条处理下面编号的审核发现；之后还有第二轮审核。
>
> 修复每一条正确的发现：补充或更正测试，重新运行受影响的测试，并更新追溯矩阵和测试报告，使其与实际结果一致。
> 如果某条发现与事实不符，不要为它做任何改动，并以规约、测试或测试输出中的证据加以反驳。
> 只要修复了任何一条发现，就将全部修复在当前分支上提交为一个新提交，遵循 @specs/packages/git.md；不要改写任何已有提交。
> 如果反驳了全部发现，不做任何改动，也不提交。
> 报告每条发现的处理结果、提交（如有）、测试总数，以及矩阵中现在仍未覆盖的规约条目数量。
>
> > 验证请求：<caller-input>
> > 审核发现：<auditor-output>

Results:
- `fixed`: Tester 修复了一条或多条发现，并在当前分支上提交了一个新提交。Output shall include `testerOutput: <verbatim final text>` and `latestCommit: <commit identity>`.
- `rebuttedAll`: Tester 反驳了全部发现，未做任何改动，也未提交。Output shall include `testerOutput: <verbatim final text>`.

### VERIFY-6

审核最多进行两轮；Tester 答复第二轮的发现后，`verify` 结束，不再进行第三轮审核，并报告这最后一次答复未经审核。
`verify` 在当前分支上工作：任何角色都不创建或切换分支，也不改写任何已有提交。
Captain 应以仓库变更回执作为 Tester 任何新提交的权威标识，并从仓库权威来源取得每个返回的修订，而不取自任一角色的陈述。
任何流转都不应依赖发现的编号或任一角色回复的固定呈现格式。

当 Auditor 在第二轮审核中提出发现时，Captain shall prompt Tester:

> 逐条处理下面编号的审核发现；这是最后一轮，之后不再审核。
>
> 修复每一条正确的发现：补充或更正测试，重新运行受影响的测试，并更新追溯矩阵和测试报告，使其与实际结果一致。
> 如果某条发现与事实不符，不要为它做任何改动，并以规约、测试或测试输出中的证据加以反驳。
> 只要修复了任何一条发现，就将全部修复在当前分支上提交为一个新提交，遵循 @specs/packages/git.md；不要改写任何已有提交。
> 如果反驳了全部发现，不做任何改动，也不提交。
> 报告每条发现的处理结果、提交（如有）、测试总数，以及矩阵中现在仍未覆盖的规约条目数量。
>
> > 验证请求：<caller-input>
> > 审核发现：<auditor-output>

Results:
- `fixed`: Tester 修复了一条或多条发现，并在当前分支上提交了一个新提交。在此结果下 `verify` 结束，并返回该新提交作为验证提交、Tester 以文本形式报告的未覆盖规约条目数量，以及这最后一次修复未经审核这一事实。Output shall include `latestCommit: <commit identity>` and `uncoveredCount: <uncovered spec item count as reported text>`.
- `rebuttedAll`: Tester 反驳了全部发现，未做任何改动，也未提交。在此结果下 `verify` 结束，并返回当前分支头（取自仓库权威来源）作为验证提交、Tester 以文本形式报告的未覆盖规约条目数量，以及第二轮的发现仍有争议这一事实。Output shall include `headRevision: <repository revision>` and `uncoveredCount: <uncovered spec item count as reported text>`.
