[MG_Remote, docs] (P7): CONTRACT-P7 §3.2 records package A (byte-tail retired, ranges clamped, alignment declines), ID-P7-21/22

This commit is contained in:
2026-09-22 16:23:32 -04:00
parent 2207b6d9ee
commit 5937b4fcf2
2 changed files with 8 additions and 4 deletions
+6 -4
View File
@@ -64,10 +64,12 @@ P7 收官 = 五道出口门同时成立(§2–§7),而不是路线图 P7
| `default-color-blit-shape` | `WireFramebuffer.inc:601` | **退役** | 恒等变换回落 `vkCmdBlitImage` 臂(`:611-624`);非恒等旋转先 resolve/copy 进 scratch 2D RGBA 再 shader blit(复用 `:560-590` 的 scratch);四旋转之外 decline |
| `multisample-blit-shape` / `-aspect` | `WireFramebuffer.inc:631/:641` | **退役** | shape:resolve 进 scratch 单采样再 `vkCmdBlitImage` 缩放/翻转;aspect:MS 深/模板 → 单采样用 `VK_KHR_depth_stencil_resolve`(`DynamicBackendParameters` 里查扩展)或 `texelFetch(sampler2DMS)` 写 `gl_FragDepth` 的 shader resolve;单采样 → MS 尺寸不同 decline |
| `depth-stencil-mipmap` | `WireFramebuffer.inc:753` | **退役**(随烘焙 (A)) | `GenerateWireMipmap` 深度分支接 `WireDepthMipmap.{vert,frag}` 烘焙程序 |
| `texel-buffer-native-format` | `UniformManager.cpp:1153` | decline | 可选:重打包回落 |
| `unaligned-{texel,storage,atomic}-buffer-range` | `:1161/:1551/:1552` | decline 或拷入对齐 transient | 可选;SSBO 可写范围的 copyback 未定 |
| `storage-buffer-native-range` / `uniform-block-native-range` | `UniformManager.cpp` | decline(钳/拆) | 可选 |
| `uniform-buffer-dynamic-offset` | `:2400` | decline | 可选(>4 GiB) |
| `uniform-buffer-byte-tail` → **已退役(wave 2-A,`5a14e5a1`)** | — | — | 见上行;真正可达的形状是 `size` 非 4 倍数(offset 非对齐在前端就 `GL_INVALID_VALUE`) |
| `texel-buffer-native-format` | `UniformManager.cpp` | **已 decline(wave 2-A)** | 零占位 view,fetch 读零;只在 Adreno 上有可观测(`GL_RGB32F` buffer texture) |
| `unaligned-{texel,storage,atomic}-buffer-range` | `UniformManager.cpp` | **已具名 decline(wave 2-A)** | 跳过该绑定;可写 range 的 copyback 不做(分不出 readonly、录制点在 B/C 的 draw 尾,配方 `magma-a.md` §3.1);真正活的缺口是 `glBindBufferRange(GL_ATOMIC_COUNTER_BUFFER, …, 4, 4)`,Adreno 64 字节对齐 |
| `storage-buffer-native-range` / `uniform-block-native-range` | `UniformManager.cpp` | **已钳制(wave 2-A)** | 钳到 `maxStorageBufferRange` / `maxUniformBufferRange` |
| `uniform-buffer-dynamic-offset` | `UniformManager.cpp` | **已 decline(wave 2-A)** | >4 GiB transient ring 跳过绑定 |
| `storage-buffer-offset-overflow` / `texel-buffer-offset-overflow` | `UniformManager.cpp` | 具名 Fatal(经 hook) | 算术不变量,不带 `@P7` |
| `vertex-format-conversion` | `WireDraw.inc:272` | decline | 可选:packed converter |
| `buffer-legacy-arm` | `WireDraw.inc:14/:204` | 具名 Fatal 经 hook(`RoleViolation`) | 已是拒绝,只换漏斗 |
@@ -23,4 +23,6 @@
| ID-P7-17 | 2026-09-22 | E2(present credit 扫描)与 E0b 的 ARMED 三遍确定性**不单独跑**:E1 已证明 run-ahead 整条线出局(OpenRA lockstep 仍 0.989、崩溃 case 照崩),确定性在 F1 修复后的复测里按 §7.2 一起做。 | runbook §5 的判别规则;设备时间省给 wave 2 复测与 CTS。 | `E1-lockstep/README.md` |
| ID-P7-18 | 2026-09-22 | F1 落地(`5d698cb9`):split 起会提到 `MG_State::Init()` 之前(`InitSplitRolesBeforeState()`),`CapsMirror::ServerConsumes` 不再从 placeholder 作答(他线程 bring-up 在飞时等 250 ms,否则 `Fatal{CapsBeforeFirstSnapshot}`);**批准** `MG_Config::SplitTransportRequestedByConfig` 作为该门的武装闩——任何绕过 `MG_ConfigLoader::Init()` 手设 `Transport` 再造前端对象的生产路径都会退回 placeholder 作答,今天只有 `ServerLoopTest` 这么做且写了理由。 | 发射者是确定性的(11 个默认纹理在起会前 `resource_create`),主机也发生;不做「把警告调轻 / callMask 全 1」。 | `MobileGL/Init.cpp`、`MG_Backend/Init.cpp`、`CapsMirror.{h,cpp}`、`ClientSession.cpp` |
| ID-P7-20 | 2026-09-22 | wave 2-C 落地(`04292f06..205793ca`)并批准其五条:§5.4 白盒(opcode 49 上 wire)在 P11 采纳档落地前不可达,以「server 按表发布 + 镜像收到」为验收;`g_programResourceCaches` 的 monolith 删除归 P13(G1);`buffer-window` 家族词暂留 `UnmigratedVerb`(改 `ProtocolCorruption` 记 §12);`vertex-layout` 屏蔽原因是七种不是六种;死亡缺口是 server twin 泄漏而非 client slot 泄漏(framebuffer 用例两边计数)。`p7_worktree.sh` 补 `MOBILEGL_ITEST_VK_ICD` 钉。 | 各条理由见 `notes/p7/magma-c.md`。 | `CONTRACT-P7.md` §3.2/§12、`p7_worktree.sh` |
| ID-P7-21 | 2026-09-22 | wave 2-A 落地(`5a14e5a1..2f48ccf4`)并批准:`uniform-buffer-byte-tail` 退役(外扩到字边界读进 staging,一次子字拷贝进 padded block);两处 native-range **钳制**;三处 unaligned-*-range 与 `texel-buffer-native-format` 具名 decline(可写 range 的 copyback 不做——该站点分不出 readonly,且录制点在 B/C 的 draw/dispatch 尾;配方在 `magma-a.md` §3.1);两条算术不变量(`*-offset-overflow`)留作 hook 经过的具名 Fatal、不再带 `@P7`。审计写的「offset = alignment + 1」测试**不可达**(前端对非对齐 offset 报 `GL_INVALID_VALUE`),真正活的缺口是 `glBindBufferRange(GL_ATOMIC_COUNTER_BUFFER, …, 4, 4)`(GL 只强制 `offset % 4`)。 | `notes/p7/magma-a.md`;`@P7` 树上只剩 B 的 5 处(`WireFramebuffer.inc` 4 + `VulkanRenderer.cpp` 1)。 | `UniformManager.cpp`、`F1WireScenario`、`CONTRACT-P7.md` §3.2 |
| ID-P7-22 | 2026-09-22 | S1(`IterationRPProgram203Scenario` exposure texel 差一个)**改判为环境敏感而非 tcp 专属**:A 在未钉 ICD 的树上 inproc 也 3/3 红、pipe(钉 lavapipe ICD)inproc 绿、L 只在 tcp 红。记为 §12 债,归 P6.5 StreamLink × Magma 交叉项的主人(未派);helper 已钉 ICD 免再混淆。 | 三棵树三种结果,唯一变量是 ICD 配置与臂。 | `CONTRACT-P7.md` §12 |
| 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` |