mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[docs] (P7): ID-P7-38 - B2 round 2 and the B3 fix round land with fixes, F's gate is green, E1's census is on the tree
- the two ROADMAP row segments E1 changed that did not merge onto the integrator's rows are re-applied by hand (host census results, P9 exception list empty, wave 3 items done) - the running table names the fable rounds B2 r3 and B3 fix r2 and the F review
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
**阶段:P7 DirectVulkan(Magma)全量迁移**,并行流 **P3b/P4b 深化(Espryt,wave 2-D)** 与 **Ph 小件(簇 F)**。计划 [`notes/p7/PLAN-PH-P34B-P7.md`](notes/p7/PLAN-PH-P34B-P7.md)(五波)。
|
||||
|
||||
**更新:2026-09-22 夜** · `origin/feat/disaggregated` = `3c80cd62`(= 旧 3c80cd62 的树,提交尾注已按用户令改写并强推);集成树 `~/w7/pipe` 领先 20+ 提交(B2 返工 r1/r2、B3 返工 + 修复轮、V1、F 片 1–3),门全绿,等 fable 审查后推送(ID-P7-37)。
|
||||
**更新:2026-09-22 夜** · `origin/feat/disaggregated` = `3c80cd62`(= 旧 3c80cd62 的树,提交尾注已按用户令改写并强推);集成树 `~/w7/pipe` 领先 30 提交(B2 返工 r1/r2、B3 返工 + 修复轮、V1、F 片 1–3、E1),F 门全绿(unit 1 flake 单跑 3/3 绿),等 F 的 fable 审查后推送(ID-P7-37/38)。
|
||||
|
||||
## 1. 出口门总览(CONTRACT-P7 §8 的 9 项分母)
|
||||
|
||||
@@ -43,7 +43,8 @@
|
||||
| V1 | `PipeRespecifyScope` 放宽、`integration-verify-split`(1070 条,双后端 inproc)、两负控 split 臂红、8 verify trace × DV × inproc 0 分歧、比对器 ReadPixels 窗口 oracle 改中性 pack | pipe `a1d17566..75858bfd`(门 + 审查在跑) |
|
||||
| B2 返工 r2 | 用例按 `IsSplitLane()` + 后端名 skip、逐行拷贝行距对齐 + stencil 腿、`DeclineWireDepthStencilResolveShape` 先决定、`MsFlip1.`、parity tail 恰匹配 | pipe(审查在跑,ID-P7-37) |
|
||||
| B3 修复轮 | 审计剥注释 / 字面量 + 按块回溯 + `--self-test`、spawn 无 server 日志 FATAL、注记双行 + `WaitForFrameSerial` 债 | pipe(审查在跑,ID-P7-37) |
|
||||
| F 片 1–3 | 常量时间令牌 / ≥16 字节 / 无令牌只 loopback / smoke 进 CI;`Welcome.dataNonce` 绑定(TCP 250 ms 配对窗口消失,指纹变更);PH-8 钳制证明 | pipe(门在跑,ID-P7-37) |
|
||||
| F 片 1–3 | 常量时间令牌 / ≥16 字节 / 无令牌只 loopback / smoke 进 CI;`Welcome.dataNonce` 绑定(TCP 250 ms 配对窗口消失,指纹变更);PH-8 钳制证明 | pipe(门全绿,审查在跑,ID-P7-38) |
|
||||
| E1 | Iris 普查 231/231 全活、70/77 逐字节同、P9 例外表空;§7.2 同名重跑 24 绿 / 3 具名停止 / 0 错答 | pipe `70bbb159..b05406b5`(docs only,ID-P7-38) |
|
||||
|
||||
## 3. 真机(Redmi 2f7cbe2e,Adreno 830)
|
||||
|
||||
@@ -55,16 +56,15 @@
|
||||
|
||||
| 包 | 内容 | 状态 |
|
||||
|---|---|---|
|
||||
| B2 r2 审查 | fable:skip 逻辑覆盖、行距对齐算术、decline 先决定的位置、parity 恰匹配、场景腿的 GL 依据 | 进行中 |
|
||||
| B3 修复轮审查 | fable:剥注释 / 字面量的边界、块回溯规则、自测覆盖、spawn fail-closed | 进行中 |
|
||||
| B2 r3(fable) | 用例按解析后的 transport 门控(`Full.` / `VerifySplit.` 重新跑)、pre-pass 含默认 draw framebuffer、措辞、§6 三条域外债 | 进行中(ID-P7-38) |
|
||||
| B3 修复 r2(fable) | `LOGGED` 锚定 + 夹具、spawn FATAL 挪到普查前、inproc fail-closed、nit ×6、pull-library 控制证据核查 | 进行中(ID-P7-38) |
|
||||
| V1 修复轮 | server 侧 read hook 红、poison 分角色、`MGPipeNeutralReadPixelsPack()`、逐条武装证明 + 具名例外表、措辞 | 进行中(Agent 通道) |
|
||||
| M2 | `VkBufferManager` serial 门控回收(不假设帧有界)+ `MOBILEGL_IPC_WIRE_DEFERRED_MB` 水位线 + spawn red-once | 进行中 |
|
||||
| E1 | Iris trace 普查(39 × 2 后端 × 3 臂)+ `MEASUREMENTS.md` §7.2 同名重跑 + P9 例外表 | 进行中 |
|
||||
| F 门 | pipe 上 F 片 1–3 的全门(tcp 车道 + smoke + flatc) | 进行中 |
|
||||
| F 审查(fable) | 常量时间比较、nonce 绑定的边界、指纹 pin、PH-8 证明、CI 接线、red-once 真实性 | 进行中 |
|
||||
|
||||
## 5. 下一步(按序)
|
||||
|
||||
1. B2 r2 / B3 修复轮审查绿 + F 门绿 → 推送(origin 从 `3c80cd62` 前进)。
|
||||
1. F 审查回 → 推送(origin 从 `3c80cd62` 前进到集成树头)。
|
||||
2. **F2**:D11 五处 + PH-2、PH-6 drop-with-latch、PH-1 (3)(4)、PH-7 (5) fork 前认证——先要一个能向 spawn / TCP server 发畸形记录的对端字节驱动(fuzz 臂 2 的第一块)。
|
||||
3. M2 落地 → p7w6 APK(**含 F 的 wireFingerprint 变更:手机 server 必须重部署**)→ bsl-esc-menu spawn 臂通过 → 门 3 分母 36 全部与 monolith 同(三遍逐位相同 + spawn 臂,§7.2)。
|
||||
4. **B4**:裁判的 `WaitForSubmitsUpTo` 聚合等待(`Present:14094` / `WaitForSubmitIndex` / `WaitForFrameSerial`)+ 裁判点名的 Magma 债(§12)。
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -40,4 +40,5 @@
|
||||
| ID-P7-35 | 2026-09-22 | **B2 返工 r1 审查 = rework**(fable)。r1 三提交(`856aa7ab` / `5d896170` / `db6892ec` → pipe `9fed478d` / `645dd96f` / `cc3c18c5`)在 pipe 上门:G1 恒等、census 79、棘轮 173、parity 0、unit 2429、magma 96 / 75 / 72、full 535,但新用例 `AFlippedMultisampleResolveMirrorsTheBandsAndAScaleDeclines` 随 `DepthStencilReadbackMatrixScenario.*` 的整套注册落到 DirectGLES 三条 split 臂与两条 monolith 条目上而红。集成者实测 monolith DirectGLES 同红(翻转 resolve 后目的地仍是 0.5 清除值且无 GL 错、缩放 resolve 无 `INVALID_OPERATION`)= **Espryt 行为**,非 wire 缺陷;先按后端名 skip 的临时提交(`3b66d1b1`,八车道全绿)被审查推翻——**DirectVulkan monolith 条目同样红**(`VulkanRenderer.cpp:9594` 翻转矩形的深度 blit「not supported yet」、`:9608` 合法缩放):wire 臂现在比 monolith 臂更正确,skip 应按车道标记 `MGITest::IsSplitLane()` 而非后端名;临时提交已从 pipe 撤下(pipe 回到 `cc3c18c5`)。第二条 must-fix:逐行 `VkBufferImageCopy` 的 `bufferOffset = row × width × texelSize` 在 stencil(1 B)宽非 4 倍数或 D16 宽为奇数时违反 `VUID-vkCmdCopyBufferToImage-pRegions-07978`(scissor 裁剪产生任意宽度)→ 行距对齐 + stencil 腿 red-once。should-fix:§7 数字取自非祖先树(`5d896170`)、`COLOR\|DEPTH` 缩放 blit 先写完颜色再拒深度的部分效应未陈述、X 与跨格式 Y 两种 decline 共用一个 `MGLOG_E_ONCE`;nit ×4(`!dstSpan` 静默返回、parity tail 必须匹配、`MsFlip1.` 旋钮孪生、`:10066`)。**r2 已派**。同日:六个在跑 agent 撞 session limit 全部死亡,按各 worktree 未提交 diff 重派为 `claude-opus-5-5` 单 agent workflow(Agent 工具的 opus 别名仍是 Opus 5)。 | pipe 停在 `cc3c18c5`(DirectGLES split 三车道各 1 红)**不推送**,r2 落地后再门再推;§12 届时抄 B2 §6 五行 + 两条新行(monolith DirectVulkan 翻转 / 缩放 MS 深度 blit 是 wire-vs-monolith 分歧;Espryt 翻转 / 缩放 MS 深度 resolve 是 P3b/P4b 债)。 | `DepthStencilReadbackMatrixScenario.cpp`、`WireFramebuffer.inc`、`magma-b2.md` §6 / §7 |
|
||||
| ID-P7-36 | 2026-09-22 | **B3 返工落地(pipe `b8d10d07..3f92d0f1` + 集成提交 `75a64ce0`),fable 审查 = land with fixes。** 返工五提交:`WireDeclines.def` 53 行全部有站点、每站点一条 W/E(新审计 `scripts/ci/wire_declines_audit.py` 进 CI);`StaleSerial.` 只注册 split+spawn;注记改写(floor = 保证、提交项 = 探针)+ `WaitForWireBufferHostAccess` 早返回兼看 `IsSubmitIndexComplete(lastUseSubmitIndex)` + `ReadWireBuffer` 等待后重打戳;`run_trace_case.cmake` 对 split 回放里任一 `MGWIRE-FLOOR unsound-serial-complete` 行打红(包树上撤钳位 → inproc/spawn 各 26 行红,恢复 → 0 绿)。**集成合并裁定**:B3 的 `MAGMA_NOT_OVER_TCP` 与 B2 的 `MAGMA_SERVER_ENV_KNOB_NO_TCP` 是同一形状 → 只留 B2 的机制(`compare_arms(no_tcp=)` / CMake `mglItestServerEnvKnobArm`),`.StaleSerial.` 入同一张表;冲突外残留的一行 `not_on_arm = not_on_arm or {}`(首次运行即 NameError)删除。pipe 门:G1 恒等、census 79、棘轮 173、parity 0、unit 2429、magma **96 / 75 / 71**(tcp 少 1 = StaleSerial 条目退出)、full 535、审计 53/53/0;**OpenRA DirectVulkan inproc + spawn 回放(B3 树的 replay exe + pipe 的库与 runner)ssim 1.000000 / 0 px / 0 条 unsound-serial-complete** —— 新红条件在 pipe 上武装,并入后续每个包的门(`~/w7/logs/pipe-retrace.sh`)。审查修正(已派 B3 修复轮):must-fix 审计把注释 / 字符串里的站点当真(剥注释与字面量);should-fix 8 行窗口不看分支(按缩进块回溯)、无 `--self-test` 负控、`run_trace_case.cmake` 在 spawn 的 server 日志缺失时读作 0 行 = 绿(补 fail-closed)、注记 §5 数字未标「包树」;nit ×3;§12 新债:`WaitForFrameSerial` 在钳位后对同 serial 的后续记录会先返回 true 而 `IsFrameSerialComplete` 为 false(调用方复查 → 今日退化为伪超时;B4 修)。 | 不阻塞推送;修复轮作为新提交叠加。V1 五提交已 cherry-pick(`a1d17566..75858bfd`,尾注统一为 Fable),门 + 审查在跑;pipe 的 verify 构建(`build-verify`,`MOBILEGL_PIPE_VERIFY=ON`)首次配置以跑 `integration-verify{,-split}`。 | `wire_declines_audit.py`、`run_trace_case.cmake`、`VkBufferManager.cpp`、`magma-b3.md` |
|
||||
| ID-P7-37 | 2026-09-22 | **提交尾注改写落地;B2 r2 / B3 修复轮 / V1 / F 片 1–3 全部到集成树,pipe 门全绿。** (1) 用户令「Rewrite the commits and strip the trailer」:785fed0b0 起 144 个提交改写(122 个带尾注),`origin/feat/disaggregated` 按 SHA 强推 1135c664 → `3c80cd62`(树逐字相同;与 `dev` 共有的历史不动),41 份文档 / 契约里的 SHA 引用按映射表重写;此后所有提交无尾注,pick 脚本自动剥。(2) **B2 返工 r2 落地**:用例按 `IsSplitLane()` + 后端名双 skip(monolith DirectVulkan 与 Espryt 各一条新 §12 债)、逐行拷贝行距对齐到 4 字节 + 29×32 stencil 腿(validation layer 上 `VUID-vkCmdCopyBufferToImage-dstImage-07978` ×10 红 → 0)、`DeclineWireDepthStencilResolveShape` 在任何 aspect 之前决定(`COLOR\|DEPTH` 缩放腿:颜色不再先写)、X / 跨格式 Y 各自 once 站点、`MsFlip1.` 旋钮孪生、parity 每个 tail 必须恰匹配一条(七条)。(3) **B3 修复轮落地**:审计剥注释 / 字面量、按缩进块回溯、`--self-test` 8/8 进 CI、`run_trace_case.cmake` 对 spawn 无 server 日志 FATAL、注记双行、§12 `WaitForFrameSerial` 债。(4) **V1 审查 = land with fixes**(fable):should-fix 5(server 侧 read hook 无 split 红 → hook 内施加 corrupt + 新控制条目;poison 断言分角色;中性 pack 改共享函数;武装证明改逐条 + 具名例外表;契约 §6/§8 措辞)、nit 3、注 6(放宽健全;`PipeInputs.cpp` 越分区改动按 §9 接受;G14 成立;棘轮 176 不进 CI)→ 修复轮已派(工作流子代理三次拒做——它们把用户最新一句当唯一指令——改走 Agent 通道)。(5) **F 报告并 cherry-pick**:片 1–3(常量时间令牌合一 + ≥16 字节具名拒绝 + 无令牌只 loopback 控制 + smoke 进 CI + flatc;`Welcome.dataNonce` 128 位 + `DataBind` 帧,data 连接绑定到已认证控制连接,TCP 上 250 ms 配对窗口消失,**`wireFingerprint` `0x7d4470f241d23539` → `0x03c4c293a54b3e08`,手机 server 必须随 p7w6 重部署**;PH-8 单测 + smoke,child 峰值 237 MB);片 4–6(D11 五处 + PH-2、PH-6、PH-1 (3)(4))与 PH-7 (5) 未做——需要对端字节的 fuzz 驱动(fuzz 臂 2 的第一块),另派 **F2**。**pipe 门(B2 r2 + B3 修复之后)**:G1 恒等、census 79、棘轮 173、parity 0、`@P7` 19、unit 2431 / split 304 / spawn 220 / tcp 223 / magma **97 / 76 / 71** / full 535、审计 53/53/0 + self-test 8/8、`AFlipped…` 在 monolith 与 DirectGLES 条目全部 Skipped 而 `DirectVulkan.Split.MsFlip.` Passed、OpenRA DirectVulkan inproc + spawn 1.000000 / 0 条 unsound;**verify 构建(`build-verify` = PUSH + DISAGG + VERIFY,tcp 40714)unit 2431 / integration-verify 1140 / integration-verify-split 1074 全绿**。集成工具修正:pipe 的 tcp fixture 端口改 40713(V1 门的 tcp 车道曾撞上 F 包在 40613 的 fixture,那次读数作废);门模板只在车道红时打印失败名(裸 `--rerun-failed` 在无失败表时会串行重跑整套)。 | 等 B2 r2 与 B3 修复轮的 fable 审查 + F 门 → 推送;p7w6 APK(含 F 的指纹变更)→ 手机 server 重部署 → bsl-esc-menu spawn(M2 落地后);F2 = 片 4–6 + PH-7 (5)。 | `spawn_lane_parity.py`、`WireFramebuffer.inc`、`wire_declines_audit.py`、`run_trace_case.cmake`、`AuthToken.h`、`protocol.fbs`、`Handshake.h` |
|
||||
| ID-P7-38 | 2026-09-22 | **B2 r2 审查 = land with fixes**(fable):should-fix 2——`IsSplitLane()` 标记也让 `Full.` / `VerifySplit.` 两条 wire 车道以假的「monolith」理由跳过(改按 `PeekSplitRuntime().transportResolved` 门控);pre-pass 排除了默认 draw framebuffer(`!draw->IsDefault`,注释理由错),MSAA → 窗口的 `COLOR\|DEPTH` 缩放仍先写颜色再拒深度(改为以 `isWriteTarget=false` 解析目的地并撤掉排除,red-once);nit 2(措辞限定为 shape decline;note 六 → 七条 tail);域外 3 条(合法的等尺寸 MSAA → 默认 framebuffer 深度 blit 仍是 Fatal;scissor 清空目的地时静默返回;MS→MS 逐 aspect 决定)→ **B2 r3 派 fable**(第三轮,按用户 09-08 规则)。**B3 修复轮审查 = land with fixes**(fable):should-fix 3——审计 `LOGGED` 未锚定(受守卫的单行日志算作站点自己的);spawn 无 server 日志的 FATAL 放在 ARMED 检查之前使诊断变差(挪到普查之前);inproc 的 server 日志仍 `if(EXISTS)`(同样 fail-closed);nit 6(前缀字符字面量、`case`/`break` 停走、`#if` 不应停走、行号 ±1、§0 表缺一行、`MGL_WIRE_DECLINE_FALSE` 不存在);域外 3(pull-library 控制自 P6 日志改名后证据可能不可达;replay 非零退出跳过普查;B4 restart 不得再读 `record`)→ **B3 修复 r2 派 fable**。**F 门(pipe)**:G1 恒等、census 79、棘轮 173、parity 0、`@P7` 19、split 304 / spawn 220 / tcp 223(pipe 自己的 fixture 端口 40713)/ magma 97 / 76 / 71 / full 535、审计 53/53/0 + 自测 8/8、OpenRA DirectVulkan inproc + spawn 1.000000 / 0 条 unsound、verify 构建 unit 2435 / integration-verify 1140 / integration-verify-split 1074;unit 车道 2434 / 2435——`InitialCapsStartup.ANullInitialSnapshotFailsInsteadOfStartingWithAPlaceholder` 在并发构建负载下红一次、单跑 3/3 绿(已知偶红家族,原始失败输出被复跑覆盖)→ 记 flake,不阻塞;F 的 fable 审查在跑。**E1 落地**(pipe `70bbb159..b05406b5` + 引用重映射 `99882304`):231 / 231 全活、70 / 77 行逐字节同(7 行分歧 = Magma monolith draw 路径 vs wire 路径或运行噪声)、P9 例外表为空(`texture-remint-pull` 未到达)、§7.2 的 27 例 24 绿 / 3 具名停止(`PIPE_PUSH=0` 控制臂)/ 0 错答,全车道 1051 / 172 / 37 / 7(44 条非绿全是 monolith-control 条目);ROADMAP P3b/P4b 与 P7 行、CURRENT_STAGE_STATUS §5 已并入(子串合并两处失败已手工修)。 | 推送等 F 审查回;B2 r3、B3 修复 r2、V1 修复轮、M2 在跑。 | `ROADMAP.md`、`MEASUREMENTS.md` §7.2、`notes/p7/iris-census-1135c664.md` |
|
||||
| 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` |
|
||||
|
||||
Reference in New Issue
Block a user