Files
MapLibreParticleLab/docs/50_Step记录/STEP-119_Symbol缓存实际实现_v1.md
tei 32ac795fc4
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
test: benchmark particle-only C FastPath CPU across R layouts
2026-10-11 18:02:33 +09:00

10 KiB
Raw Blame History

STEP-119 Symbol缓存实际实现 v1

日期:2026-10-11(JST)。状态:进行中;代码阶段IMPLEMENTED_WAITING_ANDROID,独立验收未完成。

目标与基线

实现Shared Core内部最终Symbol结果证书,解决静止真实PBF派生R首次Build逻辑自举死锁,支持后续Reuse/Fast,同时保护所有真实渲染失效与原24Gate。

particle/main@869930046b11dbeb3b147e3be952a2e847316292;Mac.lan/Darwin24.6.0/x86_64。Native13.6.1-particle.23;Integration本地HEAD80667d6c343411d03a760425438e3d292f452118,只读。实际会话rollout 01a1299f-0c2b-78b0-8599-e50812c108dd的turn_context核实gpt-6.1-sol/high,未升级、未启动子代理。

必做项

  • 读取根规则、规范/总则、当前任务、Integration规则与STEP112–118关键证据,核对实际Renderer/Placement/Bucket/Atlas/GL/Metal。
  • 实现真实上传输入证据、revision/epoch、完成Full/Build/Reuse绑定,global/perSegment/preparedScene同时接线。
  • 分离stale刷新需求与真实fade;保留原Placement算法/原Style/Source/公开API/ABI。
  • 完成13项非Jest C++针对性测试源码,两个文件均已登记。
  • 中文调查、阶段记录、实机联合验收计划、完成报告与开发记录追加。
  • 轻量静态范围/原证据哈希/git diff --check检查。
  • Native编译与13项GTest实际运行,GL/Metal真实代码路径独立验证。
  • 同源新APK/设备SHA与>=90秒真实Build>0、Reuse>0、FastDelta>0、24Gate mismatch0。
  • 原63缺tide负对照、全部失效矩阵、Full/Fast视觉与iOS/Metal独立验收。

允许与禁止范围

仅内部Shared Core/原生shader来源薄接入、已登记C++测试与本Step文档。未修改include公开头、RN/JNI/ObjC/Java/Kotlin、正式PBF/URL/Style、天气语义、Core-owned timeline/playback、发行版本或Integration协议。

没有Gradle/ADB/Native构建/Bazel/Jest/codegen/commit/push;没有更改STEP110/111未跟踪任务书或Git忽略原设备证据。没有修改长期项目总则、RDC Runner或后台执行器。

当前结果

两次成功Full取证的同一settled GPU输入版本可建立R Build,成功Full Reuse后才允许Fast。真实opacity clamp、动态/paint属性、UBO、索引/排序/tiles、atlas/shader身份、registry ordinal/depth与异步epoch共同参与;缺失证明仍Full。

普通Full销毁旧RenderTree时保留复制证据,真正reset时清理;否则两帧比较仍会自举失败。原24Gate evaluator/掩码/顺序/计数和公开诊断结构没有修改。STEP117历史保守helper与断言保留,生产接线改为最终结果证书。

源码没有运行验证,不宣称当前设备已从STEP118的Build0/Reuse0/Fast0改善。证书明确绑定编码/提交成功,GPU完成与像素仍需独立验收。Vulkan/WebGPU无本轮原生shader来源登记,Symbol证书继续fail-closed,普通Full不变。

阻塞与下一步

本工作区未锁定源码;既有验证器会拒绝tracked dirty,不能绕过。历史Mac缺libuv,本轮没有重跑配置。新的Native可编译性、真实PBF输入是否低于16MiB、实际GPU等价、异步竞态与性能均待证。

立即交RDC按本Step联合验收计划独立审计、在其授权范围完成源码锁/定向Native验证,并集中一次APK build/install/真实设备验收。失败保存证据,按固定Codex修复→RDC验证闭环;未通过不得标完成/冻结,不自行执行下一阶段。

RDC独立编译检查记录(2026-10-11 JST)

