Files
MapLibreParticleLab/docs/50_Step记录/STEP-097_V13三轮审查问题合并修复_v1.md

13 KiB
Raw Blame History

STEP-097 V13 三轮审查问题合并修复 v1

状态:进行中。目标:按阶段修复三轮审查的当前源码问题,保护 C-001 与既有公开协议。基线:Mac-mini-tei.lan,/Users/tei/dev/MapLibreParticleLab,particle/main,起始 720d309364628f85049cf9969d71c71e8dfacce9,起始工作树 clean,子模块无偏离。当前 .13 发布 tag 指向 ee0b89e71;不修改发布坐标。

检查点 状态 实际事实、阻塞和下一步
阶段 0 基线与反证 完成(静态) 读取三轮审查、STEP-094~096 交付及 C-001/RFC-001 本地副本。当前 HEAD 比任务书基线只新增任务文档;远端 particle/main 经 git ls-remote 核对一致。建立 24 项矩阵。Integration 远端同步状态待 RDC 复核。
A1 Renderer 正确性 Android/Core 检查点完成,iOS runtime 用户豁免 e67e4961b 记录 01/02/03/19 的部分代码;19 有 GTest。01/02/03 缺少任务要求的专用可执行像素/附件/故障注入测试入口;且未进行 GL/Metal 编译。故 A1 不判完成,严格停止于此,不进入 A2。
A2 Field/粒子正确性 Android/Core 验证完成;iOS runtime 用户豁免 04–07 在当前 GPT-6 Luna High 可见会话实现,RDC 独立验证完成;详见本记录末尾补记及 docs/报告/STEP-097_A2_阶段验证记录_v3.md。A2 达到 Android/Core 阶段门槛,不能据此关闭整个 STEP-097。
B 输入/生命周期 计划 尚未开始。
C 安全性能 计划 尚未开始;必须先完成 A1 正确性。
D 交付 部分完成 已写 24 项矩阵、集中验证清单、Step、本轮完成报告和开发记录。所有构建、测试、运行、发布均 NOT RUN;后续 RDC 独立审查。

允许范围与禁止范围按任务书。未完成项目不勾选。RDC 后续执行构建及运行;本轮不运行构建或 Jest。

2026-09-25 RDC/FZG1 A1 APK 实际验证补记

  • 用户授权在 FZG1 而非 Win11 虚拟机测试。Mac RDC 以 HEAD 91c2491b0 的 clean 基线执行标准 OpenGL x86_64 Validation APK 脚本:Gradle BUILD SUCCESSFUL in 15m 59s,APK 60,295,184 bytes,SHA-256 8677197c5f83a22747cb51f0c261edffc5db4678fc25b3f366474f6ecb94dc99。
  • 经 adb -s 192.168.200.139:5555 在 Panasonic FZG1-2 覆盖安装 Success;设备内安装 APK SHA-256 与产物一致。保存原包备份、20 张截图/UI XML、ADB 操作日志与实时 Logcat;设备实际验证见 docs/报告/STEP-097_A1_FZG1测试APK与实机验证报告_v1.md。
  • R-C-R、R-C、C-R、C-only、single continuous、缓存 OFF/ON、Camera、缺失 START/END 后恢复、TOP_REORDER、跨连续区与 fail-closed 均已做既有场景冒烟,未发现本次测试窗口内 FATAL/SIGSEGV/SIGABRT。
  • B/D 场景 top 不可见而诊断仍 topPresent=true 的现象已记录为待复核,不凭此断言确定像素错误;01 同 tile fixture、02 Metal、03 render exception 注入、19 GTest 仍未完成。因此 A1 保持阻塞/PARTIAL,A2/B/C 未开始。此补记更新了之前 Codex 报告中“全部测试 NOT RUN”的后续事实,不追溯修改旧报告。

