docs(step097): record A2 expanded regression and legacy test mismatch
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
tei
2026-09-26 11:54:20 +09:00
parent bd1cfe95b7
commit 5bb1a0e635

View File

@@ -0,0 +1,44 @@
# STEP-097 A2 阶段验证记录 v2
**状态:PARTIAL / 独立扩展回归发现既有断言与既有函数语义冲突。** 本报告接续 v1,不覆盖其原始验证事实;A2 生产代码仍为未提交的工作树改动,不可据此进入 B/C。
## 1. 本次实际动作
- 2026-09-26(JST),在 Mac `/Users/tei/dev/MapLibreParticleLab`,`particle/main` 当前远端与本地同为 `bd1cfe95b7595a95314b9083754823ae170c5c8e`;Integration `main` 已核对 `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`,运行:
```sh
--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-2 `192.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 生成日志。
本报告不覆盖测试失败,也不将尚未提交的代码描述为正式完成。