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

4.5 KiB
Raw Permalink Blame History

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 语义全部完成”;它是生产生成链/失败恢复/安全硬门收口版。