Files
CM95/docs/CM95_PBF生产化阶段_v1_4_3.md

147 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CM95 PBF Production v1.4.3:生产收口与失败恢复
## 1. 背景
v1.4.2 首轮 Dataset-1 / z0–z12 production:
- 计划任务:20,115
- PASS:19,913
- FAILED:202
- FAILED 分类:
- MVT encoder dropped:171 tile
- hard-gate unmapped:31 tile
- hard-gate 缺口全部为 `FSHHAV AREA`,共 51 条源 Feature,失败报告中累计命中 73 次 tile-local 记录。
Encoder dropped 主要分布:
- `depth_contour`:313
- `baseline_line`:85
- `seabed_line`:9
- `baseline_area`:5
- `navigation_hazard_area`:1
- `navigation_hazard_outline`:1
全 Dataset Mapping Gap 审计还发现:
- source variants:191
- gap variants:141
- gap object classes:117
- gap feature rows:81,443
- no exact rule rows:52,879
- explicit/status gap rows:28,564
- inherited hard-gate rows:51(全部 `FSHHAV AREA`)
因此 v1.4.3 不允许把 5 万多条未知语义对象粗暴映射到错误 NavSea 图层。
## 2. v1.4.3 决策
### 2.1 FSHHAV AREA 正式进入 delivery
`FSHHAV` Dictionary 含义为 Fish haven。
Dataset-1 实际出现 AREA variant,现映射为:
- main:`anchor_caution_hazard_area`
- outline:`anchor_caution_hazard_outline`
- point-on-surface:`anchor_caution_hazard_point`
- canonical:`fish_reef`
- safety:`hard_gate`
- icon:`reef_fish`
- fill:`pattern_fill_fish_reef`
AREA、outline、point-on-surface 三者都是同一源对象的不同渲染产物;不得把 AREA 静默降为 unmapped。
### 2.2 全量 gap 显式分类,但不伪造语义
新增:
`config/mappings/cm95_gap_disposition_v1.yaml`
141 个已观察 gap variant 全部有明确 disposition:
- 1 variant / 51 rows:`DELIVERY_MAPPED_V1_4_3`(FSHHAV AREA)
- 28 variants / 28,564 rows:已有显式非 delivery mapping/status
- 112 variants / 52,828 rows:`ENGINEERING_ONLY_PENDING_SEMANTIC_REVIEW`
后者不是“已经完成映射”,而是明确的语义 backlog;正式后续阶段必须按对象类别逐组审查,不得 generic 映射冒充正确航海语义。
## 3. MVT 量化策略
v1.3 只保护了 `clearance_limit_line` 的单一退化场景。v1.4.3 改为统一编码前预量化:
1. 使用当前 tile `quantize_bounds + extent` 计算整数坐标;
2. Line 必须至少有两个不同量化坐标;
3. Polygon exterior 必须至少有三个不同量化点且量化面积非零;
4. 不满足条件的 tile-local 几何,不再送入 encoder。
处理分两类:
### 3.1 对象存在性必须保留
以下图层退化时转换到现有 point layer:
- `clearance_limit_line` → `clearance_limit_point`
- `navigation_hazard_area/outline` → `navigation_hazard_point`
- `anchor_caution_hazard_area/outline` → `anchor_caution_hazard_point`
报告记入 `quantization_fallbacks`。
### 3.2 线性参考/普通面片
例如:
- `depth_contour`
- `baseline_line`
- `seabed_line`
- `baseline_area`
若当前 tile 内量化后已经没有可绘制二维/一维形状,则明确记入 `quantization_omissions` 后省略当前 tile-local 片段。
这不等于删除源对象;源对象、FID identity 和其它 tile/zoom 中可绘制片段不变。禁止把等深线等线性语义伪造成点。
Encoder 后仍做真实二进制 decode 对账;`encoder_dropped_features` 必须继续为 0。
## 4. Release 迁移
v1.4.3 mapping SHA 与 v1.4.2 不同,因此旧 plan 不得继续运行。
新增:
`cm95pbf migrate-production-release`
流程:
1. 用 v1.4.3 mapping 创建新 plan / 新 release_id;
2. 读取旧 release ledger;
3. 仅复用旧 `PASS`;
4. 旧 FAILED/PENDING/RUNNING 一律在新 ledger 中重新 PENDING;
5. 若旧 PASS report 命中新 mapping 声明的 `delivery_output_changed_object_classes`,也不复用;
6. 旧 PASS 必须同时满足:
- hard_gate_unmapped = 0
- encoder_dropped_features = 0
- planned == output
- PBF/report 文件完整
7. 通过的 PBF/report 默认用 hardlink 复用,失败则自动 copy fallback。
v1.4.3 的 delivery output changed class 只有:
`FSHHAV`
因为旧版所有出现 FSHHAV AREA 的 tile 都已被 hard-gate 阻断,正常预期是复用约 19,913 PASS,只重建约 202 tile。
## 5. Release 状态语义
`finalize-production` 现在同时输出:
- production integrity `status`
- `semantic_completeness`
- `semantic_backlog`
- `quantization_fallbacks`
- `quantization_omissions`
v1.4.3 即使 production integrity PASS,只要 112 个 pending semantic variant 尚未处理:
`semantic_completeness = PENDING_REVIEW`
因此不得把 v1.4.3 称为“全国 CM95 语义全部完成”;它是生产生成链/失败恢复/安全硬门收口版。