8.8 KiB
STEP-112 V23 粒子 Full Render 与 Symbol 缓存调查 Codex 完成报告 v1
日期:2026-10-11(JST)。
1. 执行结论
A—E只读源码调查和四文件交付已完成;综合判定 PARTIAL。 正常Continuous Full的Symbol R首次缓存准入不可达已有决定性源码证明;生产逐帧原因、原RCRR完整布局、可安全替代的准入证据和真实性能仍不完整,不标全任务/实现/性能PASS。
关键证据:render_orchestrator.cpp:792-807 的重算/不重算分支,placement.cpp:160-175 的recent/stale语义,与 render_segment.hpp:85-90 的三条件组合。重算则changed=true,不重算则Controller stale使transition=true,Symbol R均不能首次Build。symbolFadeChange==0不是终态条件;transitions关闭时正常Full返回fade=1。全局prepared scene和PREFIX普通Symbol/Line C仍独立阻塞Fast。
主报告第4—10章包含完整调用图、24项矩阵、缓存状态机、两种配置与真值表、S1—S5、A—D成本风险提案、最小采样方案;第11章区分源码证明、现场输入、条件推断和设备待验。
2. 实际模型、机器与Git基线
- 机器:Mac.lan,Darwin 24.6.0,x86_64;未连接或操作Android/iOS设备。
- 仓库:
/Users/tei/dev/MapLibreParticleLab;branch起终均particle/main。 - start HEAD:
41b416c261fa72bd21171328045036a124694f47;end HEAD同此,未commit。 - 模型
gpt-6-astra,reasoning efforthigh。环境会话ID01a12686-49ee-70b1-953e-f95f8a4bd9ca;实际读取本地~/.codex/sessions/2026/10/11/rollout-2026-10-11T00-54-57-01a12686-49ee-70b1-953e-f95f8a4bd9ca.jsonl的turn_context.model/effort确认;没有自行切换或升级,没有启动第二实例/子代理。 - 起点tracked clean;只有两份未跟踪STEP-110/111任务书。
git submodule status全为空格前缀,无未初始化/偏移标记;未操作子模块。 - 终态预期且经收尾检查核对:新增本Step三文档、开发记录修改,加上原有两份未跟踪任务书,无其它变化。
- V23构建源码
87f3d1c59a52581fb8339f0ea7d106b9f4b94fef;相关路径与HEAD只差STEP-109的两Layer snapshot快比较,核心Gate行为一致。V23正式制品不含这项开发快路,本轮未发行。 - Integration main
80667d6c是用户提供的RDC核验事实;本轮未fetch/pull/远端回读,只读相关contract/coordination。
3. 任务逐项:已完成 / 未完成 / 无法验证
| 项目 | 结果 | 证据与限制 |
|---|---|---|
| 前置阅读、实际模型、工作区核对 | 已完成 | 根AGENTS、PARTICLE_BASELINE、8份规范、现行总则README+4份、STEP-112、STEP-102/106/109/110/111任务/记录/报告 |
| A 调度/Idle/cadence/CPU-GPU区别 | 已完成 | 主报告4;SDK Handler/NSTimer唤醒、Core cadence、Observer和prepared-tree链;实测30FPS来源仍未知 |
| B 全部Fast Gate | 已完成 | 主报告5;24项按首错顺序,完整non-camera signature及prepared scene二重锁 |
| C R2缓存状态机 | 已完成 | 主报告6;首次未建、反复无条件invalidate、revision/key变化、资源/Build失败分开 |
| D Placement开关/Fade真义 | 已完成 | 主报告3、7;无窗口的分支证明,300/30ms/zoom和8组合表,GL/Metal shader依据 |
| E S1—S5及布局 | 已完成(缺证据明确标未知) | 主报告8;原RC/PREFIX和理想保序布局;原RCRR完整边界未获得,不伪造 |
| A—D工程提案与最小验证 | 已完成 | 主报告9—10;首次Build/scene/C分别评估,候选文件/成本/风险/1—5复杂度、双后端、Interface Blocker |
| 任务书四项落盘 | 已完成 | Codex本轮直接写入,早期框架与后续章节分阶段保存;不是由RDC补写 |
| FZG1每帧options、请求来源、所有Gate、CPU分摊 | 无法验证 | 只有任务/历史现场计数与末态;本轮禁止插桩和设备操作 |
| Symbol结果等价/安全新Gate充分性 | 无法验证 | 当前无与成功Build版本绑定的最终GPU输入证书;提案需shadow和运行对照 |
| Native修复、首建成功、Fast hit提升、CPU改善 | 未完成(本轮不授权) | 未改实现,不能将只读控制流证明当修复PASS |
| 编译/测试/设备/制品 | 未执行(本轮禁止) | 无新build log、APK/AAR/XCFramework、运行结果或SHA |
| commit/push/远端HEAD | 未执行(用户交RDC) | 无新commit/hash/message/push结果,不冒称Git收尾完成 |
4. 实际写入文件
新增:
docs/20_调查/STEP-112_V23粒子FullRender循环与Symbol缓存准入全面源码调查_v1.mddocs/50_Step记录/STEP-112_V23粒子FullRender与Symbol缓存调查_v1.md- 本报告
docs/报告/STEP-112_V23粒子FullRender与Symbol缓存调查_Codex完成报告_v1.md
修改:粒子开发记录.md,仅在末尾追加STEP-112短条,不重写历史。
无Native/C++/Kotlin/Java/Swift/ObjC/JS/TS/Shader/测试/Style/脚本改动;无NavSea/Integration跨项目写入;无分支/worktree变更或dirty清理。
5. 检查与禁止操作
已执行:pwd、uname -a、branch/HEAD/status/submodule只读核对;rg、带行号源码读取;V23相关路径git diff;文档内容和变更范围检查。收尾的文档空白、原文件哈希、开发记录前缀检查结果见第8节。
全部NOT RUN:CMake/Ninja/Bazel、编译/链接、codegen、C++测试、Jest、Gradle、APK/AAR/XCFramework打包、ADB/安装/设备/logcat/截图、新性能测量、发布、commit、push。没有已观察到的编译或测试失败;因为没有执行,不能推断会通过。
少数初始按类名探测的路径不存在,随后按实际文件定位,例如RenderRasterParticleLayer实际实现位于 render_particle_validation_layer.cpp,RenderTreeImpl位于 render_orchestrator.cpp;未用缺失路径作为证据,也没有为此创建源码文件。
6. 与任务书差异和阻塞
- 用户当前明确指定gpt-6-astra/high,覆盖任务书旧建议,已实际核实。
- 本轮Codex执行指令明确不由Codex提交/推送,遵循AGENTS的Codex→RDC职责分工;STEP-112任务书第十一节要求RDC独立完成scoped Git提交、推送及远端验收。用户并未禁止本任务的Git收尾。
- 用户已给Integration同步事实,本轮只读相关contract/coordination,不重新做全仓同步。
- 完整原RCRR plan、现场options/逐帧日志和CPU阶段分摊缺失;限制在主报告单独标记,不将条件推断升格为FZG1实测。
- 公共“外部明确Full且不按相同数据去重/延迟”目前没有相应force-Full/序号字段。Interface Blocker仅约束未来D提案,需Integration决议,未新增API或改责任边界。
7. 独立验收与下一步
RDC依据STEP-112任务书第十一节,独立复核主报告第3章的两分支证明和第5章24项来源,核对四份交付文件、两份未跟踪任务书及HEAD,然后做scoped Git提交/推送及远端HEAD核验;以独立Git收尾补记为最终证据。
下一代码阶段先授权A低开销同帧gate/Placement/R状态诊断,再审查B的Full后安全Build证书;需要per-R结果时用C shadow比较。保护跨Source/跨段Collision、text/icon Fade、camera、资源、层序与GL/Metal一致性。独立验收必须取得源码/制品版本、plan/Style表、逐帧gate及计数、trace成本、CPU阶段耗时和视觉证据。未经新任务授权,不实施Native修复,不降低FPS、不删除Symbol、不放宽fail-closed。
8. 实际收尾检查结果
git diff --check -- 粒子开发记录.md:无空白错误;diff统计仅 8行追加、0行删除。- 三份新增文档分别执行
git diff --no-index --check /dev/null <明确路径>:均无诊断输出;退出码1表示与空文件存在差异,不作为构建或测试结果。正文代码围栏成对,Fast矩阵已人工核对包含顺序1—24,S1—S5齐全。 - 开发记录与
git show HEAD:粒子开发记录.md的原始 159061字节前缀完全相同,原SHA-256=9a1690188a9c283024c74fa275ec68d7442459c73008126087e0d9ec9704910a;本轮追加1381字节。 - STEP-110未跟踪任务书SHA-256仍为
33037df71b4b30aa7956d59f4b99f77af3085405b24111bc0fe11ec857a93db0。 - STEP-111未跟踪任务书SHA-256仍为
f3a5806f25384bf46055db2edfea0d21bfbc4124184bc813b46e38b8079c1ec4。 - 最终
git status --short只显示:开发记录M、本Step三文档??、原有两份任务书??。git diff --cached --name-only无输出,未暂存任何文件。 git branch --show-current=particle/main;git rev-parse HEAD=41b416c261fa72bd21171328045036a124694f47,与起点一致。- 无新commit,commit message不适用;push未执行,远端HEAD未回读。原任务书中的自动提交要求已由用户本轮禁止指令覆盖。
这些仅是源码/文档取证与范围完整性结果,不是编译、设备、性能或安全新Gate的PASS证据。