Files
MapLibreParticleLab/docs/报告/STEP-116_STEP113原PBF_FastPath实际修复_Codex完成报告_v1.md
tei c48a72a9d4
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
fix: guard STEP-113 empty annotation and expose PBF blockers
2026-10-11 11:50:03 +09:00

12 KiB
Raw Permalink Blame History

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-a9f3e63d8f3e rollout 的 turn_context.model/effort 得到 gpt-6.1-sol/high;未切换模型、无子代理或第二Codex进程。
  • 机器 Darwin 24.6.0 / x86_64;仓库 /Users/tei/dev/MapLibreParticleLab,branch particle/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. 实际文件清单

修改的源码/测试/工具:

  1. src/mln/annotation/annotation_manager.cpp:缺失points的同步恢复与no-op更新dirty。
  2. src/mln/annotation/annotation_manager.hpp:仅私有ensurePointLayer方法,无数据布局变化。
  3. src/mln/renderer/render_segment_json.hpp:同snapshot的每段missingSourceIds只读诊断。
  4. platform/android/MapLibreAndroidTestApp/src/main/java/org/maplibre/android/testapp/activity/particle/Step113PbfGateScene.kt:STATIC_RC空辅助层一次调整、恢复/撤销、manifest及独立阻塞摘要。
  5. test/api/annotations.test.cpp:三项实际出图/恢复/不覆盖/reload测试源码。
  6. test/renderer/retained_underlay_cache.test.cpp:四项缺源/async revision/资源全局/保守Symbol/多Gate诊断测试源码。
  7. tools/particle_android_validation/verify_step113_fast_path.py:时长和拒绝条件;本轮没有执行脚本。
  8. tools/particle_android_validation/README.md:更新当前复测边界并追加STEP116说明。
  9. 粒子开发记录.md:仅末尾追加本Step。

新增四份中文文档(不覆盖历史版本):

  1. docs/20_调查/STEP-116_STEP113原PBF_FastPath阻塞安全修复审查_v1.md。
  2. docs/50_Step记录/STEP-116_STEP113原PBF_FastPath实际修复_v1.md。
  3. docs/60_测试/STEP-116_STEP113原PBF专用APP验收_v1.md。
  4. 本报告。

公开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。必要顺序:

  1. RDC只读审计diff/七项测试、线程和安全边界,按独立授权scoped锁定本轮源码;不得包含保护任务书或无关文件。
  2. RDC Native:cmake --preset macos-metal → cmake --build build-macos-metal --target mbgl-test-runner --parallel 3 → 定向filter Step116Safety.*:Annotations.*:FastGateTrace.*:ParticleFastPath.*:RenderSegmentDiagnostics.*:RenderSegmentPlacementFree.*:RenderSegmentLocality.*:RenderSegmentPlan.*。首项失败即停,不用旧runner。
  3. 用户在最新锁定HEAD手工一次执行标准 ./tools/particle_android_validation/build_validation_apk.sh,再明确serial手工 adb install -r,记录build-info/APK/安装SHA。
  4. 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。版本/源码锁不符停止。
  5. 用户手动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结果证书。