[docs] (P7): HANDOFF-2026-09-22.md rewritten to the session's end state - nothing left to land, one matrix still running, the queue starts at p7w6

This commit is contained in:
2026-09-22 23:15:28 -04:00
parent 3374becde1
commit 0e16ca272e
@@ -1,60 +1,77 @@
# P7 集成交接(2026-09-22 夜,集成者会话收尾)
# P7 集成交接(2026-09-22 深夜,集成者会话结束态)
> 这一页是给接手 agent 的**机械清单**:哪些已落地、哪些在跑、哪些没做完、每一步的命令。裁定与数字见
> `INTEGRATOR-DECISIONS-P7.md`(到 ID-P7-43)、`CURRENT_STAGE_STATUS.md`、`MG_Remote/CONTRACT-P7.md`。
> `INTEGRATOR-DECISIONS-P7.md`(到 ID-P7-48)、`CURRENT_STAGE_STATUS.md`、`MG_Remote/CONTRACT-P7.md`(§12 = 债)。
> 本页在 2026-09-22 深夜整页重写过一次:之前版本里「M2 r2 待落地」「六个 agent 在跑」都已经不是现状。
## 0. 铁律(不变)
- 只在 WSL `~/w7/pipe`(集成树)和各 `~/w7/p7-<slug>` 包树工作;**绝不碰** Windows 主 dev 树 `…\FoldCraftLauncher\MobileGL`;Windows 侧只用 worktree `…\MobileGL-disagg`。
- **绝不从 Windows 经 UNC 对 `~/w7/pipe` 跑 git**(会留下 `.git/index.lock`);git 只在 WSL 里跑。
- 推送只按 SHA:`git fetch wslpipe feat/disaggregated && git merge --ff-only FETCH_HEAD && git push origin <sha>:refs/heads/feat/disaggregated`(Windows worktree)。
- **提交禁止任何 `Co-Authored-By` 尾注**(用户明令;`scratchpad/pick.sh` 在 `--amend` 时自动剥)。
- 性能只记录不做门;不顺手修 `dev` 的 bug;每包一次 fable 审查;rule I / J / G1 / G14 见 CONTRACT-P7 §0。
- 给子代理的 prompt 必须先写明层级(常设指令 + 「最新一句已由集成者执行」),否则它们会把用户最新一句当唯一指令拒做;需要 Opus 5.5 时走 Workflow `model:"claude-opus-5-5"`(Agent 工具的 `opus` 仍是 Opus 5),本轮因拒做问题全部改走 Agent 工具 + fable。
- `wsl.exe -d Arch -- bash -lc '…$x…'` 会吞 `$var`:**一律写脚本文件**再 `MSYS_NO_PATHCONV=1 wsl.exe -d Arch -- bash /mnt/c/…/x.sh`;长输出别 `| head`(SIGPIPE 会杀脚本),重定向到日志再看。
- **绝不从 Windows 经 UNC 对 `~/w7/pipe` 跑 git**(会留下 `.git/index.lock`);git 只在 WSL 脚本里跑,读文件走 UNC 可以。
- 推送只按 SHA:Windows worktree 里 `git fetch wslpipe feat/disaggregated && git merge --ff-only <sha> && git push origin <sha>:refs/heads/feat/disaggregated`;绝不按分支名 force-push。
- **提交禁止任何 `Co-Authored-By` 尾注**(用户明令;`~/w7/notes/tools/pick.sh` 在 `--amend` 时自动剥;手工 `cherry-pick --continue` 之后要自己 amend 掉)。
- **审查由集成者会话本人做**(用户 2026-09-22 叫停 fable 审查代理):只读、对着 pipe 源码而不是包 note 核对、按 file:line 出 verdict(land / land with fixes / rework),文本放 `docs/Disaggregated/notes/handoff/review-<pkg>.md` 并复制到 `~/w7/notes/handoff/`。
- 性能只记录不做门;不顺手修 `dev` 的 bug;rule I / J / G1 / G14 见 CONTRACT-P7 §0。
- 给子代理的 prompt 必须先写明层级(常设指令 + 「最新一句已由集成者执行」),否则它们会把用户最新一句当唯一指令拒做;需要 Opus 5.5 时走 Workflow `model:"claude-opus-5-5"`(Agent 工具的 `opus` 仍是 Opus 5)。
- `wsl.exe -d Arch -- bash -lc '…$x…'` 会吞 `$var`:**一律写脚本文件**再 `MSYS_NO_PATHCONV=1 wsl.exe -d Arch -- bash /mnt/c/…/x.sh`;长输出别 `| head`(SIGPIPE 会杀脚本),重定向到日志再看;Bash 工具里带撇号 / 多层 heredoc 的脚本会解析失败,用 Write 工具落盘再跑。
## 1. 现状(本会话结束时)
> **2026-09-22 深夜补记(ID-P7-44..48)**:M2 r2、X2、V1 修复 r2 都已落地并推送——`origin/feat/disaggregated` = V1 修复 r2 的头 `336174e3` 加其上的这笔 docs 提交;§2 表中 M2 审查 / M2 r2 / F 修复轮审查 / B3 r3 + B2 r4 审查 / V1 修复 r2 / X2 各行**已完成**(审查文本在 `notes/handoff/review-*.md`),§4 第 1 项完成;wire 臂的 memo ABA 已关。窗口 1b 矩阵仍在跑:中期读数与「手机 60 s 息屏切断 child TCP」的假设、以及重跑前该做的 `svc power stayon true`,见 ID-P7-48——写报告的人请先看它。
- `origin/feat/disaggregated` = `~/w7/pipe` 头 = **`3374becd`**(树干净,全分支零尾注)。在 `87584d0b` 之上新落地:B3 修复 r2 / r3、V1 修复 r1 / r2、B2 r3 / r4、M2 + **M2 r2**、F 修复轮、X2、docs 到 ID-P7-48。每一步的门都全绿;`InitialCapsStartup.ANullInitialSnapshot…` 的偶红已由 X2 消掉(真因是夹具按 accept 顺序配对 loopback 连接)。
- **推送头上没有已知的正确性缺口**:M2 审查的 must-fix(memo 按裸 VkBuffer 句柄命中 → 中帧 UAF)已由 M2 r2 关闭(`VkBufferManager::m_wireStoreDestroyEpoch` 进 `UniformManager` 两个 memo,ID-P7-46)。余债全部在 CONTRACT-P7 §12。
- 门(模板 `~/w7/logs/p7-gate-template.sh`,增量构建下一轮约 6 min)在 `336174e3` 上的读数:unit 2436 / split 304 / spawn 220 / tcp 223 / magma 101 / 80 / 71 / full 539 / verify 1150 / 1084;G1 `.text` 0xa52203 nm +0/−0;普查 79;棘轮 173;parity 0;审计 53/53/0;OpenRA DirectVulkan inproc + spawn 回放 ssim 1.000000、0 条 unsound。
- Windows worktree `…\MobileGL-disagg` 也在 `3374becd`。
- 手机(Redmi 2f7cbe2e):装的是 **p7w5**(`top.mobilegl.plugin.p7w1.trace`,`c89000f5` 提交的 stamp `p7w5-c89000f5`),supervisor `0.0.0.0:40613`,token `p7w1b-lan-token-20260922`;主机侧同 stamp 制品 `~/w7/logs/p7w5host/host/`(树 `~/w7/p7-w5host`)。**p7w5 不含 F 的 wireFingerprint 变更**:用 pipe 头的制品连它只会 `no Welcome (rc=6)`,所以下一次真机验收先要 p7w6(§4 第 1 项)。
- 手机电源:`screen_off_timeout` = 60 000 ms,AC 供电(`stay_on_while_plugged_in` = 2 只对 USB),所以每例 `wake-adb` 点亮后约 60 s 息屏——见 §2 的假设。
- 用户已加 WSL 路由 `192.168.21.181/32 via 192.168.31.1 dev eth0 metric 10`(重启 WSL 会丢,需重加)。
- **没有在跑的 agent。**所有派出的包与审查都已收尾(§2 第二张表)。
- `origin/feat/disaggregated` = **`87584d0b`**(尾注已改写;B2 r1/r2、B3 返工 + 修复轮、V1、F 片 1–3、E1)。
- 集成树 `~/w7/pipe` 头 = 见 `git log`(B3 修复 r2/r3、V1 修复轮、B2 r3/r4、M2、F 修复轮、docs 到 ID-P7-43);每一步的门都全绿(唯一红 = `InitialCapsStartup.ANullInitialSnapshot…` flake,X2 在修)。**推送时机**:接手者先跑一次 `~/w7/logs/p7-gate-template.sh`(`sed s/TAG/<tag>/g`),绿即推。
- 手机(Redmi 2f7cbe2e):装的是 **p7w5**(`top.mobilegl.plugin.p7w1.trace`),supervisor `0.0.0.0:40613`,token `p7w1b-lan-token-20260922`;主机侧同 stamp 制品 `~/w7/logs/p7w5host/host/`(树 `~/w7/p7-w5host`)。
- 用户已加 WSL 路由 `192.168.21.181/32 via 192.168.31.1 dev eth0`(重启 WSL 会丢,需重加)。
## 2. 在跑的 agent(结果会写到 `~/w7/notes/handoff/`)
| 名 | 树 / 产物 | 接手动作 |
## 2. 在跑的东西 / 已完成的报告
| 在跑 | 位置 | 接手动作 |
|---|---|---|
| M2 审查 | `~/w7/notes/handoff/review-m2.md`(verdict land with fixes,**一条 must-fix**:memo 句柄复用 ABA) | 已派 **M2 r2**(fable)修;结果 `~/w7/notes/handoff/m2-r2.md` |
| M2 r2(fable) | `~/w7/p7-magma-m2` 在 `6f67fd7f` 之上的新提交 | cherry-pick → 门 → 审查 → 推 |
| F 修复轮审查 | `~/w7/notes/handoff/review-f-fix.md` | 按 verdict 派修复轮或落地 |
| B3 r3 + B2 r4 审查 | `~/w7/notes/handoff/review-b3r3-b2r4.md` | 同上 |
| V1 修复 r2(fable) | `~/w7/notes/handoff/v1-fix-r2.md`,树 `~/w7/p7-verify-split` 在 `723bb93f` 之上 | cherry-pick → 门(含 verify 构建)→ 审查 |
| X2 flake(fable) | `~/w7/notes/handoff/x2-caps-flake.md`,树 `~/w7/p7-x2-caps-flake` | cherry-pick → unit 门 |
| 窗口 1b 矩阵 | `~/w7/logs/p7w1b/paced.log`(`=== ALL DONE` 结束)、`~/w7/logs/p7w1b/paced/pass{1,2}/<case>/`(driver.log、client log、phone-logcat.txt) | 写 `notes/p65/window-1b-p7w5.md`(每例状态 / 原因 / 两遍是否一致;已知:main-menu 类 server 死亡、OpenRA 偶发 `ReadbackDeclined`、1.21.11-main-menu 超时)+ ID + CONTRACT-P7 §7 |
| 窗口 1b 配速矩阵(39 例 DirectGLES × TCP,WSL client ↔ 手机 p7w5,逐例 3 s 间隔、两遍) | `~/w7/logs/p7w1b/paced.log`(`=== ALL DONE` 结束;写这句时 46 / 78 例)、`~/w7/logs/p7w1b/paced/pass/<case>/`(`driver.log`、`results.json`、`phone-logcat.txt`、`DirectGLES/…/work/output/mobilegl.{client,server}.log`) | 等 `ALL DONE` 后写 `notes/p65/window-1b-p7w5.md`(每例状态 / 原因 / 两遍是否一致)+ ID 行 + CONTRACT-P7 §7。**先看 ID-P7-48**:pass 1 27/39 红,主因是 `DEVICE LOST`(client 日志「the barrier woke on a peer that had hung up」= 对端 TCP 挂断;随后的 `Fatal{UncarriedInitialBytes, "resource_respecify"}` 是 `PipeFill.cpp:1080` 的下游判定,不是原因),其中 11 例失败时长聚在 **57–61 s**,pass 2 同例已有 3 例转绿,`am_kill` / `logcat -b crash` 在本轮时段无记录 → **假设 = 息屏后 MIUI 后台策略切断 child 的 TCP**。本会话没改设备状态(保持两遍同口径)。重跑前:`adb -s 2f7cbe2e shell svc power stayon true`(或 `settings put system screen_off_timeout 1800000`),并把 supervisor 对 child 的 reap 行纳入每例采集(现在 `phone:` 列只抓每例开头 0.5 s 的 logcat,`paced-inner.sh:24-28`)。其他已见:1.21.11-main-menu 超时、OpenRA 偶发 `Fatal{ReadbackDeclined,"ReadPixels"}`、xaero-minimap pass 2 rc=124。 |
| 已完成 | verdict | 文本 |
|---|---|---|
| M2 审查(fable) | land with fixes,一条 must-fix → M2 r2 | `notes/handoff/review-m2.md` |
| M2 r2(fable 实现,集成者审查) | **land**,已推(ID-P7-46) | `notes/handoff/m2-r2.md`、`review-m2-r2.md` |
| F 修复轮审查(集成者) | land,两 nit 记 §12(ID-P7-44) | `notes/handoff/review-f-fix.md` |
| B3 r3 + B2 r4 审查(集成者) | land(ID-P7-44) | `notes/handoff/review-b3r3-b2r4.md` |
| V1 修复 r2(fable 实现,集成者审查) | **land**,已推(ID-P7-47) | `notes/handoff/v1-fix-r2.md`、`review-v1-fix-r2.md` |
| X2 flake(fable) | test-only,已推(ID-P7-45) | `notes/handoff/x2-caps-flake.md` |
(`notes/handoff/` = 仓库 `docs/Disaggregated/notes/handoff/`,WSL `~/w7/notes/handoff/` 各一份。)
## 3. 机械步骤(每包相同)
```bash
# 1) cherry-pick(自动剥尾注;有冲突会停)
bash ~/w7/notes/tools/pick.sh <worktree-name> <base-sha> <sha…> # 脚本在本会话 scratchpad,或重写:逐个 cherry-pick + amend 掉 Co-Authored-By
# 2) 门(模板:build-split + build-linux G1 + census + ratchet + parity + 八车道 + 审计 + OpenRA split 回放 + verify 构建)
# 1) cherry-pick(自动剥尾注;有冲突会停在 CHERRY_PICK_HEAD)
bash ~/w7/notes/tools/pick.sh <worktree-name> <base-sha> <sha…>
# 冲突:改好文件 → git add <file> → git -c core.editor=true cherry-pick --continue (不接 -q)
# → git commit --amend -F <(git log -1 --format=%B | grep -v -i co-authored-by) (剥尾注)
# → 再用 pick.sh 拣剩下的 sha;pipe 上 `git status --short` 必须为空、无 CHERRY_PICK_HEAD 才能开门
# 2) 门(build-split + build-linux G1 + census + ratchet + parity + 八车道 + 审计 + OpenRA split 回放 + verify 构建两车道)
sed 's/TAG/<tag>/g' ~/w7/logs/p7-gate-template.sh > ~/w7/logs/p7-gate-<tag>-inner.sh
sed -i '2i export MOBILEGL_FLATC_EXECUTABLE=/home/swung/w7/flatc-build/flatc' ~/w7/logs/p7-gate-<tag>-inner.sh
rm -f ~/w7/pipe/build-split/Testing/Temporary/LastTestsFailed.log
rm -f ~/w7/pipe/build-split/Testing/Temporary/LastTestsFailed.log ~/w7/pipe/build-verify/Testing/Temporary/LastTestsFailed.log
setsid nohup bash ~/w7/logs/p7-gate-<tag>-inner.sh > ~/w7/logs/p7-gate-<tag>.log 2>&1 < /dev/null & disown # 等 "=== DONE-VERIFY"
# 3) 审查:fable、只读、按 file:line 出 verdict(land / land with fixes / rework)
# 4) 文档:INTEGRATOR-DECISIONS 加一行 ID、CURRENT_STAGE_STATUS §1/§2/§4/§5、ROADMAP P7/Ph/P3b 行、CONTRACT-P7 §12 抄包 note 的债;
# python3 scripts/check_doc_citations.py --rev HEAD --strict docs/Disaggregated/*.md docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md MobileGL/MG_Remote/CONTRACT-P7.md
# 5) 推送(Windows worktree):git fetch wslpipe feat/disaggregated && git merge --ff-only FETCH_HEAD && git push origin $(git rev-parse HEAD):refs/heads/feat/disaggregated
# 读数行:`lane <name> … out of N`(八车道)、`verify-build lane <name> … out of N`(verify 两车道,前缀不同)、
# `G1 syms added=0 removed=0`、`fatal census: 79 abort sites`、`ratchet: unchanged at 173`、`parity errors: 0`、
# 两条 `unsound-serial-complete lines: 0`、`wire-declines: 53 rows, 53 with sites, 53 site(s) total, 0 unlogged, 0 unknown`
# 3) 审查:集成者本人,只读,对 pipe 源码核对,file:line 出 verdict;文本放 notes/handoff/review-<pkg>.md
# 4) 文档:INTEGRATOR-DECISIONS 加一行 ID、CURRENT_STAGE_STATUS §1/§2/§4/§5、ROADMAP P7 行、CONTRACT-P7 §12 抄包 note 的债、本页;
python3 scripts/check_doc_citations.py --rev HEAD --strict docs/Disaggregated/*.md docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md docs/Disaggregated/notes/p7/HANDOFF-2026-09-22.md MobileGL/MG_Remote/CONTRACT-P7.md
# 5) 推送(Windows worktree):git fetch wslpipe feat/disaggregated && git merge --ff-only <sha> && git push origin <sha>:refs/heads/feat/disaggregated
# 6) Claude Docs 主进度页(34576d4c-…)「最近落地」顶部插一段、「此刻在跑」改一句;记忆 disaggregated-plan.md
```
pipe 的 tcp fixture 端口是 40713(`build-split`)、40714(`build-verify`),别改回 40613(会撞包树的 fixture)。
- pipe 的 tcp fixture 端口是 40713(`build-split`)、40714(`build-verify`),别改回 40613(会撞包树的 fixture)。
- `scripts/ci/spawn_lane_parity.py` 在 pipe 上的 `MAGMA_SERVER_ENV_KNOB_NO_TCP` 按**精确 tail** 例外(包分支 M2 是按前缀):每个新的 split/spawn-only 用例都要补一行,否则 `parity errors: 1`(M2 r2 门上唯一的红就是这个)。两次合并后要删掉自动合并残留的 `not_on_arm = not_on_arm or {}`。
- 包分支上写不了、只在 pipe 有的字段(B3 的 `lastUseSubmitIndex` 一类):拣完后单独一笔 `[MG_Backend] (P7): …` 提交,不塞进包的提交。
- red-once 变体必须把 `MobileGL`、`MobileGLServer`、`MobileGLIntegrationTest` 三个目标都建:桌面上 `MobileGLIntegrationTest` 静态链接 `MobileGL_s`,Split 臂跑的是编进测试二进制的 backend(magma-m2.md §9.3)。
## 4. 没做完的(按优先级)
1. **M2 r2 must-fix 落地**(见 §2)——在它落地前,wire 臂有一处已知的中帧 use-after-free 可达点(memo 按裸 VkBuffer 句柄命中)。
2. **p7w6 APK + 手机 server 重部署**:`sed 's/p7w5/p7w6/g' ~/w7/logs/p7w5-apk-inner.sh > ~/w7/logs/p7w6-apk-inner.sh`(在 pipe 头上跑;stamp `p7w6-<head>`;产物 `~/w7/logs/p7w6/trace-p7w6.apk`;`adb install -r`;`tcp_device_server.py start …`(见 `supervisor-start.sh`,改 token ≥16 字节)。**F 改了 wireFingerprint:旧 server + 新 client 只会 `no Welcome (rc=6)`**。然后:bsl-esc-menu-854 DirectVulkan pbuffer spawn + inproc 各 3 遍(M2 的设备验收,记 maps 与 `wbuf[]` 行)、窗口 1b 用 p7w6 重跑一遍(对照 `DataBind` 是否消除 250 ms 配对窗口)、门 3 终局(分母 36:三遍逐位 + spawn 臂同会话,`run_android_retrace_local.py --matrix --backend DirectVulkan --use-pbuffer --transport inproc|spawn --repeat 3`)。
3. **M3**:descriptor set 在长帧内无界(`UniformManager::AcquireDescriptorSet` 只在 `BeginFrame`/drain 回卷)——按 submit-index 证明回卷每个 layout 的游标;`review-m2.md` 域外 (b)。
4. **B4**:`WaitForSubmitsUpTo` 聚合等待 + `WaitForFrameSerial` 的「答 true 而未完成」(restart 不 continue,且不再读 `record`)+ 两处陈旧注释 + `CollectGarbage`/`pruneWire` 在 wire 臂从不执行(`VulkanRenderer.cpp` `SetupDraw`)+ §12 裁判点名的 Magma 债。
5. **F2**:D11 五处 + PH-2、PH-6 drop-with-latch、PH-1 (3)(4)、PH-7 (5) fork 前认证——前置是能向 spawn/TCP server 投递畸形记录的对端字节驱动(fuzz 臂 2 第一块);`ServerSpawn.cpp` 清洗名单补 `Ipc.SpinUs/ServerAffinity/Audit`(M2 r2 顺带)。
6. **wave 3**:棘轮 88 = monolith draw 路径的 `#if`(`link_ratchet.py --bucket`,`notes/p7/magma-b2.md` §4.3 逐符号点名)。
7. **wave 4**:CTS AFTER(inproc × DV 五块 vs `notes/p7/device-window-1/CTS-base/`,≤0.5 pp,新增 crash = 0;`tools/cts/caselists/`,设备 `/data/local/tmp/mgcts`)。
8. **wave 5**:fuzz 三臂、P7 收官异模型整体审查(ID-66)。
9. 小件:`retrace_gate.py` 只覆盖 monolith 条目——pipe 门现用 `~/w7/logs/pipe-retrace.sh`(借 `~/w7/p7-magma-b3/build-split/tools/trace_replay/mobilegl_trace_replay`);把 `MOBILEGL_BUILD_TRACE_REPLAY=ON` 配进 pipe 的 `build-split` 后可删这层借用。`P5D-INPROC-PERFORMANCE.md` 的 Adreno 数字重取(§12)。测量树 `~/w7/m2-meas*`、`~/w7/rev-*` 可删。
10. 文档同步:Claude Docs 主进度页(`34576d4c-…`)每次落地一段;记忆文件 `disaggregated-plan.md`。
1. **p7w6 APK + 手机 server 重部署 + 真机验收**:`sed 's/p7w5/p7w6/g' ~/w7/logs/p7w5-apk-inner.sh > ~/w7/logs/p7w6-apk-inner.sh`(在 pipe 头 `3374becd` 上跑;stamp `p7w6-3374becd`;产物 `~/w7/logs/p7w6/trace-p7w6.apk`;`adb install -r`;`tcp_device_server.py start …`(见 `~/w7/logs/supervisor-start.sh`,token ≥ 16 字节);主机侧同 stamp 制品照 `~/w7/p7-w5host` 的做法(`-DMOBILEGL_BUILD_STAMP=p7w6-3374becd -DMOBILEGL_BUILD_TRACE_REPLAY=ON`)。**F 改了 wireFingerprint:旧 server + 新 client 只会 `no Welcome (rc=6)`**。先 `svc power stayon true`(§2)。然后依次:(a) bsl-esc-menu-854 DirectVulkan pbuffer spawn + inproc 各 3 遍(M2 的设备验收,记 `/proc/<pid>/maps` 行数与 `wbuf[]` 行;主机 spawn server 已 825 → 546 MiB);(b) 窗口 1b 用 p7w6 重跑一遍(对照 `DataBind` 是否消除 PH-7 (4) 的 250 ms 配对窗口,以及息屏假设是否成立);(c) 门 3 终局(分母 36:三遍逐位相同 + spawn 臂同会话,`run_android_retrace_local.py --matrix --backend DirectVulkan --use-pbuffer --transport inproc|spawn --repeat 3`)。
2. **M3**:descriptor set 在长帧内无界(`UniformManager::AcquireDescriptorSet` 只在 `BeginFrame`/drain 回卷)——按 submit-index 证明回卷每个 layout 的游标;`review-m2.md` 域外 (b)。M2 r2 让每次 wire store 销毁事件后同 program 第一笔 draw 多一个 set(bsl ~2.6 万 / 130 万),是它的分母(§12)。
3. **B4**:`WaitForSubmitsUpTo` 聚合等待 + `WaitForFrameSerial` 的「答 true 而未完成」(restart 不 continue,且不再读 `record`)+ 两处陈旧注释 + `CollectGarbage`/`pruneWire` 在 wire 臂从不执行(`VulkanRenderer.cpp` `SetupDraw`)+ §12 裁判点名的 Magma 债。
4. **F2**:D11 五处 + PH-2、PH-6 drop-with-latch、PH-1 (3)(4)、PH-7 (5) fork 前认证——前置是能向 spawn/TCP server 投递畸形记录的对端字节驱动(fuzz 臂 2 第一块)。F 修复轮的两条小债(`RunSession` 里 `Accept()` 到 `close(sourceFd)` 之间的微秒级无具名拒绝窗口;`protocol_revision_pin.py` 对注释 / 空白改动也要 bump)在 §12,可一并收。
5. **wave 3**:棘轮 88 = monolith draw 路径的 `#if`(`link_ratchet.py --bucket`,`notes/p7/magma-b2.md` §4.3 逐符号点名)。
6. **wave 4**:CTS AFTER(inproc × DV 五块 vs `notes/p7/device-window-1/CTS-base/`,≤ 0.5 pp,新增 crash = 0;`tools/cts/caselists/`,设备 `/data/local/tmp/mgcts`)。
7. **wave 5**:fuzz 三臂、P7 收官异模型整体审查(ID-66)。
8. 小件:`retrace_gate.py` 只覆盖 monolith 条目——pipe 门现用 `~/w7/logs/pipe-retrace.sh`(借 `~/w7/p7-magma-b3/build-split/tools/trace_replay/mobilegl_trace_replay`);把 `MOBILEGL_BUILD_TRACE_REPLAY=ON` 配进 pipe 的 `build-split` 后可删这层借用。`P5D-INPROC-PERFORMANCE.md` 的 Adreno 数字重取(§12)。`X2` 域外债:`AcceptPair`/`ConnectTo` 对 `tcp://` 监听仍可调且按顺序配对(产品从不这样用),未具名拒绝。测量树 `~/w7/m2-meas*`、`~/w7/rev-*`、`~/w7/v1bin`、`~/w7/m2bin` 可删;包树 `~/w7/p7-{magma-m2,verify-split,x2-caps-flake,ph-f,magma-b2,magma-b3,census-e1}` 都已拣完,留着只为查历史。
9. 文档同步:Claude Docs 主进度页(`34576d4c-…`,到 rev 31)每次落地一段;记忆文件 `disaggregated-plan.md`。