用户明确要求编译然后测试,并要求不要因本次功能无新第三方依赖而破坏已存在原生环境。RDC先同步核实Integration origin/main=80667d6c343411d03a760425438e3d292f452118与Particle origin/particle/main=869930046b11dbeb3b147e3be952a2e847316292,且保护的两份STEP110/111未跟踪MD的SHA未变。

Mac Metal原生CMake配置首次因PATH找不到cmake而失败,改用既有/usr/local/opt/cmake/bin/cmake后,配置因早已缺少的libuv失败(不是本轮代码引入的依赖)。Homebrew建议连带升级CMake、Python和OpenSSL,RDC及时中断该安装并复核原CMake仍存在、无libuv新依赖安装。Mac Metal CMake/GTest仍未运行,不能记PASS。

改走原项目已存在 Android NDK OpenGL/x86_64 compile_commands.json,保持实际C++20警告/Werror、不加Wno-error、不切宏、不改源数据。编译实际Core生产7文件(placement.cpp、render_symbol_layer.cpp、symbol_layer_tweaker.cpp、render_orchestrator.cpp、renderer_impl.cpp、renderer.cpp、shader_program_gl.cpp)与两个非Jest已注册GTest源码,合计9个编译单元,经过本地定点修复后全部严格 -fsyntax-only exit0(每文件独立日志保存在Git忽略artifacts/maplibre-particle/step119-native-syntax/)。本轮修复3处小编译缺口:SymbolLayer及Retained test各一处toString补上util命名空间,Orchestrator error test将构造结果从const Mutable转换为Immutable,保留测试语义。该结果是Android NDK语法/类型检查,非真实链接、GTest运行或Metal构建。

下一关:RDC scoped Git锁定源码后,基于新源码一次集中标准Android Gradle/OpenGL x86_64 APK构建;FZG1-2安装和STATIC_RC_NO_TIDE 90秒验证。任何编译/设备错误继续按原步修复,不能绕过24Gate或声称Fast已通过。

RDC Android原PBF实机正负对照(2026-10-11)

本轮源码锁 3d989a00a822989339a6d7cb4d23acc04396670e、APK SHA 57d68800770d431a2ce9247406f636e7a01cc19fccaf4c59f5eb3a7c99128135,Mac标准Android OpenGL x86_64 APK真编译/链接/打包PASS;FZG1-2安装SHA一致、preflight PASS。新STATIC_RC_NO_TIDE 90.010秒:Native64/R[0,62),missingSourceIds=[],Cache Build=1 / Reuse=3276(累计)、FastDelta=1819 / FullDelta=0、24Gate mismatch=0。原STATIC_RC 90.010秒:原Native65/R[0,63),missingSourceIds=[tide],Build=0、Reuse=0、FastDelta=0、FullDelta=305,fail-closed仍正常。新13项GTest运行/Metal/iOS/动态源变更与像素对比均未完成,保持ANDROID_FAST_CORE_PASS/OVERALL_PARTIAL。详细原始数据和sha见 docs/60_测试/STEP-119_FZG1_原PBF真实Fast验收结果_20261011.md。

  • 2026-10-11 STEP119实机首次FAST_OBSERVED:APK源3d989a00a822989339a6d7cb4d23acc04396670e SHA=57d68800770d431a2ce9247406f636e7a01cc19fccaf4c59f5eb3a7c99128135,FZG1-2安装/preflight PASS;STATIC_RC_NO_TIDE 90秒 FastDelta1819/FullDelta0、R Build1/Reuse3276、24Gate mismatch0、Native64,missingSourceIds=[]。仅正向目标首次通过,负例/视觉/GTest/iOS未验,STEP119 PARTIAL。详见 docs/报告/STEP-119_Android真机Fast首次通过_阶段验收_v1.md。

