4.1 KiB
STEP-097 A1 Android 专项验收报告 v1
结论及范围
A1 Android/Core 已完成本轮可执行检查点;iOS/Metal 运行测试按用户决定豁免。 不将豁免写成实际 Metal PASS。STEP-097 总体仍进行中,A2/B/C 尚待实现和验证;无新软件发布。
- 仓库:
/Users/tei/dev/MapLibreParticleLab,particle/main,源码提交8c006ac83d16c2683037f90484fd86fb917a9d78。Integrationmain核对318f8ccf911ac3136c3086a1d14e61f83e2d4bce。 - Android/FZG1-2:直接 ADB
192.168.200.139:5555,非 Win11 虚拟机。APK OpenGL Debug/x86_64,60,311,571 bytes,SHA-25648df19cf5a4c4250934efa2596423d3ad9571fe49a65b9b704a81cdb41f58671。标准脚本编译成功、ZIP/ABI 校验通过;install -r返回 Success,设备安装文件哈希一致。 - 构建记录
git_dirty=true的原因是用户另行放在docs/40_任务/的未跟踪 STEP-098 MD;本次构建起始及源码提交无 tracked 修改,未将 STEP-098 纳入编译或提交。冻结.13未修改。
01:同源同 tile Stencil — Android 实测
新入口为 Step097StencilFixture,单一 step097-shared-polygon GeoJSON tiled source 的四层同一 Polygon,运行中仅改变 R/C 连续 Segment 排列,不改来源、几何及图层视觉参数。
- 实测 RR、RCR、CRR 各两轮,稳定帧、REBUILD CURRENT、CACHE OFF/ON 与再次拓扑切换,共 18 个检查点,18 张 1920×1200 PNG 与 18 份 UI XML。
- 所有检查点均
valid=true、fallback=false且实际策略序列匹配当前选项;缓存 OFF 时各 R 报告 fallback,ON 后重新构建,拓扑有效不变。代码回归脚本退出码 0;实时日志含 10 条STEP097_STENCIL_READY,没有本次采集范围内的 FATAL/SIGSEGV/SIGABRT。 - 使用 AppKit 对原始 PNG 采样:18 张中心像素全部为 RGB
[193,176,119],区域外像素全部为[27,49,75],中心与区域外有明显差异。两种采样均一致,不以截图文字代替像素核验。 - 以上证明这组固定 same-source scene 在指定采样点和可见完整画面未出现异常;它不是对所有 tile/camera/pitch/zoom 组合的数学证明。
证据在忽略目录 artifacts/maplibre-particle/step097-a1-fzg1/:run-stencil.log、pixel-check.log、after/*.png、after/*.xml、after/live-logcat.txt、after/step097-events.txt、after/fatal-events.txt、after/observations.json、install.log、installed.sha256。
02:Metal 附件 — 源码与编译,不执行 iOS runtime
Metal 宿主测试二进制中包含 MetalRetainedAttachments.* 两个 GTest,Metal host CMake 增量编译退出码 0。当前 Mac 没有可用 MTL::CreateSystemDefaultDevice(),两个测试均按守卫 SKIP;没有将 0/2 误记为 PASS。针对 metal-cpp 对象指针解引用的最小编译修正已提交 8c006ac83。
用户于 2026-09-26 明确决定:本轮不执行 iOS 测试,Android 验收通过后 iOS 按其决定视作接受。记录为 USER_ACCEPTED_WITHOUT_IOS_RUNTIME_TEST,不宣称 iOS GPU/Metal 实际验证。
03:绘制异常恢复 — 原生测试
RenderOrchestratorError.* 两个新增原生测试实际执行 2/2 PASS,exit 0,覆盖 opaque/translucent 绘制异常、错误上报、失败 cache 不发布/不复用及干净重试恢复。日志:artifacts/maplibre-particle/step097-a1-fzg1/render-exception.log。本次不将 GTest 扩写为 Android GPU 真实异常注入 PASS。
19:资源释放归属 — 已有结果
OldCacheReleaseCannotChargeReplacementAtSameIndex 已在此前重新编译的 Mac Core 原生 runner 实测 1/1 PASS;诊断组 5/5 PASS。FZG1 资源辅助冒烟 20 个检查点已经单独报告。精确 revision 归属由原生 GTest 负责,不据设备摘要断言不存在 GPU 内存泄漏。
A1 交接与限制
A1 在 Android/Core 验证和用户 iOS 豁免口径下可进入 A2;保留 B/D topPresent=true 的旧诊断疑点,不将其冒充已修复。下一阶段按原任务书 A2→B→C 严格串行;每阶段 Codex 实现/测试入口,RDC 负责实际构建、执行与独立审查;不加入 Jest、不覆盖 .13。