diff --git a/.agents/docs/2026-10-05-subos-architecture-design.md b/.agents/docs/2026-10-05-subos-architecture-design.md
new file mode 100644
index 000000000..46a75ed32
--- /dev/null
+++ b/.agents/docs/2026-10-05-subos-architecture-design.md
@@ -0,0 +1,838 @@
+# SubOS 总体架构设计:部署与运行、控制与配置、使用面、隔离、可观测性、模块化
+
+- 起因:#640(SubOS 隐私隔离)及其评论(Ubuntu 24.04 bwrap 探针失败的根因)
+- 基线:`v2026.10.4.1`
+- 整合并取代以下设计中与 SubOS 相关的部分:
+ - `docs/design/subos-isolation.md`
+ - `old/agents-docs/sandbox-cross-platform-design.md`(L0–L6)
+ - `old/docs/plans/2026-05-05-subos-tiered-mode-architecture.md`(light / medium / heavy / full)
+ - `old/agents-docs/sandbox-v5-dual-backend-design.md`、`sandbox-v6-storage-isolation-design.md`
+ - `subos-as-xpkg-design-2026-05-16.md`(`--from`、keeper、D8 一次性实例)
+ - `2026-05-22-subos-sandbox-gpu-passthrough.md`
+ - 相关:`2026-09-06-issue-583-relocation-design.md`、`src/core/home_identity.cppm`、`src/core/uimode.cppm`
+- 状态:设计草案第七轮,一份完整方案,不拆分。附录 B 是自我 review(R1–R16 是第六轮的,R17 起是第七轮的)。本文不含代码改动
+
+> **隐私规则**:本文所有实测只记录计数、是/否和变量**名**,不记录任何值。issue、PR、CI 日志、doctor 输出、审计日志的默认脱敏都按这个规则。
+
+---
+
+## 0. 一句话与文档地图
+
+**核心功能与交互面分离;控制完全由声明驱动;用户面多平台一致,技术面可以替换。**
+
+| 问题 | 唯一回答者 | 章节 |
+|---|---|---|
+| xlings 装在哪、谁拥有、怎么更新 | `.xlings-home` 标记 | §3–§4 |
+| 这次运行是谁、用哪些 home、作用在哪 | xlings 核心的 `HomeContext` | §5 |
+| 允许做什么(获取、授权、网络……) | **策略**:预设 → 覆盖 → 规则 → 策略包;由 `policy.decide()` 判定 | §7–§9 |
+| 人和 agent 怎样使用 | 交互面:受众契约(human / agent)× 渲染(cli / tui / json / ndjson) | §12–§13 |
+| 实际给了什么隔离 | `Policy + Caps → SandboxSpec`,由 provider 执行,由 supervisor 托管 | §15–§21 |
+| 发生了什么 | 统一事件模型;审计由 supervisor 写到沙箱够不到的地方 | §22 |
+
+```
+Part I 现状 ............ §1 实测 §2 缺口
+Part II 部署与运行 ...... §3 概念 §4 部署形态 §5 运行形态与层叠 home §6 目录规范
+Part III 控制与配置 ...... §7 策略模型 §8 SubOS 内的 xlings §9 权限执行
+Part IV 使用面 .......... §10 隔离的渐进式披露 §11 目录映射 §12 进入与外部执行 §13 人与 agent 两套语义 §14 平台一致性
+Part V 技术架构 ........ §15 轴 §16 编译器与会话模型 §17 平台抽象层 §18 能力探测 §19 网络与身份 §20 特权组件与 rootfs §21 性能与能力不缺失
+Part VI 可观测性 ........ §22
+Part VII 代码架构 ........ §23
+Part VIII 质量与交付 ...... §24 测试、CI 与开发工具(testkit / xdev) §25 稳定性规范 §26 交付 checkpoint §27 决策
+附录 A 其他平台的技术路线参考 附录 B 自我 review
+```
+
+---
+
+# Part I 现状
+
+## 1. 实测(在真实的 xlings bwrap 沙箱里)
+
+环境:Ubuntu 24.04、kernel 6.8、bwrap 0.11.2(xim 包)。测量直接在一个真实的 `subos use --sandbox bwrap` 会话里进行,并按 `build_bwrap_argv_()` 嵌套复现了一次,结论一致。
+
+| # | 维度 | 实测 | 根因 | 严重度 |
+|---|---|---|---|---|
+| F1 | **宿主代码执行面可写** | `config/shell/xlings-profile.sh`、`bin/xlings`、`data/xpkgs/`、`.xlings.json` 全部可写 | `$XLINGS_HOME` 以 `--bind`(读写)挂入 | **S0 逃逸** |
+| F2 | **X11** | 抽象 socket 握手返回 Success(完全访问):可截屏、记录键盘、注入输入 | 没有 `--unshare-net`;加上桌面默认的 `si:localuser` 授权 | **S0 隐私** |
+| F3 | 环境变量 | 继承了 103 个,其中有 `*_TOKEN`、`SSH_AUTH_SOCK`、`DBUS_SESSION_BUS_ADDRESS`、`XAUTHORITY` | 没有 clearenv | S1 |
+| F4 | 进程 | 宿主约 830 个进程可见,374 个的 `cmdline` 可读(`/proc/ --cmd ' policy upgrade`;
+ - S / M 形态下,系统配置可以限制允许的策略包来源。
+
+ 环境模板(`--from subos:xxx`,已有的 subos-as-xpkg)可以携带一份策略,规则相同。
+- **校验(fail closed)**:策略里出现**本版本不认识的、与安全相关的字段**(例如 `net: "vpn"`)时,**拒绝进入**,而不是忽略。这与 manifest 写入时"保留不认识的键"不矛盾:写入时保留,是为了不破坏数据;执行时拒绝,是为了不悄悄放宽。
+
+## 8. SubOS 内的 xlings:一定存在,按权限提供全部功能(已确认)
+
+### 8.1 操作分类
+
+| 类别 | 例子 | 沙箱内的执行方式 |
+|---|---|---|
+| 只读查询 | `list` / `info` / `search` / `which` / `status` / `self doctor` | 始终本地执行 |
+| 作用域内的状态 | `use`(版本切换)、激活已有 payload、`remove`(只从本实例摘掉)、实例 `.xlings.json` | 始终本地执行 |
+| 获取 payload、同步索引 | `install` 一个还没装的包、`update` | 按 `permissions.fetch` / `index_update` 的规则 |
+| home 级操作、其他实例、策略 | `self update`、xlings 自身版本、全局配置、`subos new/remove`、`subos config` | 只有 owner 能做:返回 `E_PERMISSION` 并给出宿主侧命令 |
+
+### 8.2 获取动作
+
+| 动作 | 行为 | 写到哪里 | 默认用于 |
+|---|---|---|---|
+| `auto` | broker 自动批准:校验 sha256;hook 在受限的 hook 沙箱里运行 | 用户层(共享) | dev |
+| `ask` | 生成待审批请求(human:等待并提示;agent:见 §13.3) | 用户层 | private |
+| `layer` | 沙箱里的 xlings 自己获取 | 实例私有层 | rootfs |
+| `deny` | `E_PERMISSION` + `xlings install X --subos ` | — | locked |
+
+审批只走沙箱无法伪造的通道(沙箱外的命令或 interface 事件),不在沙箱共享的终端里提示。broker 复用 interface 的 NDJSON 协议,通过 `run/broker.sock` 通信。
+
+## 9. 权限执行:三层,一个判定函数
+
+1. **客户端**:沙箱里的 xlings 读取只读的 `policy.json`,调用 `policy.decide(op)` 提前给出友好提示。
+2. **broker**:在宿主侧对同一个请求**用同一个 `policy.decide(op)` 再判定一次**,这是可信的判定。
+3. **内核**:只读挂载 / Landlock 兜底。macOS / Windows 目前没有这一层,标为 `advisory`。
+
+新增 `xlings install ... --subos ` | 人在里面工作 |
+| **外部执行**(一条命令) | `xlings subos exec [选项] -- [--ttl 30m]` / `subos stop ` | agent 需要连续执行很多条命令时(热会话) |
+| **一次性实例** | `xlings subos exec --temp [--from ] [--sandbox=locked] -- ::/events.ndjson`,事件带 `kind`,`subos log --kind` 过滤 | 一次追加、一个轮转点;读者按 kind 过滤即可 |
+| exec 审计的过滤器由 supervisor 安装 | 由 session-init 在沙箱内安装,listener 经 ctl socket 传给 supervisor | 在 bwrap 之前设置 no_new_privs 会触发 AppArmor 对 bwrap 的限制 |
+| `net=nat`:pasta 接入 bwrap 的 netns | 子进程先 unshare user+net,pasta 按 pid 接入,再 exec bwrap | 非特权的 pasta 无法加入 bwrap 创建的 netns |
+| interface `subos_exec` 流式输出 | 结束后返回输出与退出码 | 流式需要 interface 协议的增量事件,留到下一版 |
+| broker 执行安装时 hook 也在沙箱里 | hook 在宿主侧按 owner 权限运行 | 需要一个能写 payload 的 hook 沙箱,单独做 |
+| 加入会话的交互 shell 有作业控制 | 加入时提示作业控制留在第一个 shell | 终端只能属于一个会话首进程 |
+| Landlock 作为 bwrap 不可用时的回退 | 只在 `--sandbox landlock` 时使用 | 它只限制写入、不隐藏文件,自动替换会悄悄降低隔离 |
+| `fetch=layer`、系统层(M)解析包 | 识别系统层并报告;`layer` 在任何位置都拒绝 | 两者是同一个分层 payload 查找机制,单独实现(`PERM-FETCH-LAYER`、`HOME-LAYER-RESOLVE`) |
+| `net=proxy`、独立 rootfs(C27) | 拒绝 / 不在本 PR | 见计划 §4 |
+| 单次调用 `--sandbox=xim:pack` | 只在 `subos config` 上选择策略包 | 单次调用只能收紧,策略包可能放宽 |
+| `self install --user` | `self update --user` | 系统包的 `/usr/bin/xlings` 不是发布包目录,`self install` 无从安装;`self update --user` 走现有的安装路径 |
+
+需求与测试的对应关系在 `tests/requirements.toml`,`xdev report --requirements --fail-uncovered` 在 CI 中校验。
diff --git a/.agents/docs/2026-10-06-subos-architecture-design-part2.md b/.agents/docs/2026-10-06-subos-architecture-design-part2.md
new file mode 100644
index 000000000..ac9c29aaa
--- /dev/null
+++ b/.agents/docs/2026-10-06-subos-architecture-design-part2.md
@@ -0,0 +1,728 @@
+# SubOS 总体架构设计 Part 2:宿主即 SubOS —— 根呈现、系统包管理器、Luban
+
+- 承接:`2026-10-05-subos-architecture-design.md`(下称 Part 1)。本文**修订** Part 1 的 §4 部署形态、§5 层叠 home、
+ §6 目录规范、§8.2 `fetch=layer`、§20 rootfs 和 C26 / C27;其余章节不变。
+- 交付:与 Part 1 同一个 PR(#641),checkpoint 接着编号(C28 起,§16)。
+- 状态:设计草案第二轮(第一轮的 review 意见已并入:§1 的 D1、D3、D7、D9;§2.4 的生态实测;§4 的两种布局)。
+ 本文不含代码改动。
+- 隐私规则同 Part 1:实测只记录计数、是/否和名字;本文的实测都在临时 home 里完成。
+
+---
+
+## 0. 一句话
+
+**SubOS 是"一份环境",宿主是其中一份。** 一个 SubOS 的内容(工作区里的包和版本、home、策略)与它的
+**呈现方式**(进程怎样看到它)是两件事。现在的 shell 级进入和沙箱是两种呈现方式;本文加第三种 ——
+**根呈现**:SubOS 本身就是 `/`。
+
+- 在别人的发行版上(U / C / P / S / M),宿主是一个 xlings 不管理的"底座";
+- 在 xlings 自己就是系统包管理器的机器上(R),宿主就是 `default` 这个 SubOS 的根呈现;
+- 一个 `--rootfs` 实例是以根呈现进入沙箱的 SubOS;它里面的 xlings 看到的又是 R 模式(嵌套);
+- **Luban** = kernel + xlings + (可选)LubanOS 服务;一款 Luban 发行版就是一个可以作为宿主启动的
+ SubOS,官方版本(tiny / core / desktop …)是 subos 类型的 xpkg,任何人都可以 `--from` 它定制自己的发行版。
+
+rootfs(Part 1 的 C27)、发行版模式、`fetch=layer`、多用户系统层(M)是同一个模型的四个用法,一起实现。
+
+---
+
+## 1. 本轮确认的决策(维护者,2026-10-06)
+
+| # | 问题 | 决定 |
+|---|---|---|
+| D1 | R 模式下 xlings home 的路径(会写进所有 payload) | **两种都支持**(第二轮):`/xlings`(多用户,推荐)和 root 安装到某个用户的 `/home//.xlings`(单用户)。见 §4 |
+| D2 | 系统视图用 shim 还是直接链接 | **直接链接**;shim 只给用户层和项目层 |
+| D3 | 库搜索 | **两个都支持,按消费者分,不做开关**(§7,第二轮确认) |
+| D4 | 缺的基础工具 | 补到 xim-pkgindex |
+| D5 | Luban 的定义 | kernel + xlings + LubanOS 服务(可选);每个人都能基于 xlings 生态定制发行版,像 SubOS 一样;统称 Luban;官方出几个默认版本(tiny / core / desktop 一类的分级,名字待定) |
+| D6 | R 模式下宿主 SubOS 的名字 | **`default`** |
+| D7 | "把验证过的实例应用到系统" | 维护者的模型:**配置默认启动的 SubOS**(它带"宿主"标识,有特殊性),运行时修改配置,**重启生效**。本文据此把 Part 2 初稿的 `apply` 改成"启动项"(§8);第二轮确认 |
+| D8 | 范围 | **所有 SubOS 相关功能一起做,在本 PR 上** |
+| D9 | 第一轮 §17 的待定项 | 维护者:"按合适的建议,推荐的先做"。逐项结论见 §17.1,顺序见 §16 |
+| D10 | "生态里很多包已经不依赖宿主" | 实测见 §2.4:**运行期成立,安装期不成立**;据此新增 C30a(自带的安装工具集)和 elfpatch 失败即报错 |
+
+---
+
+## 2. 现状(实测)
+
+### 2.1 部署形态 S 的主路径不可用(main 上已有,#641 的测试没覆盖到)
+
+把编译出的二进制放在任何 home 之外(模拟 `/usr/bin/xlings`),用一个空的临时 `HOME` 当新用户:
+
+```
+xlings install cmake -y → 9 个包安装成功,exit 0
+cmake --version → 宿主的 3.28.3(不是刚装的 4.4.2)
+xlings self init → "init ok",` | 导出:闭包里的 payload 复制到 `/xlings`;`--disk` 生成 ext4 镜像(`mkfs.ext4 -d`,不需要 root) |
+| `subos pack