# 更新记录

## 0.4.1 — 2026-10-31

- 跨平台 CI 必须收到 Windows 和 Linux 清单，拒绝平台缺失或重复身份；每份清单要求 CLI 成功和输出齐全，双失败不再算通过。
- 增加 9 组比较器回归测试，恢复双平台 `performance:check` 门禁，保留独立的基准观测。


- 实际 FreeCAD 导入发现 DXF 引用未声明图层，现由 MoonBit 显式生成 MOONCAM 图层与 CONTINUOUS 线型表；坐标和闭合约定不变。
- 增加三个原生 CAD 导入算例、可复算脚本与几何测量记录；完整图形界面截图尚未完成，不声称商业 CAD 全面兼容。

### 独立数值对照扩展

- 独立验证程序改用 Bernstein 形式与乘积法则求导，曲率改由参数曲线 `(px'', py'')` 独立计算，并与自身两条路线、教科书峰值系数互校。
- 覆盖扩展到 205 组参数（三规律 × 四基圆 × 三滚轮 × 五偏置，另含不均匀分段、八段密集、四档分辨率与三组极端尺度），逐点核对 149,983 个采样点的全部输出字段，段界与 2π 闭合点不再跳过。
- 回读 CSV、DXF、SVG 产物并与参考点比对，补上导出路径此前未覆盖的缺口；错误契约逐条触发 invalid_json / invalid_input / input_too_large。
- 新增 `tests/oracle_highprec.py`：标准库 decimal 40 位参考（自实现 sin/cos/atan/sqrt），22 组算例 402 个点上坐标差 ≤8.7e-16、压力角 ≤1.9e-13、曲率 ≤1.6e-12；并记录库内展开多项式在段末的相消量级。
- 采样最大值改为两侧区间检查，并输出实测采样亏欠：360/1440/3600 分辨率分别为 1.6e-4 / 1.6e-4 / 4.0e-5 度。该数字是实测，不是误差上界，连续极值仍未实现。

### 随机性质测试

- 新增 `property_wbtest.mbt` 八组性质测试（固定种子，四后端运行）：周期性、统一缩放、基圆/滚轮分配不变性、基圆单调性、转速幂次缩放、上限单调放宽、接触距离与规律端点连续性、采样区间预算。
- 新增 `tests/property.test.mjs` 八组 JSON 契约性质测试：确定性、摘要与点表一致、转速与长度缩放、接受单调性、导出形状、搜索结果与直接分析一致、错误码与字段定位，以及 1,500 例结构变异模糊输入。

### 跨平台一致性

- 新增 `tests/consistency.mjs` 生成规范化清单（LF、键排序、15 位有效数字），对 JSON、CSV、DXF、SVG 与 CLI 落盘文件分别取摘要，并保留原始摘要区分逐字节与数值等价。
- 新增 `tests/consistency.check.mjs` 汇总比对清单，规范化摘要不一致仍判失败，并以 1e-12 数值容差补充摘要指标的差异报告。
- CI 改为 Ubuntu + Windows 双平台矩阵，新增一致性比对作业，Pages 部署需其通过；新增 [跨平台一致性](docs/跨平台一致性.md)。


## 0.4.0 — 2026-10-31

- 最低编译器要求更新为 moonc 0.10.16；本地与 CI 固定 0.10.16+b1a0e846e，版本由 .moonbit-version 管理，构建前检查最低版本。

- 网页从实际 MoonBit 引擎读取包版本、schema 与计算源码指纹；JSON 响应及 CLI 保存报告保留 generator。构建检查版本与指纹同步，不修改已发布 0.3.0 归档。
- 接入 GitHub Pages，完整检查通过后自动部署在线工作台。
- 增加高分辨率拓扑工作量和 128 段标量扫描护栏，以及高分辨率、128 段、搜索的摘要体积与宽松耗时门禁。
- 补充 5 mm → 36 mm 完整实测案例、三档比较和可复算输入。

## 0.3.0 — 2026-10-26

本次整理此前增量功能。JSON schema 保持 2；公共结构增加字段，直接构造这些结构的调用方需要迁移。

### 发布与接入

