Files
MapLibreParticleLab/docs/50_Step记录/STEP-075_QBIN2_V4_Binding与ProjectionIdentity_v1.md
OpenAI Codex c465b804ce
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
feat: add V4 field binding projection identities
2026-09-13 13:58:26 +08:00

2.2 KiB
Raw Permalink Blame History

STEP-075 — QBIN2 V4 Binding 与 Projection Content Identity v1

状态:完成

日期:2026-09-13

目标与基线

  • 开始 HEAD:31783f25a8153f48000f19ac7cc2f2113cf47818。
  • 仅实现 provider-neutral Core Binding/Projection;没有接入 Renderer、GPU、JNI、Android、RN、NavSea 或网络。

必做项

  • 新增独立 ColorBinding、ParticleBinding、ColorProjectionContentIdentity、ParticleProjectionContentIdentity 与 BindingProjectionResolver。
  • Color 可选择 Scalar/Velocity/Direction numeric plane;unit 只作 equality assertion。
  • Particle 支持同 fieldKey/window 的 U/V vector 与 DirectionAngle 两种模式;没有定义速度大小或 Renderer 行为。
  • 每次 resolve 以 binding 的 fieldKey 独立调用 EncodedFieldStore::resolve,保留 Core-owned requested time 与每 field window。
  • SampleState 仅保存 requestedForecastTimeMs/mix;content identity 不纳入 mix、播放状态或视觉参数,且保留只读 frame/storage shared_ptr。
  • 结构化 fail-closed 返回 InvalidBinding、FieldSeriesMissing、WindowUnavailable、PlaneMissing、Class/Unit/Component/Group mismatch 与 InterpolationIncompatible。
  • 测试 wind 00/01/02 与 wave 00/03/06 在 01:30 使用各自窗口;MIX 0/.25/.5/.99 保持 identity/storage;Scalar-only revision 仅改变 Color identity;覆盖 Direction 成功及 unit/selector failure。

验证

  • Linux OpenGL mbgl-test-runner 真实重建:PASS(输出节流)。
  • 规定过滤组 XML:50 tests、0 failures、0 errors:Binding 4,Runtime/Profile 11,QBIN Decoder/Ingress 24,V3 Source 11。
  • git diff --check:PASS。

边界与未执行

  • FieldSeries 在提交阶段已拒绝不可插值相邻 frame;Resolver 仍保留 InterpolationIncompatible 结构化保护,正常 Store 无法形成该窗口。
  • 未执行 Android Gradle/APK/ADB/Jest、iOS/Metal 或任何 Host/Renderer 验证;它们不属于本 Step,不能视为 PASS。
  • 任务开始前既有 STEP-062 dirty、历史 untracked、build logs 与 RN 输出均未清理、暂存或提交。

下一步

STEP-075 关闭;按任务要求停止,不进入 STEP-076。