docs: close STEP-046 Android particle visual validation
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
OpenAI Codex
2026-09-03 20:51:54 +08:00
parent e48fa087e0
commit 73bf01ebc0
3 changed files with 45 additions and 24 deletions

View File

@@ -1,7 +1,7 @@
# STEP-046 Android OpenGL 正式粒子视觉与运行时渲染控制
日期:2026-09-03
状态:IMPLEMENTED / WAITING FOR ANDROID VALIDATION
状态:CLOSED / PASS
## 目标
@@ -48,22 +48,25 @@ RasterArraySource T0/T1
- `clang-format` 与 `git diff --check`:PASS。
- 未运行 Android Gradle、ADB、真机或 Jest。
## Android 单轮验收
## Android 最终验收
```bash
cd /mnt/sda1/MapLibreParticleLab/platform/android
实施提交:`e48fa087e01e9710c5d0c18ab062726226bbb6bd`(`feat: add particle visual runtime controls`)。用户已完成 Android OpenGL APK 编译、安装、实体机/虚拟机操作和完整 logcat 收集;本次收尾不重新运行 Android Gradle、ADB 或 Jest。
./gradlew :MapLibreAndroidTestApp:assembleOpenglDebug \
-Pandroid.injected.build.abi=x86_64 \
--console=plain
```
- T1 正式粒子方向视觉:PASS。UNIFORM EAST、UNIFORM NORTH、VORTEX 的 streak 正常显示,未见明显方向错误、黑屏或渲染异常。
- T2 Runtime Visual Properties:PASS。VIS DEFAULT、SIZE、LENGTH、OPACITY、TRAIL、FADE、COLOR 都经正式 Runtime Property 路径生效;它们不是 Field reload 或 simulation rebuild。
- T3 Speed Color / MIX:PASS。T0 EAST/T1 NORTH 的 MIX 0/50/100 与 speed color 正常;日志确认 MIX property-only,未重载 Field Window 或 reset simulation。
- T4 Runtime Field Window:PASS。连续窗口推进、`OLD_T1 -> NEW_T0` reuse、新 T1 上传、Duplicate NOOP、fail-closed 都正常;推进未重载 Style、未无意义 reset simulation 或清 Trail。
- T5 Camera / Projection:PASS。pan、zoom、bearing、DATELINE、WORLD WRAP 后正式粒子与地图组合正常。
- T6 Lifecycle:PASS。DISABLE/ENABLE 与屏幕/生命周期恢复后无需额外按钮即可恢复显示。
- T7 Mask:PASS。GLOBAL、OCEAN A、OCEAN B 均未发现 streak/speed color 绕过既有 mask 语义。
- T8 Capacity Regression:PASS。256、1K、4K、16K、64K、256K、1M 全部实际运行;新的 streak + speed color 路径未发生 crash、黑屏、Renderer 中断、明显资源错误或结构性 full-particle-draw 失败。
APK:`./MapLibreAndroidTestApp/build/intermediates/apk/opengl/debug/MapLibreAndroidTestApp-opengl-debug.apk`
256/1K 适合单 streak 的视觉正确性检查。当前 Validation viewport 下 4K 以上的粒子/Trail 已非常密集并接近铺满屏幕;这是 Validation 可读性现象,不是功能失败。64K、256K 和 1M 主要验证容量、稳定性与正式 full draw 路径,不要求肉眼分辨每一颗粒子。1M 继续只代表当前验证设备的已验证容量,不是理论最大值、产品默认值或所有 Android 设备保证。
用户在同一 APK 中执行 T1--T8:EAST/NORTH/vortex geometry、MIX=0/50/100 连续性、VISUAL controls property-only、STATIC/Camera/Rotation、1M baseline,以及 Runtime advance/reuse/NOOP/fail-closed 回归。
logcat 的 `TimeStats: RenderEngineTimes are already at its maximum size[64]` 属于 Android/RenderEngine/虚拟机环境的日志噪声。同期粒子 Renderer 持续 `State -> Trail -> Composite` 且 `hazard=SAFE`,未观察到关联 crash 或中断,不能判为 STEP-046 Renderer FAIL。
当前 T1--T8 全部为 `PENDING USER ANDROID VALIDATION`;未将任何 Android 视觉、Camera、Mask、Lifecycle 或 capacity 结果写成 PASS。
## 最终结论
下一建议阶段:用户完成这一次综合 Android 验收并提供结构化日志;若全部通过,才可进入 40-06 时间序列 Playback/preload/cache 的规划。
40-05 / STEP-046 已完成 Android 验收并正式 `CLOSED / PASS`。下一阶段如继续,可单独规划 40-06 时间序列 Playback/preload/cache;高密度 Validation 可读性可作为低优先级测试工具改进,不阻塞本阶段。
本阶段不包含 WeatherColorLayer、网络/GRIB/provider、React Native、Vulkan、iOS/Metal、生产 Land/Ocean mask、粒子箭头贴图或 APK packaging 技术债。

