[Docs] (P9): close the phase - the contract's remint section and invariants, rulings ID-P9-11..12 with the integration gate, the roadmap row, the debts P9 hands on, the phase README and the status page

This commit is contained in:
2026-09-29 03:36:45 -04:00
parent 7aa00761f8
commit de33d40173
8 changed files with 57 additions and 44 deletions
+6 -2
View File
@@ -4,13 +4,17 @@
| 债务 | 去向 |
|---|---|
| `SEG_REPLY` 2 MiB 单槽 payload cap、PACK-PBO 回读的 fire-and-forget | P9(ID-47、ID-57);stream 链路上 cap 变成 `maxReplyBytes` 窗口 |
| 未接入内容分块的 record 类型:program archive 与 `draw_vbo` range 尾 | P6.5 sl 与 P8 共用的分片(开放问题 11) |
| class-C 余项与仿真路径:`SetSwapInterval`(P10)、`DeleteTransformFeedback`(P9);multi-draw client indices、RGB CPU mip、`texture-remint-pull` 等具名拒绝 | P8 / P9 |
| class-C 余项与仿真路径:`SetSwapInterval`(P10);multi-draw client indices、RGB CPU mip 等具名拒绝 | P8 / P10 |
| `GetCaps` 的两个 blobref | 一旦运输,必须有 server → client 的 carrier rule,不能套 `SEG_STAGE` |
| E1 对照的重定义(ID-122) | 无主(开放问题 24) |
| `MOBILEGL_IPC_IDLE_EXIT_S` 未解析;`CONTRACT-P6.md` 仍把 `DynamicBackendParameters` 定宽记在 P7 名下(已由 P6.5 wf 落地) | 文档 / 小修 |
| P12 未做(2026-09-29 收官时转入):DirectGLES `g_Display` / `g_Surface` / `g_Context` 仍是全局(每进程一个会话时不需要);cached-app freezer 的完整处理(文档从未定义);多 context;D8 窗口种类白名单(X11 / Win32Hwnd / None 仍被接受并把 token 强转为指针);TLS;server 窗口不转发输入;修后的横屏 server 窗口未重测 | 无主;D8 等 Windows / X11 client,其余等出现第二个会话 / 第二个 context 的需求 |
| P9 转出(2026-09-29 收官):monolith Espryt 重铸重放 client 影子、覆盖 GPU 写过的纹素(iris-derivative 的系统差;修法改 pull `.text`,ID-P9-8) | dev(独立任务) |
| P9 转出:`TCP_USER_TIMEOUT` = 5000 ms——client 停读控制超过 5 s 且有待发日志字节时内核仍断开连接;`PublishSessionFault` 的阻塞写对停读的 client 最多等同样 5 s(ID-P9-10) | 传输策略,需裁定 |
| P9 转出:Espryt 重铸保留路径上 framebuffer clear 后 `imageLoad` 偶读旧值(主机 3/30,加 barrier 后 0/30;`TextureRemintPullScenario` case C 暂钉 barrier),疑 llvmpipe(ID-P9-11) | 待归因 |
| P9 转出:Magma 每次 draw 对可写 SSBO / texel buffer / XFB 目标发整 buffer 的 `OnGpuWritten`(create-indirect 首帧 7,093 条),client 已自标同一批,冗余无害;`OnTextureWriteback`、`OnMipLevelsGenerated`、`OnCapsInvalidated` 仍无生产者 | 以后的收窄 / 清理候选(ID-P9-7) |
| `MOBILEGL_PIPE_TEXEL_RETAIN_MB` 已无消费者,但在 pull 构建里 | P13(G1) |
| 树外脚本:普查跑器、`wsl_p5_gate.sh` 等在 `~/w7/notes/`,git merge 不会传播 | 需要时入库 |
| 临时 CI trigger | 合入 `dev` 前删除 `test.yml` / `apk.yml` 的 `feat/disaggregated` 触发器 |
@@ -14,3 +14,5 @@
| ID-P9-8 | 2026-09-29 | W2 普查查出 monolith Espryt 重铸用陈旧 / 零的 client 纹素覆盖 GPU 写过的级(14 例探针中 7 例错),即 P7 普查 §3 #6 未归因的 iris-derivative × DirectGLES ~26.9k px 差异。**不在 P9 修**,另开独立任务(改 pull 构建 `.text`,属 dev 线)。 | 交接 §6:不顺手修 dev 上的 bug,记成独立条目。 | 过程(独立任务) |
| ID-P9-9 | 2026-09-29 | W3:`OnLog` 删除(零生产者、零消费者、无 `EventKind`;日志一直走控制面 `LogLine`)。转发器带级别,由 `Log()` 已收的 Android 优先级映射,`Log()` 签名不变;server 装队列 + 独立发送线程:≤WARN 1 MiB 后丢并计数、每段缺口一行流内说明;ERROR 无损、256 行/s 突发 1024、8 MiB 外合并成一行;FATAL 有界 2 s 且每次卡顿只等一次。限值为常量,不设 `MOBILEGL_IPC_*` 旋钮;计数走会话结束的一行本地日志,不进 PIPE_STATS。F2 为两例(只停控制;控制 + SEG_EVENT 都停)+ server 旋钮 `MOBILEGL_TEST_APPLY_LOG_FLOOD`。 | 交接 §3 W3 与 §4 F2;`protocol.fbs` 的 `LogLine.level` 本来就在,不必改 schema。旋钮要动配置表与 spawn 环境白名单,无实测需求。计数的家当惯例是日志行(同 `ForfeitDrops`)。 | p9/w3 包:`Transport/LogForward.{h,cpp}`、`Log.{h,cpp}`、`ServerMain.cpp`、`ControlInbox.{h,cpp}`、`ServerLoop.{h,cpp}`、`MGPipeCallbacks.h`、`LogForwardTest.cpp`、`EventForfeitPeerTest.cpp` |
| ID-P9-10 | 2026-09-29 | W3 查出、**不在 P9 改**的两项转出为债:(1) `TCP_USER_TIMEOUT` = 5000 ms(`SocketTransport.cpp`)——客户端停读控制超过 5 s 且有待发日志字节时,内核仍会断开连接(W3 之后 apply 线程不再被卡,但会话仍会断);(2) `PublishSessionFault`(`FatalFunnel.cpp`)用阻塞写发 SessionFault,对停读的客户端会排在日志发送线程卡住的写之后最多等同样的 5 s。 | 两者都早于 W3,属于传输策略,改动需另行裁定。 | `DEBTS.md` |
| ID-P9-11 | 2026-09-29 | `TextureRemintPullScenario` case C(immutable 纹理,GPU clear 后绑成 image)在 Espryt split 上 30 次中 3 次读到 clear 前的纹素,server 侧每个决定在通过与失败的运行里都相同;GL 不要求这里有 barrier,加 `glMemoryBarrier` 后 0/30。场景里暂钉 barrier 并注明,缺陷记为"待归因"债(疑 llvmpipe 的 compute image 读不等待光栅化)。保留路径早于 P9(c1bf7e15)。 | 不让门随机红;也不把一个没归因的现象当成修好。 | `TextureRemintPullScenario.cpp`、`DEBTS.md` |
| ID-P9-12 | 2026-09-29 | **P9 收官**。集成头(W1 + W2 + W3)整套门:G1 符号增 0 减 0、`.text` `0xa52203`(同机 clang 22.1.6);fatal census 79、link ratchet 171、spawn parity 0、协议修订 3、wire-declines 53/53;卫生 12/12;unit 2641;integration-split / spawn / tcp 343 / 260 / 264;integration-magma-split / spawn / tcp / full-split 146 / 125 / 110 / 579;integration-gpu monolith / inproc 2301 / 2301。verify 构建(W1 头)unit / integration-verify / integration-verify-split 2626 / 1202 / 1136;主机 retrace(W1 头)230 / 236,6 项为宿主 llvmpipe JIT 崩溃(monolith 同挂)。收官审查沿用 P12:不派 agent / Codex,契约断言由集成者对照代码核过(限值、op 号、载荷大小、回调数、修订号、仿真名单)。未做真机(本阶段无真机门)。 | 交接 §5 的门列表全部通过;ROADMAP 出口门:回读场景 split 下绿、`TextureRemintPullScenario`(含无解用例 G / G3)、拉取计数逐 trace 发布(`notes/p9/W2-REMINT.md`)、两条故障注入。 | 过程 |
+14 -2
View File
@@ -1,6 +1,18 @@
# P9 — 反向通道(待排,P6.5 之后)
# P9 — 反向通道(已收官,2026-09-29)
> **2026-09-29:范围已按树里现状重划,实现交接见 [`HANDOFF-P9.md`](HANDOFF-P9.md)(先读它的 §2:路线图下面的原文有一半已经做完或前提已变)。** 尚未开工。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。
> **2026-09-29 收官**。协议与行为:`MobileGL/MG_Remote/CONTRACT-P9.md`;裁定 [`INTEGRATOR-DECISIONS-P9.md`](INTEGRATOR-DECISIONS-P9.md)(ID-P9-1..12);包报告 [`W1-PACK-BUFFER-READBACK.md`](W1-PACK-BUFFER-READBACK.md)、[`W2-REMINT.md`](W2-REMINT.md);范围重划与交接 [`HANDOFF-P9.md`](HANDOFF-P9.md)。
>
> | 包 | 结果 |
> |---|---|
> | W1 PACK-PBO 回读 | 读进 pack buffer 走 op 82/83,client 不等、标 GPU 写过;server 经 buffer 写入口落行(两后端);UNPACK 源在 split 下先同步;F1 |
> | W2 纹理重铸 | 不需要拉取协议:Espryt 读回驱动上存在的层 + store,Magma GPU→GPU;修"只定义未上传的层"的 Fatal;`OnTexturePullRequest` 删;`TextureRemintPullScenario` 14 例 × 两后端 × 四臂 |
> | W3 日志分级 | 转发带级别、队列 + 发送线程:≤WARN 有损计数、ERROR 无损限速、FATAL 有界;`OnLog` 删;F2 |
> | W4 事件量 | 不做:全语料 0 丢弃、0 阻塞(ID-P9-7) |
> | W5 `OnGlError` 有序 | 保持 P5e 放宽,写进契约 §3 |
>
> 门(集成头):G1 符号增 0 减 0、`.text` 0xa52203;fatal census 79、link ratchet 171;unit、split / spawn / tcp、三条 Magma 双进程车道、integration-gpu 两臂全绿(数字见 ID-P9-12);verify 构建三车道全绿;主机 retrace 230 / 236(6 项为宿主 llvmpipe JIT 崩溃,monolith 同挂)。未做真机。
>
> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 `ROADMAP.md` 移入,原文照录)。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。
## 摘要