2.2 KiB
2.2 KiB
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与 wave00/03/06在01:30使用各自窗口;MIX0/.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。