5.8 KiB
STEP-117 原STEP-113 PBF的R缓存首次Build与Fast安全准入
用户目标、代码基线和约束
2026-10-11 用户要求继续 STEP-116 实机之后的实际修复:原专用Android Test App STEP-113 STATIC_RC,保留所有正式PBF 63基础层,不代换成STEP114简化FAST_SMOKE。真正验收须Native Cache Build>0、Reuse>0、FastDelta>0,同时画面正确、24Gate mismatch=0、异步更新fail-closed。若现有证据不能安全准入,必须保留真实阻塞并如实标 PARTIAL/BLOCKED,禁止伪造Fast或PASS。
Mac repo /Users/tei/dev/MapLibreParticleLab 当前particle/main起点43e5f5b91598b9c3d3f1c788052d4bbd2d616668。Integration /Users/tei/dev/navsea-particle-integration origin/main同步至80667d6c343411d03a760425438e3d292f452118。模型固定 GPT-6.1-Sol High (gpt-6.1-sol, model_reasoning_effort=high),不得升级。先读AGENTS、PARTICLE_BASELINE、docs/00_项目规范、docs/00_项目总则README与全部4份当前总则、Integration instructions/README/WORKFLOW/TEAM_MODEL和contracts/rfc/adr/status/compatibility。阅读STEP112-116全部关键任务记录和实际源码。Shared Core代码仍同时服务Android/iOS,本次限平台中性的内实现与Test App诊断,不改跨平台公开API/ABI/RN/JNI合同、不改NavSea/iOS/外部PBF服务器。若改动需要新公共contract或跨项目决定必须停止该部分,并在报告中指出应由Integration协调RFC/ADR,不自行做新平台业务语义。
已测事实,一定先读取实机JSON和报告
docs/60_测试/STEP-116_FZG1_原PBF实机验收结果_20261011.md。原完整JSON:artifacts/maplibre-particle/android-validation/step113-retest-20261011_121308/static_rc/native-full.json,SHA=cd491d2acca97119f1d4f2d6f77eb7b229c17b90d4be1181a59202308429b219。
STEP116新APK源码c48a72a9,设备192.168.200.139:5555:原STATIC_RC已65层,原正式63层保留,C[63,65)仅WeatherColor与RasterParticle,#22最近120帧失败0。R[0,63)缺Source=tide,原style tide-spots Symbol引用tide;真实sources只有mapple:raster、navsea_delivery:vector、org.maplibre.annotations、rn-weather-fields。R Cache Build0 Reuse0、fallback=missing-source、placementGatePassed=false;24Gate最近120帧 #3/#4/#23失败120、#12/#13失败105、mismatch0,119Full/0Fast/1pending。90秒FastDelta=0、FullDelta=920。STEP116修好的空SDK Annotation条件和原63层定义不许回退。
必做实现/根因研究
- 读 Style/Source creation、RenderOrchestrator::createRenderTree及LayerRenderItem、RenderLayer group disable/activate/processChanges、ResourceManager、sourceDiff、retainedSegmentSourceState、RenderSegmentRevisionBook、contentFingerprint、GPU提交。缺tide只可在具有可检查的零实际GPU绘制/无旧Renderable数据且同名Source添加/重建时完整Full+invalidate证书时作为缓存零贡献依赖;不得补假tide、删tide-spots、通过忽略revision/ready来放宽。无法证明则保持missing-source fail-closed,报告具体证据。
- 读PlacementController::setPlacement/placementIsRecent/hasTransitions、Placement::placeLayers/commit/fade/opacities、RenderSymbolLayer/SymbolBucket::updateVertices、RenderTree::prepare、Renderer::render Full与Cache Build及particleFast path判定。当前全帧重算时placementChanged=true、不重算时stale=true,fade不断非零;使首Build一直0。若能建立与成功提交的GPU Drawn R精确等价的结果证书,才受控放宽首次缓存,包括crossTile collision/placement、glyph/image/atlas、dynamic opacity、tile/source/layout revision、projection/camera/viewport、GPU context、异步ChangeRequests;任何变更必须Full/rebuild。不能将任何placementChanged、symbolFadeChange或controllerTransition强制false或删除24Gate。若需跨层较大重写无法保证安全则保留Gate报告BLOCKED。
- 原STEP113的正式63基础层完全保留,C空Annotation受控修复保留;旧五场景及SOURCE_CHANGE的负例保留。必要最少的Native诊断/Android测试入口增强可以做,但不可改变真实Fast计数/24Gate判定或把FAST_SMOKE当PASS。
- 以一次未来Android用户授权的RDC标准完整build/install测试为目标批量实现可证明安全的改动;提供非Jest C++测试源码,覆盖缺源零绘制/新增同名Source后失效、Symbol placement/symbol fade、异步glyph/tile/style/annotation/camera/context改变时fallback。不能将没有运行的测试标PASS。Codex不要运行大编译/Gradle/ADB/CMake/Ninja/Bazel/Jest、安装、commit/push,由RDC独立执行。
必做中文交付文件
- 真正实施的源文件、非Jest测试源码;必要Test App README更新。
- docs/20_调查/STEP-117_PBF_R首次缓存Build安全证据_v1.md:真实源码/原设备JSON,GPU生命周期与Source缺失和Symbol placement安全边界、各项状态、设计/反例。
- docs/50_Step记录/STEP-117_原PBF_Fast缓存准入_v1.md:改变、阶段验收、未执行与下一步。
- docs/60_测试/STEP-117_FZG1_原PBF真实Fast验收计划_v1.md:严格原STEP113 STATIC_RC >=90秒、新APK源码SHA/设备SHA、Cache Build/Reuse/Fast及120帧24Gate、原63层与C、Source/Style/CAMERA mutation和用户画面、失败停止。
- docs/报告/STEP-117_原PBF_Fast缓存准入_Codex完成报告_v1.md:模型全名档位、源码文件/公共ABI不变、证据、静态检查、当前BLOCKED和RDC实际测试步骤,commit/hash留RDC回填。
- 粒子开发记录.md 末尾中文追加,必要README/说明文档修正。
- git diff --check、静态API一致性与中文交付核查。禁止git add -A/git add ./git reset --hard/git clean,不触碰用户两份保护未跟踪文件 docs/40_任务/STEP-110_...和STEP-111_...,保留原Git忽略设备JSON。未经RDC工具真实返回,不得自称Native/Android PASS。最后停止交RDC进行独立代码审计、scoped commit/push/remote verification及一次集中Android build/installation/test。