diff --git a/docs/Disaggregated/notes/DEBTS.md b/docs/Disaggregated/notes/DEBTS.md
index bc2e899d..3b76976f 100644
--- a/docs/Disaggregated/notes/DEBTS.md
+++ b/docs/Disaggregated/notes/DEBTS.md
@@ -12,6 +12,7 @@
| P11 转出:Espryt 对零散写入按并集框上传,把影子里的旧纹素盖到框内 GPU 写过的空隙上(8×8 探针 41 个错,pull 与全部 Espryt 臂;Magma 对);dev `568090f0` 的 `AdoptDriverLevelIntoShadow` 有同样的并集框近似(读代码) | dev(独立任务) |
| P11 转出:Magma 单进程重放 rd12 在加载帧耗尽 `vm.max_map_count`(65530,其中 57–60k 是 `/dev/kgsl-3d0` 映射)而 abort;split 的 Magma 与 Espryt 都正常 | dev(独立任务) |
| P11 转出:client 与 server 共用日志前缀时,client 以 `"w"` 打开 `.server.log` 写转发来的 server 日志,会截断 server 自己的文件(依赖 server 日志行的 P12 装置测试可能受影响) | 小修 |
+| P11 转出(B0 F1):HyperOS 熄屏时冻结 server app 的整个 uid(FGS 进程、supervisor、会话子进程同一 cgroup),在飞会话 120 s 后 `Fatal{BarrierTimeout}`;FCL 同机用法同样受影响(`notes/p11/B0-CROSS-APP.md`) | B1 的防冻结一项;FCL 侧另议 |
| P11 转出:pull 构建没有任何门跑集成测试(`TextureRemintPullScenario` 在 pull 上自 P9 起就是红的,P11 M 修) | CI / 门的覆盖,需裁定 |
| `GetCaps` 的两个 blobref | 一旦运输,必须有 server → client 的 carrier rule,不能套 `SEG_STAGE` |
| E1 对照的重定义(ID-122) | 无主(开放问题 24) |
diff --git a/docs/Disaggregated/notes/p11/B0-CROSS-APP.md b/docs/Disaggregated/notes/p11/B0-CROSS-APP.md
new file mode 100644
index 00000000..100c7519
--- /dev/null
+++ b/docs/Disaggregated/notes/p11/B0-CROSS-APP.md
@@ -0,0 +1,43 @@
+# P11 B0:同机跨 app 的 client 能否走 unix + 共享内存(真机)
+
+2026-09-29,Redmi `2f7cbe2e`(Adreno 830,Android 16 / HyperOS),代码 `82467823`。server = trace APK #1(`top.mobilegl.plugin.trace`,`untrusted_app:c83`);client = adb shell 里的 retrace 可执行文件(`shell`)与 trace APK #2(`top.mobilegl.plugin.b0.trace`,`untrusted_app:c84`)。只记录、不设门。原始数据 `~/w7/notes/p11/evidence/b0/`,报告 `~/w7/notes/p11/b0-report.md`。
+
+## 结论
+
+**SELinux 挡的是连接这一步。** 另一个安全上下文里的 client 连不上 server app 的 `@abstract` 端点:`unix_stream_socket connectto` 被拒,`shell → untrusted_app:c83` 与 `untrusted_app:c84 → c83` 都一样。一旦连上(用 root relay 代替 broker),现有代码就走 SharedSegments(7 个 fd 经 `SCM_RIGHTS`:4 个段、3 个门铃),c84 读写、mmap c83 的段都没有拒绝,ssim 1.0。**数据面与协议都不用改,缺的是跨上下文的连接中介。**
+
+| client → endpoint | 连接 | 数据面 | ssim(openra / rd12) |
+|---|---|---|---|
+| shell → `@mglb0` | **拒**(`avc: denied { connectto } … scontext=u:r:shell:s0 tcontext=u:r:untrusted_app:s0:c83,…`) | — | — |
+| APK #2 → APK #1 的 `@mglb0` | **拒**(类别不同) | — | — |
+| APK #1 自己的 client → 自己的 server | OK | SharedSegments | 1.0 |
+| shell / APK #2 → tcp loopback | OK | Stream | 1.0 / 0.99988 |
+| root → `@mglb0`;shell、APK #2 → root relay → `@mglb0` | OK | SharedSegments,7 fd | 1.0 / 0.99988 |
+
+## 线程落位决定 shm 是否更快(Espryt rd12 稳态 fps)
+
+| 落位 | tcp | shm |
+|---|---|---|
+| 默认(5 次) | 45–52 | **26** |
+| server apply 线程在 cpu6、client 在 cpu7(3 次) | 54.5 | **118.0** |
+
+默认下 apply 线程亲和两个大核(`auto` = `0xc0`)且自旋,外部 client 的 GL 线程落到同一对核上。干净落位时 shm 与 P10 的 app 内 shm(120 fps)相同,openra Espryt 491 → 903。Magma rd12 在各臂都受 server 限制(默认 19 tcp / 23 shm)。
+
+## B1 要做的(按代码)
+
+| # | 件 | 依据 |
+|---|---|---|
+| 1 | server app 里导出、校验调用方的 bound Service,把 client 的两条已连接套接字经 Binder 交出(最简:Service 自己连两次自己的端点,同 app 允许) | `MobileGLServerService.onBind` 今天返回 null;唯一入口是 `Listen` + `AcceptPair` |
+| 2 | client 端点接受已连接的 fd(如 `fd:,`) | `ClientSession.cpp:846-855` 今天只收 `fork` / `tcp://` / `unix:` |
+| 3 | client 侧能调用 `bindService` 的引导:有 Java 的 client(FCL、启动器)直接用;Termux 一类原生程序没有 `Context`,要伴生的 helper(如 `app_process`)——**待用户裁定** | 原生进程没有 `Context`;`AServiceManager` 只到系统服务 |
+| 4 | 按身份配对控制与辅助连接,不按到达顺序 | F2(下) |
+| 5 | 外部 client 使用期间 server 进程不被冻结 | F1(下) |
+| 6 | 外部 client 会话的亲和 / 自旋策略 | 上表 |
+| 7 | broker 上的调用方认证(unix 端点今天没有令牌) | `Handshake.h` `AuthenticatePeerToken` 无令牌即通过 |
+
+## 顺带查出
+
+- **F1 HyperOS 熄屏冻结整个 server uid**(`frozen uid = … reason=screen off`),FGS 进程、supervisor 与会话子进程同一 cgroup,在飞的会话 120 s 后 `Fatal{BarrierTimeout}`。FCL 的同机用法也会碰到。
+- **F2 `AcceptPair` 按到达顺序配对**(`SocketTransport.cpp:373-420`,TCP 与 unix 共用):`ServerControlActivity` 的就绪探测是一次空的 `connect()`+`close()`,2 s 内会与下一个真 client 的控制连接配成一对,会话读到探测的套接字后退出;两个 client 同时连也会交错。
+- 构建:`-Pmobilegl.apkSuffix` 只改文件名;包名由 `-Pmobilegl.applicationIdSuffix` 决定。
+- 工具提交 `72926a88`(`p11/b0`):`tools/device_bench/disagg/fdrelay.c`,root 的字节 + `SCM_RIGHTS` 中继,B1 broker 的替身。
diff --git a/docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md b/docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md
index ef3bac4a..46c73899 100644
--- a/docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md
+++ b/docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md
@@ -14,3 +14,4 @@
| ID-P11-8 | 2026-09-29 | 本阶段查出、不在 P11 修的:Espryt 零散写入按并集框上传覆盖 GPU 纹素(dev 独立任务);Magma 单进程 rd12 耗尽 `vm.max_map_count`(dev 独立任务);client 与 server 共用日志前缀时截断 server 日志(小修);pull 构建没有门跑集成测试(需裁定);split 的线程落位(性能)。 | 按规矩不顺手修 dev 的缺陷;性能只记录。 | `DEBTS.md` |
| ID-P11-9 | 2026-09-29 | **集成头 `82467823`**(dev 合并 + A-host + 计划文档)整套门:G1 对 P11 基线符号增 0 减 0、`.text` `0xa56413`;fatal census 79、refusal 词 4、link ratchet 171、spawn parity 0、协议修订 3、wire-declines 53/53;卫生 12/12;unit 2654;integration-split / spawn / tcp 392 / 309 / 321;integration-magma-split / spawn / tcp / full-split 214 / 193 / 177 / 613;integration-gpu monolith / inproc 2529 / 2529。verify 构建 unit / integration-verify / integration-verify-split 2654 / 1298 / 1232。主机 retrace 230 / 236(6 项仍是 iterationrp 的宿主 llvmpipe JIT 崩溃,monolith 同挂)。 | — | 全部 |
| ID-P11-10 | 2026-09-29 | 推送前发现 origin 已前进到 `86dc38a0`(另一个会话把 Magma `eglSwapInterval` 的移植直接推到了本线)。它与已合并的 dev `c60639db` 在 9 个文件上逐字相同,另加 split 专属的 `ForgetRequestedSwapInterval`(`MOBILEGL_BUILD_DISAGGREGATED` 下;传输模式下 `~BackendObject_DirectVulkan` 调用它,结束的 server 会话不把交换间隔带给下一个,与 DirectGLES 同规则)。以合并吸收(`9176dcff`,净增 16 行),不改写 origin。 | origin 不能强推;两份实现只差这一处,取并集。 | `DirectVulkan.{h,cpp}`、`BackendObject_DirectVulkan.cpp` |
+| ID-P11-11 | 2026-09-29 | B0 的结论(`B0-CROSS-APP.md`):跨安全上下文连 server 的 unix 端点被 SELinux `connectto` 拒(shell 与另一个 app 都是),连上之后现有代码走共享段、7 个 fd 跨类别可用,数据面与协议不用改;B1 = 跨上下文的连接中介(导出的 bound Service 经 Binder 交出已连接的套接字)+ `fd:` 端点 + 按身份配对 + 防冻结 + 外部 client 的亲和 / 自旋策略 + 调用方认证。原生程序(Termux 一类)的引导方式交用户裁定。`AcceptPair` 按到达顺序配对(F2)是现有 server 的缺陷,TCP 也受影响,独立于 B1 先修。`p11/b0` 保留到 B 落地(证据引用 `72926a88`)。 | 用户点名的消费者是原生程序,而跨上下文只有 Binder 能带 fd;原生进程没有 `Context`。 | `B0-CROSS-APP.md`、`DEBTS.md` |