12 KiB
STEP-116 STEP-113 原 PBF Fast Path 实际修复 Codex 完成报告 v1
日期:2026-10-11(JST)。源码交付 PARTIAL;原 STATIC_RC Fast 未实测,缺 tide 与 Symbol R 准入仍 BLOCKED。已按授权完成可控修改后停止,交 RDC 独立审计。
1. 实际模型与工作区
- 实际模型全名 GPT-6.1-Sol(gpt-6.1-sol)/ high。读取本地会话
01a1286a-d6a4-7e32-b91a-a9f3e63d8f3erollout 的turn_context.model/effort得到 gpt-6.1-sol/high;未切换模型、无子代理或第二Codex进程。 - 机器 Darwin 24.6.0 / x86_64;仓库
/Users/tei/dev/MapLibreParticleLab,branchparticle/main。 - 起点/交付HEAD:
e2d202b560ad0165101546597c43f2ef0ccf4542,未commit/push,未回读远端HEAD。起点tracked clean,STEP-110/111/116任务书未跟踪;子模块状态正常,未操作。 - Android Native版本仍
13.6.1-particle.23。没有新APK/AAR,不能使用原STEP113 APK代表此次源码。 - Integration main
80667d6c343411d03a760425438e3d292f452118采用用户给定RDC事实,只读AGENTS/规范/contract/coordination;没有NavSea/Integration写入、同步或发行。 - 已读强制前置:根AGENTS/PARTICLE_BASELINE、全部项目规范、总则README及四份有效总则、STEP112/113/114/115现行交付及STEP116任务、相关实际实现和保留完整JSON。详细范围见调查文件。
2. 已实现 / 阻塞 / 未运行
| 项目 | 状态 | 结果 |
|---|---|---|
| 空SDK Annotation C | 已实现(Implemented),未验收 | STATIC_RC确认零实例/内部身份后仅移除一次points,保留Source、原63层;stop恢复,后续添加/Style替换撤销验收条件 |
| 后续真实Annotation不漏内容 | 已实现,未验收 | 私有ensurePointLayer在Native Symbol add/update及style-loaded同步恢复缺层;no-op update也dirty,在Map::onUpdate采样前完成,poll只报告,不承担恢复时序 |
| 缺源R | 阻塞(Blocked) | tide-spots依赖不存在tide;缺已执行GPU零贡献证书,不实现empty准入,维持missing-source |
| Symbol R Build | 阻塞 | Continuous重算changed、不重算stale两分支均阻断;无最终GPU/Placement/atlas等证书,不放宽Gate |
| 诊断/原生计数 | 已实现 | 可选missingSourceIds、独立Placement状态、真实Fast UI;24Gate及生产首错/计数不改 |
| STEP115复测工具 | 已实现,未运行 | tracked源码锁定;PID后实际≥75秒等待;同生命周期/24Gate/blocked撤销/计数reset拒绝,仍校验APK与设备SHA |
| C++测试源码 | 已实现,未运行(Not Run) | 四个Step116Safety账本/诊断/保守Gate用例,三个Annotations.Step116真实渲染回归 |
| 真正原PBF Fast、视觉/性能 | 无法验证 | 没有新构建、设备120帧或Fast增长,不写Closed/PASS |
未删除tide-spots、SOURCE_CHANGE circle、任何正式Symbol;没有改FPS/forecast/原PBF URI、Core C准入、Placement算法、cache成功计数或制造Fast。STEP114独立Smoke和STEP102 fixture未修改。非STATIC_RC四场景保留原Annotation语义;所有场景共享的Native Annotation修复仅在缺Source/points时补回,已有Layer不替换。
3. 实际文件清单
修改的源码/测试/工具:
src/mln/annotation/annotation_manager.cpp:缺失points的同步恢复与no-op更新dirty。src/mln/annotation/annotation_manager.hpp:仅私有ensurePointLayer方法,无数据布局变化。src/mln/renderer/render_segment_json.hpp:同snapshot的每段missingSourceIds只读诊断。platform/android/MapLibreAndroidTestApp/src/main/java/org/maplibre/android/testapp/activity/particle/Step113PbfGateScene.kt:STATIC_RC空辅助层一次调整、恢复/撤销、manifest及独立阻塞摘要。test/api/annotations.test.cpp:三项实际出图/恢复/不覆盖/reload测试源码。test/renderer/retained_underlay_cache.test.cpp:四项缺源/async revision/资源全局/保守Symbol/多Gate诊断测试源码。tools/particle_android_validation/verify_step113_fast_path.py:时长和拒绝条件;本轮没有执行脚本。tools/particle_android_validation/README.md:更新当前复测边界并追加STEP116说明。粒子开发记录.md:仅末尾追加本Step。
新增四份中文文档(不覆盖历史版本):
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。- 本报告。
公开API/ABI与控制协议不变:无include公开头、C/Java/Kotlin/RN/JNI方法签名、公共配置、版本/发行坐标变更;新增私有方法不改AnnotationManager成员布局。现有可选诊断JSON每段增加missingSourceIds,Test App私有summary增加诊断字段;这是任务授权的观测扩展,不新增Host控制协议或准入契约。
4. 静态结果与保护证据
已经执行:仓库/branch/HEAD/status/submodule只读核对;前置文档及源码阅读;保留JSON解析和SHA;diff人工审查、Python AST解析(没有导入/运行脚本);git diff --check、新增文档空白/围栏和范围检查。最终结果见文末静态收尾。静态检查不等同C++/Kotlin编译或测试通过。
未执行:Native/CMake/Ninja/Bazel、链接/codegen/测试程序、Gradle/APK、ADB/安装/Logcat/设备截图、Jest、性能测量、commit/push/远端回读、发布。没有观察到新编译/测试失败,因为未执行;不能推断将通过。
保留旧JSON SHA=24a06fa1cb072a628c650723c58a880895ec656f4972fa55d3cb064bfb2aabda。
- STEP-110未跟踪文件 SHA=
33037df71b4b30aa7956d59f4b99f77af3085405b24111bc0fe11ec857a93db0。 - STEP-111未跟踪文件 SHA=
f3a5806f25384bf46055db2edfea0d21bfbc4124184bc813b46e38b8079c1ec4。 - STEP102 Placement fixture SHA=
e44912970dd6353787be7a3e5f9924fe1249e2305d495f1e25e707352c97d3c7。 - STEP114 FastSmoke源码 SHA=
94c28a111883fa784b0d9d81515c9e7ce7232d77a51eab48b4954705f1a39eb0。
这些文件保持原样;保护任务书未暂存,开发记录原HEAD字节前缀保留。先前探索个别猜测路径不存在后,均按rg找到真实src/mln路径,未将不存在路径当证据或创建替代文件。
5. 精确定向交接
完整、按失败停止的命令和证据结构位于 docs/60_测试/STEP-116_STEP113原PBF专用APP验收_v1.md。必要顺序:
- RDC只读审计diff/七项测试、线程和安全边界,按独立授权scoped锁定本轮源码;不得包含保护任务书或无关文件。
- RDC Native:
cmake --preset macos-metal→cmake --build build-macos-metal --target mbgl-test-runner --parallel 3→ 定向filterStep116Safety.*:Annotations.*:FastGateTrace.*:ParticleFastPath.*:RenderSegmentDiagnostics.*:RenderSegmentPlacementFree.*:RenderSegmentLocality.*:RenderSegmentPlan.*。首项失败即停,不用旧runner。 - 用户在最新锁定HEAD手工一次执行标准
./tools/particle_android_validation/build_validation_apk.sh,再明确serial手工adb install -r,记录build-info/APK/安装SHA。 - RDC/用户:
python3 -B tools/particle_android_validation/verify_step113_fast_path.py --preflight-only,成功后--scenario STATIC_RC --seconds 90;默认serial为192.168.200.139:5555。版本/源码锁不符停止。 - 用户手动EXPORT LAST SNAPSHOT,RDC回读完整120帧,核对24Gate/mismatch0/pre-post、原63层/Source/空层manifest、真实Build/Reuse/Full/Fast;用户画面及安全回退单独验收。
预期仍有missing-source/Symbol阻塞。即使C空层修复成立,仍不得保证#23、R Build或Fast成功。缺源empty需要GPU排除/资源时序证据,Symbol需要绑定成功Full/Build的结果证书;当前任务授权不足以通过危险跨层重写弥补这两项。收到真实RDC编译/测试错误后按固定闭环修复,本轮停止于实现交付。
6. 实际静态收尾
git diff --check退出0,无空白诊断;四份新文档逐份git diff --no-index --check /dev/null <明确路径>无诊断,围栏成对;验收文档bash代码块仅以bash -n解析,内嵌Python和复测工具仅AST解析,没有执行命令正文或导入工具。- 9个tracked文件修改,统计308行新增/12行删除;另有本轮四份文档新增。起点三份未跟踪任务书仍未跟踪,暂存区为空,branch/HEAD保持原值。
- 开发记录HEAD原始164685字节前缀完全保留,原SHA=
0adbe3fbe366651e3a79369dbf13d2e494a2b4545e29efaad72b299b43d2f4dd,仅追加1440字节(8行)。 - 已逐字与HEAD比较:生产
particle_fast_path.hpp、公开render_segment.hpp、renderer_impl.cpp、render_orchestrator.cpp和 Activity接线完全未变;STEP110/111/102/114冻结SHA与上节相符,旧完整JSON也未修改。测试源码实际新增7个用例。
本轮实现与测试源的交付SHA-256(独立审计后若修正,应重算并记录,不能沿用此表冒充新源码):
| 文件 | SHA-256 |
|---|---|
| Step113PbfGateScene.kt | d50281713ae551edc9a48b1550254602e4950c9ddca66855bb689620c9f6f2b6 |
| annotation_manager.cpp | 6e0faf6ab585362bfb1ee4d6e79163390041295331d7c8c652156963318bfe6a |
| annotation_manager.hpp | a4c18d12a12dd4be3ddca7c667e9c45da8a57d6108956e605e1e4fe0796932c0 |
| render_segment_json.hpp | 9c1fa02fa0e7a2eccf4aeb8fe346913fb87b62258c662c303db087399cf9ca1d |
| annotations.test.cpp | b316c23c557a46f819895b7ea74a415ff5c833d0751521c28a5dd8251166daf6 |
| retained_underlay_cache.test.cpp | cc1d26540008df3b74cc97fa13e54e77092f2edb596d4c8c56d7a15504bdb109 |
| verify_step113_fast_path.py | 87a797eee0e907078cd8f49dbceb83dd3affda9b00c51cc691c1f4c553eb705e |
以上只证明交付范围和静态一致性,不证明Native/Kotlin可编译、测试通过或Fast安全。编译、设备、像素及性能仍全部未验收。
RDC 独立核验追加(2026-10-11)
本轮结论:限定范围源码/接口及操作说明静态审查完成;Mac Native配置 BLOCKED;Android APK/设备Fast NOT RUN,整体PARTIAL。
- 起点粒子仓库 particle/main=e2d202b560ad0165101546597c43f2ef0ccf4542;Integration origin/main已由RDC fetch并与本地main同步,HEAD=80667d6c343411d03a760425438e3d292f452118。未接触NavSea与Integration正式文件。
- Codex实际模型 gpt-6.1-sol/high;本轮实现仅原STEP-113 STATIC_RC 的 SDK 空Annotation辅助层、Native AnnotationManager缺层恢复、缺源只读JSON诊断和测试验证器,不改变正式63个PBF layer、原五场景其他分支、Fast Gate/caching的准入或公开控制面。新增7项非Jest C++用例源码,尚未执行。
- RDC直接核对 Android Style.java 对象removeLayer(Layer)文档明确注明被移除Layer可以重新添加;与STEP116在stop中恢复原wrapper的目的相符。Native AnnotationManager恢复与事件生命周期仍须编译、图像和设备验证,不凭静态阅读标PASS。
- RDC核对旧SOURCE_CHANGE实际完整JSON:Native FastGate gates每项有order,firstFrame的knownMask等字段存在;STEP116验收脚本的原JSON结构检查有数据来源,但并非本轮运行证据。
- Mac shell当前无rg可执行,RDC将STEP116手动导出命令中的rg替换为标准grep -E,保留同样的文件筛选表达式。Python验收器ast.parse通过,git diff --check通过。
- Mac Native按当前标准命令重新执行真正的cmake --preset macos-metal配置(使用/Users/tei/Library/Android/sdk/cmake/3.31.6/bin/cmake),退出码1:Required package libuv缺失,日志保存artifacts/maplibre-particle/step116-native/configure.log。严格串行停止,未执行构建目标、未运行7项C++测试。失败是环境依赖,不应改写成代码编译通过/失败或跳过继续。
- 未执行Android Gradle、APK安装、ADB启动STEP113、新Fast计数、逐帧画面、iOS Metal回归、发行/tag/Source Lock。正式PBF缺tide以及Symbol R Placement仍保留fail-closed;此任务只是安全部分实现,并不解决原STATIC_RC无法进入Fast的全部原因。
- 用户在本轮源码scoped Git锁定且push远端核验后,需手工一次集中Android编译与install -r,再执行STEP115同HEAD/安装SHA预检、原STATIC_RC 90秒、完整120帧+24Gate+截图与其它负场景验收。新APK前禁止把旧c6d13e1产物Fast0作为本轮修复验收。若仍Fast0,必须保留缺源、Placement和C实际结果并交跨平台Core负责人确定GPU结果证书。