2026-09-26 RDC 第 19 项 GTest 实跑补记

  • Mac 同一 particle/main HEAD 0d13552bed84f427dd43cae9856391bd26622179 将 build-step088-opengl/mbgl-test-runner 增量编译/链接完成:95/95 steps,exit 0,261.74 秒;构建警告记录于原始日志,不影响测试退出状态。
  • 定向 RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex:1/1 PASS、exit 0;相关 RenderSegmentDiagnostics.*:5/5 PASS、exit 0。测试证明旧 revision 释放不污染新 topology 相同 index 的当前段计数。详细报告:docs/报告/STEP-097_A1_第19项GTest运行验证报告_v1.md。
  • 19 的已存在 GTest 实测门槛通过,但不等于 GPU 内存无泄漏或整项资源实机验收;01/02/03 专用测试入口仍缺,A1 依然 PARTIAL,不进入 A2/B/C。本补记覆盖此前 Codex 与 FZG1 报告中的历史 GTest NOT RUN 记录,不改写旧报告。

2026-09-26 FZG1 第 19 项设备辅助验收

  • Mac RDC 确认 APK 源码 91c2491b0 到当前 237a3e660 只改变文档,复用原 OpenGL x86_64 APK;在 FZG1-2(ADB 192.168.200.139:5555)执行 install -r 得 Success,设备内 APK SHA-256 8677197c5f83a22747cb51f0c261edffc5db4678fc25b3f366474f6ecb94dc99 与源文件相同。
  • 两轮 A/B/C/D/E/A 拓扑循环及 TOP_REORDER、CROSS_CONTINUOUS、CACHE OFF/ON、缺失 START 后恢复完成:20 张 1920×1200 截图与 20 份 UI XML;18 个有效检查点 valid=true/fallback=false、预期无效检查点 fail-closed。B/T textureCreate-resourceRelease 在现有诊断的 19 个场景均为 0 或 1;实时日志无 FATAL/SIGSEGV/SIGABRT。
  • 设备辅助冒烟 PASS,前述 19 GTest 1/1 PASS;没有 on-device GTest、逐 revision GPU 内部观测或显存泄漏证明。B/D topPresent=true 与视觉不一致的既有疑点仍待单独核查;01/02/03 专项测试未闭合,A1 整体继续 PARTIAL。报告:docs/报告/STEP-097_A1_第19项FZG1运行验证报告_v1.md。

2026-09-26 Codex 继续 A1 测试入口

  • 新增 Android 同源同 tile 的 R-R/R-C-R/C-R-R 本地 fixture 与诊断菜单;新增 Metal 附件/clear GTest 源码;新增 LayerGroup 正反范围异常、observer 与 cache 失败后重试 GTest 源码。生产 Metal clear 逻辑抽成仅内部调用的辅助函数,使测试检查同一路径,不调整公开协议。
  • 本轮只做静态检查;构建、GTest、Jest、设备像素、Metal validation 均 NOT RUN。01/02/03 仍需 RDC 编译与设备验证;A1 保持 PARTIAL,A2/B/C 未启动。第 19 项原有 RDC 1/1 PASS 不受影响。

2026-09-26 A1 收口,允许进入 A2

  • A1 新 Android APK 源码 8c006ac83,构建/安装/设备内 SHA-256 复核成功;FZG1 18 个同源同 tile RR/RCR/CRR 检查点、中心/区域外像素采样均一致,脚本 exit 0,实时日志无崩溃。03 原生异常恢复 GTest 2/2 PASS;19 已有 GTest 1/1 和诊断组 5/5 PASS。
  • Metal host 可编译,但无 Metal device,两项测试均 SKIP;用户明确不做 iOS runtime,本轮验收按用户决定接受,不能记为 iOS 实测 PASS。B/D 的 topPresent 历史疑点保留;详见 docs/报告/STEP-097_A1_Android专项验收报告_v1.md。
  • A1 Android/Core 阶段完成;下一步严格 A2→B→C,每阶段保留独立 RDC 构建及验证。STEP-098 未启动、未提交;.13 发布冻结不动。

