feat(web): switch to implementation-first capability wave
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-29 01:22:03 +08:00
parent 5fb12cd6a5
commit 7549b9a15c
159 changed files with 14110 additions and 74 deletions

View File

@@ -18,36 +18,21 @@ and (when authorized) repository push:
```text
按 nextTask.md 接续执行。
这是执行命令,不是计划或状态咨询。进入 CONTINUOUS 模式,每次只完成一个有边界的任务,成功交接后立即从新 parent manifest 继续,直到全部任务完成、队列闭合或遇到真实停止条件。
这是实现命令,不是计划或状态咨询。进入 IMPLEMENTATION-FIRST 连续模式:先使用仓库已有源码把完整功能链路(Blender WebEngine Main、协议、WASM worker、客户端和前端)逐能力族实现并接通;详细 Chromium 生产证据、双次确定性、逐项 parity overlay 延后到实现波次完成后的验证波次。
1. 先读取 `AGENTS.md` 和 `docs/EXECUTION_QUEUE.md`,然后运行:
`node tools/web/print-task-context.mjs`
`node tools/web/check-task-context.mjs`
2. 当前任务必须等于队列中 parent manifest 的 `nextTask`。只读取当前任务卡、parent manifest/status 和 task-context 列出的最小输入;禁止默认读取完整历史计划、全部 `docs/status` 或完整 6900 条目详情。
3. 每次只执行当前任务卡规定的一个行为或一个独立证据变化。`M*-GAP-*` 只作回归覆盖,`WBV2-*` 才负责生产能力;只使用 Chromium,禁止 Firefox/WebKit。
4. 绝不重复工作:
- 先比较 source hash、behavior hash、dedupe key 和已有 manifest;相同证据直接复用;
- 已有相同行为的 Blender/WASM/Chromium 运行不得再次执行;
- 6900 条目按 capability family 和唯一行为批次推进,不逐条重复验证;
- 已完成条目只作回归引用;代表性回执不能升级为全家族完成。
5. 新行为必须有真实源码或 WebEngine Main 路径、Chromium 生产测试、malformed/unsupported 失败边界、事务或 undo/redo、save/reopen,以及第二次相同运行的确定性证据。
6. 只有一对一且 hash-bound 的完整证据才能写入 completion overlay。原始 P0 inventory 和历史 provenance 保持只读;`effective completed/pending` 只能由 overlay 计算,不能篡改原始 6900/6618 基线。
7. 长输出写入 `tests/golden/<task>/command.log`,交互只报告退出码、短尾部、构件路径和 SHA-256。
8. 任务成功后运行:
`node tools/web/check-task-context.mjs --task <task-id> --write`
`node tools/web/check-context-governance.mjs`
`node tools/web/check-execution-control-plane.mjs`
`node tools/web/check-v2-task-index.mjs`
`node tools/web/check-v2-handoff.mjs`
`npm --prefix web run test:context-governance`
`npm --prefix web run test:task-context`
`npm --prefix web run typecheck`
`npm --prefix web run lint`
`git diff --check`
9. 只有所有门禁、构件 hash 和 manifest 引用通过后,才使用仓库生成器更新 index/catalog/card、提交并推送现有 `origin/main`。凭据只能交互输入,不能写入文件、URL、日志或提示词;推送后核对 `HEAD == origin/main`。
10. 成功交接后丢弃旧任务上下文,重新运行 `print-task-context`,只携带新的 parent manifest/status,不能等待下一条用户消息。
11. 任一命令失败、输入缺失、预算超限、hash 漂移、治理失败、队列不一致、环境不可用或状态不明时,保持 `in_progress`/`blocked`,不得推进 `nextTask`,不得伪造完成或重试未知的状态改变命令,并报告精确阻塞证据。
12. 每轮结束报告:已完成任务、当前任务、`nextTask`、验证退出码、effective inventory、原始 inventory、构件 hash、提交/推送状态和剩余阻塞。
2. 当前任务必须等于 parent manifest 的 `nextTask`。只读取当前任务卡、parent manifest/status 和 task-context 列出的最小输入;禁止默认读取完整历史计划、全部 `docs/status` 或 6900 条目详情。
3. 每次只实现当前任务卡规定的一个能力族或一个独立接线切片。优先复用和补全已有 Blender 源码、WebEngine Main dispatch、协议类型、worker/client 路由和前端入口;不得用模拟数据或空壳接口替代真实实现。
4. 严禁重复工作:相同 source hash、behavior hash、dedupe key 或已存在的实现直接复用;不重复运行已有 Blender/WASM/Chromium 行为;6900 条目按 capability family 批量映射,完成条目只作未来回归引用。
5. 实现波次只要求最小安全检查(源码语法、TypeScript typecheck、lint、可用时的 Vite/build 和浏览器启动 smoke);不为每个新能力生成完整 E2E receipt,不在实现阶段写 completion overlay,不声称历史 parity。
6. 原始 P0 inventory、6900 总数、6618 legacy pending 和历史 provenance 始终只读。effective completed/pending 只由后续 hash-bound 验证 overlay 计算;实现完成不等于条目完成。
7. 长输出写入 `tests/golden/<task>/command.log`;交互只报告退出码、短尾部、构件路径和 SHA-256。
8. 任务成功后运行 `node tools/web/check-task-context.mjs --task <task-id> --write`、`node tools/web/check-context-governance.mjs`、`node tools/web/check-v2-task-index.mjs`、`npm --prefix web run typecheck`、`npm --prefix web run lint` 和 `git diff --check`;完整生产验证门禁统一在验证波次执行。
9. 所有实现门禁通过后自动提交并推送 `origin/main`,从新 parent manifest 重新读取 `nextTask` 继续。凭据不得写入文件、URL、日志或提示词。
10. 任一命令失败、输入缺失、队列不一致、环境不可用或状态不明时,保持 `in_progress`/`blocked`,不得推进指针、伪造完成或重复未知结果的状态改变命令。
11. 每轮结束报告实现切片、当前任务、`nextTask`、最小检查退出码、原始 inventory、effective inventory 是否保持不变、提交/推送状态和剩余真实阻塞。
```
## Resume Command
@@ -219,12 +204,12 @@ Recorded: 2026-08-22 America/New_York
| Field | Value |
| --- | --- |
| Current task when this file was written | `WBV2-P24-001` |
| Current task when this file was written | `WBV2-P27-002` |
| Current task state | `in_progress` |
| Parent manifest | `tests/golden/WBV2-P24-000/manifest.json` |
| Current task card | `docs/tasks/WBV2-P24-001.md` |
| Current task-context nextTask | `WBV2-P24-002` |
| Focused command | `node tools/web/generate-wbv2-move-selection.mjs --write` |
| Parent manifest | `tests/golden/WBV2-P27-001/manifest.json` |
| Current task card | `docs/tasks/WBV2-P27-002.md` |
| Current task-context nextTask | `WBV2-P27-003` |
| Focused command | `node tools/web/generate-wbv2-chromium-batch.mjs --task WBV2-P27-002 --write` |
The snapshot is informational and may become stale. On every resume, the queue,
parent manifest, and fresh `print-task-context` output win. Never infer a task