# 项目验收记录

本报告记录提交 `f87e8526f90d8e0f5ab71116cf42e00738c577a8` 的规模验证结果， 对应[项目申报书](<https://docs.moonsmith.zrr.dev/project-proposal/#预期验收产物>)的量化目标。2026-10-21 使用 `template-rules-v2` 执行 10,000 个计划样本，其中 1,000 例完成五配置验证；内部检查和基线编译接受均为 10,000 / 10,000。三例未完成比较，原始计数和适用边界见下文。

## 实验条件

| 条件 | 取值 |
| --- | --- |
| 生成器 | `template-rules-v2`，含内部元组和非递归枚举，最终输出为 Int 或 Bool |
| 生成预算 | 最多 128 节点、深度 6、256 次构造尝试 |
| 编译 / 执行超时 | 每次 30000 / 2000 毫秒 |
| 归约预算 | 16 个候选；发现目标分歧后另做一次独立确认 |
| 五配置组 | 种子 0–999；native debug、native release、wasm-gc debug、wasm debug、js debug |
| 三配置组 | 种子 1000–9999；native debug、native release、wasm-gc debug |
| 基线 | 两组均为 native debug；分别统计编译成功与输出可比较 |
| 宿主 | Darwin 27.0.0 arm64，Apple clang 21.0.0（`clang-2100.3.27.1`） |
| Moon / moonrun | `0.1.20260920`，提交 `914d7da` |
| 编译器与 core | `0.10.14+7d59c7ec9`（2026-09-18） |
| Node.js | `v26.3.1` |

两组顺序执行，使用同一份已安装程序及配置快照。程序 SHA-256 为 `d4f606aa3504704e8de5b9c6d186fa94657ace434918a25c4a78fc6583000599`；配置快照 SHA-256 为 `2cec8358ef70e641253cda9fa298990a611b03bca3fdf3c106a748c28cf35b9a`。任务只覆盖名称、种子范围、配置组和输出目录， 生成预算及超时保持一致。

规模任务使用正式差分路径，没有注入结果。内部检查通过指 `CompleteProgram` 检查完成；基线接受指 native debug 编译退出码为 0；完整比较要求全部选定配置均取得符合当前观察协议的结果。这些事实独立计数， 以计划样本数作为比例分母。完成比较仍可能得到分歧，不能将其等同于结果一致。

## 规模结果

| 项目 | 五配置组（计划 1,000） | 三配置组（计划 9,000） | 合计（计划 10,000） |
| --- | --- | --- | --- |
| 已尝试样本 | 1,000 | 9,000 | 10,000 |
| 内部检查通过 | 1,000（100%） | 9,000（100%） | 10,000（100%） |
| 基线编译接受 | 1,000（100%） | 9,000（100%） | 10,000（100%） |
| 完整比较 / 一致 | 1,000 / 1,000 | 8,997 / 8,997 | 9,997 / 9,997 |
| 输出分歧 / 未完成 / 操作错误 | 0 / 0 / 0 | 0 / 3 / 0 | 0 / 3 / 0 |
| 成功编译 / 编译总数 | 5,000 / 5,000 | 26,997 / 27,000 | 31,997 / 32,000 |
| 成功执行 / 执行总数 | 5,000 / 5,000 | 26,997 / 26,997 | 31,997 / 31,997 |
| 任务耗时 | 1,354,338 毫秒 | 10,698,347 毫秒 | 12,052,685 毫秒 |
| 命令退出码 | 0 | 3，存在未完成比较 | — |

内部检查和基线接受均达到至少 99% 的目标，五配置完整比较达到 1,000 例。全部计划样本中的完整比较比例为 99.97%。三例构建失败保留在原计划分母中，没有改作通过或以重试结果替换。没有观察到输出分歧、运行超时或 Host 操作错误。

| 源码统计 | 五配置组 | 三配置组 | 全部种子 |
| --- | --- | --- | --- |
| 不同源码 SHA-256 | 998 | 8,942 | 9,937 |
| Int 输出协议 | 488 | 4,513 | 5,001 |
| Bool 输出协议 | 512 | 4,487 | 4,999 |
| 声明枚举的源码 | 870 | 7,755 | 8,625 |
| 含元组绑定的源码 | 980 | 8,714 | 9,694 |

10,000 个种子连续且不重复；不同种子仍可能产生相同源码。不同源码数按整个任务集合去重，两组之间也有重复， 不能直接相加。枚举和元组统计依据本生成器的声明与绑定源码，可以重叠，不是执行覆盖率或缺陷覆盖率。

任务计时使用 Host 单调时钟，包含样本处理、逐例存证和回调，不包含最后的任务汇总保存；合计为两组之和，约 3 小时 21 分钟，不包含组间检查。本次没有输出分歧，没有启动自动归约。单次耗时受编译工具链、文件缓存、宿主负载 及材料保存影响，不用于算法性能比较。

## 三例未完成比较

三例均通过完整结构检查；native debug 和 wasm-gc debug 构建、执行成功且输出一致，native release 编译退出码为 255。原始诊断及生成 C 文件显示，C 编译阶段引用未声明的 `constr` 临时标识符，分别为 `_M0L6constrS87`、 `_M0L6constrS88` 和 `_M0L6constrS8`。

| 种子 | 两个成功配置的输出 | 后续分析 |
| --- | --- | --- |
| 1272 | `-7`，末尾一个 LF | [结构化与人工缩减](<https://docs.moonsmith.zrr.dev/native-release-analysis/#种子-1272-的-402-字节结果>) |
| 3745 | `2147483646`，末尾一个 LF | [结构化与人工缩减](<https://docs.moonsmith.zrr.dev/native-release-analysis/#种子-3745-的-317-字节结果>) |
| 6968 | `true`，末尾一个 LF | [结构化与人工缩减](<https://docs.moonsmith.zrr.dev/native-release-analysis/#种子-6968-的-422-字节结果>) |

三例的独立源码重放再次得到相同配置、阶段、退出码和诊断模式。这支持随机生成路径发现可重复的工具链异常；这些证据 未确定三例是否同一根因，不将其称为三个独立缺陷，也未宣称与历史问题相同或已获上游确认。

被测构建的差分判定要求正常输出可比较，因此三例结论为 `Incomplete`，CLI 返回 3。原始构建失败的状态与诊断单独保留， 不会冒充输出分歧。该构建仅对正常输出分歧自动归约，三例未启动归约；现行产品行为见 [CLI 模块说明](<https://github.com/zrr1999/moonsmith/blob/main/modules/cli/README.md#差分执行与存证>)。

可在相同代码、生成器和工具链条件下重新生成第一例，另两例替换起始种子：

```shell
moonsmith run --config acceptance.toml --set seed_start=1272 --set sample_count=1 \
  --set 'execution.configurations=["native-debug","native-release","wasm-gc-debug"]' \
  --set 'output.directory="runs/reproduce-1272"'
```

## 规模任务复现

在被测源码提交下按[安装说明](<https://github.com/zrr1999/moonsmith/blob/main/README.md#安装>)安装 CLI。 [acceptance.toml](<https://github.com/zrr1999/moonsmith/blob/main/acceptance.toml>)固定生成器、预算和五配置。分别执行：

```shell
moonsmith run --config acceptance.toml \
  --set 'name="acceptance-five"' \
  --set 'output.directory="runs/acceptance-v2/five"'

moonsmith run --config acceptance.toml \
  --set 'name="acceptance-basic"' \
  --set seed_start=1000 --set sample_count=9000 \
  --set 'execution.configurations=["native-debug","native-release","wasm-gc-debug"]' \
  --set 'output.directory="runs/acceptance-v2/basic"'
```

相同生成器版本、种子及预算应产生相同源码；目录和随机材料 ID 会变化，墙钟耗时不要求一致。安装后的 release 程序与 预试运行的 debug 程序在种子 0–99 上产生的源码及生成元数据逐一相同。原始逐例执行材料按[发行附件约定](<https://docs.moonsmith.zrr.dev/releasing/#产物与材料>)保存在独立历史证据包中， 包含原始源码、配置、观察和汇总，排除构建缓存。原记录保持不变，重新运行产生新的执行证据。

任务结束后另对种子 0、999、1000、9999 和三例异常进行源码重放，四例正常输入继续一致， 三例异常继续未完成比较。案例、源码、原始尝试、样本、生效配置及任务汇总的校验和均未改变。 重放产生新的执行证据，不替换原始结果，也不计入 10,000 个计划样本。

## 其他验收证据

| 申报书目标 | 实现与证据 | 适用边界 |
| --- | --- | --- |
| 布尔、整数、绑定、分支、非递归函数、元组和非递归枚举 | [MoonBit 模块](<https://github.com/zrr1999/moonsmith/blob/main/modules/moonbit/README.md>)；程序模型、类型检查、源码生成与版本化生成规则 | 内部复合值，最终观察保持 Int / Bool；不支持递归类型和递归调用 |
| 四后端五配置与可重复任务 | [CLI 模块](<https://github.com/zrr1999/moonsmith/blob/main/modules/cli/README.md>)及本次规模结果 | 指明的子集、预算及工具链；不同种子不保证不同源码 |
| 有限语义保持变换 | [输出等价变体](<https://github.com/zrr1999/moonsmith/blob/main/modules/moonbit/README.md>)；检查原程序与变换程序的合法性并比较真实工具链输出 | 库入口已实现；被测构建的 `run` 仅比较原程序的配置间输出，现行接入见 CLI 模块说明 |
| 合法且保持同一失败的归约 | [归约演示](<https://docs.moonsmith.zrr.dev/reduction-demonstration/index.md>)：128 → 1 节点、约 99.2% 移除、3419 毫秒，独立确认及源码重放 | 受控注入的配置间输出差异 |
| 至少三个历史候选、至少一个实测复现 | [历史回归记录](<https://docs.moonsmith.zrr.dev/historical-regressions/index.md>)：\#1006、\#1070、\#1266；旧版工具链实测复现 \#1266 | 公开源码案例的旧版实测 |
| 可安装命令、库、API 说明与示例 | [源码安装验收](<https://docs.moonsmith.zrr.dev/cli-installation-validation/index.md>)、四个模块 README 和[可运行示例](<https://github.com/zrr1999/moonsmith/blob/main/examples/README.md>) | 本次实验验证完整源码安装；后续 0.0.1 已发布 registry 包与双平台 CLI，入口见[安装说明](<https://github.com/zrr1999/moonsmith/blob/main/README.md#安装>) |
| Markdown / JSON 报告、环境及原始记录、追加式重放 | 任务、案例、尝试和归约材料；[存证说明](<https://github.com/zrr1999/moonsmith/blob/main/modules/cli/README.md#差分执行与存证>) | 重放使用当前宿主工具链，并提示已知版本变化 |

## 结论边界

本次规模实验统计固定生成器、语义子集、预算和工具链下的内部检查通过率、基线编译接受率及比较完成率， 未测量动态执行覆盖率或具体优化的触发情况。三例构建异常的后续缩减、阶段对照及 189 字节同模式小复现见 [构建异常分析](<https://docs.moonsmith.zrr.dev/native-release-analysis/index.md>)。

被测实验版本中的完整程序求值器已从当前交付范围撤出，不计入十月验收；上述规模任务始终只按差分结果判定。
