Refactor v2 测试场景矩阵

August 19, 2026 · View on GitHub

status: current planning contract owner: quality-workflow + domain owners last_verified: 2026-08-18

1. 使用规则

  • 场景 ID 一旦进入 evidence 不再复用;语义变化新增 ID。
  • P0 是 release required;P1 是 nightly/RC required;P2 是 live/research。
  • L2-L6 对应 README.md 的证据等级。
  • 同一场景可以有多层测试,但必须指定一个 owner 级主断言,避免每层复制全部分支。
  • negative 验证 current 边界拒绝非法输入;不为已经删除的实现保留正向行为测试。

App Server 公共边界

IDPri主要层场景核心断言
ASV-01P0L3default-stack JSON-RPC dispatch默认 2 MiB 栈从 initialize 进入 MCP/public method,无 stack overflow
ASV-02P0L3/L6stdio request concurrencyinitialize 有序;长 turn 不阻塞无冲突 list/read;response 按 id 关联
ASV-03P1L2/L3shell/git host process测试 shell 不读用户 rc;plain dir 零 Git;仓库 Git 进程有 5 秒 deadline

2. Thread 与会话

IDPri主要层场景核心断言
THR-01P0L3thread start/read/listJSON-RPC response、read model 和 list identity 一致
THR-02P0L3archive/unarchive状态持久化,分页和筛选一致
THR-03P0L3resume existing threadhistory 不重写,新增 turn 接在正确 ordinal 后
THR-04P1L3concurrent list/read无重复、无丢失、cursor 稳定
THR-05P0L3invalid/not-found thread结构化错误,不创建影子 session

3. Turn 生命周期

IDPri主要层场景核心断言
TRN-01P0L2/L3accepted -> started -> completed单一 terminal,事件顺序和 read model 完整
TRN-02P0L2/L3queued turn队列顺序、上下文和用户输入不串线
TRN-03P0L2/L3provider/runtime failurefailed terminal 可恢复,错误归属明确
TRN-04P0L2/L3cancel before/while runninginterrupted/cancelled 单终态,无后续幽灵 delta
TRN-05P0L2/L3follow-up after terminal新 turn identity,旧 turn 不被改写
TRN-06P1L2/L3duplicate terminal/event replay幂等,不产生重复 item 或统计
TRN-07P1L2/L3queued turn after restart队列事实可恢复或按合同显式失败

4. Item、投影与内容

IDPri主要层场景核心断言
ITM-01P0L2/L3user/assistant message lifecyclecreate/update/complete identity 稳定
ITM-02P0L2/L3reasoning before/around answerordinal 决定位置,不靠到达时间猜序
ITM-03P0L2/L3out-of-order/stale updatefail closed 或可证明 repair,不污染 current projection
ITM-04P0L2/L3tool item begin/delta/endcall id、turn id、terminal status 一致
ITM-05P0L2/L3multimodal content partstext/image/file/ref 顺序、metadata、恢复一致
ITM-06P1L2/L3remove/rollback/repairmaterialized view 与 event/store 收敛
ITM-07P0L3pagination boundary无遗漏/重复,cursor 与 ordinal 稳定
ITM-08P1L3import historical contentplan/message/tool lifecycle 与 native thread 同语义;高容量 history commit 不得按事件重复全历史 materialize

5. Provider、Context 与使用量

IDPri主要层场景核心断言
PRV-01P0L2Responses request loweringcaptured request 与 capability/parts/tool schema 匹配
PRV-02P0L2Chat/Anthropic loweringprovider-specific wire shape 不泄漏到 runtime algebra
PRV-03P0L2stream delta + terminalusage、finish reason、response identity 完整;terminal event 交付前释放 HTTP body
PRV-04P0L2unsupported capability/media发送前 fail closed,错误可见
PRV-05P0L2auth/rate-limit/server error401/403 与 429 请求层零重试;5xx 有界重试;terminal 分类与 retryable 分离
PRV-06P1L2/L4/L6websocket/SSE fallbackcapability 贯穿 TS/Rust;真实 Upgrade/response.create;连接串行复用;426/重试耗尽/首事件前断线 HTTP replay;跨 Turn sticky;完整 Electron fixture
PRV-07P1L2/L7provider step/token budget预算在 runtime 内于工具执行和下一次 sampling 前生效
CTX-01P0L2/L4context constructiondelta/batch/completed snapshot、边界顺序和下一轮 provider history 一致
CTX-02P0L2/L4compaction/truncationdurable history 保留;摘要接续被移除前缀;provider 只取 bounded tail,工具 full sidecar 不回灌
CTX-03P1L2prompt cache stability无意义变更不破坏稳定前缀/cache key

