Files
MapLibreParticleLab/docs/报告/STEP-079_真实QBIN_GoldenFixture接入RNTestHost_接口阻塞报告_v1.md
OpenAI Codex dd1d701471
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: finalize STEP-079 blocker record
2026-09-13 17:44:01 +08:00

3.1 KiB
Raw Permalink Blame History

STEP-079 真实 QBIN Golden Fixture 接入 RN Test Host 接口阻塞报告 v1

状态:阻塞(未实现,未执行 Android 验收)

结论

STEP-078 的冻结 V4 RN public API 无法表达真实 Wind/Current U 或 V plane 的正确 ColorBinding。因此本 Step 依照任务的停止条款退出,没有以 Test Host wrapper、错误 enum 或 Core/API 修改绕过。

可复核证据

冻结 WeatherV2 fixture manifest/profile registry 规定:

数据集 要提交的 Color plane fixture descriptor
Wind wind/1 U 或 V semantic 1/2,group 1,unit 1,VELOCITY_COMPONENT
Current current/1 U 或 V semantic 1/2,group 1,unit 1,VELOCITY_COMPONENT

冻结 RN API packages/maplibre-particle-rn/src/FieldRuntime.ts 的 setEncodedColorBinding 只接受 SCALAR、DIRECTION_ANGLE;Android WeatherRuntimeBridgeModule.kt 也只将这两个字符串映射为 native value class。它没有 VELOCITY_COMPONENT 的 public enum 通路。

Core 并非可以安全忽略该差异:src/mbgl/particle/field/field_binding.cpp 会对 ColorBinding 的 selected T0/T1 plane 验证 value class。以 SCALAR 提交真实 U/V 必返回 PlaneClassMismatch。把 value class 伪造为 scalar 既不是 fixture-derived binding,也不会形成有效 V4 bridge 验证。

Wave(scalar Height)与 Rain(scalar precipitation)没有此问题;Wave 的 DirectionAngle particle binding 与 Wind/Current 的 VectorComponents particle binding 也均有冻结 public API 表达。但任务要求同一 Test Host V4 dataset contract 至少包含 ColorBinding,且固定规则特别允许 Wind/Current U/V 的 ColorBinding;缺少该 enum 使四组完整合同无法成立。

未执行的内容

  • 未保留或提交 8 个 copied raw QBIN fixture,避免仓库出现无法被完整 Test Host contract 使用的半成品。
  • 未创建 V4 dataset/materialize/UI;未修改 V3 UI 或 Test Host Metro。
  • 未运行 TypeScript、TurboModule codegen、C++ rebuild/回归、Android Gradle/APK/ADB,因没有可验证的合规实现。
  • 未创建实现提交;没有 fixture、Test Host 或 package/Core 改动。阻塞记录已以 afcc74066f1395678621fa2b1a70d10bc722a623(docs: record STEP-079 V4 fixture API blocker)推送到 origin/particle/main。

最小解阻条件

需要新的、显式授权的 API 修订 Step:令 EncodedColorBindingInput.expectedValueClass、RN validation、TurboModule spec、Kotlin enum mapping 以同一冻结 ABI 支持 VELOCITY_COMPONENT,并增加相应的 Core/bridge contract tests。该 Step 必须单独决定 Renderer 是否仅 bridge-only;本报告不建议把 vector magnitude 伪造为 color input,也不建议在 Test Host 绕过 public API。

在该修订完成且稳定后,应重新从本任务指定 fixture source materialize 8 个 .qbin,进行完整 source/size/SHA-256 审计,并执行本任务要求的 Linux static validation。Windows 11 Android 验收目前没有可交付的 V4 Test Host,因此不能提供安装/ADB 验收步骤或宣称 Android PASS。