Files
MapLibreParticleLab/docs/报告/STEP-097_V13三轮审查问题合并修复_Codex完成报告_v2.md
tei b1239ac3b1
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs(step097): close A2 Android Core validation
2026-09-26 15:18:45 +09:00

8.2 KiB
Raw Permalink Blame History

STEP-097 V13 三轮审查问题合并修复 — Codex 完成报告 v2

1. 执行结论

PARTIAL:A1 与 A2 的 Android/Core 检查完成;B/C 未开始。 A2 04–07 已由 Codex GPT-6 Luna High 在用户可见会话实现,由 RDC 独立构建、测试和执行 FZG1-2 运行闭环。iOS runtime 依据用户决定豁免,状态为 USER_ACCEPTED_WITHOUT_IOS_RUNTIME_TEST,不是 iOS PASS。没有运行 Jest、STEP-098 或发布 .13。

2. Git、环境与发布基线

  • 机器:Mac-mini-tei.lan;仓库:/Users/tei/dev/MapLibreParticleLab;branch:particle/main。
  • 源码验证基线 HEAD:5bb1a0e6353c5dfe8db8a61bbeba9cef447280ef;验证时 worktree dirty,未提交。报告编写只增加/更新本报告所列 A2 文档。
  • A2 source diff SHA-256 18927a5f30a88f5c1c3a00e0017473dc33b04151c227e4baf52250dc4ad2e6a2,与 APK build source snapshot 完全相同。
  • Integration main=318f8ccf911ac3136c3086a1d14e61f83e2d4bce;C-001 未修改。
  • 冻结 .13 坐标/tag/manifest/发布产物未改。没有提交或 push。
  • 用户 untracked STEP-098 任务文件保持未跟踪、未修改、未 stage。

3. 修改文件

源码、shader、测试及 Test-App-only V4 Golden fixture 的完整路径列于 A2 阶段验证记录 v3 第 4 节。核心范围包括 RasterArraySource 与 Map::Impl Forecast clock、严格 GPU endpoint identity 和 mix-only snapshot reuse、signed RGBA8 helper、GL/Metal shader 与 Mercator 数学、Android/iOS timer wake bridge、A2 Core 回归和 test-only Wind T0/T1 fixture。

本轮交付文档:

  • docs/报告/STEP-097_A2_阶段验证记录_v3.md
  • 本文件 docs/报告/STEP-097_V13三轮审查问题合并修复_Codex完成报告_v2.md
  • 更新 docs/30_设计/STEP-097_V13三轮问题去重与修复矩阵_v1.md、docs/50_Step记录/STEP-097_V13三轮审查问题合并修复_v1.md、docs/60_测试/STEP-097_V13修复后集中验证清单_v1.md
  • 仅追加根目录 粒子开发记录.md

未修改 Integration、NavSea、项目总则、C-001、QBIN schema、.13 发布物、用户 STEP-098 或 Host public API。

4. 24 项状态

# 状态与实际结论
01 N01/B01 A1 Android/Core 检查完成;同源 stencil fixture FZG1 检查已在 A1 报告记录。A1 iOS runtime 按用户决定豁免。
02 N02/B02 A1 Android/Core 阶段收口;Metal host 不是设备验证。无 iOS runtime,按用户豁免记录。
03 N03/B12 A1 Android/Core 阶段收口;异常恢复 GTest 已在 A1 报告记录。
04 N04/B06 A2 完成;唯一 Source forecast clock、wake-only timer 与同步回调重入保护;OpenGL/Metal host 定向测试和 FZG1 PLAY/PAUSE 实测通过。
05 B13 A2 完成;sameFieldGpuContent 仍为 payload 等价,strict endpoint identity 独立比较;mix-only snapshot reuse 与 revision invalidation 通过 Core/设备验证。
06 B07 A2 完成;内部 signed zero encoding/shader 路径和数学边界测试通过 OpenGL 与 Metal host broad 回归。
07 B08 A2 完成;U/V 纬度 metric 和极区夹紧,数学回归与 Android 场景通过;不等于 iOS runtime。
08 N05 WAITING_RDC_BUILD_AND_RUNTIME;B 未开始。
09 N06 WAITING_RDC_BUILD_AND_RUNTIME;B 未开始。
10 N07 WAITING_RDC_BUILD_AND_RUNTIME;B 未开始。
11 F01/C01 WAITING_RDC_BUILD_AND_RUNTIME;C 未开始。
12 F02/C02/B03 DEFERRED_DESIGN;同步等待依赖未在本阶段处理。
13 F03/C03/B04 WAITING_RDC_BUILD_AND_RUNTIME;C 未开始。
14 F04/C04 DEFERRED_DESIGN;无资源预算改动。
15 C04/B11 DEFERRED_DESIGN;无 store 总容量语义改动。
16 F07/C05 WAITING_RDC_BUILD_AND_RUNTIME;C 未开始。
17 C06/B05/B10 mix-only immutable materialization 子项随 A2 完成;其他 diagnostics、ordinal、UI owner 工作仍待后续,整体不得解读为 C 完成。
18 C07 DEFERRED_DESIGN;drawable/tweaker 生命周期未改。
19 F09/O01 A1 已有 GTest 与 FZG1 证据保留;不把资源诊断夸大为 GPU 无泄漏证明。
20 F05/E01 WAITING_RDC_BUILD_AND_RUNTIME;B/Test Host package lock 未改、未验证。
21 F06 DEFERRED_DESIGN;保留 multi-C 安全 fallback。
22 F08 DEFERRED_DESIGN;保留保守失效策略。
23 F10/E02 DEFERRED_DESIGN;需要跨项目协调,Integration status 未改。
24 STEP-095 §7/B09 DEFERRED_DESIGN;共享地理 Ocean Mask 需要后续跨项目契约。