- 模块与 CLI 版本统一为 0.3.0；用 .moonignore 排除宿主和开发工具，保留核心源码、测试、库示例、许可证和文档。
- 提供版本迁移说明与注册表独立消费工程验证流程。

### 编码器防御与证据验收

- 报告编码中的边定位、诊断查询显式返回类型化错误，保留实际原因，移除对应 unwrap panic 路径。
- 将证据准确性、截断后编号有效及 JSON 不声称交点纳入 G17～G19 验收矩阵，并说明浮点环境限定。
- 主线程兼容模式取消并禁用三档比较，构造请求再次阻止启用；保持单档分析与导出。
- 明确 profile_crossings 是兼容简化入口，分类处理优先使用 crossing_report。


### 运动段表格与完整操作案例

- 网页默认以表格编辑运动段，支持逐段运动规律、添加删除与高级分段 JSON 导入；保存输入保留混合规律。
- MoonBit 新增不采样的分段校验入口，复用既有输入规则，返回总转角、总升程和字段错误；累计升程错误定位到具体段。
- 校验与分析/导出使用独立响应通道，保留会话缓存，防止旧校验覆盖新输入。
- 增加中文五步教程、可下载案例和从超限定位到搜索、三档比较、DXF 导出的完整浏览器验收。


### 位置、诊断、采样比较与交叉证据

- MoonBit 统一段、点、边位置查询，运动求值复用段界查找；最差指标直接记录采样下标。
- 报告新增局部约束余量、原因码与位置；网页联动段高亮、接触点和曲线游标。
- 可选三档完整采样比较，复用当前档；保留每档位置及检查状态，不作收敛证明。
- 拓扑保留有上限的交叉/不确定边对证据，计数仍完整；增加可运行的交叉诊断反例。
- JSON schema 仍为 2，新增字段为兼容性扩展；MoonBit 公共结构新增字段，手工构造这些结构的调用方需同步更新。

### 判定验收与契约收口

- 固定 G01～G16 几何验收，修复极小/远离原点轮廓的闭合容差，归一化乘积下溢时保守返回不确定。
- 集中 MoonBit 的上限、错误分类、状态及退出码；嵌套字段提供路径，合法输入后的数值失败使用 calculation_failed。
- 增加 README 速览、设计取舍、公共 API、自动生成的状态/错误码/上限表与文档同步检查。
- JSON 仍为 schema 2，未知状态必须保守处理。


### 搜索与性能

- 搜索复核只扫描一次细网格：保留坐标的扫描同时给出标量指标，删掉重复的标量预扫。代价是确定的——通过粗筛但在细网格失败的候选会构造并丢弃一次坐标；两侧数据由 `npm run benchmark` 记录。
- 性能基准新增 `outputs: []` 的端到端计时（不含点表与导出字符串，但仍包含 JSON 解析、交叉检查与摘要序列化），并补充 128 段 × 4000 分辨率负载。

## 0.2.0 开发阶段

- 缓存段起点，二分查询任意角度，按已知段号线性生成运动网格。
- 复用角导数，批量校验参数，复用粗细网格；搜索使用不保留坐标的标量筛选。
- 交叉检测按包围盒分桶并去重，以二次算法作测试参照。
- 采样接受状态同时要求局部条件和完成的零交叉检查；失败和未检查不再压缩为 -1。
- JSON schema 2 支持按需输出与可选输入回显，CLI 报告引用独立文件。
- 统一 UTF-8 字节限制，新增无候选和检查未完成退出码，明确实际点数。
- 修正最小偏置因子角度命名；增加 DXF 独立读取、接口回归和性能实测。

## 0.1.0 开发阶段

- 摆线、3-4-5、4-5-6-7 运动规律及解析导数。
- 闭合运动程序、角度与时间导数换算。
- 含正负偏置的滚轮中心轨迹与实际包络轮廓。
- 压力角、节曲线曲率、局部偏置因子及跃度跳变分析。
- 基圆网格搜索、细网格复核、采样折线交叉检查。
- SVG、CSV、毫米 DXF 和 JSON 输出。
- 中文工作台、CLI 和四个输入案例。
- MoonBit 多后端测试、独立数值验证及浏览器测试。

面向运动学和几何初选；未验证实体加工和连续轮廓的全局无干涉。