6. 工具、审批与 Sandbox

IDPri主要层场景核心断言
TOL-01P0L2/L4read/search/apply/shell successcurrent registry、结构化 args/output、终态完整
TOL-02P0L2/L4tool failure/timeouterror output 回传模型且 turn 可继续/终止符合合同
TOL-03P0L2/L4oversized/binary output截断、artifact/reference 和上下文上限正确
APR-01P0L2/L3/L6approval allowrequest/response id 对齐,执行一次;compact terminal 展开后唯一脱敏记录可见
APR-02P0L2/L3/L6approval deny不执行工具,结果回传,turn 收敛;compact terminal 记录可展开
APR-03P0L2/L3/L6approval cancel/restartpending request 可恢复或显式关闭;canceled terminal 记录可展开
SBX-01P0L2sandbox allowed path权限范围精确,不扩大到父目录
SBX-02P0L2sandbox/network denied拒绝可解释,不通过 fallback 绕过

7. MCP、Skills 与 Multi-Agent

IDPri主要层场景核心断言
MCP-01P0L2/L4server start/list/call/stoptool/resource/prompt identity 与 connection owner 一致
MCP-02P0L2/L4/L6elicitation/sampling requestreverse JSON-RPC 穿过 Electron/preload/App Server;runtime connection 精确广告 capability,Renderer response、MCP ledger 与 provider continuation metadata 完整
MCP-03P0L2/L4one server failurestart error 以 JSON-RPC error 返回;失败 server 为 stopped,健康 server 的 status、tool list/call 与 resource read 连续可用
MCP-04P1L2/L4restart/reconnectpending/tombstone 处理和 active timeout 正确
SKL-01P0L2/L4skill discovery/read/bindstable id、metadata、workspace scope 一致
SKL-02P0L2/L4malformed/unauthorized skillfail closed,不注入上下文或工具面
AGT-01P0L2/L4spawn child with fork_turnsnone/all/N 语义、parentThreadId 和 child history 正确
AGT-02P0L2/L4send/follow-up/list/waitmailbox、trigger-turn 和状态语义与 Codex 对齐;Result 必须按同一 itemId 产生 message.delta(in_progress) -> message.completed(terminal),多个 Result 可在同一 turn 独立完成,ack 只认 terminal Item
AGT-03P0L2/L4/L6interrupt/close/restart childterminal、edge 和持久化恢复一致;cold restart 后 child identity、terminal mailbox activity、visible DOM 与 read model 保持一致
AGT-04P1L2/L4concurrent childrenchild session/thread/mailbox 路由隔离;多个 Result 一次聚合且不重复;一个 child failed 不污染 completed sibling;canonical UserMessage 保留完整 task content

8. 恢复、GUI 与桌面链

IDPri主要层场景核心断言
RCV-01P0L3/L4restart after completed turnhistory/detail/list 与重启前整对象一致
RCV-02P0L3/L4restart during running turnrunning/failed/interrupted 状态不伪造 completed
RCV-03P0L3/L4corrupted/stale projectionrepair/fail-closed 可见且不覆盖 canonical store
GUI-01P0L5send and stream用户消息、assistant 与 terminal DOM 可见;Renderer/trace/runtime/read model turn identity 一致,后续 probe 不得冒充产品 turn
GUI-02P0L5cancel/retry/re-entrystop 命中 current cancel、read model 为 canceled、输入框恢复;同 session 下一 turn 可完成
GUI-03P0L5history switch/reopen不丢 item/content part/artifact,选择 identity 正确
GUI-04P0L5approval/MCP/multi-agentpending/decision/child state 可操作且可恢复
ELN-01P0L6Electron current chatpreload/IPC/App Server/runtime/read model/DOM 同一 identity;legacy/mock/page error 均为零
ELN-02P0L6Electron cold restartuserData/appData 隔离,history 与 pending state 正确
ELN-03P0L4/L6sidecar/backend unavailablepackaged unavailable 在 JSON-RPC fail closed;Electron backend failure 保留正文、read model failed、输入框恢复且无 production mock fallback
ELN-04P1L6packaged resources/pathbundled sidecar、schema、assets 和平台路径可用

9. Live、平台与非功能

