3.8 KiB
STEP-097 A2 阶段验证记录 v2
状态:PARTIAL / 独立扩展回归发现既有断言与既有函数语义冲突。 本报告接续 v1,不覆盖其原始验证事实;A2 生产代码仍为未提交的工作树改动,不可据此进入 B/C。
1. 本次实际动作
- 2026-09-26(JST),在 Mac
/Users/tei/dev/MapLibreParticleLab,particle/main当前远端与本地同为bd1cfe95b7595a95314b9083754823ae170c5c8e;Integrationmain已核对318f8ccf911ac3136c3086a1d14e61f83e2d4bce。 - 现有 A2 工作树修改仍保留,未修改生产文件、未提交 A2 源码;用户的未跟踪 STEP-098 任务 MD 原样保留。本次只扩大原生回归并核对失败的旧源码/测试。
- v1 已记录:OpenGL 和 Metal host 原生测试程序各自编译 exit 0;A2 聚焦 16/16 PASS,两次 Shader 生成一致;Metal 仅主机源码/原生测试,不是 iOS 实机测试。
2. 扩大回归
使用 OpenGL build-step088-opengl/mbgl-test-runner,运行:
--gtest_filter='ParticleFieldRuntime.*:ParticleFieldProfileValidator.*:ParticleGpuField.*:ParticleFieldBinding.*:Source.RasterArray*:Source.HostField*:Source.ParticleField*:Source.CanonicalField*'
结果 58 项中 57 PASS、1 FAIL,退出码 1。失败项 Source.RasterArrayGpuContentIdentityExcludesRuntimeGeneration 位于 test/style/source.test.cpp:288,预期 sameFieldGpuContent(east, changed) 为 false,实测 true。
核查本次未修改的 HEAD 定义:sameFieldGpuContent() 明确只比较兼容性、解码 scalar/vector/valid,不比较 generation、dataVersion 等生产者身份;旧测试却在仅增加 dataVersion 时要求 false。两者存在原有测试期望与既有函数契约不一致。本轮未另建旧 HEAD 二进制作基线重演,因此只称静态可证的原有矛盾,不声称已做旧版运行复现。
A2 新增 sameFieldGpuEndpoint() 负责严格 GPU 端点身份,明确比较 generation/dataVersion/validTime、U/V、validity、grid、encoding 等;对应新 ParticleGpuField.* 四项已通过。旧内容等价与新端点等价不应被混为一谈。
排除上述旧测试后,同一组其余 57/57 PASS,退出码 0;这只是隔离验证,不是宣布全部回归 PASS。
3. 后续修复门槛
- Codex 恢复 GPT-6-Sol medium 后,先复核旧内容比较与新端点比较各自用途;修正旧测试断言,使其与实际函数语义一致,或发现更深的契约问题时写阻塞报告。禁止仅为让旧断言通过而更改新端点身份约束或放宽安全机制。
- 修改后重新编译原生 runner,原 58 项完整回归必须退出 0,并复跑 A2 聚焦用例。随后核对 Android 端 A2 APK 与当前最终代码一致。
- Android Gradle 编译由用户手工执行。 标准 Mac 仓库命令为
cd /Users/tei/dev/MapLibreParticleLab && ./tools/particle_android_validation/build_validation_apk.sh。在 A2 代码完成前执行只能算中途 smoke,不是最终 Android 验收。用户提供编译结果后,再通过 RDC 对 FZG1-2192.168.200.139:5555安装、Logcat、截图验证。 - iOS runtime 按用户明确决定豁免,记
USER_ACCEPTED_WITHOUT_IOS_RUNTIME_TEST;不虚报 iOS 实测。 - 未进入 B/C,未运行 STEP-098,未改冻结的
.13正式发布。
4. 原始证据
Mac 忽略目录 artifacts/maplibre-particle/step097-a2-rdc/:
a2-broader-core.log:58 项、1 FAIL 原始记录;a2-broader-excluding-legacy-test.log:其余 57/57 PASS;a2-broader-run-metadata.txt/a2-broader-exclude-metadata.txt:过滤器;- v1 中已有
build-opengl.log、build-metal-host.log、a2-focused-tests.log、a2-metalhost-core-tests.log、Shader 生成日志。
本报告不覆盖测试失败,也不将尚未提交的代码描述为正式完成。