# STEP-116:STEP-113 原 PBF Fast Path 实际阻塞修复 ## 授权、当前基线与配置 用户要求继续修复,并以原 STEP-113 专用 Android APP 的 STATIC_RC 真正进入 Fast 为目标,而非 STEP-114 简化 FAST_SMOKE。当前仓库 Mac /Users/tei/dev/MapLibreParticleLab,particle/main HEAD e2d202b560ad0165101546597c43f2ef0ccf4542。Integration 已由RDC fetch 并核实 main 80667d6c343411d03a760425438e3d292f452118。仅内部 Shared Core 安全修复与 Android 专用 Test App;不改跨平台公开 API/ABI/协议,不改 NavSea、不发行。 Codex 模型必须为 GPT-6.1-Sol High (gpt-6.1-sol / model_reasoning_effort=high)。先读根AGENTS.md、PARTICLE_BASELINE.md、docs/00_项目规范、当前 docs/00_项目总则 README及四份有效总则,读 STEP-112/113/114/115、Integration instructions/README/WORKFLOW/TEAM_MODEL/contracts/rfc/adr/status/compatibility,按事实和边界执行。Codex只编辑、静态检查、中文报告;不可执行Native/Gradle大编译、ADB、安装、Jest、发版、commit/push。Native独立审计由RDC;Android编译安装由用户手工集中一次完成。 ## 已确定的真正阻塞 STEP-113 STATIC_RC:正式63个PBF基础层,Test App Native实际66层;R[0,63) Build0、Fast0、Source fallback unknown-dependency,C[63,66)中有自动添加的 org.maplibre.annotations.points Symbol,#22/#23持续失败。后续 STEP-114 源码/快照发现R依赖mapple、navsea_delivery和tide,Native source表实际没有tide,tide-spots Symbol层引用它;navsea_delivery实际是Vector,不是CustomMVT。即使R的missing-source得到解决,Symbol R首次cache Build仍被Placement的changed/stale/fade保护阻挡。不可把去掉一个Gate误写为全套修好。 ## 工作:真正解决而非假通 1. 通过静态源码和保留的 STEP-113完整JSON逐环确认R缺源的原层及fallback、真正的 SourceType、source/Style变化导致的revision与GPU生命周期。 2. R的缺失源:只有能证明缺失源永远贡献零像素,且后续Source创建/恢复/同名更新强制缓存失效/Full重新处理时,才允许把它作为有界的empty依赖;否则保留fail-closed并明确报告服务器正式Style存在缺源而无法安全缓存。不能偷偷创建假的tide Source或删除原始tide-spots层。 3. C的内部Annotation Symbol:可以在专用 Test App 确认地图无任何Annotation实例时,参照 STEP-114 仅移除 SDK 自动创建的空内部 Annotation 层,保留原正式63层定义、Source/Layer顺序不变;必须有代码防止遗留Annotation/Style添加时漏内容,并在日志、manifest明确记录原STYLE层原样、仅内部辅助层调整。其他已有原场景继续原语义,不为了Fast删除SOURCE_CHANGE中的测试circle。未经证明不能改Core C准入逻辑。 4. Symbol R初建:必须读PlacementController、onRender、commit/fade、renderSegmentPlacementGatePassed、retainedRangeIsStable和full-frame时的状态。真正放宽必须有结果等价的Placement/atlas/glyph/tile/style/source/camera/opacity证据,并在变更时立即invalid/full;不能仅凭stable多少毫秒、场景没有手动操作、tile加载完成来放行。若现有Core没有可核实的已提交GPU结果签名,禁止危险跨层重写,列为BLOCKED并说明需要的精确额外数据/设计。 5. 要保留24Gate shadow mismatch=0与实际Cache Build/Reuse/Full/Fast原生计数。可添加同帧诊断或快速失败细项,便于用户一次Android build后通过原STATIC_RC脚本迅速定位仍失败的Gate。保留PBF63、PARTICLE_OFF、PARTIAL_RCRR、SOURCE_CHANGE五场景、STEP114独立Smoke和STEP102原场景;不要改变公网PBF Style或NavSea,也不要求精确113层。 6. 增加与安全修复对应的非Jest C++源码测试,含缺源/源加入/async mutation、Annotation、Symbol R /全局变化/无变化、Style/Source/Tile/Glyph/Image以及Layer顺序/disable/reload;不要假造rendered Fast、不要把不运行测试记PASS。 ## 交付文件,全部本轮必须实际生成 - 本轮实际源码和适当非Jest测试源码;修改Test App后更新必要README。 - docs/20_调查/STEP-116_STEP113原PBF_FastPath阻塞安全修复审查_v1.md:每条阻塞证据/解决方案/风险/未解项。 - docs/50_Step记录/STEP-116_STEP113原PBF_FastPath实际修复_v1.md:真实完成度及未运行项目。 - docs/60_测试/STEP-116_STEP113原PBF专用APP验收_v1.md:严格按最新HEAD一次用户手工Android build/install→STEP115 preflight→原STEP113 STATIC_RC 75s以上→完整120帧/24Gate/源码/设备SHA/用户画面;失败后如何判断R/C/Symbol,不得依赖旧APK。 - docs/报告/STEP-116_STEP113原PBF_FastPath实际修复_Codex完成报告_v1.md:实际模型全名档位、改动清单、公共API(必须不变)、逐项Implemented/Blocked/Not Run、Git/源码证据、RDC具体命令及用户构建/设备步骤。 - 粒子开发记录.md追加中文结果与下一步;必要README与相关已有文档说明保持一致。 - Codex运行git diff --check、静态核查;不运行Native编译、Android编译、Jest、ADB、安装、Git commit/push;本轮用户原有两个未跟踪STEP-110/111 MD一律保护。禁止git add -A/.、reset --hard、clean。完成后停止由RDC独立审计并scoped提交推送;若Fast尚未实测只能PARTIAL归档,不写Closed/PASS。