IDPri主要层场景核心断言
LIV-01P1L7live text turnprovider/model/config/usage/latency/transcript 可复核
LIV-02P1L7live tool loop多轮工具成功率、恢复率和成本
LIV-03P1L2/L3/L7live multimodal图片只在 provider wire hydrate;direct-answer tools=0;generation controls 下沉;read/evidence 无 inline payload;live turn 真实 completed
EVAL-01P2L7product task suiteoutcome grader + pass@k/pass^k + 样本版本
PLT-01P0L8macOS RC本地 Forge package 严格签名与 packaged Gate B;正式 Developer ID/notarization/DMG 的 install/update/path/permissions/current chain
PLT-02P0L8Windows RCForge Squirrel N-1 install;真实 preload/IPC updater 请求隔离候选 feed,downloaded/restarting 与 candidate path 可证;候选 Lime.exe Gate B
PERF-01P1L8long thread/read modelpagination、内存、首帧/首 token 不随历史失控;1200-command Codex import 在 30s owner budget 内完成且 fidelity 不丢项
SOAK-01P1L8repeated turns/restarts同一 Electron/App Server 生命周期逐轮记录 Thread/Turn/Item、唯一 terminal、PID/RSS 趋势;至少两次 cold restart 后无幽灵进程或数据漂移

10. DeepSWE Coding

IDPri主要层场景核心断言
DSW-00P1L7source/slice preflightsource commit、20 个 task、schema、verifier metadata 一致
DSW-01P1L7single-task adapterApp Server current chain、真实 terminal、patch 和 verifier evidence 完整
DSW-02P1L7Smoke 10五语言各两题,基础设施失败为零,pass@1/成本/失败类别完整
DSW-03P1L7Release 20语言与 focus 分层,不低于冻结 baseline 的 non-inferiority 门槛
DSW-04P2L7three-trial bake-offpass@3/pass^3、成本和稳定性在相同配置下可比较
DSW-05P1L2/L7runtime budget enforcementtoken 用尽后零工具执行、零额外 sampling,adapter 只记录终态而不抢先取消
DSW-06P1L2/L7apply_patch write probe真实 provider tool catalog 含 apply_patch;patch 生命周期成功、文件精确变更、git patch 非空,最后一步仍为 tool_call 时归 provider_steps exhaustion
DSW-07P1L7upstream/schema migration固定 DeepSWE schema 1.3 commit 与 Pier 0.3.1;network_mode、verifier.collect、license/provenance 和 preflight 一致
DSW-08P1L7batch score aggregationSmoke 10/Release 20 三 trial;pass@1/pass@3/pass^3、成本、时延、失败 owner 与 infra validity 可复核
DSW-09P1L6/L7Desktop Smoke 5五语言原始 instruction 从真实 Electron 发起;IPC/current chain/GUI terminal/patch identity 一致,mock/error 为零
DSW-10P1L6/L7desktop cancel/restartapproval、取消、cold restart 后状态可恢复;terminal 后零幽灵工具、delta 或文件写入
DSW-11P1L6/L7desktop combined verdict同一 run 的 Gate B summary 与 patch SHA-256 关联同一 Pier result;两者同时通过才为 DesktopCodingPass

具体任务见 deepswe-coding-slice.md

11. Coding 补充集

IDPri主要层场景核心断言
CDE-01P2L7SWE-bench-Live MultiLang固定月度/版本切片、镜像和 grader;补 C/C++、C#、Java、TS/JS、Go、Rust
CDE-02P2L7/L8SWE-bench-Live WindowsWindows/PowerShell 任务在真实 Windows runner 评分,不用 Linux 结果外推
CDE-03P2L7SWE-bench Multimodalimage asset 可见但 verifier/test 不泄漏;视觉 issue patch 独立评分
CDE-04P2L7Terminal-Bench 2.1shell、依赖、环境与安全任务使用固定 Harbor dataset,多 trial 轨迹可复核
CDE-05P2L8OSWorld/WAA VS Code optional仅 computer-use 产品声明启用;桌面操作分数不得冒充代码 verifier 分数

12. 首批交付顺序

  1. THR-01TRN-01TRN-04ITM-03RCV-01:验证 T1 harness。
  2. TOL-01APR-01APR-02CTX-02:验证工具/审批/context 主链。
  3. AGT-01AGT-02MCP-02MCP-03:验证高级 runtime 能力。
  4. GUI-01GUI-02ELN-01ELN-03:形成首个完整 Gate A/B vertical slice。
  5. DSW-07DSW-08:恢复 DeepSWE current verifier 与首个可计分 Core baseline。
  6. DSW-09DSW-10DSW-11:完成 Desktop Smoke 5 双门禁。
  7. 再扩展 CDE、其它 P1、live 和平台矩阵。