2.8 KiB
2.8 KiB
STEP-087 QBIN V3 解码与 13.4.1-particle.9 升级完成报告 v1
1. 执行方式
本任务最初尝试在 Mac 上交给 Codex 执行,但 Codex CLI 返回 usage limit,未实际执行修改。后续由 ChatGPT 通过 RDC 直接在 Mac 专用工作树 /Users/tei/dev/MapLibreParticleLab-qbv3-p9 完成代码、测试、版本升级、文档与 Git 收尾。
2. 实施内容
- 基线包含
13.4.1-particle.8的 Android / iOS 统一发行改动。 - 新增
QbinV3Decoder,按 WeatherV2 QBIN V3 v2.2 冻结稿实现固定 Header / Descriptor、CRC32、canonical packing、VALIDITY、Predictor + ZigZag + Rice、Direction 环形残差与资源上限校验。 - 生产 Block Geometry 固定为 16×16;不做双块尺寸猜测。
EncodedFieldIngress显式识别QBV2/QBV3magic;V2 兼容链保留,V3 使用新 decoder;解码后仍统一进入FieldProfileValidator。RasterArraySource::submitEncodedField()改为统一使用EncodedFieldIngress::decodeAndValidate()。- CMake / Bazel Core 注册 V3 decoder;CMake test 注册 V3 tests。
- 新增 Current / Rain / Wave / Wind 共 8 个 QBIN V3 Golden Fixtures 及 manifest / 校验脚本。
- Native / RN 当前版本声明统一升级到
13.4.1-particle.9。
3. Block Geometry 结果
C++ benchmark 使用四类真实 Golden 数据共 8 帧:
- 16×16:2,470,419 bytes;encode 218.713 ms;decode 104.121 ms。
- 32×32:2,514,288 bytes;encode 200.101 ms;decode 101.451 ms。
- 32×32 payload 增加 43,869 bytes(约 +1.7758%),而 8 帧总 decode 仅减少约 2.67 ms。
- 因网络/缓存/跨桥传输尺寸是 QBIN V3 的核心目标,最终冻结 16×16。
4. 验证结果
- QBIN V3 Golden Fixtures 校验:PASS,8 files,block=16×16。
- C++ 定向测试:PASS 8 / FAIL 0。
- Current / Rain / Wave / Wind V3 解码结果与对应 V2 canonical raw 做逐 plane / validity byte-for-byte 对比:PASS 8 / FAIL 0。
git diff --check:将在提交前执行。- iOS Metal
MapLibre.dynamic正式 Bazel 构建:IOS_BUILD_RESULT。 - Android Gradle / APK / ADB:按项目规则未执行,由用户手工完成。
5. 文档与数据
- 原始设计:
docs/30_设计/WeatherV2_QBIN_V3通用天气场二进制格式与React独立Render_Binding设计_v2.2_最终冻结稿.md。 - Block Geometry 决策:
docs/30_设计/MapLibreParticle_QBIN_V3_Decoder与BlockGeometry实施决策_v1.md。 - Step 记录:
docs/50_Step记录/STEP-087_QBIN_V3解码与13.4.1-particle.9升级_v1.md。 - Golden Fixtures:
integration/react-native/MapLibreParticleRNTestHost/assets/qbin-v3-golden/。
6. Git 收尾
- 实现提交:IMPLEMENTATION_COMMIT
- 提交信息:IMPLEMENTATION_MESSAGE
- Push:PUSH_RESULT
- 远端分支:
origin/particle/main - Final HEAD:FINAL_HEAD