2.8 KiB
2.8 KiB
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 语义不在本阶段实现。