Files
MapLibreParticleLab/docs/报告/STEP-049_Provider-neutral_Field_Data_Adapter与Runtime输入契约_Codex完成报告_v1.md
OpenAI Codex dcedbe7394
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: correct STEP-049 commit record
2026-09-04 11:27:06 +08:00

2.8 KiB
Raw Blame History

STEP-049 Provider-neutral Field Data Adapter 与 Runtime 输入契约 — Codex 完成报告

结果

已完成 C++ provider-neutral Field descriptor、payload adapter、structured error 和 immutable Snapshot 接线。状态:IMPLEMENTED / WAITING FOR ANDROID VALIDATION;不能在用户 Android 验收前宣称 CLOSED / PASS。

Git 基线与修改

  • 起始 HEAD:f0954476783b60c6ad4fdde7229657abed2e70f6
  • branch:particle/main
  • origin 起始 HEAD:f0954476783b60c6ad4fdde7229657abed2e70f6
  • 实际修改:CMakeLists.txt、Field adapter 新增头/源文件、fixture adapter、RasterArraySource、validation renderer 日志、test/style/source.test.cpp、STEP-048 报告、STEP-049 Step 记录、粒子开发记录。
  • 未修改/未 stage:工作区已有的无关 untracked 任务文件与 STEP-046-e48fa087-review.diff。

设计结论

ParticleFieldDescriptor 是最小 canonical 输入契约,包含 field identity、类型/显示域、valid time、网格 bounds、dimensions、layout/encoding、stride、byte length、no-data、data version 和可选 checksum。ParticleFieldDataAdapter::decode() 只接收 descriptor、bytes、runtime generation,校验后生成自持有 vectors 的 Snapshot;不持有 Android、Renderer、Timeline、provider 或 network 对象。

OfflineFixtureParticleAdapter 继续负责 fixture-v1 metadata/whitelist/checksum,并调用正式 adapter。RasterArraySource 仍复用唯一的 updateRuntimeFieldWindow();没有改变 T0/T1、Timeline、Playback、MIX、GPU reuse 或 Renderer 业务边界。

验证

  • C++ / Core / OpenGL:cmake --build build-linux-opengl --target mbgl-test-runner -j3,PASS。
  • 定向已有测试:./mbgl-test-runner --gtest_filter='Source.ParticleFieldDataAdapter*:Source.RasterArray*',11/11 PASS。
  • git diff --check:PASS。
  • Android Gradle、APK copy/install、ADB、设备:未执行(任务明确由用户承担)。
  • Jest:未新增、未执行。

Git 收尾

  • commit hash:ce1a148f271d7383c081b39e24c9ebc14054f280
  • commit message:feat: add provider-neutral particle field adapter contract
  • push result:SUCCESS
  • remote branch:origin/particle/main
  • Final HEAD(功能提交推送时):ce1a148f271d7383c081b39e24c9ebc14054f280

未完成项与风险

  • 用户尚未执行 Android 一次综合验收,因此 EAST/NORTH/VORTEX、Playback、neutral valid/invalid、fail-closed、reuse、MIX 与 no-black-screen 的设备结果待补。
  • 当前 adapter canonical format 仍只支持 interleaved-uv + float32-le,这是本阶段现有 Runtime 的明确边界,不是 provider schema。
  • ParticleFieldSnapshot::isValid() 继续按当前 Wind/Global renderer 语义校验;Wave/Tide/Current 的 Ocean-only 语义不在本阶段实现。