跳转至

项目验收记录

本报告记录提交 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 字节同模式小复现见 构建异常分析。

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