2026-09-26 A2 RDC 中途验证,尚未进入 B

  • Codex GPT-6-Sol medium 在 A2 四项范围内写入生产/测试源码但触及当期使用额度,未完成最终审查/提交。RDC OpenGL 原生编译 exit 0、16/16 定向 GTest PASS;Shader generator 双次 exit 0/幂等;Metal host 源码编译 exit 0、同样 16/16 Core GTest PASS,没有 iOS runtime。
  • A2 仍 PARTIAL;完整差异和构建/测试日志位于 artifacts/maplibre-particle/step097-a2-rdc/,中文事实报告:docs/报告/STEP-097_A2_阶段验证记录_v1.md。B/C 均未启动;用户未跟踪 STEP-098 与已发布 .13 未动。已安排 Codex 额度恢复后严格串行继续。

2026-09-26 A2 Core/Android 最终验证收口(B/C 未启动)

  • Codex 配置:GPT-6 Luna High,可见会话。仓库 /Users/tei/dev/MapLibreParticleLab,particle/main,验证基线 HEAD 5bb1a0e6353c5dfe8db8a61bbeba9cef447280ef;A2 源码保持 dirty、未提交。Integration main 已有报告基线 318f8ccf911ac3136c3086a1d14e61f83e2d4bce,C-001 未改。
  • 04–07 完成:唯一 Core forecast clock 加 synchronous notification reentry guard;严格 GPU endpoint identity 与 mix-only immutable snapshot reuse;内部 RGBA8 signed zero/byte 解码;Mercator U/V 同纬度度量。旧 sameFieldGpuContent 的语义未改变,修正了与其 version-agnostic payload 等价定义相冲突的旧测试断言。新增 source 回归覆盖 50 次 mix ticks 不重物化、endpoint/revision 改变触发 materialize、clear fail-closed 与重入单 tick。
  • RDC 独立结果:原 58/58 完整回归 PASS;当前 broad filter OpenGL 121/121 与 Metal host 121/121 PASS;三项 A2 定向测试两平台各 3/3 PASS;shader generator 连跑两次幂等。Metal host 仅 Mac Core runner,不是 iOS 设备验证。
  • 标准 Android OpenGL Debug x86_64 APK 61,753,803 bytes,SHA-256 27bf4a6cc191bd86c4d1c10398478d81c2999edd61fe7242e40e5188516b0ca5;已安装到 FZG1-2(192.168.200.139:5555),设备 APK hash 相同。V4 Golden Wind test-only fixture 覆盖 load、seek 25/75、speed 2x/1x、PLAY 30 秒、responsive UI、PAUSE、stable pause、replay、clear、reload、再次 PLAY/PAUSE;runner exit 0、17 PNG、24 steps、ANR=0。15 秒截图可见粒子。
  • Mix-only 计数按两个稳定资源 epoch 记录:clear/reload 前 upload/reset=6/2 稳定;clear/reload 后合法增至 10/4,reload 后 playback 稳定。不能说跨 clear/reload 零上传或零 reset。APK source diff SHA-256 与 mix-reuse-build-source.diff 一致:18927a5f30a88f5c1c3a00e0017473dc33b04151c227e4baf52250dc4ad2e6a2。
  • 历史异常保留:12:43 首次 FZG1 ANR 根因为 source notification 同步重入 forecast tick,当前 forecastTickInProgress 与 RasterArrayV4ClockSourceNotificationReentryDoesNotAdvanceTwice 覆盖此项;后续有过无 ANR 但主线程高负载、PLAY/TIME 无响应的失败试跑,栈指向 forecast tick 内重复投影物化。最终 mix reuse APK 通过本次闭环。历史 debuggerd、失败试跑和最终日志均保留在 artifacts/maplibre-particle/step097-a2-final-validation/。
  • A1 与 A2 的 Android/Core 阶段检查完成;iOS runtime 明确按用户决定记 USER_ACCEPTED_WITHOUT_IOS_RUNTIME_TEST,不写成 iOS PASS。STEP-097 整体仍 PARTIAL:B/C 未开始,Jest 未运行,STEP-098 未运行,.13 未发布/覆盖。Git commit/push 留给 RDC 独立 QA 后执行。