矩阵保留全部 24 项、旧编号及平台边界。

5. 实现摘要与偏差

  1. Forecast clock 每次由 Map Continuous update 调用一次;同步 SourceObserver 重入不再触发第二次 tick。Android/iOS timers 负责 triggerRepaint 唤醒,不独立推进时间。
  2. Strict endpoint identity 涵盖 frame/revision、grid、U/V、validity 与 encoding。mix-only 时复用当前 immutable materialized snapshots;新 frame/revision 或 storage identity 改变时重新 materialize;clear/invalid 仍 fail-closed。没有使用 generation/dataVersion 偷换 sameFieldGpuContent() 的已有语义。
  3. RGBA8 byte 128 表示 signed zero,GL/Metal shader 使用高精度 byte reconstruction。东/北向 Mercator 位移应用一致纬度 metric。
  4. 新增 A2 定向 source 测试、GPU math 测试及 test-only Golden Wind 两帧 fixture;没有新建 Host API、QBIN 格式或 C-001 语义。
  5. 首次 FZG1 ANR 是同步 clock notification 重入;guard 修复后仍有一轮因每 tick 重物化大场、深比较而 UI 不响应。最终 mix reuse 版本完成设备闭环。原始失败日志与 debuggerd 均保留。

6. RDC 构建、测试、设备及产物

  • 原 58 项回归:旧断言修复后 58/58 PASS。失败断言与旧函数定义不符,修复测试语义;没有放宽新 strict endpoint 条件。
  • OpenGL broad Core filter:121/121 PASS。
  • Metal host 相同 broad Core filter:121/121 PASS。
  • 三项 A2 Source 定向测试:OpenGL 和 Metal host 各 3/3 PASS。
  • Shader generator 连续两次成功、输出幂等。
  • 标准 APK ./tools/particle_android_validation/build_validation_apk.sh:OpenGL Debug、x86_64、61,753,803 bytes;SHA-256 27bf4a6cc191bd86c4d1c10398478d81c2999edd61fe7242e40e5188516b0ca5。FZG1-2 安装成功、设备 hash 相同。
  • Golden 闭环:17 PNG、24 steps、exit 0、ANR=0;PLAY 30 秒并确认 TIME/UI 操作响应,随后 PAUSE/stable pause/replay/CLEAR/reload/replay/PAUSE。15 秒截图有可见粒子。
  • 日志资源 epoch:首次 stable mix-only upload=6/reset=2 保持不变;CLEAR/reload 后合法到 upload=10/reset=4,随后 playback 稳定。没有宣称跨 CLEAR/reload 零上传或 reset。
  • Android 产物、测试日志、设备日志、截图、步骤清单、debuggerd 与历史失败证据在 artifacts/maplibre-particle/step097-a2-final-validation/。
  • 本轮无 FPS、p50/p95/p99、frame time、内存或 long-run 性能结论。iOS runtime 未运行,用户豁免。

7. 未完成与限制

  • STEP-097 总体仍 PARTIAL:B/C 未进入。04–07 完成不代表 08–24 全完成;第 17 项只有 mix-only 子项完成。
  • iOS runtime:USER_ACCEPTED_WITHOUT_IOS_RUNTIME_TEST。Metal host GTest 只证明共享 Core host 路径,不能替代 iOS Metal device PASS。
  • FZG1 Golden 是 Test-App-only fixture,不是 NavSea、正式产品数据链或全量天气验收。
  • 30 秒 PLAY 交互不构成长时稳定性或正式 GPU 性能验收。
  • 无提交/推送;用户 STEP-098 未触碰;.13 未发布。

8. 后续交接

RDC 对当前 dirty A2 代码与本报告做独立 QA,按用户后续授权执行 scoped Git 操作。若后续继续 STEP-097,只能由用户明确允许进入下一个阶段后启动 B;本报告不自动开启 B/C。

9. RDC 源码 Git 后续事实(本报告编写后)

  • 源码 scoped commit f49ffa68a17e0a505199bdbeccf07f8543f3a05f 已推送 origin/particle/main,远端核对一致。此事实覆盖前文“未提交/未推送”的报告编写时状态,保留原始验证 HEAD 以便追溯 dirty APK 的实际构建来源。
  • 文档另行提交;不将源代码 Git commit 当作额外编译/设备测试。用户 STEP-098 仍不提交,B/C 不启动。