# 初步开发与验收记录

截至 2026-10-10。这是工程证据，不代表赛事评审保证通过。

赛事口径说明：参赛者提供的九条验收指南包含 Mooncakes 发布，本项目按该指南执行。
官网公开摘要与正式章程可能另有补充，最终以赛事通知为准。
来源：https://moonbitlang.github.io/Hackathon2026/ ；
官网文字源码：https://github.com/moonbitlang/Hackathon2026/blob/main/src/App.tsx 。

| 要求 | 当前状态与证据 |
| --- | --- |
| MoonBit 主实现，moonc ≥ 0.10.14 | 核心算法与 CLI 逻辑为 MoonBit；本地 moonc 0.10.14 |
| 公开仓库、清晰提交 | https://github.com/wdgodghl/moontopolens ；按功能逐步提交 |
| 结构清晰且核心功能可运行 | H0/H1、四种普通 JSON 输入、时间序列参数扫描、P2/P5 图像、Otsu 自动截止与亮暗反转、批量清单及全对距离热图、代表链、瓶颈距离、精确事件、尺度快照与推荐、网格填充图、报告分页、景观向量、JSON/CSV/SVG/HTML 已实现 |
| README 可复现 | 安装、命令、预期结果、算法限制、三种完整场景 |
| CI 检查/构建/测试 | .github/workflows/ci.yml；增加 GUDHI 外部 Rips 区间对照，远端运行结果以 Actions 为准 |
| 运行示例 | cmd/demo + examples 的十个 JSON 输入、两个 PGM 图像及一份批量清单；CLI smoke 已通过 |
| 核心测试 | JS 和 Wasm GC 各 68 个测试；稠密参考、穷举匹配、匹配见证、景观、PGM、Otsu、批量矩阵、尺度推荐、参数扫描与网格填充显示已核对 |
| Mooncakes 生态发布 | 模块页 https://mooncakes.io/docs/wdgodghl/moontopolens；发布后核验模块版本与独立安装 |
| OSI 许可证与来源 | MIT；独立实现，公开算法背景见查重记录 |

## 本地验证

- 类型检查和构建：JS、Wasm GC。
- 测试：两后端各 68 个测试；参考测试内部覆盖 12×11 个形状/尺度组合，匹配见证覆盖 12 对形状。
- CLI：八种基础示例、九种分析导出文件、快捷摘要、尺度推荐、同图/异图比较、帮助、错误和输出冲突路径。
- 新功能：每个示例在全部事件尺度核对快照 H0/H1 与分组数；景观 JSON/CSV/向量一致，双洞帐篷高度已核对。
- 比较：三组报告导出、原始索引与代价 CSV 一致、同图零距离与存活类数量不同路径。
- 切片：分组着色 SVG、存活代表链高亮、无坐标仅 JSON；无效选择不创建输出目录。
- HTML：通过 DOM 替身验证分析页滑块/筛选/高亮/翻页、比较页维度/对角线筛选；未验证真实浏览器布局。
- 已知环路：正方形 H1 `[1,√2)`；网格中心填充 H1 `[0,1)`；短暂环路 `[0.004,0.005)` 不在均匀采样中出现，但保留在精确事件和 HTML 曲线。
- PGM：P2 示例与等价 JSON 网格的区间一致；P5 8/16 位、非法灰度、截断、输出冲突路径已验证。
- 图像预处理：Otsu 阈值、常量图、亮色前景反转、单图与批量参数元数据已核对。
- 批量：六个案例、三个配对的完整输出与总索引核对；清单中的 `../` 路径被拒绝且未创建输出目录。
- 全对矩阵：六案例 H0/H1 对称、主对角零、CSV 行数、与单独比较距离一致、离线热图与条件提醒已核对；关闭开关时不生成矩阵文件。
- 尺度推荐：有限/截断 H1、无环路分簇和空特征路径均已核对；CLI 与分析、图像、批量导出的 JSON/CSV 一致，并在推荐尺度验证 H0/H1 和区间存活。
- 参数扫描：四组维数/滞后组合、统一景观采样网格、JSON/两份 CSV 的顺序与数值一致；重复或超量参数、信号长度不足会报错。
- 网格填充与分页：尺度 0 的环形网格不绘制方格面，尺度 1 绘制四个；Rips 点云不绘制投影三角形。离线报告模拟超过 120 条区间，核对每页 50 条、翻页和筛选后页码重置。
- GUDHI 外部差分：5 个仓库样例、5 个正方形截止尺度和 12 组确定性点云，共 22 个 Rips 案例的 H0/H1 区间一致；方法和局限见 reference-validation.md。
- 性能基准：8–28 点的密集 Rips 2-骨架，三次独立运行取中位数；记录核心耗时和分析后进程 RSS，见 performance.md。
- 发布包生成与 Mooncakes 上传分开核验，以公开模块条目为准。

源码量由 `node scripts/check-source.mjs` 复算。
统计排除测试和 host.mbt FFI，并另报告去除纯括号行后的代码行数。
当前非空非注释行 3298；再排除纯括号行后为 2550 行（也排除 HTML/JS 多行模板）。
该统计口径用于内部质量检查，组织方“有效源码”口径由评审决定。

清理旧覆盖数据后，单元覆盖率工具记录 1125/1652 个计数点（约 68.1%），包含未被单元测试驱动的 CLI、基准程序与离线 HTML；
CLI 另有端到端场景验证。覆盖率不等于全部行为正确；外部差分当前仅覆盖 Rips H0/H1。

## 下一阶段

1. 扩充外部参考至 cubical 网格与更多异常尺度；有条件时再与 Ripser 独立交叉核验。
2. 核验 Mooncakes 的独立安装路径，后续版本按语义化版本更新。
3. 扩大性能样本并记录峰值内存、不同硬件和更复杂输入分布。
4. 根据使用反馈完善离线报告的视觉布局与可访问性；在线上传应用不纳入本轮完成范围。

## 参赛者理解要点

提交前需能够解释直径约定、过滤排序、GF(2) 对称差、主元配对、
出生代表链、截止时未死亡语义、对角线匹配与见证非唯一性、事件合并、并查集分组、景观有限区间/采样约定、稠密参考验证和资源预算。
项目采用 AI 辅助实现，参赛者对最终成果质量负责。
