diff --git a/docs/50_Step记录/STEP-040_Android离线Fixture正式粒子最小闭环_v1.md b/docs/50_Step记录/STEP-040_Android离线Fixture正式粒子最小闭环_v1.md index 101cd06cd..6ec2aa4d9 100644 --- a/docs/50_Step记录/STEP-040_Android离线Fixture正式粒子最小闭环_v1.md +++ b/docs/50_Step记录/STEP-040_Android离线Fixture正式粒子最小闭环_v1.md @@ -30,10 +30,10 @@ ## 构建与检查 -- Linux OpenGL 受影响 Core 精确对象编译:PASS。 -- `clang-format --dry-run --Werror`、`git diff --check`、fixture generator:待本轮最终收尾复跑。 +- Linux OpenGL 受影响 Core 精确对象编译:PASS(`offline_download.cpp.o`,`-Werror`)。 +- `clang-format --dry-run --Werror`、`git diff --check`:PASS;fixture generator 不受本次枚举接入影响,未重跑。 - adapter smoke:`uniform-east`、`uniform-north`、`vortex` 均 valid;`nodata` valid 且有 1 个 invalid cell。 ## 当前结果、阻塞与下一步 -正式 Source/Layer/RenderLayer 已不依赖 source-less `particle-validation` Layer;历史 validation Layer 只保留为既有验证工具。唯一阻塞是按用户指令等待 GPT 复审新远端 commit;复审通过后才允许用户开始 Android OpenGL APK 手工验收。 +正式 Source/Layer/RenderLayer 已不依赖 source-less `particle-validation` Layer;历史 validation Layer 只保留为既有验证工具。`RasterArraySource` 的当前 contract 为平台 FileSource 读取确定性 fixture bytes(40-01 Android 为 APK `asset://`),不含 tileset 或由 OfflineDownload 管理的 URL/resource;故 OfflineDownload 的资源计数与下载队列均明确 no-op。Linux 精确编译、format、diff 与全仓 SourceType switch 复核已通过;提交与推送待本轮收尾。Android OpenGL APK 手工验收仍由用户执行。 diff --git a/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md b/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md index 9b45d2035..152957a36 100644 --- a/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md +++ b/docs/报告/40_01_Android粒子最小正式闭环_Codex完成报告_v1.md @@ -35,6 +35,13 @@ Stage A 代码与静态检查完成,任务状态为 `WAITING_MANUAL_VALIDATION - adapter smoke test:PASS,三份普通 fixture 成功 decode/validate;`nodata` fixture 的单 cell invalid 标记被保留且 field 整体合法。Android asset 与仓库 fixture byte parity:PASS。 - 未运行 Gradle、APK 安装、ADB 或 Android 实机验证,遵守任务书限制。 +## 4.1 RasterArray 离线下载枚举接入修复 + +- Android OpenGL 实际编译发现 `OfflineDownload` 的“required offline resource count”与“offline resource queue/download”两个穷尽 `SourceType` switch 漏掉 `RasterArray`。 +- 当前 `RasterArraySource` 只以 `FileSource::request(Resource::source(...))` 读取 metadata 与 field;40-01 的 URL 是 APK `asset://integration/particle-fixtures/...`。其 Impl 未定义 tileset、zoom range 或 OfflineDownload 可管理的 URL/resource contract,因此这两个 switch 均增加显式 `SourceType::RasterArray` no-op,不增加资源计数或下载队列。 +- 未添加 `default:`;全仓非 vendor 的 `SourceType` switch 复核后,除本文件两个遗漏外均已处理 `RasterArray`。 +- Linux/Core 精确编译 `offline_download.cpp.o`(含 `-Werror`)、`clang-format --dry-run --Werror` 与 `git diff --check`:PASS。commit 和 push 结果在本轮交付中报告;状态继续为 `WAITING_MANUAL_VALIDATION`,未运行 Gradle 或 ADB。 + ## 5. 已知问题与未完成事项 - Android OpenGL 的 T1-T12 仍待用户执行,T1 rotation 无按钮恢复是硬门槛。 diff --git a/platform/default/src/mbgl/storage/offline_download.cpp b/platform/default/src/mbgl/storage/offline_download.cpp index 6e840715c..a629e7db4 100644 --- a/platform/default/src/mbgl/storage/offline_download.cpp +++ b/platform/default/src/mbgl/storage/offline_download.cpp @@ -216,6 +216,10 @@ OfflineRegionStatus OfflineDownload::getStatus() const { break; } + // RasterArraySource currently reads deterministic fixture bytes from the + // platform FileSource (Android assets for 40-01). It has no tileset or + // OfflineDownload-managed resource contract. + case SourceType::RasterArray: case SourceType::Video: case SourceType::Annotations: case SourceType::CustomVector: @@ -330,6 +334,10 @@ void OfflineDownload::activateDownload() { break; } + // RasterArraySource currently reads deterministic fixture bytes from the + // platform FileSource (Android assets for 40-01). It has no tileset or + // OfflineDownload-managed resource contract. + case SourceType::RasterArray: case SourceType::Video: case SourceType::Annotations: case SourceType::CustomVector: diff --git a/粒子开发记录.md b/粒子开发记录.md index cfb11cccb..31787b179 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -166,3 +166,9 @@ - `ParticleFieldSnapshot` 将 cell validity 独立于 fixture validity:合法 NoData cell 产生 invalid mask,GPU texture alpha 表示该 mask;State sample 命中 NoData 后确定性 respawn,不将 `-9999` 当普通速度;NaN/Inf 仍拒绝。新增 `nodata` deterministic fixture。 - STATIC/context recreation 的 zero-step bootstrap 未推翻:新资源自动建立并首帧 composite,bootstrap commit 不增加 simulation frame。 - Linux Core 精确编译、format/diff、fixture generator、adapter/asset parity 检查在最终收尾复跑;未运行 Gradle、APK、ADB 或 T1-T12。最终状态仍只能是 `WAITING_MANUAL_VALIDATION`,等待 GPT 再次复审远端代码。 + +## 2026-09-01 — 40-01 RasterArray OfflineDownload 穷尽接入 + +- Android OpenGL 实际 C++ 编译暴露 `OfflineDownload` 的 required-resource-count 与 resource-queue 两处 `SourceType` 穷尽 switch 漏掉 `RasterArray`。 +- 根据当前实现,`RasterArraySource` 只从平台 `FileSource` 获取确定性 fixture metadata/field bytes;40-01 Android 输入固定为 APK `asset://integration/particle-fixtures/...`,且 Source Impl 不包含 tileset、zoom range 或 OfflineDownload 托管资源 contract。因此两处都以显式 `SourceType::RasterArray` no-op 表达语义,不虚报资源数、不进入下载队列。 +- 不增加 `default:`;全仓非 vendor 的 `SourceType` switch 已复核,本次仅修复新增枚举的直接遗漏。Linux/Core `offline_download.cpp.o` 精确编译(`-Werror`)、`clang-format --dry-run --Werror` 与 `git diff --check` 均通过;未运行 Gradle 或 ADB,40-01 继续为 `WAITING_MANUAL_VALIDATION`。