# v0.1.0 本地候选验收记录

**结论：2026-09-26 的 Windows 与本机 Ubuntu WSL 两套完整验收均通过。** 这是本地候选成果，不代表公开 CI、Mooncakes 发布或十月活动已经验收。项目未创建远端、未提交 Git commit、未推送、未发布、未报名。

## 运行证据

| 项目 | Windows x64 | Ubuntu WSL x64 |
| --- | --- | --- |
| 完整入口 | `pwsh -File run_acceptance.ps1` | `bash run_acceptance.sh` |
| 核心 JS 测试 | 21 / 21 | 21 / 21 |
| 核心 wasm-gc 测试 | 21 / 21 | 21 / 21 |
| Node host / bridge / CLI 测试 | 18 通过，2 项 POSIX 测试跳过 | 20 / 20，无跳过 |
| 格式、类型检查与 JS 构建 | 通过，类型检查／构建拒绝警告 | 通过，类型检查／构建拒绝警告 |
| 23 份跨目标报告逐字节比对 | 通过 | 通过 |
| 三组真实 CLI 演示 | 通过 | 通过 |
| 独立 MoonBit 库消费 | check / build / run 通过 | check / build / run 通过 |
| 不带编译器的独立目录 CLI | 通过，验证退出码 0 / 1 和版本 | 通过，验证退出码 0 / 1 和版本 |

原始记录包含实际命令、退出码、工具链版本、规模数据、消费项目路径和源码文件哈希：

- [Windows evidence.json](../artifacts/acceptance-win32-2026-09-26T02-41-10-486Z/evidence.json)、[检查日志](../artifacts/acceptance-win32-2026-09-26T02-41-10-486Z/checks.log)。
- [Linux evidence.json](../artifacts/acceptance-linux-2026-09-26T02-41-43-668Z/evidence.json)、[检查日志](../artifacts/acceptance-linux-2026-09-26T02-41-43-668Z/checks.log)。
- [核心与验收脚本独立审查](CORE_REVIEW.md)、[文件系统适配层独立审查](HOST_REVIEW.md)：未发现需要修复的实际缺陷；各报告明确记录了运行与静态审查的边界。

验收目录被 Git 忽略，保留在本机；后续 CI 每次运行会上传自己的证据，保存 14 天。本次两个平台的源码清单 SHA-256 一致：`3e12a422ac0b179c8130461850500987a1e461322a703c5bfdc2ae3affbf8cf3`。首次提交前 `source_commit` 为 `null`，不使用其他作品的 SHA。验收结束后仅补充本验收说明和 `PROGRESS.md`，不改变被验证的实现、测试或运行配置。

## 验证了哪些行为

规则测试包含设备名及扩展名、上标数字、非法字符／控制字符、尾点／空格、绝对路径／盘符／UNC、空段／点段、重复次数、隐含目录大小写碰撞和文件／目录前缀冲突；中文、空格、点开头名称有通过样例。损坏 JSON 与合法 JSON 中的坏路径得到不同退出码。报告输入重排一致，文本安全引用路径，JSON 排序固定。

Windows 实际创建 junction 并验证不进入目标目录；Linux 在 `/tmp` 中实际创建 `CON.txt`、尾点、反斜杠、大小写碰撞及非 UTF-8 文件名，并验证扫描结果。真实隐藏项、空目录、符号链接和丢失根目录均有覆盖。读取中途失败和不支持类型由文件系统适配注入测试验证，未假装完成宿主机权限故障实验。扫描失败与保留名同时出现时，完整报告仍保留两个问题且退出 `3`。

跨目标比对运行同一 MoonBit fixture，要求 23 份报告全部可解析、正向／反向输入相同、代表规则存在，且 JS 与 wasm-gc 共 22,660 字节完全一致。报告 SHA-256 为 `ad48132ea1087c12026be25fa034663970fd43bfc3c3b659c221588f7840263e`。

独立消费项目有自己的 `moon.mod`、`moon.pkg`、`moon.work`，通过本地 workspace member 导入公开接口，不复制核心源文件。不带编译器的 CLI 验证仅复制四个运行文件，在独立目录中将 PATH 限定到 Node 并移除 `MOON_HOME`。这证明 Node 24 下的独立目录运行，不代表新虚拟机或已从公共注册表安装。

## 十万条输入实测

| 平台／输入 | 条目数 | 诊断组 | 检查耗时 | 进程峰值 RSS |
| --- | ---: | ---: | ---: | ---: |
| Windows／正常路径 | 100,000 | 0 | 1,003 ms | 约 328 MiB |
| Windows／重复与大小写冲突 | 100,000 | 300 | 273 ms | 约 274 MiB |
| Linux／正常路径 | 100,000 | 0 | 1,078 ms | 约 348 MiB |
| Linux／重复与大小写冲突 | 100,000 | 300 | 304 ms | 约 288 MiB |

每例单独启动进程。耗时测量 MoonBit bridge 的 JSON 解析、audit 和渲染，不包含磁盘扫描；峰值 RSS 包含进程启动、输入准备和结果验证。冲突例验证 200 个重复组，每组精确 500 次，另有 100 个大小写组。原始字节数及内存快照位于对应 `benchmark.log`。这些是本机单次观察，不是性能承诺。

## 工具链和复现边界

实际编译器为 `moonc v0.10.14+7d59c7ec9 (2026-09-18)`；`moon` 和 `moonrun` 为 `0.1.20260920 (914d7da 2026-09-20)`；两平台 Node 为 `v24.15.0`。安装在本项目 `.toolchains` 下，不修改全局安装。标准库构建 JS、wasm-gc 和供 `moon info` 使用的 canonical wasm；两平台 `moon info` 已单独验证成功，公开接口文件已保存。

历史版本归档 URL 当前不可用，安装器锁定已确认版本的官方 latest 归档 SHA-256；若上游覆盖内容则明确失败。应保留 `.toolchains/downloads` 作为离线安装输入。在以后全新环境安装时，不能假定漂移后的 latest 链接仍提供同一归档。运行已构建的 CLI 只需要 Node 24，不需要 MoonBit 或联网。

## 交付后的事项

按原计划，在获得对应授权后保留真实开发提交、建立公开仓库并运行托管 CI；随后发布并核验 Mooncakes 构建与独立安装，记录发布 SHA。十月月初复核活动公告和对已有工作基础的申报要求，真实说明本地候选于 9 月 26 日完成，再按官方窗口提交报名和验收材料。

覆盖范围仍以 [RULES.md](RULES.md) 为准：完整 Unicode 大小写与规范化、长路径、全部文件系统例外、自动改名和并发恶意文件系统修改均未纳入首版。
