docs: close 30-03 camera mask validation
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
日期:2026-08-30
|
日期:2026-08-30
|
||||||
|
|
||||||
当前状态:`WAITING_MANUAL_VALIDATION`
|
当前状态:`PASS`
|
||||||
|
|
||||||
## 1. 前置与结论边界
|
## 1. 前置与结论边界
|
||||||
|
|
||||||
30-02 最新正式报告 v5 为 `PASS(EGL Context Recreation:Accepted Risk / 未验证;用户明确决定不阻塞)`,并明确允许进入 30-03。本轮是 30-03 阶段 A 的验证代码准备。
|
30-02 最新正式报告 v5 为 `PASS(EGL Context Recreation:Accepted Risk / 未验证;用户明确决定不阻塞)`,并明确允许进入 30-03。本轮是 30-03 阶段 A 的验证代码准备。
|
||||||
|
|
||||||
本轮没有运行 Android 编译、Gradle、安装、ADB 或设备操作,也没有用户实际运行证据。因此不得写 PASS;本报告只记录源码和 Linux Core 精确编译可确认的事实。
|
阶段 A 中 Codex 没有运行 Android 编译、Gradle、安装、ADB 或设备操作;这些限制保持不变。阶段 B 中,用户已完成 Android OpenGL 手工运行验收并明确确认 T1–T13 全部 PASS。以下最终结论如实回填用户验收,不补造未提供的逐帧日志数值。
|
||||||
|
|
||||||
## 2. 当前源码链
|
## 2. 当前源码链
|
||||||
|
|
||||||
@@ -51,9 +51,9 @@ GPU sampling 采用 canonical world UV `[0,1]`,不在 shader 以 `if lon > 180
|
|||||||
- `CCACHE_DISABLE=1 cmake --build build-linux-opengl --target CMakeFiles/mbgl-core.dir/src/mbgl/renderer/layers/render_particle_validation_layer.cpp.o CMakeFiles/mbgl-core.dir/src/mbgl/style/layers/particle_validation_layer.cpp.o CMakeFiles/mbgl-core.dir/src/mbgl/shaders/gl/shader_info.cpp.o -- -j3`:PASS。
|
- `CCACHE_DISABLE=1 cmake --build build-linux-opengl --target CMakeFiles/mbgl-core.dir/src/mbgl/renderer/layers/render_particle_validation_layer.cpp.o CMakeFiles/mbgl-core.dir/src/mbgl/style/layers/particle_validation_layer.cpp.o CMakeFiles/mbgl-core.dir/src/mbgl/shaders/gl/shader_info.cpp.o -- -j3`:PASS。
|
||||||
- `clang-format --dry-run --Werror`(受影响 C++/header):PASS。
|
- `clang-format --dry-run --Werror`(受影响 C++/header):PASS。
|
||||||
- `git diff --check`:PASS。
|
- `git diff --check`:PASS。
|
||||||
- Android 编译/运行、Gradle、ADB、GPU visual result:未执行,遵守任务书。
|
- Android 编译/运行、Gradle、ADB:Codex 未执行,遵守任务书;最终 Android OpenGL 视觉与日志判定由用户手工验收。
|
||||||
|
|
||||||
## 8. 用户手工 Android OpenGL 验证
|
## 8. 用户手工 Android OpenGL 验证与最终结果
|
||||||
|
|
||||||
编译(由用户手工执行):
|
编译(由用户手工执行):
|
||||||
|
|
||||||
@@ -70,16 +70,30 @@ RENDERER=opengl BUILDTYPE=Debug JOBS=3 make android-x86-64
|
|||||||
adb -s 192.168.1.146 logcat | grep -E 'ParticleValidation30_02|ParticleValidation30_03|ParticleValidation'
|
adb -s 192.168.1.146 logcat | grep -E 'ParticleValidation30_02|ParticleValidation30_03|ParticleValidation'
|
||||||
```
|
```
|
||||||
|
|
||||||
1. T1–T5:先 ACTIVE 数秒后切 STATIC,在 GLOBAL 下 pan、zoom、bearing、pitch;锚点/mask 必须跟地理底图移动,STATIC frame 不推进且 `maskGeneration` 不变。再切 ACTIVE,确认 simulation 恢复。
|
| 测试 | 最终结果 | 用户验收结论 |
|
||||||
2. T6:点 `WORLD WRAP`,水平连续 pan 至非零 wrap;确认相邻 copy 皆显示、无重复 slot commit,并记录 center/zoom/wrap 日志。
|
| --- | --- | --- |
|
||||||
3. T7/T8:点 `DATELINE`,分别东→西、西→东跨越 ±180°;C/D、pattern 与 mask 不得断裂、翻转、重复或消失。
|
| T1 普通 Camera Pan | `PASS` | STATIC 下锚点与 mask 保持地理锁定,simulation 不推进。 |
|
||||||
4. T9/T10:在 coastal fixture 区域依次选 `OCEAN A`、`GLOBAL`;A 的 land 必须抑制,GLOBAL 的 land 必须显示。
|
| T2 Zoom | `PASS` | 缩放同步、maskGeneration 无无意义变化。 |
|
||||||
5. T11:`OCEAN A → OCEAN B → OCEAN A`;A/B land/ocean 判断一致、颜色不同,日志 `maskGeneration` 保持不变并显示 `reuse=true`。
|
| T3 Bearing | `PASS` | geometry 与 mask 随地图旋转,无屏幕裁剪。 |
|
||||||
6. T12:在 DATELINE/WORLD WRAP 场景启用 OCEAN A/B,确认 mask 与 geometry 使用同一 copy,无 ±180° seam。
|
| T4 Pitch | `PASS` | 透视下保持地图地理对齐。 |
|
||||||
7. T13:进行可稳定触发的 rotation/viewport 变化;确认 mode 恢复、地理对齐和新 resource generation。此项不替代 30-02 EGL context-loss 证据。
|
| T5 ACTIVE / STATIC Camera 分离 | `PASS` | simulation clock 与 camera redraw 分离,ACTIVE 恢复正常。 |
|
||||||
|
| T6 World Wrap | `PASS` | 相邻 world copy 连续,无额外 slot commit 或双重复制。 |
|
||||||
|
| T7 反经线东向西 | `PASS` | C/D、pattern 与 mask 连续。 |
|
||||||
|
| T8 反经线西向东 | `PASS` | C/D、pattern 与 mask 连续。 |
|
||||||
|
| T9 OCEAN_ONLY 基本裁剪 | `PASS` | land 抑制、ocean 显示,海岸边界稳定。 |
|
||||||
|
| T10 GLOBAL 不受 Mask 裁剪 | `PASS` | land 与 ocean 均可显示。 |
|
||||||
|
| T11 Shared Mask 复用 | `PASS` | A/B 判定一致,consumer 切换复用同一 maskGeneration。 |
|
||||||
|
| T12 Mask + World Wrap + Antimeridian | `PASS` | geometry 与 mask 使用同一 copy,无 ±180° seam。 |
|
||||||
|
| T13 Viewport / Rotation 后地理对齐回归 | `PASS` | 在验证层恢复后的 viewport/rotation 场景,锚点与 mask 保持地理对齐,mask 使用新 resource generation。 |
|
||||||
|
|
||||||
## 9. 未验证与判定
|
T13 不替代 30-02 的 EGL context-loss 证据。另见第 9 节的已知延期项:rotation/viewport 后 validation 页面自动恢复仍有问题,但不改变用户已验收的 T13 地理对齐结论。
|
||||||
|
|
||||||
未验证:Android OpenGL 编译、所有 T1–T13 视觉/日志结果、真实 EGL context loss、正式 fixture adapter、正式 NoData fail-closed 与生产 coastline 数据。
|
## 9. 最终判定、延期项与下一阶段
|
||||||
|
|
||||||
当前唯一合法结论:`WAITING_MANUAL_VALIDATION`。在用户提供 Android OpenGL 实际运行结果前,不允许进入下一项 iOS 最小验证。
|
用户 Android OpenGL 手工验收已确认 T1–T13 全部 `PASS`。Camera 同帧 transform、world wrap、反经线连续性,以及 shared Land/Ocean Mask 的 GLOBAL / OCEAN_ONLY 语义均具备本最小技术验证所需的运行时证据。
|
||||||
|
|
||||||
|
已知延期项:`Rotation/Viewport 自动恢复问题`。该问题已知,用户接受延期,并明确安排在下一个任务修复;它不是对本轮已验收地理对齐、world wrap 或 mask contract 的否定。本轮未宣称该自动恢复问题已经修复。
|
||||||
|
|
||||||
|
仍不属于本轮 PASS 范围:真实 EGL context loss 的独立设备证据、正式 fixture adapter、正式 NoData fail-closed,以及生产 coastline 数据。30-02 的 EGL context recreation 仍维持既有 `Accepted Risk / 未验证` 记录。
|
||||||
|
|
||||||
|
最终结论:`PASS`。允许进入下一阶段的最小验证;下一个任务须优先处理上述 Rotation/Viewport 自动恢复延期项。
|
||||||
|
|||||||
@@ -2,9 +2,15 @@
|
|||||||
|
|
||||||
日期:2026-08-30
|
日期:2026-08-30
|
||||||
|
|
||||||
执行结论:`WAITING_MANUAL_VALIDATION`
|
执行结论:`PASS`
|
||||||
|
|
||||||
## 1. Git 与前置
|
## 1. 最终结论
|
||||||
|
|
||||||
|
用户已完成 Android OpenGL 手工验收并确认 T1–T13 全部 `PASS`。30-03 因此正式完成,允许进入下一阶段。
|
||||||
|
|
||||||
|
`Rotation/Viewport 自动恢复问题` 已知;用户接受延期,并安排在下一个任务修复。本报告不将该问题描述为已修复,也不将其混同为本轮 Camera / World Wrap / Land-Ocean Mask 的失败。
|
||||||
|
|
||||||
|
## 2. Git 与前置
|
||||||
|
|
||||||
- 分支:`particle/main`。
|
- 分支:`particle/main`。
|
||||||
- 开始 HEAD:`3b5a147bbaa3e3d967ee89b16745a3ab8f62c72d`。
|
- 开始 HEAD:`3b5a147bbaa3e3d967ee89b16745a3ab8f62c72d`。
|
||||||
@@ -14,7 +20,7 @@
|
|||||||
|
|
||||||
已读取 AGENTS、项目总则、项目规范、基线、STEP-000、调查/架构设计/前序报告、开发记录、30-01/30-02 实际 validation Core 与 Android Test App,以及 Transform/Paint/world-wrap/gfx texture 相关源码。
|
已读取 AGENTS、项目总则、项目规范、基线、STEP-000、调查/架构设计/前序报告、开发记录、30-01/30-02 实际 validation Core 与 Android Test App,以及 Transform/Paint/world-wrap/gfx texture 相关源码。
|
||||||
|
|
||||||
## 2. 已完成
|
## 3. 已完成
|
||||||
|
|
||||||
- Camera:Composite Tweaker 使用当前 `PaintParameters::matrixForTile()`;没有 UI Camera、独立 timer 或 Overlay。
|
- Camera:Composite Tweaker 使用当前 `PaintParameters::matrixForTile()`;没有 UI Camera、独立 timer 或 Overlay。
|
||||||
- World wrap:通过当前 `UnwrappedTileID{wrap, CanonicalTileID{0,0,0}}` 与 `TransformState::matrixFor()` 绘制中心及相邻 world copy;仅中心 copy commit simulation。
|
- World wrap:通过当前 `UnwrappedTileID{wrap, CanonicalTileID{0,0,0}}` 与 `TransformState::matrixFor()` 绘制中心及相邻 world copy;仅中心 copy commit simulation。
|
||||||
@@ -24,8 +30,9 @@
|
|||||||
- Test App:在已有页面增加 mask consumer、DATELINE 和 WORLD WRAP 控制;A/B/GLOBAL property update 不 reload Style。
|
- Test App:在已有页面增加 mask consumer、DATELINE 和 WORLD WRAP 控制;A/B/GLOBAL property update 不 reload Style。
|
||||||
- 日志:新增 fixture/create/generation/reuse/camera/world-wrap/antimeridian/anchor 字段,camera 摘要节流至每 30 frame。
|
- 日志:新增 fixture/create/generation/reuse/camera/world-wrap/antimeridian/anchor 字段,camera 摘要节流至每 30 frame。
|
||||||
- Linux Core 精确对象编译、clang-format、diff check:PASS。
|
- Linux Core 精确对象编译、clang-format、diff check:PASS。
|
||||||
|
- 用户 Android OpenGL 手工验收:T1–T13 全部 PASS。
|
||||||
|
|
||||||
## 3. 实际修改
|
## 4. 实际修改
|
||||||
|
|
||||||
- `render_particle_validation_layer.cpp`:当前 frame matrix、world-copy composite、shared mask lifecycle 与日志。
|
- `render_particle_validation_layer.cpp`:当前 frame matrix、world-copy composite、shared mask lifecycle 与日志。
|
||||||
- `particle_validation_layer.*`:validation-only `particle-validation-mask-mode`(0/1/2)。
|
- `particle_validation_layer.*`:validation-only `particle-validation-mask-mode`(0/1/2)。
|
||||||
@@ -34,23 +41,24 @@
|
|||||||
|
|
||||||
未修改通用 Transform、Projection、RenderTree、gfx API、正式 Field/Mask pipeline、Vulkan、iOS、依赖或项目总则;没有新增第三方依赖。
|
未修改通用 Transform、Projection、RenderTree、gfx API、正式 Field/Mask pipeline、Vulkan、iOS、依赖或项目总则;没有新增第三方依赖。
|
||||||
|
|
||||||
## 4. 未完成与无法验证
|
## 5. 已知延期项、未完成与无法验证
|
||||||
|
|
||||||
- 未完成:Android OpenGL 手工编译和 T1–T13 运行验证。
|
- 已知延期:Rotation/Viewport 自动恢复问题。用户已接受延期,下一任务修复;本轮没有修复或伪称修复该问题。
|
||||||
- 无法验证:真实设备的 pan/zoom/bearing/pitch 对齐、world wrap/antimeridian continuity、A/B visual crop、rotation 后真实 resource generation、真实 EGL context recreation。
|
- 未完成:正式 fixture adapter、正式 NoData fail-closed 与生产 coastline 数据。
|
||||||
|
- 无法验证:真实 EGL context recreation 的独立 Android OpenGL 证据;该项仍沿用 30-02 的 `Accepted Risk / 未验证` 边界。
|
||||||
- `particle-fixtures/coastal-mask/` 尚无 production fixture adapter,因此使用最小 deterministic validation generator;它不是生产 coastline pipeline,正式 `mask.u8`/NoData contract 仍未实现。
|
- `particle-fixtures/coastal-mask/` 尚无 production fixture adapter,因此使用最小 deterministic validation generator;它不是生产 coastline pipeline,正式 `mask.u8`/NoData contract 仍未实现。
|
||||||
|
|
||||||
## 5. Android 手工步骤
|
## 6. Android 手工步骤与验收
|
||||||
|
|
||||||
技术报告 v1 第 8 节给出了当前 Makefile 的准确 OpenGL x86_64 command、带 `adb -s 192.168.1.146` 的日志命令和 T1–T13。Codex 未执行这些命令。
|
技术报告 v1 第 8 节给出了当前 Makefile 的准确 OpenGL x86_64 command、带 `adb -s 192.168.1.146` 的日志命令和 T1–T13。Codex 未执行这些命令;用户手工执行并确认 T1–T13 全部 PASS。
|
||||||
|
|
||||||
## 6. Git 收尾
|
## 7. Git 收尾
|
||||||
|
|
||||||
- 主提交:`8b4c5c6d71bef383076e0ac035e9b8c047f5afc2`。
|
- 主提交:`8b4c5c6d71bef383076e0ac035e9b8c047f5afc2`。
|
||||||
- 主提交消息:`test: validate particle camera wrap and ocean mask`。
|
- 主提交消息:`test: validate particle camera wrap and ocean mask`。
|
||||||
- 本报告元数据收尾提交、push 结果、最终远端 HEAD 按自引用规则在最终交付中如实记录。
|
- 本次最终状态回填的 commit hash、push 结果和 `origin/particle/main` 的远端 HEAD 在本报告随后的 Git 收尾元数据提交中如实记录;由于 Git commit hash 不能在其自身内容中预先确定,最终自引用 hash 同时在交付结果中给出。
|
||||||
- 本任务只会 stage 30-03 validation 代码、v1 报告和开发记录;两份用户未跟踪指令书保留。
|
- 本任务只会 stage 30-03 validation 代码、v1 报告和开发记录;两份用户未跟踪指令书保留。
|
||||||
|
|
||||||
## 7. 下一步
|
## 8. 下一步
|
||||||
|
|
||||||
当前为 `WAITING_MANUAL_VALIDATION`,不允许进入 iOS Core Layer 薄接入。用户完成 Android OpenGL T1–T13 并提供日志/现象后,才可更新为 PASS、FAIL 或 BLOCKED。
|
30-03 为 `PASS`,允许进入下一阶段。下一任务优先修复已知的 Rotation/Viewport 自动恢复问题;不得将该延期项误记为本轮已修复。正式 fixture adapter、NoData fail-closed、生产 coastline 数据及跨平台验证仍按后续任务独立推进。
|
||||||
|
|||||||
@@ -140,3 +140,11 @@
|
|||||||
- 当前状态:`WAITING_MANUAL_VALIDATION`;不允许进入 iOS 最小验证。
|
- 当前状态:`WAITING_MANUAL_VALIDATION`;不允许进入 iOS 最小验证。
|
||||||
- 技术报告:`docs/60_测试/30_03_Camera_WorldWrap与LandOceanMask最小技术验证报告_v1.md`。
|
- 技术报告:`docs/60_测试/30_03_Camera_WorldWrap与LandOceanMask最小技术验证报告_v1.md`。
|
||||||
- Codex 完成报告:`docs/报告/30_03_Camera_WorldWrap与LandOceanMask验证_Codex完成报告_v1.md`。
|
- Codex 完成报告:`docs/报告/30_03_Camera_WorldWrap与LandOceanMask验证_Codex完成报告_v1.md`。
|
||||||
|
|
||||||
|
## 2026-08-31 — 30-03 Camera / World Wrap 与 Land/Ocean Mask(最终 PASS)
|
||||||
|
|
||||||
|
- 用户已完成 Android OpenGL 手工验收,T1–T13 全部记录为 `PASS`;30-03 正式状态更新为 `PASS`。
|
||||||
|
- 已确认本最小验证范围内的 Camera 同帧地理锁定、ACTIVE/STATIC camera redraw 分离、world wrap、双向反经线连续性,以及 shared Land/Ocean Mask 的 GLOBAL / OCEAN_ONLY_A / OCEAN_ONLY_B 语义。
|
||||||
|
- `Rotation/Viewport 自动恢复问题` 为已知问题;用户接受延期,明确在下一个任务修复。本轮不声称该问题已修复,也不将其伪造为已验证功能。
|
||||||
|
- 真实 EGL context recreation 的独立设备证据、正式 fixture adapter、正式 NoData fail-closed 和生产 coastline 数据仍未完成;EGL 风险沿用 30-02 的 `Accepted Risk / 未验证` 边界。
|
||||||
|
- 30-03 已允许进入下一阶段;下一任务优先处理 Rotation/Viewport 自动恢复延期项。
|
||||||
|
|||||||
Reference in New Issue
Block a user