diff --git a/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md b/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md index 2591d946b..9b45d2035 100644 --- a/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md +++ b/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md @@ -12,15 +12,19 @@ Stage A 代码与静态检查完成,任务状态为 `WAITING_MANUAL_VALIDATION - submodule:已记录,未修改。 - `git rerere.enabled`:`true`。 -Stage A 实现提交:`0b076c6d52fffb2ee4411cac64f06d43cea260c8`(`feat: establish android particle field rendering loop`)。 +初始 Stage A 实现提交:`0b076c6d52fffb2ee4411cac64f06d43cea260c8`(`feat: establish android particle field rendering loop`)。 -首次 push:成功,`origin/particle/main` 从 `1ec447011` 更新为 `0b076c6d5`。本文件的 Git 元数据补记将作为独立 docs commit 推送到同一分支。 +本轮修正实现提交:`39c7ae22ede51f4b755dc658e2e27b24b26b807e`(`feat: establish formal raster particle source chain`)。 + +首次 push:成功,`origin/particle/main` 从 `1ec447011` 更新为 `0b076c6d5`。本报告的修正元数据将作为独立 docs commit 推送到同一分支;最终远端 HEAD 在交付时报告。 ## 3. 实际修改 -- 新增隔离的 `mbgl::particle::OfflineFixtureParticleAdapter` 与 backend-neutral `ParticleFieldSnapshot`。 +- 新增隔离的 `mbgl::particle::OfflineFixtureParticleAdapter` 与 backend-neutral `ParticleFieldSnapshot`,并新增正式 `RasterArraySource -> RenderRasterArraySource -> RasterParticleLayer -> RenderRasterParticleLayer`。正式 layer 为 `Source::Required`,不再由 source-less `particle-validation` 承担 40-01 闭环。 - 新增确定性 `uniform-east`、`uniform-north`、`vortex` fixture 及生成脚本;metadata 遵循架构文档 v1 contract。 -- 在既有 Core RenderLayer 的 State A/B、Trail A/B、shared mask 和 canonical world composite 路线中接入 GPU field texture;没有新建 Android 侧粒子引擎。 +- `RenderRasterParticleLayer` 复用已验证的 State A/B、Trail A/B、shared mask、camera transform、world wrap、antimeridian 与 canonical composite;没有新建 Android 侧或第二套 GPU 粒子引擎。历史 `ParticleValidationLayer` 仍可作 validation tool,但不是正式 source path。 +- Android Test App 将 fixture 打包进 `src/main/assets/integration/particle-fixtures/`,Style 使用 `asset://` URI;Core 只通过 FileSource bytes loader,Linux helper 保留仓库 fixture 读取。 +- NoData cell 不再使整个合法 field 无效。GPU field alpha 保存 validity,State sampling 命中 invalid cell 会确定性 respawn;NaN/Inf 仍 fail closed。 - 修复 STATIC/context recreation 的资源 bootstrap:field、mask、trail、state 和首帧 composite 均可在 STATIC 中建立,bootstrap 为零 simulation step。 - Test App 保存 fixture selection,并增加 east/north 最小切换控制。 @@ -28,15 +32,15 @@ Stage A 实现提交:`0b076c6d52fffb2ee4411cac64f06d43cea260c8`(`feat: estab - Linux OpenGL 受影响对象编译:PASS。 - C++ 格式、`git diff --check`、fixture JSON/生成/sha256:PASS。 -- adapter smoke test:PASS,三份 fixture 均成功 decode/validate。 +- adapter smoke test:PASS,三份普通 fixture 成功 decode/validate;`nodata` fixture 的单 cell invalid 标记被保留且 field 整体合法。Android asset 与仓库 fixture byte parity:PASS。 - 未运行 Gradle、APK 安装、ADB 或 Android 实机验证,遵守任务书限制。 ## 5. 已知问题与未完成事项 - Android OpenGL 的 T1-T12 仍待用户执行,T1 rotation 无按钮恢复是硬门槛。 - 未实现 iOS/Vulkan/真实在线数据/生产 coastline/性能结论。 -- NoData cell 的实际 fixture 覆盖留待后续数据 fixture Step;本任务的 metadata/data validator 已拒绝无效结构、长度和 checksum。 +- Android OpenGL 实机的 NoData visual/runtime evidence、T1-T12、Vulkan 和 iOS 均未执行。 ## 6. 与指令书差异 -无。Stage A 结束时保持 `WAITING_MANUAL_VALIDATION`,未新建或修改 `docs/50_Step记录/`。 +此前报告错误地写为“无”:当时正式 Source/Layer/RenderLayer 链尚未建立,且 Android runtime fixture 仍错误依赖源码仓库相对路径。本轮已修正为正式 Source-required 链和 APK asset 输入边界,并新增 STEP-040 记录。Stage A 仍为 `WAITING_MANUAL_VALIDATION`,不声明 PASS。