From 14e1c8b9b103b6900be8f174cf5f5b1a50dcfd66 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Wed, 23 Sep 2026 08:40:33 -0400 Subject: [PATCH] docs: close p7w6 controls and F2 hardening status --- MobileGL/MG_Remote/CONTRACT-P7.md | 3 ++- docs/Disaggregated/CURRENT_STAGE_STATUS.md | 16 ++++++++-------- docs/Disaggregated/ROADMAP.md | 2 +- docs/Disaggregated/notes/p65/window-1b-p7w6.md | 6 ++++-- .../Disaggregated/notes/p7/HANDOFF-2026-09-23.md | 14 +++++++------- .../notes/p7/INTEGRATOR-DECISIONS-P7.md | 2 ++ 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/MobileGL/MG_Remote/CONTRACT-P7.md b/MobileGL/MG_Remote/CONTRACT-P7.md index 0cfa46e7..15ccd13f 100644 --- a/MobileGL/MG_Remote/CONTRACT-P7.md +++ b/MobileGL/MG_Remote/CONTRACT-P7.md @@ -141,9 +141,10 @@ verify **在 wave 3 之前**只在 monolith 臂注册(`MG_IntegrationTest/CMak 1. `CONTRACT-P6.md:666`(§10.3)把 `DynamicBackendParameters` 定宽记在 P7 名下——已由 P6.5 wf 落地,P7 不再持有。 2. `CONTRACT-P6.md` §12.1「棘轮在 CI 里重算 184 并断言只降」——由 wave 0 包 R 落地为 `scripts/link_ratchet.py`;「移交 P6.5」从未被 P6.5 接收,归 P7。 -3. `CONTRACT-P6.md` §12.2 D11 把五行中的三行分给 P6 `dl`——树上五处全部仍在原状态(`PipeApply.cpp:1575`、`PipeApplier.cpp:444`、`ProgramArtifactsCodec.cpp:309`、`StagedTextureStore.h:440`、`SlotTables.h:347/:371`);归 Ph(计划 §1.1 D11),wave 2-F 做。**wave 2-F 实况(`notes/p7/ph-f.md`)**:落地的是 PH-7 (1)–(4)(常量时间令牌合一、≥16 字节、无令牌只 loopback、`Welcome.dataNonce` 绑定数据连接——`protocol.fbs` 变、`wireFingerprint` 随 `MOBILEGL_PROTOCOL_CONTROL_REVISION` 变)与 PH-8 单测;**D11 五处与 PH-2 仍未落地**:每处都要一条字节来自对端的两进程负控,而树上没有能越过 client 自身守卫伪造记录的对端驱动(= fuzz 臂 2 的骨架),按计划停止规则未开工。 +3. `CONTRACT-P6.md` §12.2 D11 把五行中的三行分给 P6 `dl`——树上五处全部仍在原状态(`PipeApply.cpp:1575`、`PipeApplier.cpp:444`、`ProgramArtifactsCodec.cpp:309`、`StagedTextureStore.h:440`、`SlotTables.h:347/:371`);归 Ph(计划 §1.1 D11),wave 2-F 做。**wave 2-F 实况(`notes/p7/ph-f.md`)**:落地的是 PH-7 (1)–(4)(常量时间令牌合一、≥16 字节、无令牌只 loopback、`Welcome.dataNonce` 绑定数据连接——`protocol.fbs` 变、`wireFingerprint` 随 `MOBILEGL_PROTOCOL_CONTROL_REVISION` 变)与 PH-8 单测;**在本条写作时点,D11 五处与 PH-2 仍未落地(状态后来由 ID-P7-54 更新)**:每处都要一条字节来自对端的两进程负控,而树上没有能越过 client 自身守卫伪造记录的对端驱动(= fuzz 臂 2 的骨架),按计划停止规则未开工。 4. `CONTRACT-P6.md` §5.2「`Session::Fail` 在 P6 保持 `[[noreturn]]`」——Ph 的翻转按 ID-P7-1 重定界,不做 98 站点的字面翻转;`Server/StagedShadow.h:115`、`Server/StagedTextureStore.h:344` 两处旁路由 wave 0 包 C 收进漏斗。 5. `ARCHITECTURE.md` §8.5「XFB scatter 在 client」——树上取的是 server staged shadow + `OnBufferWriteback`(P5c/P5f);`OnXfbScatterReady` 是死声明,删除。 +6. **PH-4 mutable texture-level bounds (2026-09-23, F2 commits `2c6a6e25` / `51480f8c`).** A named `ResourceRespecify` carries exact per-level W/H/D alongside `(uploadTarget, level)`; on split the dimension words reuse `MGPResourceDesc.BufOffset/BufSize` only for non-buffer named image levels, and `WireFingerprint` mixes the extent-carrier revision. The applier stores the exact accepted extent, clears the transient range carrier from its descriptor copy, and passes the extent/target/fallback internal format into `StagedTextureStore.NoteLevelDefined`. The store derives its byte bound under server device limits before uploads; every `ResourceSubData` slab must match that saved extent and stay within the derived byte bound. TexBuffer and multisample targets have no legal subimage producer and staged byte records for them are named `ProtocolCorruption`. **PH-5** charges `sizeof(value_type)` for a vector count against `ReadCursor::Remaining()` before resize, using division to avoid count multiplication overflow. **PH-2** sends out-of-range and backwards-generation handle refusals through `MGPipeSessionFail` at reachable DirectGLES adoption guards; the slot table keeps the same named refusal as a backstop. Luna integration review = land; 49 targeted cases pass, including raw-peer extent, MS, slot and stale-generation controls; strict pull G1 against `adf2cbe0` is byte-identical (`.text=0xa52203`, no symbol changes). | --- diff --git a/docs/Disaggregated/CURRENT_STAGE_STATUS.md b/docs/Disaggregated/CURRENT_STAGE_STATUS.md index bc1aced8..8c631d09 100644 --- a/docs/Disaggregated/CURRENT_STAGE_STATUS.md +++ b/docs/Disaggregated/CURRENT_STAGE_STATUS.md @@ -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-23(ID-P7-49–52)** · 当前交接 [notes/p7/HANDOFF-2026-09-23.md](notes/p7/HANDOFF-2026-09-23.md)。集成树已含 M3 与 B4(pipe b19297d5,B4 源码审查 land、完整主机门通过);B4 的 docs/citation/push 收尾中。p7w6 DirectGLES TCP 38 例矩阵已结案,逐例结果见 [window-1b-p7w6.md](notes/p65/window-1b-p7w6.md)。门 3 终局和 CTS AFTER 尚未完成;F2 在独立包分支继续。 +**更新:2026-09-23(ID-P7-49–54)** · 当前交接 [notes/p7/HANDOFF-2026-09-23.md](notes/p7/HANDOFF-2026-09-23.md)。M3、B4 与 W6 文档已在 pipe e036b4e0 验证并推送;Photon / D24 同 APK monolith 对照已证明两项错图不是 TCP 分离回归。F2 的 PH-4/5/PH-2 已在 `p7-f2-driver` 经 Luna 审查落地;还剩 PH-6、PH-1 (3)(4)、PH-7 (5) 和 F2 完整门。门 3 / CTS AFTER 尚未完成。 ## 1. 出口门总览(CONTRACT-P7 §8 的 9 项分母) @@ -17,7 +17,7 @@ | 5 | OQ-8 反射归档 `storageBlocks` | ✅ | C | | 6 | OQ-10 `kCapResidentSubData` 按 server 表发布 | ✅ | C | | 7 | verify × split(门 2) | ✅ | B4 集成树 verify build:unit 2439、integration-verify 1152、integration-verify-split 1086,全绿;V1/V1 r2 负控与 8 verify trace 证据仍有效 | -| 8 | 真机 ssim 1.0(门 3,分母 36) | 🔄 | p7w5 OpenRA 27/27 golden;p7w6 bsl-esc-menu DirectVulkan inproc/spawn 6/6 且图像 SHA 与 monolith 相同;另有 p7w6 DirectGLES × TCP 38 例窗口矩阵报告(非门 3):16/29 pass、8 idle timeout、2 visual failure、3 missing result;36 例 DirectVulkan 三遍、同会话 monolith 对照和 M3 后 APK 回归待跑 | +| 8 | 真机 ssim 1.0(门 3,分母 36) | 🔄 | p7w5 OpenRA 27/27 golden;p7w6 bsl-esc-menu DirectVulkan inproc/spawn 6/6 且图像 SHA 与 monolith 相同;DirectGLES × TCP 38 例窗口矩阵 16/29 pass、8 idle timeout、2 visual failure、3 missing result。Photon / D24 两项错图已由同 APK DirectGLES monolith 复现;36 例 DirectVulkan 三遍、同会话 monolith 对照和 M3 后 APK 回归待跑 | | 9 | CTS 五块 AFTER ≤ 0.5 pp(门 5) | ⏳ | `$BASE` 已取(`notes/p7/device-window-1/CTS-base/`);AFTER 在 wave 4 | **40% 检查点(§8 中点)已过:6/9**,不触发重定基线。G1 全程恒等(pull `.text` `0xa52203`、符号 0/0);census 79 站点 / 0 未标;棘轮 186 → **173**(B2 重基线,余 88 = monolith draw 路径,wave 3)。 @@ -54,23 +54,23 @@ ## 3. 真机(Redmi 2f7cbe2e,Adreno 830) - 当前 APK:**p7w6**,stamp `p7w6-0e16ca27`,已重装并重起 TCP supervisor;屏幕常亮设置 `stayon=15`。bsl-esc-menu DirectVulkan × pbuffer inproc/spawn 各三遍 **6/6**,PNG SHA 均与 E0a monolith 相同;OpenRA 的 p7w5 27/27 结论保留。p7w6 在 M3 落地前构建,后续设备回归需新 APK。 -- DirectGLES × TCP 窗口 1b(p7w6)已结案,逐例状态与 phone reap 证据见 notes/p65/window-1b-p7w6.md:9 缓存跳过、29 次尝试(16 pass、8 idle timeout、2 visual failure、3 missing-result)。Photon v1.3b 与 D24.4.14 需做设备 DirectGLES monolith 对照。 +- DirectGLES × TCP 窗口 1b(p7w6)已结案,逐例状态与 phone reap 证据见 notes/p65/window-1b-p7w6.md:9 缓存跳过、29 次尝试(16 pass、8 idle timeout、2 visual failure、3 missing-result)。Photon v1.3b 与 D24.4.14 的 DirectGLES monolith 对照已在同设备、同 APK 下复现相同错误,见报告中的证据路径。 - 门 3 的 36 例 DirectVulkan 三遍逐位与同会话 monolith 对照仍待手机新 APK;CTS AFTER 五块也未运行。 ## 4. 在跑 | 工作 | 状态 | |---|---| -| p7w6 DirectGLES TCP 38 例对照 | `~/w7/logs/p7w6-matrix-resume.sh` 以 setsid/nohup 续跑,进度 `~/w7/logs/p7w6-matrix-resume.log`;手机服务不可在此期间 force-stop | -| F2 | p7-f2-driver 包分支有 raw-record 驱动、D11 CSO slot 与 PH-3 readback 上限(db80dd16 / adf2cbe0);定向测试和 G1 已过。PH-4 staged texture byte bound 正在修复并待独立验证;还剩 D11 ArchiveVector、PH-2、PH-6、PH-1 (3)(4)、PH-7 (5) | +| 最终真机验收 | p7w6 TCP 矩阵与 Photon / D24 monolith 对照结束;待最终 APK 的门 3 与 CTS AFTER | +| F2 | `p7-f2-driver` 已提交 raw-record driver、D11 CSO、PH-3 readback、PH-4 exact mip extent / byte bound、PH-5 ArchiveVector、PH-2 named slot/generation refusal(`db80dd16`, `adf2cbe0`, `2c6a6e25`, `51480f8c`);Luna review land,build-split 49/49、G1 与生成器门全绿;余 PH-6、PH-1(3)(4)、PH-7(5) / fuzz 臂2 | ## 5. 下一步 -1. p7w6 TCP 矩阵已结案;保留的 idle/missing-result 项在主机空闲时按需重跑,Photon v1.3b 与 D24.4.14 先做设备 DirectGLES monolith 对照,结案报告见 notes/p65/window-1b-p7w6.md。 +1. p7w6 TCP 矩阵及 Photon / D24 DirectGLES monolith 对照已结案;保留的 idle/missing-result 项在主机空闲时按需重跑,细节见 notes/p65/window-1b-p7w6.md。 2. 最终功能 APK 部署后完成门 3(36 例 DirectVulkan × pbuffer × inproc/spawn,三遍逐位一致并与同会话 monolith 差 ≤0.0005)和 CTS AFTER 五块(相对 BASE ≤0.5 pp、新 crash=0);另采 PipeStats bsl 映射峰值与 wbuf[]。 -3. F2 继续 PH-4(StagedTextureStore level bound)、PH-5 ArchiveVector、PH-2 SlotTables,并完成 PH-6、PH-1 (3)(4)、PH-7 (5) 与 fuzz 三臂;每个字节可达负控由两进程 raw-record 驱动触发并经过完整包门。 +3. F2 继续 PH-6、PH-1 (3)(4)、PH-7 (5) 与 fuzz 臂 2;每个字节可达负控由两进程 raw-record 驱动触发,之后跑 F2 完整包门与集成审查。 ## 6. 阻塞 / 需要人 -- p7w6 TCP 矩阵已终止;任何补跑或设备 monolith 对照不得与门 3/CTS 同时 force-stop 同包 Service。当前没有需要用户决策的阻塞。 +- p7w6 TCP 矩阵和设备 monolith 对照已结束;后续门 3/CTS 仍不可同时 force-stop 同包 Service。当前没有需要用户决策的阻塞。 - X2 已关闭 `InitialCapsStartup` 的测试夹具乱序 flake;不再列为待修。 diff --git a/docs/Disaggregated/ROADMAP.md b/docs/Disaggregated/ROADMAP.md index 4d0240a7..434fa1ae 100644 --- a/docs/Disaggregated/ROADMAP.md +++ b/docs/Disaggregated/ROADMAP.md @@ -38,7 +38,7 @@ | **P6.5** 传输栈两轴化 + 跨机 | **第一波已落地**(`feat/disaggregated@fe28bdb5`,2026-09-22):全 TCP 控制 + StreamLink 数据,WSL client ↔ Redmi server。四切片代码审查无硬缺陷 + 两修复(`AcceptPair` 重试 `EINTR`/`ECONNABORTED`、supervisor 自设 `MOBILEGL_IPC_ROLE=server`,均 `MG_Remote` 门内 G1 不动,见 [`code-review-findings.md`](notes/p65/code-review-findings.md));固定制品(两端 stamp `p65-acceptfix-20260922`)再验收:unit 2399、integration-tcp loopback 102、**device-102 102 全 ARMED**、代表性 retrace OpenRA 1.0 全 ARMED。**残余(CI/后续)**:完整 39 例 device golden 矩阵 + 必测数。设计见本表下方「立即的下一项」节 | 包:**wf** wire 定宽与布局摘要——`wireFingerprint` = `PipeFields.def` 派生的逐成员 name / `offsetof` / `sizeof` 摘要 + 有序目录摘要 + 记录头布局 + 两个 blob codec 版本 + `kOpCount` + 字节序 / 指针宽度,**保留** `sizeof(MGPCaps)` / `sizeof(DynamicBackendParameters)`(wire 事实)、删 `sizeof(GLFunctionsTable)`;`buildFingerprint` 只在 `Dial == Fork` 下比较;`DynamicBackendParameters` / `MGPCaps` / `RenderStateParameters` 整块 blob 的定宽化(两端是不同编译器产的不同二进制,`long` / padding / 位域差异都是静默读错状态);`Refuse{code, detail, 对端值}` 控制消息,握手路径零 abort → **ct** 控制面端点种类(`fork` 继承 fd / `unix:` / `tcp://host:port`;`DialMode{No, Fork, Connect}` 与 `MGPipeShouldDial()` 按契约 §3 补齐;TCP keepalive 失败**作为传输层报告的挂断**进 dl 的闩,不是 apply 超时)→ **nd** 数据面协商(`LinkTerms{dataPlane, delivery, wireForm, maxReplyBytes, cmdWindowBytes, stageWindowBytes}` 入 Hello / Welcome,四个尺寸由 **server** 陈述;`dataPlane ∈ {SharedSegments, Stream}`;`auto` 的判据是**段实际交付成功**而不是地址判断,回落必须具名入日志与 stats;链路工厂在会话建立时选定一对,之后不变——缝是 setup-time 的,契约 §8.2)→ **sd** 共享段交付与控制面解耦(`ShmLink` 自带 AF_UNIX aux 汇合名、在 `Welcome` 里公布,`SCM_RIGHTS` 只走它;于是**控制面 TCP + 数据面共享段**在同机是合法配对;`ITransport` 收窄为纯控制帧,描述符传递归数据面)→ **sl** `StreamLink`(分块封帧;watermark 变消息且**规则逐字保留**——late-never-early、`>=` 不是 `==`、倒退是 Fatal;`appliedSeq` 修正案 + flush-on-idle;reply 变自带 seq 的消息,本链路上删 slot 池 / 取模 / stamp 自检;`SEG_STAGE` 变发送窗口,三个 cursor 要么完整复活要么不用、不留中间态;program archive 与 `draw_vbo` range 尾分片;`GetCaps` 两个 blobref 变消息;每方向每进程一条专用读线程)→ **t65** 车道。上层纯度:`SessionProducer` / `SessionConsumer` / `ServerLoop` / `PipeWireEncoder`、`ClientSession.cpp` 的 `kSegEvent` 挂载与 `ResourceTracker.h` 的 writeback 解析都只经 `ILink`。设计 `ARCHITECTURE.md` §11.9 | 门:inproc / spawn 车道结果数与逐线程 CPU 逐字不变(`ILink::ReserveRecord` 虚调用代价**实测**,`RingProducer::Reserve` 失去内联是具体风险);纯度 grep——`ShmLink` / `StreamLink` / `RingControl` / `ReplySlotPool` / `EventRingConsumer` / `m_shm.` 只出现在 `Transport/` 与其测试,上层零链路种类分支;**2×2 矩阵车道**(控制面 {unix, tcp} × 数据面 {shm, stream},loopback)名集合与 spawn 一致且同数绿,每条目记 `control=… data=…` 的 arm 证明(ID-124 的形状);跨机臂一条真 trace 逐像素;wf 三条 red-once(临时树里同宽成员互换 → 摘要变而 stamp 不变;`wireMajor = 99` → 两端具名拒绝、server exit 0、client 不回落 monolith;仅 stamp 不同的对端在 `Dial != Fork` 下连接成功——正控制);**必测数**:逐帧 `kWaitReply` 次数(`ResourceCreate` / `SetTextureParams` / 纹理半边 `ResourceSubData` 都在此列,TCP 上每次即一个 RTT)、`SEG_STAGE` 字节/帧对链路带宽、`PRESENT_CREDIT` 1..3 配对、混搭(tcp + shm)对(unix + shm)的逐线程 CPU 差 | | **Ph** 不可信对端加固 + 配对 | **已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.1)**:P6.5 已在 LAN 上跑 `tcp://0.0.0.0`,「P12 之前」的顺序陈述落后于树。必需小件(supervisor 命名子进程死亡、两处漏斗旁路、D11 五处上限、常量时间令牌 + 数据面绑定、`SEG_EVENT` 弃投闩)随 P7 波次推进;fuzz 臂 2 在 P7 之后;OQ-21 已裁定令牌足够(ID-P7-3)。**进展(2026-09-22 深夜)**:supervisor 命名子进程死亡 + 两处头层漏斗旁路已随 wave 0 落地(`origin@801f8eda`,`abort_sites` 79 成下行棘轮);其余小件是簇 **F** 包:**片 1–3 已到集成树(2026-09-22 夜,ID-P7-37)**——令牌合一 / ≥16 字节具名拒绝 / 无令牌只 loopback / smoke 进 CI;`Welcome.dataNonce` 绑定,TCP 上 250 ms 配对窗口消失,`wireFingerprint` 变更;PH-8 钳制证明——片 4–6 与 PH-7 (5) 需要对端字节的 fuzz 驱动,另派 F2(原顺序:常量时间令牌 / `Refuse{Authentication}` / ≥16 字节 + `tcp_supervisor_smoke.py` 接 CI → `Welcome.dataNonce` 数据面绑定 → PH-8 单测 → D11 五处 + PH-2 → PH-6 drop-with-latch → PH-1 (3)(4));逐日状态见 [`CURRENT_STAGE_STATUS.md`](CURRENT_STAGE_STATUS.md) | `Session::Fail` 的策略翻成每会话闩(**按 ID-P7-1 重定界**:98 处 `SessionFail` + 6 处 `WireLogFatal` 的字面翻转拒做——≥9 处返回引用没有诚实返回值;只对对端字节可达站点 latch-and-decline;P6 dl 收口到的是**两个漏斗 + 两处头层旁路**(`Server/StagedShadow.h`、`Server/StagedTextureStore.h`),不是一处;P6.5 fork-per-session 已给出「下一连接照常服务」);handle slot 预算(`BackendSlotTable` 的两条拒绝从 `MOBILEGL_ASSERT` 变 release 下的具名拒绝,杜绝静默 null twin);readback 尺寸门挪 server 侧且在 resize **之前**设绝对上限;`StagedTextureStore` 按该 level 宣告范围设界;`ArchiveVector` 按 `count * sizeof(element)` 设上限;`SEG_EVENT` 溢出不再能让一个不排空(或仅涓流排空)的对端在 30 秒内、乃至瞬间用 `Fatal{EventRingOverflow}` 打掉承载它的 server 进程(drop-with-latch,不等 PH-1,ID-P7-2;原文「60 秒」是两轮 30 s 的算术上界);**配对 / 认证**(`Hello` 带令牌与无令牌只 loopback **已由 P6.5 ct 落地**;欠常量时间比较、`Refuse{Authentication}` 入词表、≥16 字节、**数据面按 `Welcome.dataNonce` 绑定到已认证的控制连接**(今天 `AcceptPair` 按到达顺序配对、从不查 peer)、fork 前认证;OQ-21 裁定令牌足够、不做 TLS);段 / 窗口尺寸由 server 钳制(P6.5 nd 已陈述,欠一条钳制单测) | 非 loopback 监听在无令牌时具名拒绝(机制已在;名字入词表 + `tcp_supervisor_smoke.py` 接 CI 后算达成);畸形帧 / 超界计数 / 不排空对端的模糊臂下 server **不 abort、会话闩住、下一连接照常服务**(臂 1 机制已在、欠端到端脚本;臂 2 = PH-1 (3)(4) + D11;臂 3 = PH-6);`Session::Fail` 站点普查门扩到 server 镜像且 `abort_sites` 变棘轮(今天只扫 `MG_Remote`、站点数记了不比,wave 0);契约 §12.2 五处无界分配各一条 red-once(**五处全开**,不是两处) | | **P3b / P4b** 深化(Espryt) | **已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.2)**;Espryt 项与 P7 文件零重叠,作为 P7 的并行流(wave 2-D)推进。**D1 / D2 / D3 已落地(`origin@22761a69`,2026-09-22)**:D1 = XFB 两洞(孤儿目标保留 varyings、回写事件切片)+ 回调 10→9 + 四个 resolver 具名启动期 stop + readback 家族三臂(+39/臂,readback 半边其实早已关,ID-P7-24);D2 + 返工 = `TextureViewAliasScenario`、`TextureUploadShape` 成门(散点内缩后零补丁 red-once)、`espryt_memo_purity.py`、`SubsystemDeps.def`(R-5)、12 场景 split 普查(+76/臂)(ID-P7-26/29);D3 = view 在 owner 上传后陈旧的产品缺陷修复(clean gate 读 storage record,三臂 3 红→14/14)+ D-K2 六处读者读同一张表(ID-P7-28/30)。**余**:R-3 另一半(`MGPSamplerView::Target` 谓词)、`KHR-GL46.texture_view.coherency` 的 split 读数、CTS AFTER(wave 4);~~Iris trace 普查结果(wave 3)~~ 已有头上结果(`3c80cd62`,[`notes/p7/iris-census-1135c664.md`](notes/p7/iris-census-1135c664.md));逐日状态见 [`CURRENT_STAGE_STATUS.md`](CURRENT_STAGE_STATUS.md) | view/属主发射游标**别名场景**(代码半已由 P4a `TextureEmit.h` 属主键控游标 + `TextureObjectView::ToOwner*` + P5e tx2 落地,欠验证);`g_fboTextureSyncList`(分离安全——记录臂先返回、退路是具名 Fatal;四个 resolver 改启动期具名 stop,文本删除受 P5e 裁定 1 约束归 P13);memo 重键**已落地**(P4a/P5f),补纯度 grep 门;~~XFB scatter 搬到 client~~(P5c/P5f 以 server staged shadow + `OnBufferWriteback` 落地;剩两处真洞:孤儿捕获目标被静默丢弃、回写事件无界——>128 KiB 即 `Fatal{EventRingOverflow}`);删 fragColor 重推导 workaround 与 `g_broadcastMemo*`(动 pull `.text`,归 P13,只改注释);raw-depth-fetch sampler 的 monolith 清理(可选);**回读收口**(pack 半已关:`set_pixel_pack_state` APPLIER_DERIVED + server 中性读 + client 侧 PACK-PBO 散射;readback 半开:`get-tex-image-shadow` / `copy-image-shadow-mirror` 非 monolith 下仍 abort、split 零覆盖);P4a 的 R-5(D-K2 规则合一处)/ R-11 必须,R-3 / R-4 / R-7 / R-10 可选;~~`ProgramArtifacts.h` 的 NDK 尺寸钉~~(P6.5 portable archive v2 + 布局指纹取代);链接实验分给它的 **14 个符号**(D12,棘轮落地后 Tier 1) | 纹理 / program 场景(split 三臂零覆盖,先普查首阻塞再注册);CTS `texture_*` / `shader_image_*` / `packed_pixels` + P4a 欠的 `direct_state_access.framebuffers*` 在 0.5 pp 内(caselist 入库 + monolith 基线 + delta 工具,今天三者皆无);每一个 Iris trace(CI 管道 P6 已建;**`3c80cd62` 主机结果**:39 例 × 双后端 × {monolith, inproc, spawn} 231 次全活,split 与 monolith 逐字节相同 70 / 77 行,7 行分歧均过阈值、无 Fatal;`texture-remint-pull` 未到达,**P9 例外表为空**——[`notes/p7/iris-census-1135c664.md`](notes/p7/iris-census-1135c664.md) §3–§4);`TextureUploadShapeScenario` 升级成门(Mali 增量无设备,按 Adreno 记录) | -| **P7** DirectVulkan(Magma)全量迁移 | **进行中;wave 0–2 已落地,40% 检查点 6/9 已过(2026-09-22,`origin@b089e0de` + 集成树上的 B3)**:审计 + 五波计划见 `notes/p7/PLAN-PH-P34B-P7.md` §1.3 / §3,规范 `MG_Remote/CONTRACT-P7.md`,裁定 `notes/p7/INTEGRATOR-DECISIONS-P7.md`(ID-P7-1..33)。**wave 0** 仪器(Magma 两进程车道三臂、`link_ratchet.py` 186 基线、普查门 79 站点下行棘轮 + `MGPipeSessionFailHook`、设备跑器 `--matrix/--repeat/--archive-dir`、CTS caselists)`origin@801f8eda`;**wave 1** 设备窗口 #1(门 3 分母 36、E0–E7 归因、CTS `$BASE` 五块);**wave 2** X1(arm64 persistent-map tracker 从不认领 fault)、F1(split 起会提前)、C(`StateObjectDeathOps`、OQ-8、OQ-10、vertex-layout 拆分)、A(对齐 / native-range)、B(mip 半退役、深度 mip 烘焙 (A)(D)、copy-image、default-color-blit、回读 fence)、B2(multisample shape/aspect、AllocatorDebtScope ×2 删、(B′)、棘轮 **186→173**)、B3(**OpenRA 真机分歧的真因**:wire 臂 completed-frame-serial floor 在中帧 pooled-fence 提交退休时无证据上升 → 帧首次 `glBufferSubData` 走无序 host memcpy;计数 26→0,spawn 臂 red-once;ID-P7-33)——**树上 `@P7` 拒绝站点归零、§3.2 六退役全成、Magma 三臂 95/74/76**。**真机**:p7w4 门 3 AFTER 34/36 与 monolith 差 ≤ 0.0005;OpenRA p7w5 **27/27 golden**(ID-P7-34,项关闭);bsl-esc-menu = server 死 VkBuffer 无界累积(一帧 1.3 M 调用,ID-P7-32,**M2** 在修)。**已到集成树(2026-09-22 夜,ID-P7-37)**:B2 返工 r1 + r2、B3 返工 + 修复轮、V1、F 片 1–3 已推送 `origin@87584d0b`(2026-09-22 夜,ID-P7-39;pipe 门全绿:magma 97 / 76 / 71、full 535、verify 构建 1140 / 1074、OpenRA split 回放 0 条 unsound;四份 fable 审查 land with fixes,修复轮已落地,ID-P7-44);**M2 + M2 r2 已推送**(主机 bsl spawn server 825 → 546 MiB;memo destroy-epoch 关闭 wire store 句柄复用的 ABA;第二个泄漏 = descriptor set → M3;ID-P7-46);V1 修复 r2 已推送(read 侧负控数到 2、FATAL=0 摘要在 Close 前写出,ID-P7-47);**在跑**:F2 待派;窗口 1b 矩阵在跑(配对窗口在直连 LAN 上同样触发,ID-P7-41)。提交尾注已按用户令改写(origin `3c80cd62`)。**2026-09-23 更新(ID-P7-49–52)**:M3 已在 7ea7ce89 推送;B4 已集成于 pipe b19297d5,源码审查 land、完整集成门全绿(ID-P7-51)。p7w6 DirectGLES × TCP 38 例对照已结案(ID-P7-52);该矩阵不替代门 3。**余**:F2 D11/PH-2/PH-6/PH-1/PH-7 与 fuzz 臂 2;wave 3 棘轮 88;wave 4 CTS AFTER 和门 3;wave 5 fuzz 三臂与整体审查。逐日状态见 [`CURRENT_STAGE_STATUS.md`](CURRENT_STAGE_STATUS.md) | `38919d45` 已补实际游戏的 server buffer consumers 和 Android 旋转 blit([报告](notes/p5f/magma-inproc-fix.md));`194382c9` 又完成 Magma run-ahead、GPU 延迟退休与 VAO 身份碰撞修复([报告](notes/p5f/magma-runahead.md));`ed507b1a..d56c0e83` 29 个 DirectVulkan 提交的 shape 波(随 `e1bf3677` 合入,本行此前未记)已退役 packed-float mip 原生 blit(`5310ff62`)、resolve(`ec4ca06d`)、占位图像(`WirePlaceholderImages.inc`)、copy-image 端点、XFB 捕获 span、纹理回读;`70fb6689` 链关闭 inproc RD32 性能回归(86.85→116.73 fps)。其余工作(2026-09-22 审计改判):~~`SetupDrawSnapshot` 探测字段塌成 dirty mask~~ 与 ~~`VertexInputStateFactory` 内容寻址 CSO~~ **本阶段拒做**(`SetupDraw` 在非 monolith 传输下分支到 `SetupWireDraw`,monolith 快照机制在 split 下不跑;无性能门;ID-P7-5);占位纹理原生化**已落地**(缺 split 车道条目);具名 UBO host payload(D-B8)走了直绑常驻 `VkBuffer` range 的备选,欠一次测量 + 裁定关 OQ-6;内部 shader 烘焙**半已落地**(颜色 blit `WireColorBlitSpirv.h`,仅 split 臂),欠深度 mip 烘焙 + `MOBILEGL_BAKED_INTERNAL_SHADERS` 新鲜度门(0 处);D18 按 ID-P7-6 读法一句闭。**新增必须项**:Magma `StateObjectDeathOps`(六处特判)、OQ-8 归档 `storageBlocks`(`MagmaProgramSource::EnsureStorageBlocks` 每 draw 重跑 SPIRV-Reflect)、OQ-10 `kCapResidentSubData` 从未发布(split 下双后端退回就地 memcpy)、两处 `MagmaP7AllocatorDebtScope`。**P6 真机发现(2026-09-22 归此)**:`DirectVulkan` 分离路径在 Redmi 上两次观测 0.988998 / 0.976494(inproc 与 spawn 同表现,pbuffer monolith 1.0;case 归属、重复次数未记录,原始证据不在树内;取自 run-ahead ARMED 下,**lockstep 对照从未在 golden 口径下跑过**——wave 1 的 E1)——Magma × 真实 GPU;树上 `@P7` 具名拒绝**实为 15 处 / 4 文件**(`multisample-blit-shape` / `-aspect`、`depth-stencil-mipmap`(已窄化到 D\|S 合并)、`vertex-layout`、`vertex-format-conversion`、`texel-buffer-native-format`、`unaligned-{texel,storage,atomic}-buffer-range`、`storage-buffer-native-range`、`uniform-block-native-range`、`uniform-buffer-byte-tail` / `-dynamic-offset`、`copy-image-in-place`、`default-color-blit-shape`;外加 Magma 无 `StateObjectDeathOps` 与 `buffer-legacy-arm`),**全部是绕过 `Session::Fail` 与普查门的裸 abort**;必须退役 `.6/.8/.9/.11/.12/.13`,其余改 decline 即可;链接实验分给 P7 的 **101 个符号**(D12)。`DynamicBackendParameters` 定宽重写**不再是 P7 的**——它是跨平台 wire 的前提,归 P6.5 wf | 集成 + trace 在 Magma 的 push 与 split 下全绿(inproc 半已是硬门;**spawn / TCP 臂今天 DirectVulkan 条目为 0**——四条 split 臂硬编码 `MOBILEGL_BACKEND_TYPE=DirectGLES`,wave 0 补后端维度);verify 零分歧(verify 今天只注册 monolith,verify+split 撞旧 `PipeRespecifyScope` 断言,先清);真机 DirectVulkan split ssim 回到 1.0(分母排除 rd12 in-world 与 create-indirect,ID-P7-4;必须带 `RUN_AHEAD=0` 对照臂);184 符号棘轮(契约 §12.1)下降 P7 的 101 个——原 "`nm -D libMobileGLServer.so \| grep glslang` 为空" 不可达,D12 裁定 server 镜像就是整个 `libMobileGL.so`;仪器 `scripts/link_ratchet.py`(存符号列表、只对新增红)归 wave 0;CTS 五块(`texture_*` / `shader_image_*` / `packed_pixels` / `direct_state_access.*` / `uniform_buffer_object*`)先立 monolith×DirectVulkan 基线再比 inproc,≤0.5 pp 且新 crash = 0 单独硬红。**再基线检查点:中点完成子系统 < 40% 立即重定基线**(分母 = `notes/p7/PLAN-PH-P34B-P7.md` §4 的 9 项) | +| **P7** DirectVulkan(Magma)全量迁移 | **进行中;wave 0–2 已落地,40% 检查点 6/9 已过(2026-09-22,`origin@b089e0de` + 集成树上的 B3)**:审计 + 五波计划见 `notes/p7/PLAN-PH-P34B-P7.md` §1.3 / §3,规范 `MG_Remote/CONTRACT-P7.md`,裁定 `notes/p7/INTEGRATOR-DECISIONS-P7.md`(ID-P7-1..33)。**wave 0** 仪器(Magma 两进程车道三臂、`link_ratchet.py` 186 基线、普查门 79 站点下行棘轮 + `MGPipeSessionFailHook`、设备跑器 `--matrix/--repeat/--archive-dir`、CTS caselists)`origin@801f8eda`;**wave 1** 设备窗口 #1(门 3 分母 36、E0–E7 归因、CTS `$BASE` 五块);**wave 2** X1(arm64 persistent-map tracker 从不认领 fault)、F1(split 起会提前)、C(`StateObjectDeathOps`、OQ-8、OQ-10、vertex-layout 拆分)、A(对齐 / native-range)、B(mip 半退役、深度 mip 烘焙 (A)(D)、copy-image、default-color-blit、回读 fence)、B2(multisample shape/aspect、AllocatorDebtScope ×2 删、(B′)、棘轮 **186→173**)、B3(**OpenRA 真机分歧的真因**:wire 臂 completed-frame-serial floor 在中帧 pooled-fence 提交退休时无证据上升 → 帧首次 `glBufferSubData` 走无序 host memcpy;计数 26→0,spawn 臂 red-once;ID-P7-33)——**树上 `@P7` 拒绝站点归零、§3.2 六退役全成、Magma 三臂 95/74/76**。**真机**:p7w4 门 3 AFTER 34/36 与 monolith 差 ≤ 0.0005;OpenRA p7w5 **27/27 golden**(ID-P7-34,项关闭);bsl-esc-menu = server 死 VkBuffer 无界累积(一帧 1.3 M 调用,ID-P7-32,**M2** 在修)。**已到集成树(2026-09-22 夜,ID-P7-37)**:B2 返工 r1 + r2、B3 返工 + 修复轮、V1、F 片 1–3 已推送 `origin@87584d0b`(2026-09-22 夜,ID-P7-39;pipe 门全绿:magma 97 / 76 / 71、full 535、verify 构建 1140 / 1074、OpenRA split 回放 0 条 unsound;四份 fable 审查 land with fixes,修复轮已落地,ID-P7-44);**M2 + M2 r2 已推送**(主机 bsl spawn server 825 → 546 MiB;memo destroy-epoch 关闭 wire store 句柄复用的 ABA;第二个泄漏 = descriptor set → M3;ID-P7-46);V1 修复 r2 已推送(read 侧负控数到 2、FATAL=0 摘要在 Close 前写出,ID-P7-47);**在跑**:F2 待派;窗口 1b 矩阵在跑(配对窗口在直连 LAN 上同样触发,ID-P7-41)。提交尾注已按用户令改写(origin `3c80cd62`)。**2026-09-23 更新(ID-P7-49–54)**:M3 已在 7ea7ce89 推送;B4 已集成于 pipe b19297d5,源码审查 land、完整集成门全绿(ID-P7-51)。p7w6 DirectGLES × TCP 38 例对照与 Photon / D24 同 APK monolith 对照已结案(ID-P7-52/53);两项错图亦在 monolith 复现。F2 PH-4/5/PH-2 已在包分支 commits `2c6a6e25` / `51480f8c` 落地并通过 Luna 审查(ID-P7-54);该矩阵不替代门 3。**余**:F2 PH-6 / PH-1 (3)(4) / PH-7 (5)、fuzz 臂 2 与完整包门;wave 3 棘轮 88;wave 4 CTS AFTER 和门 3;wave 5 fuzz 三臂与整体审查。逐日状态见 [`CURRENT_STAGE_STATUS.md`](CURRENT_STAGE_STATUS.md) | `38919d45` 已补实际游戏的 server buffer consumers 和 Android 旋转 blit([报告](notes/p5f/magma-inproc-fix.md));`194382c9` 又完成 Magma run-ahead、GPU 延迟退休与 VAO 身份碰撞修复([报告](notes/p5f/magma-runahead.md));`ed507b1a..d56c0e83` 29 个 DirectVulkan 提交的 shape 波(随 `e1bf3677` 合入,本行此前未记)已退役 packed-float mip 原生 blit(`5310ff62`)、resolve(`ec4ca06d`)、占位图像(`WirePlaceholderImages.inc`)、copy-image 端点、XFB 捕获 span、纹理回读;`70fb6689` 链关闭 inproc RD32 性能回归(86.85→116.73 fps)。其余工作(2026-09-22 审计改判):~~`SetupDrawSnapshot` 探测字段塌成 dirty mask~~ 与 ~~`VertexInputStateFactory` 内容寻址 CSO~~ **本阶段拒做**(`SetupDraw` 在非 monolith 传输下分支到 `SetupWireDraw`,monolith 快照机制在 split 下不跑;无性能门;ID-P7-5);占位纹理原生化**已落地**(缺 split 车道条目);具名 UBO host payload(D-B8)走了直绑常驻 `VkBuffer` range 的备选,欠一次测量 + 裁定关 OQ-6;内部 shader 烘焙**半已落地**(颜色 blit `WireColorBlitSpirv.h`,仅 split 臂),欠深度 mip 烘焙 + `MOBILEGL_BAKED_INTERNAL_SHADERS` 新鲜度门(0 处);D18 按 ID-P7-6 读法一句闭。**新增必须项**:Magma `StateObjectDeathOps`(六处特判)、OQ-8 归档 `storageBlocks`(`MagmaProgramSource::EnsureStorageBlocks` 每 draw 重跑 SPIRV-Reflect)、OQ-10 `kCapResidentSubData` 从未发布(split 下双后端退回就地 memcpy)、两处 `MagmaP7AllocatorDebtScope`。**P6 真机发现(2026-09-22 归此)**:`DirectVulkan` 分离路径在 Redmi 上两次观测 0.988998 / 0.976494(inproc 与 spawn 同表现,pbuffer monolith 1.0;case 归属、重复次数未记录,原始证据不在树内;取自 run-ahead ARMED 下,**lockstep 对照从未在 golden 口径下跑过**——wave 1 的 E1)——Magma × 真实 GPU;树上 `@P7` 具名拒绝**实为 15 处 / 4 文件**(`multisample-blit-shape` / `-aspect`、`depth-stencil-mipmap`(已窄化到 D\|S 合并)、`vertex-layout`、`vertex-format-conversion`、`texel-buffer-native-format`、`unaligned-{texel,storage,atomic}-buffer-range`、`storage-buffer-native-range`、`uniform-block-native-range`、`uniform-buffer-byte-tail` / `-dynamic-offset`、`copy-image-in-place`、`default-color-blit-shape`;外加 Magma 无 `StateObjectDeathOps` 与 `buffer-legacy-arm`),**全部是绕过 `Session::Fail` 与普查门的裸 abort**;必须退役 `.6/.8/.9/.11/.12/.13`,其余改 decline 即可;链接实验分给 P7 的 **101 个符号**(D12)。`DynamicBackendParameters` 定宽重写**不再是 P7 的**——它是跨平台 wire 的前提,归 P6.5 wf | 集成 + trace 在 Magma 的 push 与 split 下全绿(inproc 半已是硬门;**spawn / TCP 臂今天 DirectVulkan 条目为 0**——四条 split 臂硬编码 `MOBILEGL_BACKEND_TYPE=DirectGLES`,wave 0 补后端维度);verify 零分歧(verify 今天只注册 monolith,verify+split 撞旧 `PipeRespecifyScope` 断言,先清);真机 DirectVulkan split ssim 回到 1.0(分母排除 rd12 in-world 与 create-indirect,ID-P7-4;必须带 `RUN_AHEAD=0` 对照臂);184 符号棘轮(契约 §12.1)下降 P7 的 101 个——原 "`nm -D libMobileGLServer.so \| grep glslang` 为空" 不可达,D12 裁定 server 镜像就是整个 `libMobileGL.so`;仪器 `scripts/link_ratchet.py`(存符号列表、只对新增红)归 wave 0;CTS 五块(`texture_*` / `shader_image_*` / `packed_pixels` / `direct_state_access.*` / `uniform_buffer_object*`)先立 monolith×DirectVulkan 基线再比 inproc,≤0.5 pp 且新 crash = 0 单独硬红。**再基线检查点:中点完成子系统 < 40% 立即重定基线**(分母 = `notes/p7/PLAN-PH-P34B-P7.md` §4 的 9 项) | | **P8** emulation 下放 + 索引宿主镜像 + 协议广度 | 待排 | `MG_Impl/Pipe/HostResolve.cpp`(~~client 数组范围~~ 已由 `beba0256` 落地为 owned buffer;最大索引扫描、`*IndirectCount` 解析,逐站点 reconcile);`Server/IndexHostMirror` **待重裁**(树里 0 处;a6 §6 实测宿主索引 span 无 producer、client 索引已是 owned buffer——按 `kCapNeedsHostIndexBytes` 的真实消费者重新裁定,不照抄 `ARCHITECTURE.md` §10.3);multi-draw client indices(`MultiDrawElements+CLIENT_INDICES` 仍具名拒绝);CopyImage 镜像搬到 client;viewport-array 回放验证;`generate_mipmap` 计划 + CPU 回退纹素;`texture-remint-pull` 仿真下放(15 处具名拒绝);大 blob carrier 只剩 **program archive 与 `draw_vbo` range 尾**(a6 §6;与 P6.5 sl 共用同一分片);`kCapDriverOrderedXfbCapture`(0 处);~~无 present fence tick~~ 只记在 P10 | `'^DirectGLES\.Split\.'` 与 `'^DirectGLES\.'` 逐名相同;trace split 双后端 SSIM ≥ 0.99 含两个 `coherent_as_flush` fixture;`ClientArrayAfterComputeWriteScenario`;`create-indirect` 上 `roundtrips-per-frame` 读零;`index-mirror-bytes` 逐用例发布 | | **P9** 反向通道 | 待排,**P6.5 之后**(2026-09-22 重定范围) | **异步 reply 语义**,机制建立在 P6.5 的消息式 reply 之上(不再造 `SEG_REPLY` slot 池——池今天就有,stream 链路会删它);2 MiB reply cap 与 chunked readback(契约 §10.2.3 从 P6 改判至此,ID-47);PACK-PBO 回读 fire-and-forget + client 侧 `MarkGpuWritten`(ID-57,P6 未做);十个回调里未武装的四个:`OnTextureWriteback`、`OnTexturePullRequest`、`OnMipLevelsGenerated`、`OnLog` 分级(`OnXfbScatterReady` 是零生产者、零消费者、无 EventKind 的死声明——随 P3b/P4b 删除,`kMGPipeCallbackCount` 10→9;`ClientSession.cpp:429`;`OnBufferWriteback` / `OnGpuWritten` / `OnSurfaceChanged` / `OnGlError` / `OnCapsInvalidated` 已武装);`OnGpuWritten` 收窄;`OnBufferWriteback` 批处理 + epoch 排序;`OnGlError` 有序(CONTRACT-P5C §4.2);纹理拉取四条缓解 + 终止符;XFB 命名空间(`DeleteTransformFeedback` 的 server 侧泄漏——按裁定无行、最后两个 class-C 之一)。~~`SEG_EVENT` 溢出策略~~ 机制已由 P5e 落地(`ARCHITECTURE.md` §11.7),剩余的"不排空对端杀宿主"归 Ph | 回读 / XFB 场景在 split 下绿;`TextureRemintPullScenario`(含无解用例);拉取计数逐 trace 发布;两条故障注入 | | **P10** sync / query / present 节奏 | 待排 | ~~client 铸造 query handle~~(已是:`QueryCreate` 为 `kWaitNone`);轮询入口成门铃点 + `MOBILEGL_IPC_POLL_ESCALATE`(0 处;TCP 上是首要杠杆之一);DirectGLES 的 fence 完成度来自逐 fence 退休(`g_completedFrameSerial` 仍只在 `Present` 前进;Magma 那半已由 run-ahead 落地);非 present fence tick(唯一记载处);`present` 1:1(已是);~~credit 默认 1~~(已是默认,`ConfigLoader.cpp:414`);**`PRESENT_CREDIT > 1` 从未量过**(重审 §8.7)——带延迟链路上的首要杠杆,inproc 臂上即可取;roundtrip 计数器与输入延迟直方图(今天只有 `MapPersistentRoundtrips`);`SetSwapInterval`(最后一个手写 class-C,`EmitTables.cpp:1665`) | query / XFB / `AsyncCompile` 场景在 split 下绿;trace 上 draw / state / upload 路径 roundtrip 读零;零 timeout 轮询有界退出;credit 1..3 在 TCP loopback 与跨机臂上的配对记录;配对 A/B 记录 | diff --git a/docs/Disaggregated/notes/p65/window-1b-p7w6.md b/docs/Disaggregated/notes/p65/window-1b-p7w6.md index 3a4798d0..968db2e6 100644 --- a/docs/Disaggregated/notes/p65/window-1b-p7w6.md +++ b/docs/Disaggregated/notes/p65/window-1b-p7w6.md @@ -4,7 +4,9 @@ 清单共 38 例。续跑时 9 例已有终态并跳过(8 PASS、1 idle timeout),本轮新尝试 29 例:16 PASS、8 case-level idle timeout、2 视觉失败、3 missing-result timeout。B4 主机全门与本矩阵有一段时间重叠,可能影响超时耗时;所有超时均保留为未完成/timeout,不能按视觉错图计数。缓存跳过的结果仍计入 38 例分母。 -两项真实视觉失败:Iris Photon v1.3b(SSIM 0.008877075,403,024 mismatch)与 Iris Derivative Main D24.4.14(SSIM 0.850784981,402,598 mismatch),阈值 0.99。Photon 输出几乎全黑,仅见准星和快捷栏;phone logcat 记载 clouds/fog shader varying 类型不匹配,server program unusable 后绑定 program 0。D24 输出保留森林岸边,但前景块发黑、地形/水色偏且玩家手缺失;没有显式应用 shader link failure 或 fatal。两例 server child 均记录 exit=0 / sessionsFaulted=1,client frame reply metrics 仍在推进。两例都需要后续同设备 DirectGLES monolith 对照,才能区分分离路径与本地 GLES 行为。 +两项真实视觉失败:Iris Photon v1.3b(SSIM 0.008877075,403,024 mismatch)与 Iris Derivative Main D24.4.14(SSIM 0.850784981,402,598 mismatch),阈值 0.99。Photon 输出几乎全黑,仅见准星和快捷栏;phone logcat 记载 clouds/fog shader varying 类型不匹配,server program unusable 后绑定 program 0。D24 输出保留森林岸边,但前景块发黑、地形/水色偏且玩家手缺失;没有显式应用 shader link failure 或 fatal。两例 server child 均记录 exit=0 / sessionsFaulted=1,client frame reply metrics 仍在推进。 + +同一设备、同一 trace、同一已安装 APK(测前后 SHA-256 均为 `780bb00e81b9cf2e84298543692c1b005c281dfc2a0f499bfa1af86772625590`)随后跑 DirectGLES monolith:Photon 得到完全相同的 SSIM / mismatch(0.008877075 / 403,024),并复现相同 varying link errors;D24 得到 0.850671535 / 402,596(TCP 为 0.850784981 / 402,598),两臂均见 attribute location 超设备限制。两项视觉失败都能在 monolith 复现,不是 TCP 分离路径特有回归。对照输入 trace SHA 分别为 Photon `217d4939…a69b3`、D24 `fe89d01b…9228b0`。 八个本轮 idle timeout:REI normal-world 302.162s、Xaero minimap normal-world 302.244s、Xaero world-map normal-world 328.432s、JourneyMap normal-world 308.783s、ModernUI inventory normal-world 376.767s、Create indirect 380.309s、Improved Transparency 26.3 313.152s、Iris BSL ESC menu 854 302.749s。若无 phone reap 证据,表中标“未知”,不推断服务仍活或已退出。 @@ -57,4 +59,4 @@ ## 证据位置与注意事项 -原始 runner log、results/checkpoints、diff PNG、client/server logs 和 phone logcat 位于 /home/swung/w7/logs/p7w6-matrix-resume/pass1/;清单在 /home/swung/w7/logs/p7w6-matrix-resume/cases.txt。B4 host gate 与未知子集的 matrix attempts 重叠,timeout 墙钟可能受主机竞争影响;必要时干净重跑 timeout 项和两个视觉失败的 DirectGLES monolith 设备对照。p7w6 APK 早于 M3,后续门 3/CTS 仍须用最终 APK。 +TCP 原始 runner log、results/checkpoints、diff PNG、client/server logs 和 phone logcat 位于 /home/swung/w7/logs/p7w6-matrix-resume/pass1/;清单在 /home/swung/w7/logs/p7w6-matrix-resume/cases.txt。DirectGLES monolith 对照的 actual/diff PNG、result.json、logcat 和应用日志位于 /home/swung/w7/logs/p7w6-monolith-compare/(`archive/.../repeat-01` 与 `archive-d24/.../repeat-01`)。B4 host gate 与未知子集的 matrix attempts 重叠,timeout 墙钟可能受主机竞争影响;这些超时仍只按各自状态记录。p7w6 APK 早于 M3,后续门 3/CTS 仍须用最终 APK。 diff --git a/docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md b/docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md index 57c1fd25..aed8dddb 100644 --- a/docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md +++ b/docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md @@ -4,14 +4,14 @@ ## 当前树与设备 -- WSL pipe 当前 HEAD 为 b19297d5:已含 M3、B4;B4 集成源码审查 land,完整 pipe 门通过。origin/feat/disaggregated 目前仍在 7ea7ce89;B4 及本页等文档收尾后按 SHA 快进和推送。 +- WSL pipe 当前 HEAD 为 e036b4e0:已含 M3、B4 和本页 / 矩阵报告;B4 集成源码审查 land,完整 pipe 门通过。文档严格引用与 diff-check 通过后,已从 `MobileGL-disagg` 按 SHA 快进并推送 `origin/feat/disaggregated`。 - p7w6 APK stamp p7w6-0e16ca27,早于 M3 与 B4;手机矩阵已跑完且没有后续设备门启动。设备侧 retrace 后续必须使用最终功能 APK,不能把 p7w6 当 M3/B4/F2 证明。 - DirectVulkan bsl-esc-menu pbuffer inproc/spawn 各三遍 6/6,六张图与 monolith PNG SHA 一致;本窗口没有采集 maps 行数和 wbuf[] 峰值。 ## p7w6 DirectGLES × TCP 窗口 1b - 真实分母 38:9 个已有终态缓存跳过(8 pass、1 idle timeout);本次尝试 29 个,16 pass、8 case-level idle timeout、2 visual fail、3 missing-result timeout。逐例 armed / reap / SSIM / timeout 记于 notes/p65/window-1b-p7w6.md;原始日志、results/checkpoints、client/server logs、phone logcat、diff PNG 位于 ~/w7/logs/p7w6-matrix-resume/pass1/。 -- 视觉失败:Iris Photon v1.3b(0.008877075,近乎黑图,服务器 shader varying link 失败)和 Iris Derivative Main D24.4.14(0.850784981,部分场景错绘)。二者都应做同设备 DirectGLES monolith 对照,确认是否由 split 路径引入后再修;矩阵终态记录 child exit=0 / sessionsFaulted=1。 +- 原两项视觉失败的 DirectGLES monolith 对照已完成,未重装 APK,测前后 SHA-256 均为 `780bb00e…72625590`。Photon monolith 与 TCP 完全同为 SSIM 0.008877075 / 403024 mismatch,复现 varying link errors;D24 monolith 为 0.850671535 / 402596,TCP 为 0.850784981 / 402598,两臂都出现 attribute location 超设备限制。均不是 TCP 分离路径特有回归;设备现已回到 Home。完整证据 `/home/swung/w7/logs/p7w6-monolith-compare/`。 - missing-result:REI inventory、Xaero minimap in-world、ModernUI inventory。前两例为外层 runner rc=124;ModernUI 到 1900s 外层上限,checkpoint cancelled/child rc=130。不能把这三项算成 visual product failure。 - 8 个 case-level idle timeout:REI/Xaero/JourneyMap/ModernUI normal-world、Create indirect、Improved Transparency、Iris BSL ESC menu 等;部分 phone reap 日志未知。若重跑,逐例保留日志并先降低 host CPU 竞争;idle timeout 和 missing-result 分开记录。B4 host gate 与未知子集矩阵尝试有时间重叠,timeout 墙钟可能受影响。 @@ -19,14 +19,14 @@ - M3:pipe 9fd768d4,ID-P7-50、review-m3 land、完整门已绿;文档与推送已在 3ce5b991 / 7ea7ce89 完成。 - B4:pipe a4c1bc8b / b19297d5,ID-P7-51、review-b4 land。聚合 fence prefix、frame serial 重扫、present slot 回收前等待、pre-pass pending、texture prune、staged extent 清理;deterministic aggregate-wait control 已绿。pipe full gate:G1 .text 0xa52203 / symbols 0/0,census79、ratchet173、parity/audit绿,unit2439、split304、spawn220、tcp223、Magma102/81/71、full540、verify1152/1086,OpenRA两臂1.0 / 0 unsound。日志 ~/w7/logs/p7b4-integration-b19297d5-rerun-20260923/。 -- F2 package p7-f2-driver:raw peer / D11 CSO slot commit db80dd16;PH-3 readback reply bound commit adf2cbe0。前两切片定向测试和 G1 已过。PH-4 staged texture byte bound 仍在 package diff;独立负控曾先触发 ResourceSubData.LevelExtent,已定位为 fixture 未按生产格式打包 respecify upload target,正修正后重验。 +- F2 package `p7-f2-driver` 当前头 `2c6a6e25`,已提交 PH-4 精确 mutable mip extent carrier + server byte bound,以及 PH-2 handle slot/generation 具名拒绝;PH-5 ArchiveVector 上限在 `51480f8c`。D11 raw-record / CSO slot `db80dd16`、PH-3 readback bound `adf2cbe0` 也已在分支。Luna 独立源码审查 = land;build-split 49/49、raw peer 负控全过、`gen_pipe.py --check`/`git diff --check` 干净。pull G1 对精确 `adf2cbe0` 基线:`.text=0xa52203`、symbols 27,837→27,837,added/removed/resized/renamed 0/0/0/0,其他 section delta 全0。日志 `/tmp/p7-f2-all-required-final.log`;G1 `/tmp/p7-f2-g1-adf2-final.md` 与 `.json`。 ## 下一步 -1. 完成本页其余文档更新、check_doc_citations.py --strict,再从 MobileGL-disagg 按 SHA 快进到 pipe HEAD b19297d5 并推送 origin/feat/disaggregated;不触碰 Windows 主 dev 树。 -2. 等 PH-4 raw peer + Store unit 独立 Luna 验证通过后 commit package;继续 PH-5 ArchiveVector、PH-2 SlotTables、PH-6、PH-1 (3)(4)、PH-7 (5),之后做 F2 完整包门与集成源码审查。 -3. 同一设备对 Photon v1.3b 与 D24.4.14 做 DirectGLES monolith 对照;视日志/对照结果再决定修复。必要时在无 host gate 的窗口按需重跑 idle timeout/missing-result 项。 -4. 功能包完成并部署后做门 3:36 例 DirectVulkan pbuffer × inproc/spawn,三遍逐位一致并与 monolith 同会话差 ≤0.0005,OpenRA 1.0;再采 MOBILEGL_PIPE_STATS 下 bsl maps/wbuf[] 峰值。CTS AFTER 五块与 BASE 比 ≤0.5 pp、新 crash 0。 +1. B4 / W6 文档已通过严格引用检查并于 e036b4e0 推送到 origin/feat/disaggregated;不触碰 Windows 主 dev 树。 +2. F2 PH-4/5/PH-2 已 land 在 `p7-f2-driver`(commits `2c6a6e25` / `51480f8c`)。接下来完成 PH-6、PH-1 (3)(4)、PH-7 (5) 与 fuzz 臂 2,再跑 F2 完整包门和集成审查。 +3. Photon v1.3b 与 D24.4.14 的 monolith 对照已完成;两项错图均在同 APK 的 monolith 中复现。保留的 idle timeout / missing-result 项只在需要时、host 空闲窗口按需重跑。 +4. 最终功能包完成并部署后做门 3:36 例 DirectVulkan pbuffer × inproc/spawn,三遍逐位一致并与 monolith 同会话差 ≤0.0005,OpenRA 1.0;再采 MOBILEGL_PIPE_STATS 下 bsl maps/wbuf[] 峰值。CTS AFTER 五块与 BASE 比 ≤0.5 pp、新 crash=0。 5. wave 3 剩余 ratchet 88;wave 5 fuzz 三臂、P7 收官异模型整体审查。 无当前需要用户决策的阻塞;设备验证由 Luna 代理执行,避免与测试相互干扰。 diff --git a/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md b/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md index 92869bc4..0446ccb7 100644 --- a/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md +++ b/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md @@ -55,4 +55,6 @@ | ID-P7-50 | 2026-09-23 | **M3 到集成树,集成者本人对 pipe 源码审查 = land。** `UniformManager` 当前 frame slot 每 2048 次 descriptor Acquire,在下一条 wire draw/dispatch 入口先 flush 当前录制、graphics queue idle 证明所有旧 descriptor 读者退休,再回卷每个 layout 游标及四类 memo;不用旧 `WaitForSubmitIndex` 的单 fence 推断。2049 个不同 SSBO 窗口单帧用例 split/spawn 绿(`retiredSubmit=2 cached=2048`),禁用入口回卷两臂按名红,恢复绿。主机 bsl-esc-menu inproc/spawn 均为 M2 后同一 `ssim=0.998402`、0 Fatal;真实触发一次 M3 回卷,spawn `wbuf[wlivepk=1052 wdefsync=22]`。G1 `.text=0xa52203`、符号 0/0、普查 79、棘轮 173、parity 0、审计 53/53/0;pipe 门 unit 2436 / split 304 / spawn 220 / tcp 223 / magma 102/81/71 / full 540 / verify 1152/1086 全绿,OpenRA 两臂 1.0 / 0 unsound。 | M3 源码 `9fd768d4` 已落地,审查 `notes/handoff/review-m3.md`;设备 p7w6 是 M3 前二进制,M3 设备回归待下一版。queue idle 的极长帧 stall 只记性能。 | `UniformManager.{h,cpp}`、`VulkanRenderer.{h,cpp}`、`MagmaWireReclaimScenario.cpp`、`magma-m3.md` | | ID-P7-51 | 2026-09-23 | **B4 落地,集成者源码审查 = land。** pipe 提交 a4c1bc8b / b19297d5:聚合 fence 前缀等待与目标索引存在性检查、WaitForFrameSerial 退休后重扫并重查地板、Present 槽 command-buffer 回收前等待、pre-pass work 纳入 pending、wire draw/dispatch 周期性 prune、AdoptRun extent 变更清旧 coverage。确定性单 fence 负控共享生产 fence-prefix selector;完整 split 与 verify lanes 均 0 失败,G1 .text 0xa52203 / symbols 0/0,census 79/0 未标记、ratchet 173、parity/audit 通过,OpenRA 两臂 1.0 / 0 unsound。审查 notes/handoff/review-b4.md。 | B4 package + pipe 门全绿,日志 ~/w7/logs/p7b4-integration-b19297d5-rerun-20260923/。 | VulkanRenderer.cpp、FrameContext.cpp、VkBufferManager.cpp、StagedTextureStore.h、SubmitFencePrefix.h | | ID-P7-52 | 2026-09-23 | **窗口 1b p7w6 DirectGLES × TCP 矩阵结案(独立调查,不是门 3)。** 38 例含 9 缓存跳过;29 次尝试 = 16 pass、8 idle timeout、2 视觉失败、3 missing-result timeout。缺结果/超时不计视觉产品红。Iris Photon v1.3b SSIM 0.008877075、D24.4.14 SSIM 0.850784981;Photon server shader varying link 失败后 program 0,D24 为部分场景错绘;两者需设备 DirectGLES monolith 对照。normal-world 与若干长例停在等待且无 P65 进展;B4 host gate 与未知子集 attempts 重叠,timeout 结论需保留此限制。 | 逐例 armed/reap/SSIM/timeout 见 notes/p65/window-1b-p7w6.md;原始日志与图片 ~/w7/logs/p7w6-matrix-resume/pass1/。 | p7w6 APK p7w6-0e16ca27(M3 前) | +| ID-P7-53 | 2026-09-23 | **p7w6 DirectGLES 错图 monolith 对照完成。** 设备 Redmi `2f7cbe2e` 上跳过重装,TCP 与 monolith 复用同一个 trace 和同一个 APK;测前后 APK SHA-256 都为 `780bb00e81b9cf2e84298543692c1b005c281dfc2a0f499bfa1af86772625590`。Photon v1.3b 的 monolith SSIM / mismatch 与 TCP 完全相同(0.008877075 / 403024),两臂复现相同 shader varying link errors;D24.4.14 monolith 0.850671535 / 402596,TCP 0.850784981 / 402598,两臂都碰到 attribute location 超设备限制。判定:两项是同 APK 的 DirectGLES monolith 也能复现的 baseline 错图,不是 TCP split 专属回归。 | 截图、`result.json`、logcat、两侧应用日志:`~/w7/logs/p7w6-monolith-compare/`;trace SHA Photon `217d4939…a69b3`、D24 `fe89d01b…9228b0`。设备回到 Home,无源码或提交变更。 | DirectGLES × TCP 错图判定 | +| ID-P7-54 | 2026-09-23 | **F2 PH-4 / PH-5 / PH-2 landed on the package branch; Luna integration review = land.** PH-4 carries exact mutable mip W/H/D with the accepted ResourceRespecify and bounds staged bytes under server target/format/device limits; PH-5 rejects vector counts whose immediate allocation exceeds remaining archive bytes; PH-2 names slot-cap and backwards-generation faults through the server fatal funnel at reachable attachment-adoption guards. Raw-peer negatives cover extent mismatch, multisample subdata, carrier canonicality, and PH-2 slot / generation refusal. Build-split targeted gates: ServerSpawnTest 20/20, StagedTextureStoreTest 13/13, ProgramArtifactsCodec 6/6, SessionHandshakeTest 10/10 (49 total); generator + diff checks pass. Strict pull G1 uses exact package base `adf2cbe0`: `.text=0xa52203`, 27,837 symbols unchanged, 0 added/removed/resized/renamed, all section deltas 0. | commits `51480f8c` (PH-5) + `2c6a6e25` (PH-4/PH-2); combined CTest `/tmp/p7-f2-all-required-final.log`; G1 `/tmp/p7-f2-g1-adf2-final.md` / `.json`. | `ProgramArtifactsCodec.cpp`, `StagedTextureStore.h`, `SlotTables.h`, `Managers.{h,cpp}`, raw FBO / texture peer controls | | 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` |