# MoonDisk 验收清单

本文档为评审提供一条可重复、可核对的验收路径。除明确标注的隔离演示外，所有命令均为只读操作。

## 官方九项标准对照

| # | 验收要求 | 仓库证据 | 状态 |
| --- | --- | --- | --- |
| 1 | MoonBit 为主要语言，`moonc >= 0.10.14` | MoonBit 源码、`scripts/verify-toolchain.ps1`、CI 版本门禁 | CI 验证；本地工具链需升级 |
| 2 | 公开仓库与清晰提交记录 | GitHub `xiaobai718-ab/moondisk`、功能化提交历史 | 满足 |
| 3 | 结构清晰且核心功能可用 | 独立分析模块、CLI、127 项测试、跨平台冒烟流程 | 满足 |
| 4 | README 含目标、安装、用法和示例 | `README.md`、`README.zh-CN.md`、`DEMO.md` | 满足 |
| 5 | CI 覆盖检查、构建、测试 | `.github/workflows/ci.yml`，Windows 与 Ubuntu 矩阵 | 满足 |
| 6 | 可运行示例 | `moon run examples/quickstart` | 满足 |
| 7 | 核心路径测试完整 | 127 项单元及异常路径测试 | 满足 |
| 8 | 发布到 mooncakes.io | `moon package --list` 已通过，见 `PUBLISHING.md` | 待账号登录后发布 |
| 9 | OSI 认可许可证与合规 | Apache-2.0 `LICENSE`，原创实现说明 | 满足 |

## 1. 环境与构建

要求 `moonc` 版本不低于 0.10.14。进入仓库后执行：

```sh
moonc -v
moon update
moon fmt --check
moon check --target native --deny-warn
moon test --target native --package xiaobai718-ab/moondisk --deny-warn
moon build --target native
```

预期结果：格式检查、严格类型检查、全部项目测试和 Native 构建通过。相同命令由 GitHub Actions 在 Windows 与 Ubuntu 上执行。

## 2. 一分钟无副作用演示

```sh
moon run examples/quickstart
```

预期依次出现：扫描摘要、快照差异、目录增长热点和清理计划。示例使用内存数据，不访问真实目录。

## 3. 真实目录只读分析

```sh
moon run cmd/main -- scan . --profile developer
moon run cmd/main -- snapshot . --profile developer --output acceptance.snapshot.json
moon run cmd/main -- audit acceptance.snapshot.json
moon run cmd/main -- report acceptance.snapshot.json --output acceptance.report.html
moon run cmd/main -- csv acceptance.snapshot.json --view files --output acceptance.files.csv
```

预期生成结构一致的 JSON 快照、可离线打开的 HTML 和 RFC 4180 CSV。扫描、审计和报告命令不会修改被扫描目录。

## 4. 增长归因

对同一目录在两个时间点保存快照后执行：

```sh
moon run cmd/main -- diff before.snapshot.json after.snapshot.json
moon run cmd/main -- hotspots before.snapshot.json after.snapshot.json --depth 1 --output hotspots.json
```

预期列出文件级变化，并按目录汇总新增、删除、变化数量和净空间变化。

## 5. 安全清理闭环

Windows：

```powershell
./scripts/demo.ps1 -Apply
```

Linux/macOS：

```sh
./scripts/demo.sh --apply
```

脚本只操作仓库内自动创建的 `demo-output/workspace`，依次完成计划、策略审批、来源复查、隔离、操作审计和恢复，并最终检查文件已经回到原路径。

安全保证：

- 默认分析，不提供永久删除命令；
- 清理计划包含原因、风险和预计回收空间；
- `apply` 拒绝已经变化或消失的来源；
- 隔离目标和恢复目标存在时拒绝覆盖；
- 操作清单可以独立审计并用于恢复。

## 6. 自动化与异常路径

项目测试覆盖正常流程和以下失败场景：损坏快照、配置版本不兼容、非法枚举参数、过期清理计划、隔离目标冲突、恢复目标冲突、缺失隔离文件、受保护路径和预算超限。

CI 还实际运行快照、审计、HTML 报告、目录热点、预算门禁和 Quickstart，而不只编译代码。

## 7. 性能复现

```powershell
./scripts/benchmark.ps1
```

脚本默认创建 1 万、5 万和 10 万个小文件，使用 Release 构建扫描，记录总耗时、扫描进程峰值内存和吞吐量，并清理临时数据。结果写入 `benchmark-output/results.csv` 和 `benchmark-output/results.md`。

## 8. 开源合规

- 仓库包含 Apache License 2.0；
- `moon.mod` 声明直接依赖 `moonbitlang/async`；
- 项目为原创实现，没有复制或移植第三方项目代码；
- README、贡献说明、变更日志、验证记录和提交历史均公开可查。

## 9. mooncakes.io 与发布材料

执行 `moon package --list` 检查 mooncakes.io 发布内容；登录后依次执行
`moon publish --dry-run` 和 `moon publish`。完整步骤见 `PUBLISHING.md`。

执行 `scripts/package-release.ps1` 可生成平台 Release 压缩包和 SHA-256
校验文件。版本变更见 `CHANGELOG.md`，正式版本使用 `v0.1.0` 标签。
