boardx / boardx/workspacex

AT 验收 B1+B2:文件系统/沙箱 + 知识/项目/记忆(15 个 WX-T + WX-E003/E004)定级

Open
#3,003 3 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.