diff --git a/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md b/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md index d385712b..1efa8c29 100644 --- a/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md +++ b/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md @@ -33,6 +33,6 @@ | ID-P7-28 | 2026-09-22 | wave 2-D3 落地(`6eaaf492 de6fb063 25b586d0`;其 `8274dcab` 与集成者的 `6da19f71` 重复,不取):view 陈旧缺陷取「谓词解析到 storage record」而非反向索引(删除顺序:反向索引要在 view 死亡时剪枝,否则 owner 上传会推到被回收给无关纹理的槽——静默跨纹理串号;且把可变状态放进两后端共读的 `MG_Pipe`);删除顺序由构造保证(`TextureObjectView::m_storageOwner` 强 `SharedPtr`,`resource_destroy` 在析构发出,`TextureObject.cpp:63`)。D-K2 「两处一行」实为六处读者,全部改读 `SubsystemDeps.def`,client 侧参数按 `kMGPipeP4aFamilySubsystems` 掩码(bit 8 的 vertex-input 发射归 P3a 规则,`TextureEmit.EveryDKTwoDependencyRowGatesItsOwnFamilyAndTheMirrorPairsStayLive` 抓到);**批准**「`SubsystemDepsTest` 从比两份副本变成比两个读者」的减弱,编译期一半(`MGPipe.h:225/:230`)承担。门:pull rc 0、`.text` 0xa52203、nm 0/0;unit 2426 / split 303 / spawn 219 / tcp 222 / magma 88/67/69 / full 530;census 79、ratchet 186、parity 0。门脚本模板自此对 `linux build rc≠0` 打 `GATE-RED`。 | `notes/p34b/espryt-d3.md`;两处基线引文更正(KHR-GL46 非 GL43;`texture_view` 1/7 红是 `view_sampling` 不是 `coherency`)。 | `Managers.{h,cpp}`、`PipeFill.cpp`、`DirectGLES.cpp`、`SubsystemDeps.def`、`CONTRACT-P5E.md` §5.2、`CONTRACT-P7.md` §12 | | ID-P7-29 | 2026-09-22 | wave 2-D2 返工落地(`3cdaa5ee ec56644f 623d6641 c13ba36b`,叠在 D3 之上;`SubsystemDepsTest` 取 D2 版守卫 + 两条注记,`split-scenario-census.md` 与 D3 的附记手工合并):TUS 散点内缩后 gold 不变(`emit=9 box=9 rect=0 jobs=9` 四臂同)但对象对了——**零补丁 red-once** `MOBILEGL_ESPRYT_DISABLE_UNPACK_RING=1` 给 `box=3 rect=6 jobs=183`(两张散点纹理都动,26 像素例仍绿);顺带抓到 `ASSERT_TRUE(clientWindow.found)` 被「counters ON」横幅满足的假读,改为带 `tex[]` 的窗口;`espryt_memo_purity.py` 锚点/allow 活性断言后 6 条 allow 剩 1;`+76`/72 数字改正、每片 Gates 表。门:pull rc 0、G1 恒等、unit 2426 / split 303 / spawn 219 / tcp 222(`F1WireScenario.TextureReadbackRejectsPackedDestinationOverflowBeforeWriting` 首跑 1 红、rerun 绿——tcp 车道已知 flake 形状,非本包文件)/ magma 88/67/69 / full 530。 | D2 报告;tcp flake 记 §12 的既有条。 | `TextureUploadShapeScenario.cpp`、`PipeStatsWindow.h`、`espryt_memo_purity.py`、`test.yml`、`split-scenario-census.md`、`MEASUREMENTS.md` §13.1 | | ID-P7-30 | 2026-09-22 | D3 的 fable 审查判「带修复落地」,两处修复由集成者直接落在 pipe:(1) `SubsystemDeps.def` 第 1/6 行(bit 8 / bit 13 各 requires bit 7)自 D3 起是活行为、却无任何钉子(`MGPipe.h` 的 static_assert 只钉纹理行/程序行/0x7ff/0x1fff,`SubsystemDepsTest` 只扫四个 P4a resolver)——加两条 `static_assert`;(2) 「删除顺序由构造保证」的说法在常见情形下反了:`m_storageOwner` 是派生类成员、destroy 从基类析构发出,view 持有 owner 最后一个引用时 wire 上先 `resource_destroy(owner)` 后 `(view)`,一次 apply 内 view 记录活着而 `ViewOf` 指向已释放槽——保证是 walk 的 `Live`/`Gen` 检查,不是顺序;`Managers.h`、`CONTRACT-P5E.md` §5.2、`espryt-d3.md` 三处改写,call-site 计数「五→四」改「四→三」。审查确认:门代数对非 view 逐字节同旧;G1 每处改动都在 `PIPE_PUSH`/`BUILD_DISAGGREGATED` 守卫内;red-once 在 tcp 臂真跑真红;引文(KHR-GL46、`view_sampling`)属实。**批准** D3 改 `CONTRACT-P5E.md` §5.2(既非 R-5 也非 R-3,但是 D2 普查行点名的修正)。 | 审查报告;`~/w7/pipe` 上 `range-diff` 三个提交 `=`。 | `MGPipe.h`、`Managers.h`、`CONTRACT-P5E.md`、`espryt-d3.md` | -| ID-P7-31 | 2026-09-22 | wave 2-B2 落地(`089fd495 22c2687d 824eac05 ec46a550`):multisample-blit-shape / -aspect 退役(scratch resolve + 第三套烘焙 resolve shader;MS 目的地与无臂采样数具名 decline),`MagmaP7AllocatorDebtScope` 两处删除(P7 基线只剩两处——P5e 裁定 12 的四处里 P5f fv/fm 已去两处;类型留作 `RemoteClientTest` 负控),(B′) disaggregated 构建的 monolith 臂改用烘焙模块,棘轮 **186 → 173 重基线**(p7-magma 101 → 88,余 88 = monolith draw 路径,按 ID-P7-5 留运行时分支、不标 `# P13`,归 wave 3)。**`@P7` 拒绝站点归零**(§3.2 六个退役全部完成 → 子系统分母 (2) 成)。门:pull rc 0、G1 恒等;unit 2429 / split 303 / spawn 219 / tcp 222 / magma **93/72/74** / full 533;census 79、parity 0。**批准** B2 的「decline 的 GL 错误骑在后一次回复上、场景里 `glFinish()` 是承重的」记入 §12 作为 wire 错误归属的已知形状。真机待验:旋转面上的缩放 MS blit、Adreno 830 是否带 `VK_KHR_depth_stencil_resolve`(决定默认臂)、(B′) 烘焙 blit 几何在 ROTATE_90/180/270 下的等价(从未执行)。fable 审查结论另记。 | `notes/p7/magma-b2.md`。 | `WireFramebuffer.inc`、`WireMultisampleResolve.*`、`VulkanRenderer.cpp`、`scripts/data/link_ratchet_baseline.txt`、`CONTRACT-P7.md` §3.2/§4.1 | +| ID-P7-31 | 2026-09-22 | wave 2-B2 落地(`089fd495 22c2687d 824eac05 ec46a550`):multisample-blit-shape / -aspect 退役(scratch resolve + 第三套烘焙 resolve shader;MS 目的地与无臂采样数具名 decline),`MagmaP7AllocatorDebtScope` 两处删除(P7 基线只剩两处——P5e 裁定 12 的四处里 P5f fv/fm 已去两处;类型留作 `RemoteClientTest` 负控),(B′) disaggregated 构建的 monolith 臂改用烘焙模块,棘轮 **186 → 173 重基线**(p7-magma 101 → 88,余 88 = monolith draw 路径,按 ID-P7-5 留运行时分支、不标 `# P13`,归 wave 3)。**`@P7` 拒绝站点归零**(§3.2 六个退役全部完成 → 子系统分母 (2) 成)。门:pull rc 0、G1 恒等;unit 2429 / split 303 / spawn 219 / tcp 222 / magma **93/72/74** / full 533;census 79、parity 0。**批准** B2 的「decline 的 GL 错误骑在后一次回复上、场景里 `glFinish()` 是承重的」记入 §12 作为 wire 错误归属的已知形状。真机待验:旋转面上的缩放 MS blit、Adreno 830 是否带 `VK_KHR_depth_stencil_resolve`(决定默认臂)、(B′) 烘焙 blit 几何在 ROTATE_90/180/270 下的等价(从未执行)。**fable 审查:带修复落地**——(1) tcp 臂的 `MsResolve1` 条目空转(knob 进的是 client 的 ctest ENVIRONMENT,tcp 的 server 是车道级 fixture 从自己的 `os.environ` 起,`tcp_server_fixture.py:60-68`;B 的 `FORCE_SHADER_MIPMAP`/`FORCE_DEFAULT_BLIT_SCRATCH` tcp 条目同病)→ 按 ID-P7-14 `MAGMA_INPROC_ONLY` 先例做 parity 例外只注册 split+spawn;(2) 翻转/缩放的 MS 深度/模板 resolve 仍 `MagmaWireFatal("multisample-depth-resolve-region")`(`WireFramebuffer.inc:437-443`)——颜色臂已处理翻转、深度却杀会话 → 缩放具名 decline、翻转逐行反向 copy-out;(3) 车道基线归因句改正(+4 = A 与 C 各 +2,都在 B 之前落地)。三项交 B2 返工一轮。审查确认:scratch 生命周期经 `RetireWireObjects` 标签正确、shader resolve 取样 0、无臂路径 decline 无 abort、B′ 每行在守卫内 pull 类布局不变、棘轮 13 去 + 5 重分类属实、bake `--check` fail-closed。§12 待记三条(缩放第二腿未裁剪、`multisample-resolve-region` 对超出读缓冲的源仍 Fatal、1→N 同矩形 decline 了合法形状)。 | `notes/p7/magma-b2.md`。 | `WireFramebuffer.inc`、`WireMultisampleResolve.*`、`VulkanRenderer.cpp`、`scripts/data/link_ratchet_baseline.txt`、`CONTRACT-P7.md` §3.2/§4.1 | | ID-P7-32 | 2026-09-22 | bsl-esc-menu 归因(M1,主机复现):split server 无界累积死 `VkBuffer`(`RespecifyWireBuffer` 无条件 `DeferRelease`,桶只在帧界扫,pbuffer 回放整跑只 1 条 present)——派 **M2**(`VkBufferManager.{h,cpp}`:serial 门控回收 + `MOBILEGL_IPC_WIRE_DEFERRED_MB` 水位线 + spawn 臂 red-once);`CollectGarbage()` 在 wire 臂从不执行的次级发现待 B3 落地后路由(`VulkanRenderer.cpp`);「pbuffer 回放 server 只收 1 条 present」另查(若 client 对 pbuffer 面跳过 present 记录,与 `ARCHITECTURE.md:531` 的 1:1 相悖,且饿死 server 全部帧界维护)。40% 检查点 **6/9 已过**(§8)。 | M1 报告;`~/w7/p7-probe-m1` 探针、`~/w7/m1/` 采样器与序列。 | `CONTRACT-P7.md` §8/§12 | | ID-P7-19 | 2026-09-22 | OpenRA 真机分歧改判为 **wire 臂的 GPU 时序竞态**(冷驱动缓存 = 慢 pipeline 创建 → 最终帧回读在最后几批 draw 完成前采样),归 wave 2-B 第 0 片;主机 red-once 用 pipeline 创建延迟旋钮复现;真机验收 = 三次 `pm clear` 冷跑 1.0。F1 保留(机制正确)但不再被当作分歧原因。 | E7:`pm clear` 三遍 0.976493989 / 14658 逐字相同、热跑 1.0、冷 monolith 1.0、`FRAMESINFLIGHT=1` 一绿一红;两臂 client/server 日志逐行相同;diff 只缺最后画的对象。 | `WireFramebuffer.inc`、`VulkanRenderer.cpp`、`F1-verify/README.md` |