mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[docs] (P7): ID-P7-37 - B2 round 2, the B3 fix round, V1 and F's first three slices are on the integration tree with a green gate, and §12 carries their recorded debts
- the trailer rewrite the user asked for is recorded (origin 1135c664 -> 3c80cd62, same trees)
- CONTRACT-P7 §12 transcribes the debt lines from magma-b2.md §6, magma-b3.md §7.2,
verify-split.md §6 and ph-f.md §4
- the status page's gate table, landed table, running table and next steps follow
This commit is contained in:
@@ -168,3 +168,7 @@ verify 今天只在 monolith 注册(`MG_IntegrationTest/CMakeLists.txt:1684-17
|
||||
- Android 模拟器 retrace 车道每轮 2–6 例 flaky(含 monolith 对照):门 1 的任何模拟器证据都先过「连续 N 轮绿」再算数。
|
||||
- **X1 之后的两条残余**(`notes/p7/x1-persistent-map-segv.md`):(a) 首次 push 后页面在映射存活期间重新武装,一个**屏蔽了 SIGSEGV 的非 GL 线程写者**仍会被杀——彻底关闭要把武装改成逐 buffer 可选,是设计改动;(b) `RefaultOfANonWriteAccess` 仍可能拒掉同 `(tid, pc, address)` 的一次合法重复写——延后武装后不再常见,未观察到,记录。
|
||||
- **P5d 的 Adreno 数字存疑**:X1 证明在 arm64 上注册总是加保护、handler 总是不认领(bionic 指针标记 0xb4 与内核的 `si_addr` 比较),即 mprotect 臂在 Android 上**从未**回答过一次 fault;P5d 报告里把收益记在 mprotect 臂上的设备测量需要重取(`P5D-INPROC-PERFORMANCE.md`)。归优化阶段,不阻塞 P7。
|
||||
- **B2 返工留下的记录债(`notes/p7/magma-b2.md` §6,ID-P7-35/37)**:(1) 多重采样颜色 resolve 的第二段 `vkCmdBlitImage` 不裁剪目的矩形(越界 = `VUID-vkCmdBlitImage-dstOffset-00248/00249`),与 monolith 臂共有,两臂一起裁是独立的活;(2) `MagmaWireFatal("multisample-resolve-region")` 对源矩形越出读缓冲的 blit 仍带走会话——GL 说那些像素未定义而非错误,应 decline 或钳制;(3) 1 → N 等矩形 decline 拒绝的是合法形状(18.3.1 样本复制),Vulkan 无对应命令、monolith 的可观测本身是 VU 违规;(4) tcp 车道带不了 server 端测试旋钮——六条 knob 条目只在 split + spawn,`spawn_lane_parity.py` 的 `MAGMA_SERVER_ENV_KNOB_NO_TCP` 具名;收回要 `tcp_server_fixture.py` 接受每用例 server 环境;(5) X 镜像与跨格式 Y 镜像的深 / 模板 resolve 以规则 I(a) 具名 decline(合法 blit);跨格式那条在 renderbuffer 与 texture 的 D24S8 映射到不同 `VkFormat` 的设备上会让 `MsFlip.` 变红;(6) **monolith `DirectVulkan` 臂的翻转 / 缩放多重采样深度 blit**:翻转被拒(目的地保持清屏值、无错误)、缩放被执行(GL 说 `INVALID_OPERATION`)——wire 与 monolith 的分歧,wire 臂是更正确的一方,monolith 修正归 P13 / G1;(7) **Espryt(DirectGLES)的翻转 / 缩放多重采样深度 resolve**:翻转什么也不写且不报错、缩放不报错——P3b / P4b 债;用例在这两类条目上以具名理由 `Skipped`。
|
||||
- **B3 复审留下的记录债(`notes/p7/magma-b3.md` §7.2,ID-P7-36/37)**:`WaitForFrameSerial` 在 disagg 构建上等的是第一条 `frameSerial >= serial` 的记录,钳制之后若更晚的记录(S2 Present)持有同一序号则地板到不了 `serial`,函数返回 true 而 `IsFrameSerialComplete(serial)` 为 false——唯一调用者 `WaitForTimerQueryResult` 重查就绪,今天退化为一次假超时;修法归 **B4**(只在 `IsFrameSerialComplete` 为真时返回,否则从头重扫,不能 continue)。陈旧注释两处(`CollectAllDeferredReleases` 的「mid-frame drains do not advance m_frameSerial」、`WaitForFrameSerial` 的「floor still advances after one fence wait」)归 B4 一起改。disaggregated 构建的 monolith 臂在中帧 flush 下比 pull 构建更可靠(`OnSubData` 经 `IsResourceBusy` 读同一地板),pull 构建的 `#else` 逐字保留、潜在缺陷由 G1 与 P13 持有。
|
||||
- **V1 留下的记录债(`notes/p7/verify-split.md` §6,ID-P7-37)**:verify 在 spawn 上需要一个跨进程的比对形状(server 把读到的字段值随回复带回、client 比),门 2 的文本是 `{monolith, split(inproc)}`;server `ReadPixels` 窗口里 pack 半边的字段级盲区很窄(只有恰等于中性 pack 的错推送不可见);DirectGLES × split 上四条 Magma decline 契约用例按名从 verify-split 车道减掉——Espryt 是否 decline 这些形状归 P3b / P4b。
|
||||
- **F 片 1–3 之后(`notes/p7/ph-f.md` §4,ID-P7-37)**:`wireFingerprint` 随 `Welcome.dataNonce` / `DataBind` 变更(`0x7d4470f241d23539` → `0x03c4c293a54b3e08`),旧 server 与新 client 按指纹互拒——设备上的 server 必须随下一个 APK 重部署;D11 五处 + PH-2、PH-6、PH-1 (3)(4)、PH-7 (5)(fork 前认证)未做,前置是一个能向 spawn / TCP server 投递畸形记录的对端字节驱动(fuzz 臂 2 的第一块),包 **F2**。
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
|
||||
**阶段: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`(B3 + ID-P7-33/34);集成树 `~/w7/pipe` = `75858bfd`(B2 返工 r1 + B3 返工 + V1,未推:等 B2 r2 与 V1 门 / 审查,ID-P7-35/36)。
|
||||
**更新:2026-09-22 夜** · `origin/feat/disaggregated` = `3c80cd62`(= 旧 1135c664 的树,提交尾注已按用户令改写并强推);集成树 `~/w7/pipe` 领先 20+ 提交(B2 返工 r1/r2、B3 返工 + 修复轮、V1、F 片 1–3),门全绿,等 fable 审查后推送(ID-P7-37)。
|
||||
|
||||
## 1. 出口门总览(CONTRACT-P7 §8 的 9 项分母)
|
||||
|
||||
| # | 子系统 | 状态 | 证据 |
|
||||
|---|---|---|---|
|
||||
| 1 | Magma 两进程车道三臂同数绿 | ✅ | `integration-magma-{split,spawn,tcp}` 96 / 75 / 71,full-split 535(pipe `75a64ce0`;tcp 少 6 条 = 六个 server 端旋钮条目的具名 parity 例外 `MAGMA_SERVER_ENV_KNOB_NO_TCP`);OpenRA DirectVulkan inproc + spawn 回放 1.000000 且 0 条 `unsound-serial-complete`(B3 的新红条件已进 pipe 门) |
|
||||
| 1 | Magma 两进程车道三臂同数绿 | ✅ | `integration-magma-{split,spawn,tcp}` 97 / 76 / 71,full-split 535(pipe,B2 r2 + B3 修复之后;tcp 少 6 = 六个 server 端旋钮条目的具名 parity 例外 `MAGMA_SERVER_ENV_KNOB_NO_TCP`);OpenRA DirectVulkan inproc + spawn 回放 1.000000 且 0 条 `unsound-serial-complete`(每个包的门都跑) |
|
||||
| 2 | §3.2 六个 `@P7` 退役 | ✅ | A(byte-tail、native-range、对齐 decline)、B(copy-image、default-color-blit、mip 半退役)、B2(multisample shape/aspect)、C(vertex-layout 拆分);树上 `@P7` 拒绝站点 **0** |
|
||||
| 3 | `StateObjectDeathOps` | ✅ | C,`dce9953d..cf7ca59f` |
|
||||
| 4 | 烘焙 (A)(D) + (B′) | ✅ | B 深度 mip 烘焙;B2 disaggregated 构建的 monolith 臂改用烘焙模块 |
|
||||
| 5 | OQ-8 反射归档 `storageBlocks` | ✅ | C |
|
||||
| 6 | OQ-10 `kCapResidentSubData` 按 server 表发布 | ✅ | C |
|
||||
| 7 | verify × split(门 2) | 🔄→✅ | **V1 已报告并 cherry-pick 到 pipe**(`a1d17566..75858bfd`):monolith verify 1136 不变、`integration-verify-split` 1070(DirectGLES 533 / DirectVulkan 537,逐条 inproc 武装证明)、`VERIFY_CORRUPT` 10/10 红、`POISON_OMIT` 2/2 红(split 臂)、8 verify trace × DV × inproc 0 分歧;verify 只能 inproc(比对器要求推送态与 GL 上下文同进程);pipe 门 + fable 审查在跑 |
|
||||
| 7 | verify × split(门 2) | ✅(修复轮在跑) | V1 落地 pipe:pipe 的 verify 构建上 monolith verify **1140**、`integration-verify-split` **1074**(双后端 inproc,逐条武装证明)全绿;`VERIFY_CORRUPT` 10/10 红、`POISON_OMIT` 2/2 红(split 臂);8 verify trace × DV × inproc 0 分歧;verify 只能 inproc(比对器要求推送态与 GL 上下文同进程);fable 审查 land with fixes(server 侧 read hook 补红、poison 分角色、中性 pack 共享函数、逐条武装证明)→ 修复轮在跑 |
|
||||
| 8 | 真机 ssim 1.0(门 3,分母 36) | 🔄 | p7w4:34/36 与 monolith 差 ≤ 0.0005;**OpenRA 已关**(ID-P7-33/34:真因 = wire 臂 frame-serial floor 不健全,B3 修;p7w5 **27/27 golden**,[`W5-verify/`](notes/p7/device-window-1/W5-verify/README.md));**bsl-esc-menu** = server 死 VkBuffer 无界累积(ID-P7-32,**M2** 在修);终局形式(三遍逐位 + spawn 臂同会话)留 p7w6 |
|
||||
| 9 | CTS 五块 AFTER ≤ 0.5 pp(门 5) | ⏳ | `$BASE` 已取(`notes/p7/device-window-1/CTS-base/`);AFTER 在 wave 4 |
|
||||
|
||||
@@ -41,6 +41,9 @@
|
||||
| B2 返工 r1 | tcp 五条 server 端旋钮条目改 split+spawn(parity 例外 `MAGMA_SERVER_ENV_KNOB_NO_TCP`)、翻转 MS 深/模板 resolve 逐行镜像、缩放 / X 镜像 / 跨格式 decline、`MsFlip.` 用例 | pipe `9fed478d..cc3c18c5`(审查 rework → r2 在跑,ID-P7-35) |
|
||||
| B3 返工 | `WireDeclines.def` 53 行全站点 + 审计脚本、`StaleSerial.` parity 例外、注记 + `:273`/`:432`、`run_trace_case.cmake` 对 `unsound-serial-complete` 打红 | pipe `b8d10d07..75a64ce0`(审查 land with fixes → 修复轮在跑,ID-P7-36) |
|
||||
| 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) |
|
||||
|
||||
## 3. 真机(Redmi 2f7cbe2e,Adreno 830)
|
||||
|
||||
@@ -48,25 +51,26 @@
|
||||
- p7w4 结论([`W4-verify/README.md`](notes/p7/device-window-1/W4-verify/README.md)):OpenRA 是与温度无关的约 50% 竞态、只出三张图;调色板纹理逐字节正确;错像素 100% 落在 call 30376 一次 draw 的 quad 前缀里;机制由裁判裁定并由 B3 计数证实。
|
||||
- bsl-esc-menu-854:monolith 807 MiB 过,spawn 的 server 1.2 GiB 死(scudo `internal map failure`);M1 归因 = 死 VkBuffer 无界累积(一帧 1.3 M 调用、整跑 2 次 swap);M2 修复中。
|
||||
|
||||
## 4. 在跑(agent;2026-09-22 夜六包撞 session limit 后按 worktree 未提交 diff 重派,实现方 `claude-opus-5-5`,审查方 fable)
|
||||
## 4. 在跑(agent;实现方 `claude-opus-5-5`,审查方 fable)
|
||||
|
||||
| 包 | 内容 | 状态 |
|
||||
|---|---|---|
|
||||
| B2 返工 r2 | 用例按 `IsSplitLane()` skip(monolith DirectVulkan / Espryt 两条新 §12 行)、逐行拷贝行距对齐 + stencil 腿 red-once、部分效应陈述、两个 `MGLOG_E_ONCE`、`MsFlip1.`、§7 双行 | 进行中(ID-P7-35) |
|
||||
| B3 修复轮 | 审计剥注释 / 字面量 + 按块回溯 + `--self-test`、`run_trace_case.cmake` spawn server 日志缺失 fail-closed、注记标「包树」+ §12 `WaitForFrameSerial` 债 | 进行中(ID-P7-36) |
|
||||
| B2 r2 审查 | fable:skip 逻辑覆盖、行距对齐算术、decline 先决定的位置、parity 恰匹配、场景腿的 GL 依据 | 进行中 |
|
||||
| B3 修复轮审查 | fable:剥注释 / 字面量的边界、块回溯规则、自测覆盖、spawn fail-closed | 进行中 |
|
||||
| V1 修复轮 | server 侧 read hook 红、poison 分角色、`MGPipeNeutralReadPixelsPack()`、逐条武装证明 + 具名例外表、措辞 | 进行中(Agent 通道) |
|
||||
| M2 | `VkBufferManager` serial 门控回收(不假设帧有界)+ `MOBILEGL_IPC_WIRE_DEFERRED_MB` 水位线 + spawn red-once | 进行中 |
|
||||
| V1 审查 | fable:放宽的形状、比对器 oracle 收窄(server ReadPixels 窗口的盲点)、`PipeInputs.cpp` 越分区改动、车道武装证明、inproc-only 的理由 | 进行中;pipe 门含首次 `build-verify` |
|
||||
| F | Ph 小件:slice 1 令牌(常量时间 / ≥16 字节 / `Refuse{Authentication}` / smoke 接 CI)收尾 → `Welcome.dataNonce` → PH-8 → D11 + PH-2 → PH-6 → PH-1 (3)(4) | 进行中 |
|
||||
| E1 | Iris trace 普查(39 × 2 后端 × 3 臂)+ `MEASUREMENTS.md` §7.2 同名重跑 + P9 例外表 | 进行中 |
|
||||
| F 门 | pipe 上 F 片 1–3 的全门(tcp 车道 + smoke + flatc) | 进行中 |
|
||||
|
||||
## 5. 下一步(按序)
|
||||
|
||||
1. B2 返工 r2 落地 → pipe 全门(含 DirectGLES 三条 split 车道)→ fable 复审 → 推送(B3 返工同批)。
|
||||
2. M2 落地 → p7w6 APK → bsl-esc-menu spawn 臂通过 → 门 3 分母 36 全部与 monolith 同(三遍逐位相同 + spawn 臂,§7.2)。
|
||||
3. **B4**:裁判的 `WaitForSubmitsUpTo` 聚合等待(`Present:14094` / `WaitForSubmitIndex` / `WaitForFrameSerial`)+ 裁判点名的 Magma 债(§12)。
|
||||
4. wave 3 余项:`MEASUREMENTS.md` §7.2 同名重跑、Iris trace 普查(39 × 2 后端 × 2 传输)、棘轮 88 的 monolith draw 路径 `#if`。
|
||||
5. wave 4:CTS AFTER(inproc × DV 五块 vs `$BASE`,≤ 0.5 pp,新增 crash = 0)、门 3 终局三遍。
|
||||
6. wave 5:F 余片、fuzz 三臂、P7 收官异模型整体审查(ID-66)。
|
||||
1. B2 r2 / B3 修复轮审查绿 + 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)。
|
||||
5. wave 3 余项:`MEASUREMENTS.md` §7.2 同名重跑、Iris trace 普查(39 × 2 后端 × 2 传输)、棘轮 88 的 monolith draw 路径 `#if`。
|
||||
6. wave 4:CTS AFTER(inproc × DV 五块 vs `$BASE`,≤ 0.5 pp,新增 crash = 0)、门 3 终局三遍。
|
||||
7. wave 5:F 余片、fuzz 三臂、P7 收官异模型整体审查(ID-66)。
|
||||
|
||||
## 6. 阻塞 / 需要人
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -39,4 +39,5 @@
|
||||
| ID-P7-34 | 2026-09-22 | **OpenRA 真机项关闭**:p7w5(`713bea9a`,B3 之上)验收 **27/27 golden**——inproc / spawn × run-ahead / lockstep × 冷 / 热各 3、`FRAMESINFLIGHT=8` ×3(p7w4 上 6/6 红)、dump-armed ×3(p7w4 上 0/5 绿),全部 ssim 1.000000 / 0 px / `ace2af04`;iterationt ×2 与 26.3 逐位同 p7w4(`W5-verify/README.md`)。B3 的 fable 审查「带修复落地」(tcp `StaleSerial` 条目空转 → parity 例外;floor 钳位无车道 → `run_trace_case.cmake` 对 split 回放里的 `unsound-serial-complete` 行打红;`02bb5789` 的注记把提交项当成修复且仍讲 drain 机制 → 改写、`:273` 加 `IsSubmitIndexComplete(lastUseSubmitIndex)`、`:432` 重打戳;`WireDeclines.def` 53 行里 12 行无站点、纹理站点只计数 → 补齐或删行)交 B3 返工一轮;审查确认 floor 算术对每种顺序精确、`#else` 逐字、无卡死模式,并**否决**裁判的次级「聚合等待」为非缺陷(fence 信号覆盖更早的提交序工作;B 的回读洞是相反形状)——B4 降为后续包(GPU-drag 回归门 + §12 债)。§12 新债:disaggregated 构建的 monolith 臂在中帧 flush 下比 pull 构建更健全(`OnSubData` 经 `IsResourceBusy` 读同一 floor),pull 构建保留该潜在 bug(G1,P13)。 | 门 3 分母 36 现在只剩 bsl-esc-menu(M2)与 §7.2 终局形式。 | `W5-verify/`、`CONTRACT-P7.md` §7.2 |
|
||||
| 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-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