2026-09-26 A2 源码独立 scoped commit 核验

  • A2 的 26 个生产源码、shader、TestApp-only V4 Golden fixture 和定向测试文件已固定为 f49ffa68a17e0a505199bdbeccf07f8543f3a05f 并推送,origin/particle/main 回读一致;没有 stage 用户未跟踪 STEP-098。完整代码/设备证据仍见 docs/报告/STEP-097_A2_阶段验证记录_v3.md,不因 Git 提交改变原 APK 的 git_dirty=true 来源事实。STEP-097 整体 PARTIAL,B/C 待用户指令。

2026-09-26 B 阶段源码、Core 复核与 Native 版本阻塞(未收口)

  • Codex 两次自动任务(Android 第 10 项销毁监听、旧数值夹具纠正)均使用 codex exec --json + GPT-6 Luna High,均有 turn.completed 和 exit 0,JSONL/status.json 已持久化于 artifacts/maplibre-particle/step097-b10-codex/ 与 step097-b-fixture-codex/。
  • 08 N05:长度感知 JSON/NUL/重复键/非法配置清除与恢复测试入口已实施;09 N06:提交前有限数值验证和旧有效修订保护已实施;10 N07:View owner、世代隔离与新 Map 销毁 observer 测试源码已实施;20 E01:Host package/lock 均指向正式 .13,正式 tarball SHA-256 与 SRI 已核对。
  • RDC Mac Core 构建 PASS,四项 B 定向 GTest 4/4 PASS;broad 初次 132/134,真实原因是旧四单元 16-bit 测试借用了 4-byte UInt8 storage;仅修为合法 8-byte little-endian fixture 后复编与扩大回归 134/134 PASS,未放宽生产校验。
  • 硬阻塞:B10 新 MapLibreMap.addOnDestroyListener() 不存在于已发布 .13 source commit ddf20dec9,现有 RN Gradle 默认正式 .13 AAR 无法提供该符号;本地新源码 Android 测试不能替代正式 RN consumer 精确配对构建。禁止借此修改 .13 发行产物。
  • Linux Android 采用远端 b1239ac3b 新独立 worktree,并从 Mac 传入 B scoped patch/测试,原 Linux dirty 工作区未动。首次 Gradle 仅因工作树缺少 ANDROID_HOME 失败,按既有 SDK 路径重试;结果见 B 专项报告的后续记录。
  • 当前 B = PARTIAL / BLOCKED_NATIVE_AAR_COMPATIBILITY,尚未 scoped commit/push;C 与 STEP-098 均不启动,iOS runtime 保持用户豁免。详见 docs/报告/STEP-097_B_独立验收与版本阻塞报告_v1.md。

2026-09-26 B 阶段 Mac RDC 最新核验(仍阻塞)

  • B10 codex exec --json 终态 turn.completed、exit 0,完整 JSONL/status.json 持久化;旧 16-bit fixture 纠正任务亦同。RDC 复编后 B 定向 6/6、扩展 139/139 PASS。
  • Android MapLibreMapDestroyListenerTest 2/2 PASS,Native Java 编译 exit 0;隔离 Kotlin owner 4/4 PASS,均非默认 RN consumer 集成验收。日志和 XML 见 artifacts/maplibre-particle/step097-b-rdc/。
  • .13 release source 无新 MapLibreMap.addOnDestroyListener(),新 RN Kotlin 源码默认依赖 .13 AAR;B 保持 PARTIAL / BLOCKED_NATIVE_AAR_COMPATIBILITY。Linux 隔离 Gradle 仍待最终状态;未启动 C、STEP-098,也未修改 .13 发布资产。

2026-09-26 B scoped Git 阻塞检查点

  • Mac RDC 在独立 worktree 对 21 个 B 文件逐项 SHA-256 一致检查后,提交并推送 step097-b-blocked-20260926:e463ba04ce956a54eed02b77f981eeeedd9a5534,远端回读一致;particle/main 仍为 b1239ac3b,原 dirty/untracked(含 STEP-098)未动。
  • 该提交只冻结 PARTIAL/BLOCKED 的源码及证据,不是 B PASS;C 与 STEP-098 仍禁止启动,.13 发布资产不变。