[Docs] (Disaggregated): rewrite the staged-progress log as a concise current-state document and link it from the roadmap's status line

This commit is contained in:
2026-09-16 20:45:35 -04:00
parent ef35ea0ce5
commit c77831e0fa
3 changed files with 121 additions and 1392 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,120 @@
# 当前阶段进度
分支 `feat/disaggregated`,头 `7cb29d46`2026-09-16,已推 GitHub)。本文随每次落地更新。
逐条裁定的长文原文在 git 历史里(`git log -p -- docs/Disaggregated/CURRENT_STAGE_PROGRESS.md``ef35ea0c` 之前的版本 = ID-1..75 全文)。
## 1. 阶段状态
| 阶段 | 状态 | 范围 |
|---|---|---|
| P0 / P0.5 / P1 / P2 / P3a / P4a | 已落地 | 见 `ROADMAP.md``MEASUREMENTS.md` §1–§25 |
| **P5** 首个 IPC 帧(reduced path | **已收官** | `ff2994d9..37fc4fdb`,八包 + j0/x2/ap/docs |
| **P5b** inproc 下的 verb 迁移 | **代码已落地,测量未收口** | `37fc4fdb..7cb29d46` |
| P6 spawn transport | 未开始 | 排在 P5b 之后 |
## 2. 当前头实测
| 门 | 结果 |
|---|---|
| 构建 | pull / push / verify / split 四个 flavour 全部通过 |
| G1pull 符号恒等) | `.text +0`27814 符号 0 增 / 0 删 / 0 resize / 0 重命名 |
| unit | pull / push / verify 各 1817/1817split 2138/2138 |
| `integration-split`inproc | **107/107**P5 收官时 22 |
| `integration-gpu`push | 1148/1148 |
| `integration-gpu`split,单体传输) | 1267/1267 |
| G5p3a / p4a 保护区) | 双绿 |
| 集成普查(inproc,测于 `348d22a4` | 811 passed / 203 skipped / 62 aborted,共 1267 |
## 3. P5b 落地内容
| 包 | 迁移的槽 / 内容 | 效果 |
|---|---|---|
| c0b | 25 个已测量 class-C 槽的 wire 记录、`WireVerbSink` 分派、具名 Fatal stub、`CONTRACT-P5B.md` | 四包可并行 |
| f1 | `ClearBuffer{iv,uiv,fv,fi}``ClearNamedFramebuffer*``CopyTexImage2D``CopyTexSubImage2D``GenerateMipmap` | 34 个车道中止归零 |
| i1 | `BindImageTexture``DispatchCompute``CopyImageSubData``MemoryBarrier``ShaderStorageBlockBinding` + 两个伴随槽 | 235 个车道条目解锁 |
| t2 | 四个 stream-output span 行、XFB 对象绑定、`PatchParameteri``kCapBackendOwnsXfbCapture` | 138 个车道条目解锁 |
| d1 | 十九个索引 / 实例 / multi-draw / indirect 槽下沉到 `draw_vbo` | Minecraft 主阻塞解除 |
| sync | `FenceSync``ClientWaitSync``GetSyncStatus``WaitSync``DeleteSync` 上 apply 线程;client 铸造 Fence 句柄,wire 只过 `{slot,gen}` | 顺带修掉 `MGL_BACKEND_SLOT_PTR_LOCAL` 对 split 恒返回 nullptr |
| blit / mip | `BlitNamedFramebuffer` 经作用域化 client-shadow 绑定下沉;生成 mip 存储按推送描述符验证 | 31 + 7 个 trace 阻塞解除 |
| r1 / r2 | P5 收官审查 13 项(coherent-map 服务器侧绕过、FBO 死亡在 client 线程、`PACK_SWAP_BYTES``RingOverrun` 等待、CI 对照九项) | — |
| 收官审查修复 | 索引 span 上界(`Count × IndexSize` 必须装进声明的 run)、fence wait 预算、`Fatal{ReplyStatusInvalid, "ReadPixels"}` | P5b 审查 0 blocker |
## 4. 真实负载(inproc,独立 apply 线程)
- `DrawElements` 不再是阻塞。d1 普查时 77 个 Minecraft 后端用例中 28 个渲染通过(SSIM ≥ 0.99995)。
- blit + mip 之后:`improved-transparency-minecraft-26.3` DirectVulkan SSIM 0.999914`minecraft-1.21.4-fabric-iris-bsl-in-world` DirectVulkan 0.997324、DirectGLES 0.997496。
- OpenRA 双后端 SSIM 1.0。
- 新头上的完整 trace 普查未跑。
## 5. 开放项(按优先级)
| 项 | 证据 |
|---|---|
| `SEG_STAGE` 默认 32 MiB 装不下 128 MiB 上传:improved-transparency DirectGLES 报 `Fatal{RingOverrun}``MOBILEGL_IPC_STAGE_MB=256` 是 profile,不是修复 | `p5b-results/blit-codex-v1.md` |
| MagmaDirectVulkansplit compute/image 路径:89 个错答中 82 个 | `p5b-results/i1-v1.md` |
| rd12 DirectGLES `InitialBytesNotCarried/resource_respecify`rd12 DirectVulkan `BarrierTimeout/Present` | `p5b-results/d1-codex-v1.md` |
| RGB 三通道 CPU mip 回退 | `p5b-results/mip-codex-v1.md` |
| 设备 barrier tax 未测(此前每次 split 臂都停在 `DrawElements` | `p5-results/ab-v1.md` |
| 27 个 P5 inproc 错答:纹理读回走 client-shadow 回退、P7 query 计数、一个检查 harness、一个 FBO/RBO 删除后生命期 | P4b / P7 / P6 债 |
| `rsp` 残余输入;`SEG_REPLY` 2 MiB 上限;GetCaps 两个 blobref 的载体;PACK-PBO 读回真实形式 | P3b/P4b、P6+ |
| 39 个未被任何负载命中的 class-C 槽(query / sync / indirect / 具名 FBO clear 等) | P5b wave 3 / P9 / P10 |
| `test.yml`/`apk.yml` 里的 `feat/disaggregated` 触发器是临时的,合入 dev 前必须移除 | — |
## 6. 下一步
1. 新头上跑一次完整普查(车道 + 79 个 trace),拿到真实的 Minecraft 渲染数与新的首阻塞表。
2.`SEG_STAGE` 默认容量。
3. 重建三个 APKpull / push / split),跑红米四臂 A/B:首次可测 barrier tax。
4. host 全门一次 + 文档收口 → P5b 收官。
5. 剩余首阻塞(Magma compute/image、rd12、RGB mip)一轮。
6. P6 spawn transport。
## 7. 记录位置
| 内容 | 位置 |
|---|---|
| P5 brief / 契约 / 前言 | `~/w7/notes/p5/BRIEF-P5.md``MobileGL/MG_Remote/CONTRACT-P5.md``~/w7/notes/p5/PACKAGE-PREAMBLE.md` |
| P5 包报告与审查 | `~/w7/notes/p5/p5-results/``joint-v1.md` 全门记录、`ab-v1.md` 设备 A/B、`p5-close-codex-review.md` |
| P5b brief / 契约 / 报告 | `~/w7/notes/p5b/BRIEF-P5B.md``MobileGL/MG_Remote/CONTRACT-P5B.md``~/w7/notes/p5b/p5b-results/` |
| class-C 普查 | `~/w7/notes/p6/census-classC.md`;基线 `~/w7/p5b-c0b-census-logs/results.json` |
| 门日志 | `~/w7/p5-joint-gate.log``~/w7/p5b-quickgate.log``~/w7/p5-joint-evidence/` |
| 脚本 | `~/w7/notes/tools/``wsl_p5_gate.sh``p5_ab_redmi.sh``wsl_build_p5_apks.sh``p6_census_*.{sh,py}``p5b-c0b-census.sh` |
## 8. 裁定索引(ID-40..75ID-1..39 见 git 历史)
| ID | 裁定 |
|---|---|
| 40 | wave-1 谱系重写:`~/w7/pipe` 曾残留 `rereview` 身份,58 个提交改回用户身份并重挂到 GitHub 谱系 |
| 41 | G5 第十一行 `FlushPendingRangesFrom` 始终对 pin 比较,pin 重钉在 `3dadd4c1` |
| 42 | persistent-map 成员性期望改为 `live == (arm == emulated)`;emulated 方向红检在联调头 VERIFIED |
| 43 | `RingTest` 双旗标空间用例改述实树:带 CALL 旗标的头会被弹出,不再被当 wrap filler 吞掉 |
| 44 | dev 合并;G1 基线按 dev 重取(`4595163c` |
| 45 | wave-2 从配额中断处重启 |
| 46 | codex 对 wave-1 的跨族审查:10 个 major,逐条执行验证全部确认 |
| 47 | `SEG_REPLY` 改 16 MiB / 8 个 2 MiB slot;超限在 client 侧具名拒绝 |
| 48 | wave 1.5 分派(w1/s1/t1/p1 |
| 49 | ReadPixels 以紧凑形式过线:server 用中性 pack 读进回复,client 按应用 pack 散布 |
| 50/52 | v1 两份审查合并;`liveHostBase()` 在有传输时不得回落到 client 的 `MappedData()` |
| 51 | CI 上内存台账测试红 = 内核 hiwater 滞后,台账自持峰值 |
| 53 | 每个 `DirectGLES.Split.*` 条目一个私有日志;E1 对照从日志读 `Fatal{BarrierViolation}` |
| 54 | forwarder 每 (dpy, draw, read, ctx) tuple 只 bind 一次;client 的 release 不解绑 apply 线程的上下文 |
| 55 | c1 的 R-1733 行走生成表 + 4 行 escapes + 回复邮箱;`PipeCatalogueTest` 钉 37 |
| 56/58 | c1 两份审查(codex 12 项 / Claude 3 blocker 8 major 6 minor);B1 = 五处取地址的 `&MGPipeApply*` 逃过转换 |
| 57 | split 下绑定 PACK PBO 的 ReadPixels 具名拒绝,P5 不实现 |
| 59 | v1 round 2 落地;联调 `integration-split` 21/21 |
| 60 | 实现包可派给 GPT 族;实现方与审查方错开模型族 |
| 61 | c1 round 3 + j0 review + 联调包 |
| 62 | v1 round-2 审查:`MOBILEGL_IPC_VERB_BARRIER=0` 杀掉 pre-flight 导致 21 个条目全 skip、ctest 返 0 —— 对照必须把"选中条目被跳过"判为失败 |
| 63 | 联调头五部分全门实测 |
| 64 | c1 round-3 判定 MERGEABLE;余项转 c1f 门包 |
| 65 | 联调处置:27 个 inproc 错答归 P4b/P7 债;E2 clear-drop 对照未变红 → x2 |
| 66 | 过程规则改变:不过度验证、轮次间不审查、阶段收官由 codex 审一次、只读/非核心任务派给 codex |
| 67 | 相同 tuple 的重复 make-current 不重发 caps;不同 tuple 重发且 client 立即采纳 |
| 68 | class-C 普查:所有 Minecraft trace 首阻塞 = `DrawElements`P5b 计划(Minecraft 优先) |
| 69 | v1 round 3;红米 A/B 记录(split 臂当时不可测) |
| 70 | c0b 落地;四包启动;APK lane 根因 = setup-android 默认 cmdline-tools 20.0 已无 `tools` 包 |
| 71 | x2 经 x2m 合入,P5 代码齐全 |
| 72 | f1 落地:34 个 clear/copy/mip 中止归零 |
| 73 | P5 收官审查:1 blocker / 10 major / 2 minor → r1(核心)/ r2CI |
| 74 | 配额中断期间由用户的 Codex root task 推进 P5b 第二波;不重启同名 Claude 包 |
| 75 | P5b 整波落地推送 `7cb29d46`;快速门全绿;修掉一个测试日志捕获缺陷(库按进程截断日志,`RunInChild` 的增量读把第 2、3 个子进程的诊断读空) |
+1 -1
View File
@@ -1,6 +1,6 @@
# MGPipe 路线图
> 状态:**P0、P0.5、P1、P2、P3a、P4a、P5 已落地P5b 收尾中**。迁移集成头 `348d22a4` 已有 A=2 / B=54 / C=15;一次主机阶段门与合并普查正在完成,阶段唯一收官审查为 0 blocker / 2 major / 1 minor,三项已在 `82683d4a` 修复,包内定向 9/9 与 7/7(均 0 skip),合并确认待汇总。最后 APK/Redmi 出口未完成,不能标记 P5b 收官。P6 排在四个目标 trace 的 Redmi `inproc` 渲染之后。设计见 `ARCHITECTURE.md`,分头证据见 `MEASUREMENTS.md` §2635。
> 状态:**P0、P0.5、P1、P2、P3a、P4a、P5 已落地P5b 代码已落地(`feat/disaggregated@7cb29d46`),测量未收口**。当前头、逐门数字、开放项与下一步见 **[`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md)**(随每次落地更新)。P5b 收官仍需:新头上的完整普查、一次主机全门、APK 与红米 A/B。P6 排在四个目标 trace 的红米 `inproc` 渲染之后。设计见 `ARCHITECTURE.md`,分头证据见 `MEASUREMENTS.md` §2635。
## 通用纪律(每个 commit