# CM95 PBF 生产化阶段 v1.4.5 ## 目标 收口 v1.4.4 finalize-production 唯一剩余的 Style contract unmatched:18 个没有任何可渲染文本内容的 label-only Feature。 ## 事实基线 - production jobs: 20115 / PASS 20115 - PBF: 19751 - planned/decoded features: 787902 / 787902 - sprite missing: 0 - style contract unmatched: 18 - place_label_land / built_up_place: 9 - seabed_text_point / seabed_material: 9 - 18 个 tile-local Feature 分布于 16 个 tile。 ## 修复 1. Builder contract 升级为 `cm95pbf-builder/0.4.5-nonrenderable-label-omit`。 2. delivery 编码前增加 label renderability gate: - `place_label_land` 必须至少有非空 `place_name_en` 或 `chart_label_text`; - `seabed_text_point` 必须有非空 `chart_label_text`。 3. 不满足时不进入 PBF,写入 `non_renderable_omissions`;trace 标记 `delivery_omitted=true`。 4. 不修改 mapping/style/sprite/FID/geometry/quantization。 5. migration 增加 `--invalidate-tiles-file`,只强制重建实际受 builder contract 变化影响的 tile。 6. 修正 migration trace 文件扩展名为实际 `.trace.jsonl`。 ## 预期结果 - 新 release jobs 20115 - migrate reuse 20099 - PENDING 16 - 16 tile 重建 PASS - planned/decoded feature count 预计从 787902 降到 787884 - `non_renderable_omissions = 18` - `style_sprite_contract.overall = PASS` - `contract_unmatched_count = 0` - `sprite_missing_count = 0` - finalize-production `status = PASS` 语义 backlog `112 variants / 52828 rows` 仍维持 `PENDING_REVIEW`,不在本版本伪装为完成。