项目验收记录¶
本报告记录提交 f87e8526f90d8e0f5ab71116cf42e00738c577a8 的规模验证结果,
对应项目申报书的量化目标。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 |
结构化与人工缩减 |
| 3745 | 2147483646,末尾一个 LF |
结构化与人工缩减 |
| 6968 | true,末尾一个 LF |
结构化与人工缩减 |
三例的独立源码重放再次得到相同配置、阶段、退出码和诊断模式。这支持随机生成路径发现可重复的工具链异常;这些证据 未确定三例是否同一根因,不将其称为三个独立缺陷,也未宣称与历史问题相同或已获上游确认。
被测构建的差分判定要求正常输出可比较,因此三例结论为 Incomplete,CLI 返回 3。原始构建失败的状态与诊断单独保留,
不会冒充输出分歧。该构建仅对正常输出分歧自动归约,三例未启动归约;现行产品行为见
CLI 模块说明。
可在相同代码、生成器和工具链条件下重新生成第一例,另两例替换起始种子:
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"'
规模任务复现¶
在被测源码提交下按安装说明安装 CLI。 acceptance.toml固定生成器、预算和五配置。分别执行:
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 上产生的源码及生成元数据逐一相同。原始逐例执行材料按发行附件约定保存在独立历史证据包中, 包含原始源码、配置、观察和汇总,排除构建缓存。原记录保持不变,重新运行产生新的执行证据。
任务结束后另对种子 0、999、1000、9999 和三例异常进行源码重放,四例正常输入继续一致, 三例异常继续未完成比较。案例、源码、原始尝试、样本、生效配置及任务汇总的校验和均未改变。 重放产生新的执行证据,不替换原始结果,也不计入 10,000 个计划样本。
其他验收证据¶
| 申报书目标 | 实现与证据 | 适用边界 |
|---|---|---|
| 布尔、整数、绑定、分支、非递归函数、元组和非递归枚举 | MoonBit 模块;程序模型、类型检查、源码生成与版本化生成规则 | 内部复合值,最终观察保持 Int / Bool;不支持递归类型和递归调用 |
| 四后端五配置与可重复任务 | CLI 模块及本次规模结果 | 指明的子集、预算及工具链;不同种子不保证不同源码 |
| 有限语义保持变换 | 输出等价变体;检查原程序与变换程序的合法性并比较真实工具链输出 | 库入口已实现;被测构建的 run 仅比较原程序的配置间输出,现行接入见 CLI 模块说明 |
| 合法且保持同一失败的归约 | 归约演示:128 → 1 节点、约 99.2% 移除、3419 毫秒,独立确认及源码重放 | 受控注入的配置间输出差异 |
| 至少三个历史候选、至少一个实测复现 | 历史回归记录:#1006、#1070、#1266;旧版工具链实测复现 #1266 | 公开源码案例的旧版实测 |
| 可安装命令、库、API 说明与示例 | 源码安装验收、四个模块 README 和可运行示例 | 本次实验验证完整源码安装;后续 0.0.1 已发布 registry 包与双平台 CLI,入口见安装说明 |
| Markdown / JSON 报告、环境及原始记录、追加式重放 | 任务、案例、尝试和归约材料;存证说明 | 重放使用当前宿主工具链,并提示已知版本变化 |
结论边界¶
本次规模实验统计固定生成器、语义子集、预算和工具链下的内部检查通过率、基线编译接受率及比较完成率, 未测量动态执行覆盖率或具体优化的触发情况。三例构建异常的后续缩减、阶段对照及 189 字节同模式小复现见 构建异常分析。
被测实验版本中的完整程序求值器已从当前交付范围撤出,不计入十月验收;上述规模任务始终只按差分结果判定。