12 KiB
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,SHA57d68800770d431a2ce9247406f636e7a01cc19fccaf4c59f5eb3a7c99128135,真机原PARTIAL_RCRR80秒: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。原始真机记录位于 ignoredartifacts/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性能提升。
RDC 2026-10-11 STEP-119 粒子独占 C 与 CPU 实机综合验收(续)
- 用户已明确授权 Mac RDC 执行 Android APK 编译/安装及综合测试。Integration main 已同步到
80667d6c343411d03a760425438e3d292f452118;APK 真机源码 Commit 为32ac795fc4abd04006673bf644f87a711329e78f;x86_64 APK SHA-256 为2bbd1cb4dc9e03ec56d8404363970e56f76b03819f6f2b50c8aee6dbb6fa43d2,Mac build exit0、设备压缩下载解压 SHA 同源、pm install -rSuccess exit0、安装 Base APK 同 SHA、严格 preflight exit0。 - CPU 测量工具首次
sh -c多参数读取阻塞 exit3;随后采用单个 ADB shell 命令并保存 warmup+末尾日志的临时修正测量,第一组 Full 不齐整 exit2排除。最终 9次Benchmark中8次有效:2×Full、3×RCRR(三R)、2×RCR(两R)、1×RCRRR(四R)。全部24 Gate完整、判定失配0、同 APK/Style指纹、固定相机与场、Native最后120帧窗口119 Fast/0 Full(正向组)。 - 实测进程CPUms/完成帧中位:Full 60.67ms,RCR 3.50ms,RCRR 7.04ms,RCRRR 7.82ms;RCR两次3.30/3.70ms,RCRR三次6.96/7.04/7.37ms。RCRR Full-Fast-Full 基线漂移2.70%,中间 Fast约55FPS、CPUms/帧7.04,相对Full估算降低88.40%。RCR约59.4–59.7FPS、CPU占单核约19.7–22.0%,比RCRR在该固定场景更省 CPU。仅为进程级CPU近似,不证明GPU、耗电。
- 两种负例独立90秒:宽 C 海图混入
Fast0/Full+339、Particle误入RFast0/Full+322,两者均24 Gate完整、decisionMismatch=0、unsupported-continuous-layer安全拒绝;严格验证器返回2属于预期负例 PASS,并非进程崩溃。 - 定向验证中每个正向 R 都曾 Build1,稳定采样窗口 BuildDelta/InvalidateDelta=0,Reuse持续增加。天气切换后的 R 刷新、相机/源/Tile/Annotation/Context生命周期、Full与Fast的视觉同等、GPU计时、iOS/Metal、13个GTest仍未证实;STEP119 PARTIAL,不将稳态验收写成CLOSED。
- RDC 将临时已实际运行的 CPU 采样器
sh -c与日志边界修正合入正式Python测试脚本,不重新构建/修改当前已验APK;Python 12项 PASS,Git收尾只包含此脚本、阶段报告、Step记录与开发记录。正式结果:docs/报告/STEP-119_RCRR粒子独占C_CPU真机验证_阶段报告_v2.md,综合数据artifacts/maplibre-particle/android-validation/step119-rcrr-cpu/compare-20261011_193724.json(本地忽略目录)。