View File

@@ -1,11 +1,13 @@
# 40-05 Android OpenGL 正式粒子视觉与运行时渲染控制 — Codex 完成报告
日期:2026-09-03
状态:IMPLEMENTED / WAITING FOR ANDROID VALIDATION
状态:CLOSED / PASS
## 结果
40-05 / STEP-046 已完成代码、Android 验收入口与静态验证,尚未进行 Android 构建或实体机验收,因此不能标记 PASS。
40-05 / STEP-046 已完成代码、Android 验收入口与用户手工 Android OpenGL 最终验证,正式关闭为 `CLOSED / PASS`。
实施提交:`e48fa087e01e9710c5d0c18ab062726226bbb6bd`(`feat: add particle visual runtime controls`)。Android APK 编译、copy、安装、实体机/虚拟机操作及完整 logcat 抓取均由用户完成;本次文档收尾未重新执行 Android Gradle、ADB 或 Jest。
### A. 正式方向 geometry
@@ -45,21 +47,28 @@ Android Test App 通过既有 `setStyleLayerFloatProperty()` boolean JNI bridge
未执行:Android Gradle、ADB、安装、真机、Jest。
## 用户单次 Android 验收命令
## Android 最终验收结果
```bash
cd /mnt/sda1/MapLibreParticleLab/platform/android
- T1:PASS。UNIFORM EAST、UNIFORM NORTH、VORTEX 正式 streak 显示和方向均正常。
- T2:PASS。VIS DEFAULT、SIZE ±、LENGTH ±、OPACITY ±、TRAIL ±、FADE ±、COLOR 均经正式 Runtime Property 生效;未描述或实现为 Field reload / simulation rebuild。
- T3:PASS。T0 EAST/T1 NORTH、MIX 0/50/100 和 speed color 正常;MIX 保持 property-only,没有 Field Window reload 或 simulation reset。
- T4:PASS。40-04 冻结的 Runtime Field Window 语义无回归:A/B→B/C→C/D、`OLD_T1 -> NEW_T0` reuse、仅上传新 T1、Duplicate NOOP、fail-closed、Style 不重载、simulation 不无意义 reset、Trail 不无意义清空均通过。
- T5:PASS。pan、zoom、bearing/camera、DATELINE、WORLD WRAP 未见正式粒子与地图组合异常。
- T6:PASS。DISABLE/ENABLE 和屏幕/生命周期恢复后粒子自动恢复,无需额外按钮。
- T7:PASS。GLOBAL、OCEAN A、OCEAN B 保持既有 mask 语义。
- T8:PASS。256、1K、4K、16K、64K、256K、1M 均实际运行;1M 在正式 streak + speed color 路径上无 crash、黑屏、Renderer 中断、明显资源错误或结构性 full-particle-draw 失败。
./gradlew :MapLibreAndroidTestApp:assembleOpenglDebug \
-Pandroid.injected.build.abi=x86_64 \
--console=plain
```
当前 viewport 中 4K 以上会因高密度 streak + Trail 而接近铺满画面。这是 Validation 可读性现象:256/1K 用于视觉检查,4K 以上主要用于容量和稳定性,不构成功能失败,也不需要为此改 Renderer 或重新编译 APK。1M 仍仅代表当前验证设备上已验证的容量,不是理论最大值、默认产品数量或全设备保证。
APK 路径:`./MapLibreAndroidTestApp/build/intermediates/apk/opengl/debug/MapLibreAndroidTestApp-opengl-debug.apk`
logcat 中 `TimeStats: RenderEngineTimes are already at its maximum size[64]` 是 Android/RenderEngine/虚拟机侧噪声。用户同时观察到粒子 Renderer 连续执行 `State -> Trail -> Composite` 并保持 `hazard=SAFE`,未有对应 crash 或中断;该信息不构成 STEP-046 Renderer FAIL。
用户随后在一轮安装中完成 T1--T8,重点检查 EAST/NORTH/vortex streak direction、MIX 连续性、visual property-only counters、STATIC/camera/rotation、1M 和 Runtime Field 回归。
## Git 收尾
T1--T8 目前均为 `PENDING USER ANDROID VALIDATION`,因此 Camera/Projection、Mask、Lifecycle/Rotation 和实际 1K/16K/64K/256K/1M streak capacity 只能标记为“验收入口已完成,尚未由 Android 实机验证”。
本报告随文档收尾提交并推送到 `origin/particle/main`。用户既有未跟踪任务书和审查 diff 不纳入提交。
## 最终结论
未发现阻塞性问题。40-05 / STEP-046:`CLOSED / PASS`。
## 范围外