Files
MapLibreParticleLab/docs/报告/40-04_T-RUNTIME-05_Duplicate_NOOP_Codex完成报告_v1.md
OpenAI Codex 4e31163516
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
test: add runtime field duplicate noop control
2026-09-03 19:02:21 +08:00

1.9 KiB
Raw Permalink Blame History

40-04 T-RUNTIME-05 Duplicate NOOP 补验收 Codex 完成报告

状态

40-04:IMPLEMENTED / WAITING FOR ANDROID VALIDATION

用户已手工通过 T-RUNTIME-01~04、T-RUNTIME-06;本轮只补 T-RUNTIME-05 的 Android 验证入口,未执行 Android 构建或设备操作。

实现

  • 新增 RasterArraySource::repeatRuntimeFieldWindow()。它读取 Source 权威 Impl::nextField 并调用既有正式 updateRuntimeFieldWindow(),不直接操作 renderer 或 GPU。
  • 当当前窗口为 T0=vortex / T1=nodata,这次重提交命中 sameFieldGpuContent(currentT1, newT1),返回 Noop;不调用 onSourceChanged(),所以没有 Field upload、slot swap、simulation reset、trail clear、Style reload 或 Layer/Source recreate。
  • Android 增加 DUPLICATE T1。调用链为 MapLibreMap -> NativeMapView -> JNI -> Style::getSource() -> RasterArraySource;Kotlin/JNI 不持有 T0/T1,也不消费预加载候选。
  • JNI 只在返回 Noop 时报告 duplicate bridge 成功。日志应出现 FIELD_WINDOW_UPDATE_DUPLICATE_REQUEST、Core 的 FIELD_WINDOW_UPDATE_APPLIED result=NOOP 与 bridge result=NOOP。

本地检查

  • Linux/OpenGL:raster_array_source.cpp.o、source.test.cpp.o 精确 -Werror 编译通过。
  • Source test 补充 C/D 后 duplicate assertion:结果 Noop、T0/T1 保持 vortex/nodata、Source changed count 不增加。
  • clang-format --dry-run --Werror、git diff --check 通过。
  • Android Gradle、ADB、APK、实体机和 Jest:均未执行。

用户手工验收

在已通过 A/B→B/C→C/D 后,保持 T0=vortex / T1=nodata,点击 DUPLICATE T1 一次。必须确认:

FIELD_WINDOW_UPDATE_APPLIED result=NOOP
FIELD_UPLOAD delta=0
SIMULATION_RESET delta=0
trail clear delta=0
Style reload delta=0
当前 T0/T1、MIX、frame 持续不变/继续运行

随后仍可点击普通 ADVANCE WINDOW,它应继续保留既有 T-RUNTIME-06 的 NO_PRELOADED_FIELD fail-closed 语义。