# geocodec 第二轮初审意见回应（0.5.0）

审核状态：报名初审未通过，本文用于补充后重新审核，不表示已通过。

此次意见指出“未知不确定度归零、无法解释的 CRS 也按 WGS84 处理，可能误导地图消费者”。
复查确认 0.4.0 仍有 API 缺陷：uncertainty_m 暴露数值 0，要求调用方额外检查布尔值；
且低层 geouri_parse 允许未知 CRS 搭配 LatLng 返回。仅在统一入口拒绝仍不充分。
0.5.0 同时修改实际类型、所有入口、序列化和转换传播，而非只改申报表述。

| 审核关注点 | 修正 | 可复现实证 |
| --- | --- | --- |
| 未知不确定度归零 | uncertainty_m 改 Double?；未知 None，显式 u=0 才 Some(0) | json geo:1,2 输出 null；json geo:1,2;u=0 输出 0 |
| 未知 CRS 按 WGS84 | geouri_parse、parse_location 都拒绝；扫描和 CLI 不返回可用坐标 | custom-grid、GCJ-02、EPSG 标签在入口返回 None/error |
| 地图消费者误判 | JSON null；极小正 u 不舍入为 0；模型包外只读 | check-semantics.mjs 实际解析 JSON，外部伪造模型编译失败 |
| 细网格夸大源精度 | cell_radius_m 独立存储；to_cell 和 convert_to_cell 都传播源界/未知状态 | 40 m 输入转亚厘米网格仍 >=40 m；未知输入连续转码仍 None |
| 位置误差上界 | 只对已知 WGS84 声明或网格几何提供水平保守界，说明推导和有限表示限制 | location-model.md；极区/高精度四角覆盖测试 |
| 原始地点信息 | 转换记录保留 source/target；来源文本、高程、区域和原 u 可追溯 | location_test.mbt；examples/safety |

## 复现

```bash
moon test --target js
moon test --target wasm
moon test --target wasm-gc
moon test --target native
moon run --target js examples/safety
node scripts/check-semantics.mjs
node scripts/check-docs.mjs
```

72 个测试块；四目标运行结果见 [verification-results.json](verification-results.json)，
命令输出由 [reproducible-demo.md](reproducible-demo.md) 记录并由脚本核对。
源码重点：location.mbt、geouri.mbt、parse.mbt、cmd/main/main.mbt。

## 可用于修改报名表的补充文本

geocodec 已针对未知不确定度与 CRS 语义修改至 0.5.0。统一模型的 uncertainty_m
使用 Double?，未知为 None（JSON 为 null），显式 u=0 才为 Some(0)；网格几何半径
独立为 cell_radius_m。所有 URI 解析入口拒绝不支持的 CRS，不将其返回为 WGS84
坐标。GeoUri、Location 只能通过校验或安全转换产生，包外只读。网格转换会传播
源不确定度或未知状态，连续转码不会用更细网格尺寸替代源准确度。极小正 u 和坐标
精度在 URI 格式化中保留，误差界仅在已知 WGS84 水平语义下给出，并公开保守推导、
边界和回归证据。请结合仓库 docs/初审补充说明.md、docs/location-model.md 重新审核。

范围仍为地点记法与转换语义：不做未知 CRS 推测、基准转换或精密椭球测地线；
源 u 是调用方声明而非库对传感器的认证。单独导出目标网格码会丢掉源准确度来源，
完整保留语义应传转换记录或 to_geouri。人工报名表尚需在组委会入口更新，本文不宣称已提交。
