diff --git a/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md b/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md
new file mode 100644
index 00000000..09dea5d7
--- /dev/null
+++ b/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md
@@ -0,0 +1,78 @@
+---
+title: "全系统真实浏览器多人协作验收"
+task_id: "full-system-browser-e2e-2026-09-26"
+status: in_progress
+created: 2026-09-26
+updated: 2026-09-26
+owner: Cursor
+task_type: validation
+task_tier: large
+policy_revision: "agent-governance-2026-09-21-r1 + cursor-governance-2026-09-24-r1"
+branch: feature/full-system-browser-e2e-2026-09-26
+worktree: .worktrees/full-system-browser-e2e-2026-09-26
+write_scope: [".doc", "web"]
+allowed_environments: ["env:dev"]
+mutex: "full-system-browser-e2e"
+review_state: pending
+integration_state: pending
+deployment: not_required
+cleanup: pending
+remote_sync: not_requested
+---
+
+# 全系统真实浏览器多人协作验收
+
+## 用户目标与授权
+
+- **目标**:对已清库(wipe)的 local `dev`(`BASE_URL=http://127.0.0.1:8080`)做完整、深入的**真实 Chromium / Playwright** 多人协作验收,并按测试报告规范落盘。
+- **硬边界**:禁止用 API 创建项目/发消息/审批文档;仅允许登录探测、health、查控制台/落盘证据用的只读辅助。业务动作一律浏览器点击/输入。
+- **交付终点**:`web/e2e/full-system-browser-e2e.spec.ts` + assets 证据 + `.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md` + agentctl 租约内 commit。
+- **保留**:测完保留测试账号与内容(前缀 `e2e26_` / 项目 `E2E全量-20260926-`)。
+
+## 前置(已完成)
+
+- Wipe 收据:[.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/wipe-receipt.md](../../test-reports/assets/2026-09-26-full-system-browser-e2e/wipe-receipt.md)
+- 清库后:schema 75;用户含 `admin` + goose `seed-*`;10 种子项目;`DISABLE_DEV_SEED_USERS=true`(runtime demo 用户未创建)
+
+## 证据路径
+
+| 产物 | 路径 |
+|---|---|
+| Playwright log | `.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright.log` |
+| 结果账本 | `…/ui-results.json` |
+| 截图 | `…/screenshots/` |
+| console 落盘 | `…/console-*.jsonl` |
+| 测试报告 | `.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md` |
+
+## 用例 ID(优先级)
+
+| 优先级 | ID 前缀 | 覆盖 |
+|---|---|---|
+| P0 | FS-IAM / FS-PROJ / FS-CHAT | 建用户角色、建项目加成员分权、基础对话 |
+| P0 | FS-SQUAD-WF / FS-DOC-REV / FS-NONAUTH | 工作流文档生成→审签→退回→再送→批准;non-author 编辑 vs 送审门禁 |
+| P1 | FS-ASSIST / FS-SQUAD-FREE / FS-UPLOAD / FS-KB / FS-CTX | 助手任务、自由任务、上传解析、KB 只读核验、上下文观察 |
+| P2 | FS-CONSOLE / 冲突 | console 汇总、双人编辑冲突(时间不够则 SKIP+理由) |
+
+## 计划与进展
+
+1. [x] Wipe 完成(sibling wipe task)
+2. [x] 编写 Playwright full-system spec + 任务记录 + 运行脚本
+3. [ ] 实跑 Playwright(**阻塞**:本会话 Cursor Shell `spawn /bin/bash ENOENT`;见 assets `shell-blocker.md`)
+4. [ ] 落盘规范测试报告
+5. [ ] `agentctl with` commit
+
+## 阻塞
+
+- Shell 工具无法 spawn `/bin/bash`(主机上 `/bin/bash` 文件存在)。Write 工具可写文件;无法 curl/playwright/agentctl。
+- 恢复后执行:`bash web/scripts/run-full-system-browser-e2e.sh`(worktree 内),再写报告并租约提交。
+
+## 验证契约
+
+- 层级:产品 UI 真实浏览器验收(验证契约「产品 PI 基线」相关);禁止 stub/SKIP 冒充 PASS。
+- 未跑项必须 `SKIP` + 理由。
+- 工程规范变更附带 e2e;本任务以 UI 证据为主。
+
+## 状态与交接
+
+- 会话执行中;Shell 通道若异常须记录阻塞并恢复后继续实跑。
+- 不 push;不合入除非另授权。
diff --git a/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md b/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md
new file mode 100644
index 00000000..48c9defc
--- /dev/null
+++ b/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md
@@ -0,0 +1,82 @@
+# full-system browser multi-user E2E 测试报告
+
+## 一、 测试背景 (Background)
+- 全系统浏览器多用户验收(Playwright),目标环境 `http://127.0.0.1:8080`。
+- 本报告由 `ui-results.json` 在 Playwright 运行后自动生成(最小报告)。
+
+## 二、 测试目标 (Test Objectives)
+- 验证 IAM 建号、首登改密、项目成员/职责、文档审阅链路及控制台相关用例。
+
+## 三、 测试方案与环境 (Test Plan & Environment)
+- OS: Linux (uname 见 runner)
+- BASE_URL: `http://127.0.0.1:8080`
+- startedAt: `2026-09-26T03:22:23.576Z`
+- projectName: `E2E全量-20260926-muhtqcok`
+- 套件: `web/e2e/full-system-browser-e2e.spec.ts`(21 cases, serial)
+- 证据目录: `.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/`
+
+## 四、 预期结果 (Expected Results)
+- 全部适用用例 PASS;串行依赖下前置失败则后续 SKIP。
+
+## 五、 实际测试结果与判定 (Actual Results & Evaluation)
+
+| Case | Name | Actual (截断) | Verdict | DurationMs |
+|---|---|---|---|---|
+| FS-IAM-01 | admin creates multi-role users | e2e26_author_muhtqcok,e2e26_reviewer_muhtqcok,e2e26_approver_muhtqcok,e2e26_member_muhtqcok,e2e26_guest_muhtqcok | PASS | 2195 |
+| FS-IAM-02 | first-login password change | 5/5 password changes OK | PASS | 2090 |
+| FS-PROJ-01 | create project + members | TimeoutError: locator.selectOption: Timeout 30000ms exceeded. Call log: [2m - waiting for getByText('发起医疗器械新项目立项', { e | FAIL | 30462 |
+| FS-PROJ-02 | — | 未运行 | SKIP | — |
+| FS-CHAT-01 | — | 未运行 | SKIP | — |
+| FS-SQUAD-WF-01 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-01 | — | 未运行 | SKIP | — |
+| FS-NONAUTH-01 | — | 未运行 | SKIP | — |
+| FS-NONAUTH-02 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-02 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-03 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-04 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-05 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-06 | — | 未运行 | SKIP | — |
+| FS-DOC-REV-07 | — | 未运行 | SKIP | — |
+| FS-ASSIST-01 | — | 未运行 | SKIP | — |
+| FS-SQUAD-FREE-01 | — | 未运行 | SKIP | — |
+| FS-UPLOAD-01 | — | 未运行 | SKIP | — |
+| FS-KB-01 | — | 未运行 | SKIP | — |
+| FS-CTX-01 | — | 未运行 | SKIP | — |
+| FS-CONSOLE-01 | — | 未运行 | SKIP | — |
+
+### FS-PROJ-01 失败摘要
+- expected: `project created`
+- actual: `TimeoutError: locator.selectOption: Timeout 30000ms exceeded.
+Call log:
+[2m - waiting for getByText('发起医疗器械新项目立项', { exact: true }).locator('xpath=ancestor::div[contains(@style,"position: fixed")][1]').getByText('E2E成员-muhtqcok', { exact: true }).first().locator('xpath=ancestor::div[contains(@style,"justify-content: space-between")][1]').locator('select')[22m
+[2m - locator resolved to [22m
+[2m - attempting select option action[22m
+[2m 2 × waiting for element to be visible and enabled[22m
+[2m - did not find some options[22m
+[2m - retrying select option action[22m
+[2m - waiting 20ms[22m
+[2m 2 × waiting for element to be visible and enabled[22m
+[2m - did not find some options[22m
+[2m - retrying select option action[22m
+[2m - waiting 100ms[22m
+[2m 60 × waiting for element to be visible and enabled[22m
+[2m - did not find some options[22m
+[2m - retrying select option action[22m
+[2m - waiting 500ms[22m
+`
+- 根因线索(Playwright): `selectOption` 超时 — 成员角色 `