RDC STEP-119 RCRR 多配置续验(2026-10-11 JST)

  • Integration origin/main 经 RDC 同步核验为 80667d6c343411d03a760425438e3d292f452118;Particle 起点 46c88b0209474376225b54ae0ad701881673743d,仍在 particle/main;两份 STEP110/111 未跟踪任务文档未触碰。
  • 同一已安装 APK 源 3d989a00a822989339a6d7cb4d23acc04396670e,SHA 57d68800770d431a2ce9247406f636e7a01cc19fccaf4c59f5eb3a7c99128135,真机原 PARTIAL_RCRR 80秒:R0 Build0/Reuse0/missing tide;R2/R3 各 Build1/Reuse536;FastDelta0/FullDelta596、decisionMismatch0。即局部复用有效、全帧 Fast 安全拒绝。
  • 真机导出原63层 styleParity.baseLayerManifest 确认 tide=2、sea=3、clip-outline=31、special=37;天气实际在原宽 C 中,不在 R0。由此修正早期错误的分段位置推测。
  • Test App 增加三种 RCRR_*_NO_TIDE 场景,分别测试窄 C、宽 C 与错误动态 R;基于上述真实 Manifest 校准成 Native64 精确 R/C 区间,未修改正式 PBF/原场景/24 Gate。验证器精确验三段 R 边界;4项 Python unittest PASS、Style Manifest 静态索引核对 PASS、git diff --check PASS。
  • 尚未完成:新 Kotlin Test App 的用户手工 APK 编译及三场景真机 90秒回归、图像目视、Camera/Source/Style/Tile/Annotation/Context 真机失效和恢复、STEP119 13项 GTest 真跑、Metal/iOS。Mac 原有 libuv 缺失限制保持,不擅自安装或升级工具链。STEP-119 PARTIAL,不 CLOSED。
  • 文档:docs/60_测试/STEP-119_RCRR多配置验收矩阵_v1.md、docs/报告/STEP-119_RCRR多场景局限性_阶段验收_v1.md。原始真机记录位于 ignored artifacts/maplibre-particle/android-validation/step119-rcrr-observe-20261011_172720/partial_rcrr/。

RDC STEP-119 粒子独占 C 与 CPU 效率收敛(2026-10-11 JST)

  • 用户确认:RCRR 正常运行的 CONTINUOUS 原则上只含 RasterParticleLayer,WeatherColorLayer 与其他非逐帧图层在 R;下一轮验收必须结合 CPU/帧、CPU/秒和实际 FPS,不只观察 FastDelta。
  • RDC 已同步 Integration main=80667d6c343411d03a760425438e3d292f452118;Particle 以 1072816740fa69b7b23cd70602a402be19e5be2a 为起点,现有 particle/main 与 STEP110/111 未跟踪文件不变。
  • Native 源码检查确认 singleContinuousSegment(plan) 是 Fast 准入条件,Fast 上传/绘制仅访问 C 范围,所有 R 需满足原24 Gate 与真实 Render/Symbol 缓存证书;WeatherColor 放 R 后是否能安全 Build/Reuse 尚待真机验证,不能提前 PASS。
  • 将 RCRR_C_NARROW_NO_TIDE 改为粒子独占 C[32,33)(WeatherColor 在 R[0,32)),新增 RCR 两 R、RCRRR 四 R,以及同 Style/Plan 关闭缓存的 Full 对照;保留旧 C 宽、粒子误入 R 两种负例和原63层 PARTIAL_RCRR。菜单 ID 改为100~102避免新增enum与操作冲突。
  • 新增严格 SHA/HEAD/设备锁的 CPU 采样器(App进程 utime+stime、6秒采样、35秒warmup、90秒观测)、A-B-A 对照比较器;对照同时列 CPU核秒/秒、CPU估算ms/完成帧、Native FPS、FastFraction≥95%、Build/Reuse/Invalidate。ADB实机只读确认 CLK_TCK=100,未以旧APK冒充新测试;未进行Android编译。
  • Python 非Jest结构+CPU测试 12项 PASS。正式测试矩阵 docs/60_测试/STEP-119_RCRR多配置验收矩阵_v2.md,本轮阶段报告 docs/报告/STEP-119_粒子独占C与CPU效率_阶段验收_v1.md。
  • 待验:用户手工编译、安装新APK及Full-Fast-Full CPU实测,三种粒子独占C布局的Build/Reuse/Fast、视觉等价、变更后失效与恢复,13项GTest/Metal/iOS。STEP-119继续PARTIAL、不宣称CPU性能提升。