AT 验收 B1+B2:文件系统/沙箱 + 知识/项目/记忆(15 个 WX-T + WX-E003/E004)定级
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
> 权威方案:`docs/design/standard-capabilities/acceptance-test-plan.md`,分支 `codex/2985-capability-acceptance-plan`(跟踪 #2985)。**先完整读 §1 §3 §11 §12。**
> 基线见 **#2996**,绑定 SHA `938d16bf3a49c4047f42bbc697833cd921d1053e`。
## 范围
方案 §6 Tools 矩阵中「组合」列为 **FS(8)**、**KNOW(2)**、**PROJECT(2)**、**MEMORY(3)** 的全部行,共 15 个 WX-T。
加 §5 平台前置两项:
- **AT-E003 / WX-E003 sandbox-backend**:write→execute→read→恢复真实闭环。反证要求穿越、技能包写入、禁网、超时、跨用户**全部拒绝**
- **AT-E004 / WX-E004 skill-package-mount**:SKILL.md / references / scripts / assets 渐进读取且脚本真实执行。反证要求缺文件、坏 hash、跨组织、版本切换不污染运行中快照
## 与你相关的已知事实
- `apps/skill-sandbox` 的 `container-network-isolation.test.ts` 与 `office-skills-container-network-isolation.test.ts` 的 `beforeAll` 会跑 `docker build`(timeout 600_000)。**CI 上各约 133s / 137s,测试真跑并通过**;**本地实测撞满 600s 后测试被 skip、报 `2 failed`**。别把本地那个当失败。
- 基线里 `skill-sandbox test` = 16 files / **72 passed / 0 failed / 1 skipped**。
## 交付物:状态表 + issue,不是「把它修绿」
对负责的每一项,按方案 §1 的枚举定级并给出**实测证据**(命令 + 真实用例数 + exact SHA):
| 状态 | 含义 |
|---|---|
| `PASS` | 所有适用层级和反证通过(**必须同时有正向与至少一条反向/越权证据**) |
| `PARTIAL` | 组件通过,但真实模型 / DevApp / 视觉 / 权限层尚缺 |
| `BLOCKED` | 实现或环境前置缺失 |
| `FAIL` | 已执行且行为不符合契约 |
| `N/A` | 该层不适用,须写明理由 |
⚠ **缺实现或缺环境 ⇒ `BLOCKED`,不是 `FAIL`。** 每个 `FAIL` / `BLOCKED` 单独开 issue,标题带 AT-* / WX-* ID,并在本 issue 里登记编号。
## 方案本身有两处缺陷(已立案,别照抄)
- **#2991**:§10 的真库命令**收集到零个测试文件**(`No test files found`),而 §11 自己明令「零收集必须失败」。另有三条 api 命令写成裸跑(实测 `no tests` + exit 1),并漏写两个前置(`uv sync --frozen --extra dev`;SQL-TLS 要求 `COMPOSE_PROJECT_NAME` 以 `wsx-` 开头)。
- **§14 把记分牌当红线**:`chat-task-workbench` **按设计就是红的**(`playwright.chat-read.config.ts:210-214`),是能力缺口记分牌不是回归门。**别去修它那 14 条。**
## 判据纪律(本轮已栽六次)
1. **红 ≠ 跑过**:先在日志里找**该测试自己的断言输出**(用例数、期望 vs 实际)。只有 `beforeEach` 报错、`spawn ENOENT`、连接失败、超时这类,一律先判「没跑到」。本轮 19 项 e2e-full 失败里有 **9 项从来没执行过一条断言**。
2. **绿灯 ≠ 跑过**:`harness-verify` 的 `success` 里 `e2e-full` 常常是 **skipped**(见 #2996)。引用绿灯前先确认该 job 不是 skipped。
3. **重跑绿才是判据**,重跑本身不是。
4. **空测试集合 = 失败**:`pnpm --filter` 缺脚本时 exit 0;vitest 过滤器按 **cwd** 解析不按 `--root`。**每条命令核对真实用例数。**
5. `cmd | grep` 的退出码是 grep 的。
6. 已知 #2989:fixture id 撞**全局**主键,**碰撞确定、受害者随机**。看到 `beforeEach` duplicate key 先想到它。
7. 已知 #2968:整族 `agui-bridge-*` 共享固定 30s 预算,**一天内骗过三个不相关的 PR**。
## 进度回写(硬性要求)
**每完成一个子项就在本 issue 回一条评论**,不要攒到最后:已定级哪些、证据是什么、开了哪些 issue。协调者靠这些评论掌握进度,写在别处看不到。
## 边界
- **绝不碰 `/Users/shenyanbin/Documents/workspacex` 根工作区**。独立 worktree,先 `./init.sh`。
- 尽量不起 docker compose 栈;必须起说明理由,跑完 `down -v`。可复用已运行的 `workspacex-kernel-postgres-1`(`127.0.0.1:55432`),独立 `WORKSPACEX_DB`,用完 DROP。
- 修法很小可直接开 PR(正文首行 `Closes #NNNN`);大改先开 issue 写清根因与建议。**不要合并 PR。**
Contributor guide
No contributing guide indexed for this repository
Research direction
Read docs/design/standard-capabilities/acceptance-test-plan.md §§1, 3, 11, and 12, then compare the baseline in #2996 at SHA 938d16bf3a49c4047f42bbc697833cd921d1053e. Start with the apps/skill-sandbox isolation tests and verify that each command reports real test counts rather than setup failures or skips. Done means a status table for all 15 WX-T items plus E003/E004, evidence with exact SHAs, progress comments, and separate issues for each FAIL or BLOCKED item.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, playwright, typescript
- Domain
- documentation, security, testing-qa
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100