feat(web): continue source-backed implementation waves
This commit is contained in:
372
docs/BLENDER_WEB_PARITY_FOLLOWUP_PLAN.md
Normal file
372
docs/BLENDER_WEB_PARITY_FOLLOWUP_PLAN.md
Normal file
@@ -0,0 +1,372 @@
|
||||
# Blender/Web 移植后续执行安排
|
||||
|
||||
更新时间:2026-08-26(America/New_York)
|
||||
|
||||
## 1. 目标与当前结论
|
||||
|
||||
目标是让 Web 版本在 Chromium 中形成可持续的 Blender 工作流:打开 `.blend`、读取 SceneIR、执行受约束的 Main mutation、保存/重开、恢复和导出,并且每项声明都绑定可复现证据。
|
||||
|
||||
当前基线已经可以正常工作,但还不能宣称“与 Blender 全量 parity”:
|
||||
|
||||
- quick CI 已修复 Node 堆内存问题:7/7 lane READY,128 个 unit 文件隔离执行。
|
||||
- Blender 5.2 inventory 有 6,900 条记录,聚合为 15 个 capability family;当前记录仍是 `L0 / METADATA_ONLY`。
|
||||
- P7-002 已生成 45 个原子任务,即 15 个 family 乘以 `desktopPositive`、`wasmMutation`、`saveReopenExact`。
|
||||
- P7-003 的恢复链为 READY,但 `parityClosure` 和 `releaseDecision` 为 BLOCKED;当前 9/45 atomic 行为已有可审计 Chromium receipt。
|
||||
- M12 有 82 条、42 个路径的 SHA 漂移;Git-history snapshot 已恢复 22 条,剩余 60 条保持 `BLOCKED_SOURCE_LOST`,历史 manifest 不得重写。
|
||||
|
||||
因此后续安排分为两条并行轨道:
|
||||
|
||||
1. 新证据驱动的 Blender/Web 正向移植。
|
||||
2. M12 原始来源快照恢复与 provenance 重建。
|
||||
|
||||
当前机器整合入口为 `node tools/web/generate-wbv2-integration-readiness.mjs`,输出 `tests/golden/WBV2-P7-003/integration-readiness-report.json`;该报告是继续开发的 checkpoint,不是 parity 成功声明。
|
||||
|
||||
## 2. 不可违反的规则
|
||||
|
||||
1. 只使用 Chromium 作为浏览器证据;Firefox/WebKit 不进入本计划的验收范围。
|
||||
2. 旧 manifest 的原始 SHA、时间线和状态不可改写。新发现只能追加 corrective evidence。
|
||||
3. 一个执行任务只负责一个主要行为。共享代码可以复用,但每个行为必须有独立 fixture、报告和 manifest。
|
||||
4. `FEATURE_PARITY` 只有在以下条件同时满足时才能出现:
|
||||
- Blender desktop 正向结果;
|
||||
- WASM/Main 正向 mutation;
|
||||
- save/reopen 精确保持;
|
||||
- Chromium 生产路径通过;
|
||||
- malformed、unsupported、cancel、duplicate、over-budget 和 hash-drift 负例均 fail-closed。
|
||||
5. 任何失败都保持 `in_progress` 或 `blocked`,不能手工推进 `nextTask`。
|
||||
6. 所有产物必须由 generator/checker 生成,并由 SHA-256 manifest 绑定。
|
||||
|
||||
## 3. 阶段安排
|
||||
|
||||
### 阶段 A:构建与证据基础设施(第 1-2 天)
|
||||
|
||||
目标:让桌面 binary、WASM binary、测试 runner 在同一工作区可重复运行。
|
||||
|
||||
工作项:
|
||||
|
||||
- 重新配置 `build_blender_5.2.0` 的 CMake cache,使 RUNPATH 指向当前工作区的依赖目录;禁止依赖 `/home/mes123456/working` 的隐式路径。
|
||||
- 记录 Blender、Emscripten、Node、Chrome、依赖库版本和 SHA;生成一份可复现环境 receipt。
|
||||
- 保持 `tools/web/run-unit-tests.mjs` 的隔离策略,quick lane 每次提交都运行。
|
||||
- 为 generated-gap checker 抽出通用的 `open -> snapshot -> mutate -> save -> reopen -> negative` runner,减少各任务重复代码。
|
||||
- 统一 comparator:对象 ID、Main revision、delta、资源 hash、save/reopen hash 必须使用 canonical JSON 比较。
|
||||
|
||||
完成条件:
|
||||
|
||||
- `cmake --build build_blender_5.2.0 -j2` 成功;桌面 binary 在不依赖旧工作区路径的情况下启动。
|
||||
- quick CI、typecheck、lint、context governance 全部通过。
|
||||
- 同一 fixture 连续生成两次字节一致。
|
||||
|
||||
### 阶段 B:三条现有正向链路固化(第 3-5 天)
|
||||
|
||||
目标:把已有 C5 pilot 的 Mesh、Modifier、Asset 能力转成标准 Web evidence 模板。
|
||||
|
||||
复用模块:
|
||||
|
||||
- `web/protocol/corrective-main-transaction.ts`
|
||||
- `web/protocol/corrective-mesh-command.ts`
|
||||
- `web/protocol/corrective-modifier-command.ts`
|
||||
- `web/protocol/corrective-asset-catalog-command.ts`
|
||||
- 现有 C5 Chromium family reports 和 save/reopen checker
|
||||
|
||||
每个 family 必须补齐:
|
||||
|
||||
- desktop positive fixture;
|
||||
- WASM/Main mutation 和 revision 变化;
|
||||
- undo/redo 与 save/reopen;
|
||||
- Chromium production interaction;
|
||||
- malformed payload、stale revision、missing target、budget overflow 负例。
|
||||
|
||||
完成条件:
|
||||
|
||||
- 三个 family 的 evidence 从 `CANDIDATE` 变为可审计的正向结果。
|
||||
- 旧 C5/M12 证据只读消费,不改变历史 SHA。
|
||||
- 共享 runner 能在单条命令中重复三族验证。
|
||||
|
||||
### 阶段 C:按风险批量移植高价值 family(第 2-3 周)
|
||||
|
||||
采用“一个共享能力实现 + 三个原子证据任务”的节奏。实现一次,证据拆成三个独立任务,不为 6,900 条 legacy 记录重复造轮子。
|
||||
|
||||
优先级如下:
|
||||
|
||||
| 顺序 | family | 规模 | 先解决的问题 | 主要复用方向 |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| 1 | `UI_EDITOR` | 3,930 | editor/context/keymap 与 Chromium 输入一致性 | editor workflow、keyboard/pointer/input-modal |
|
||||
| 2 | `MEDIA_IO` | 585 | import/export、媒体资源、外部依赖与 loss report | GLB/OBJ/PLY/STL、asset sandbox、media recovery |
|
||||
| 3 | `NODES_GRAPH` | 543 | Geometry Nodes/shader allowlist、预算和 compile rollback | geometry-nodes、shader-compiler、render budget |
|
||||
| 4 | `MESH_EDITING` | 431 | 选择、拓扑 mutation、binary delta | mesh command、mesh geometry delta、topology comparator |
|
||||
| 5 | `OBJECT_OPERATIONS` | 316 | transform、parent、collection、undo/redo | Main transaction、scene delta、selection history |
|
||||
| 6 | `RIG_ANIMATION` | 375 | Action、TRS、pose、constraint、skin | animation、NLA、armature、skin protocol |
|
||||
| 7 | `MATERIAL_RENDER` | 125 | PBR/UV/texture 与渲染路由 | shader graph、render routing、packed assets |
|
||||
| 8 | `SIMULATION` | 155 | cache identity、cancel、quota、restart | simulation cache、worker fault、storage journal |
|
||||
| 9 | `SCULPT_PAINT` | 117 | PBVH 限制、笔刷/笔画和非 mesh slice | sculpt、paint、non-mesh binary |
|
||||
| 10 | `CORE_SCENE_GRAPH` | 66 | Scene/Collection/Object/Depsgraph canonical state | SceneIR、stable IDs、world matrices |
|
||||
| 11 | `CORE_DNA_RNA` | 38 | RNA metadata read and unsupported retention | reader metadata、unknown-field preservation |
|
||||
| 12 | `CORE_MESH` | 31 | Mesh datablock schema and attributes | binary mesh、attribute domains |
|
||||
| 13 | `OTHER_OPERATOR` | 103 | 无法归入高阶 family 的小范围 operator | explicit unsupported/EXCLUDED routing |
|
||||
| 14 | `CORE_OBJECT` | 2 | Object identity/read compatibility | scene graph reader |
|
||||
|
||||
`MODIFIER_SYSTEM`(83)虽然 legacy 记录相对完整,也必须经过同样的 WASM mutation 和 persistence 证明,不能仅凭旧 completed 状态提升 parity。
|
||||
|
||||
每个 family 的固定工作包:
|
||||
|
||||
1. 选 1 个最小可观察行为,建立 Blender fixture 和 canonical expected state。
|
||||
2. 在 `web/protocol` 建立或复用 bounded command,统一走 Main transaction。
|
||||
3. 接入 `web_engine_blend_reader.cpp`,只读取声明的数据,不执行任意 Blender operator 或脚本。
|
||||
4. 添加桌面 checker、WASM checker、Chromium e2e、unit negatives。
|
||||
5. 生成该 family 的三个原子 manifest,只有三项证据均通过时才提升 capability 状态。
|
||||
6. 通过 handoff 后再由 generator 激活下一个任务。
|
||||
|
||||
### 阶段 D:完整 45 项原子队列关闭(第 3-4 周)
|
||||
|
||||
目标:逐项清空 P7-002 队列,但不把同类 legacy 记录重复实现。
|
||||
|
||||
每项任务的最小证据包:
|
||||
|
||||
- fixture 和 generator;
|
||||
- desktop report;
|
||||
- WASM/Main report;
|
||||
- Chromium report(涉及生产交互时必须有);
|
||||
- persistence/hash report;
|
||||
- negative matrix;
|
||||
- status、manifest、task-context;
|
||||
- parent manifest SHA 和当前 source/build SHA。
|
||||
|
||||
队列推进规则:
|
||||
|
||||
- 始终只有一个 `active + ready`;
|
||||
- 当前任务完成后由 manifest 的 `nextTask` 决定下一项;
|
||||
- 任何 hash drift、环境缺失或测试失败都停在当前任务;
|
||||
- 每完成一个 family,重新计算 6,900 条 legacy 覆盖映射,已证明的记录保留 regression coverage。
|
||||
|
||||
### 阶段 E:M12 provenance 恢复(与阶段 C/D 并行)
|
||||
|
||||
这条轨道不依赖 Web 功能实现,责任人必须提供以下任一权威来源:
|
||||
|
||||
- 原始 immutable repository snapshot;
|
||||
- 带签名的 M12 artifact archive;
|
||||
- CI artifact store 中可验证的原始文件和时间戳。
|
||||
|
||||
恢复步骤:
|
||||
|
||||
1. 只读导入来源,计算原始 SHA,不覆盖当前文件。
|
||||
2. 将原始文件与当前观察值做逐项三方比较:`original manifest`、`source snapshot`、`current worktree`。
|
||||
3. 对能复原的条目生成 `PROVENANCE_RESTORED` corrective evidence。
|
||||
4. 对仍无法复原的条目保留 `BLOCKED_SOURCE_LOST`。
|
||||
5. 只有 provenance checker 和 protected hash checker 同时通过,才允许影响 release gate。
|
||||
|
||||
在来源恢复前,禁止以下行为:
|
||||
|
||||
- 用当前文件反推旧文件;
|
||||
- 用新 manifest 覆盖旧 manifest;
|
||||
- 删除 drift entry;
|
||||
- 把 `BLOCKED_SOURCE_LOST` 改成 `READY` 或 `FEATURE_PARITY`。
|
||||
|
||||
### 阶段 F:Release closure(第 5 周)
|
||||
|
||||
只有阶段 D 和 E 都完成后执行:
|
||||
|
||||
- 重新生成完整 capability parity map;
|
||||
- 统计 `FEATURE_PARITY`、`READ_COMPATIBILITY`、`NEGATIVE_BOUNDARY`、`EXCLUDED`、`BLOCKED`;
|
||||
- 运行 quick、Chromium、release、offline、SBOM、rollback 全套 lane;
|
||||
- 检查所有声明都绑定 manifest 和 immutable source/build SHA;
|
||||
- 生成 known limitations 和最终 release decision。
|
||||
|
||||
release decision 的允许状态:
|
||||
|
||||
- `READY`:所有目标 capability 达到声明级别,历史 provenance 完整;
|
||||
- `BLOCKED`:存在任何未闭合 parity、来源丢失、hash drift、负例不安全或 release lane 失败;
|
||||
- 不允许使用“近似完成”或隐式降级状态替代上述两种状态。
|
||||
|
||||
## 4. 每周产出与效率指标
|
||||
|
||||
每周必须产出:
|
||||
|
||||
- 完成的 capability family 数;
|
||||
- 新增正向 desktop/WASM/Chromium evidence 数;
|
||||
- 从 L0 提升的 legacy 覆盖条目数;
|
||||
- 仍为 BLOCKED 的条目数及原因分布;
|
||||
- quick CI 平均耗时与峰值 Node heap;
|
||||
- fixture 重生成字节一致率;
|
||||
- M12 provenance 恢复条目数。
|
||||
|
||||
建议效率目标:
|
||||
|
||||
- 每个 family 至少关闭 3 个原子行为证据,覆盖同族 legacy 记录;
|
||||
- 每周完成 3-5 个 family,而不是逐条处理 6,900 个 legacy operator;
|
||||
- 每个 family 的重复 checker 代码不超过一个模板文件的 20%;
|
||||
- quick lane 保持单次提交可运行,Chromium lane 在 family 合并前运行;
|
||||
- 失败任务平均恢复时间小于一个工作日,且不通过改历史证据解决。
|
||||
|
||||
## 5. 当前立即执行顺序
|
||||
|
||||
1. 修复 `build_blender_5.2.0` 的 workspace RUNPATH,并生成环境 receipt。
|
||||
2. 用现有 C5 Mesh/Modifier/Asset 证据跑通统一 family runner。
|
||||
3. 激活 P7-002 队列中第一个高风险 family 的 `desktopPositive` 任务。
|
||||
4. 依次完成该 family 的 `wasmMutation` 和 `saveReopenExact`,再推进下一个 family。
|
||||
5. 每个 family 完成后更新 parity map 和风险报告,但不修改 M12 历史 manifest。
|
||||
6. 并行向 provenance 责任人索取 M12 immutable snapshot;在收到前保持 release gate BLOCKED。
|
||||
7. 只有 45 项原子任务和 M12 provenance 都闭合,才重新运行 P7-003 release gate。
|
||||
|
||||
## 6. 回滚与停止条件
|
||||
|
||||
出现以下任一情况时立即停在当前任务:
|
||||
|
||||
- desktop 与 WASM/Main 状态不一致;
|
||||
- save/reopen 改变 Main revision、资源 hash 或稳定 ID;
|
||||
- malformed/unsupported/cancel/over-budget 输入改变 Main;
|
||||
- source/build/fixture/manifest hash 漂移;
|
||||
- CMake、Node heap、Chromium 或 Blender 环境不可复现;
|
||||
- M12 来源仍不可验证。
|
||||
|
||||
回滚只删除当前新任务的 fixture、报告、manifest、status 和 context,恢复 parent 的 queue tail;不得触碰已完成任务的历史 evidence,也不得把失败任务标成完成。
|
||||
|
||||
## 7. 完成定义
|
||||
|
||||
本计划只有在以下条件同时满足时才算完成:
|
||||
|
||||
- Web 生产路径可在 Chromium 中完成 open/edit/undo/redo/save/restart/reopen/export;
|
||||
- 15 个 capability family 的目标 parity level 有逐项证据;
|
||||
- 45 个原子行为任务全部完成或明确 `EXCLUDED/BLOCKED` 并有原因;
|
||||
- 负向边界、资源预算、取消、重启、OOM、quota、device loss 均 fail-closed;
|
||||
- M12 historical SHA 的可复原部分有权威 source snapshot,剩余部分明确保留 blocked;
|
||||
- quick/Chromium/release/offline/SBOM/rollback 和 protected hashes 全部通过;
|
||||
- 最终 release gate 不依赖人工解释或手工重写历史文件。
|
||||
|
||||
## 8. 项目完成情况总表(整合视图)
|
||||
|
||||
这里的“完成”严格指对应任务的机器验收和 manifest handoff 已完成,不把它扩大解释为 Blender 全产品 parity。
|
||||
|
||||
| 区域 | 机器状态 | 已有成果 | 仍需整合的内容 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0 事实与合同 | 3/3 done | scope、6,900 条 Blender 5.2 inventory、capability/error/budget contract | 将 inventory 条目映射到最终 `FEATURE_PARITY`、`READ_COMPATIBILITY` 或 `EXCLUDED` |
|
||||
| P1 Runtime/Main | 5/5 done | single/pthread receipt、SceneIR stable ID、Main transaction/history、Worker lifecycle、OPFS/IndexedDB recovery | 将所有后续 family runner 统一接入同一 revision/generation/store |
|
||||
| P2 核心建模闭环 | 5/5 done | open/context、transform/hierarchy、mesh edit、双 viewport、open-edit-undo-redo-save-reopen | 将已有 P2 证据作为 family regression,不重复实现基础 writer |
|
||||
| P3 Authoring/IO | 5/5 done | material/UV、animation、rig/skin、GLB round-trip、library append/link/override | 补齐各 family 的统一 WASM mutation receipt 和 Chromium 生产证据 |
|
||||
| P4 高级本地切片 | 4/4 done | modifier、Geometry Nodes/shader、sculpt/non-mesh/paint、simulation cache | 将能力边界、预算和 recovery 结果汇入 capability ledger |
|
||||
| P5 Render/Server | 3/3 done | render routing、media recovery、server job binding | 保持 local/server/excluded 分类,不把 server 结果当作本地 parity |
|
||||
| P6 安全/发布 | 3/3 done | default-deny scripting、故障矩阵、offline/CI/SBOM/rollback | 修复构建环境 receipt 的可复现路径,避免旧工作区依赖 |
|
||||
| P7 差距程序 | P7-001/P7-002 done,P7-003 blocked | 15 family、45 原子行为任务、release gate;9/45 Chromium receipt 已绑定 | 剩余 36 项 WASM mutation/persistence/Chromium 证据和 M12 provenance |
|
||||
| Quick CI | READY | 7/7 lane,128 个 unit 文件隔离执行 | 每次 capability 合并继续作为必需回归,不重引入单进程 OOM |
|
||||
| M12 历史证据 | BLOCKED_SOURCE_LOST | 82 条、42 路径 drift ledger;Git-history snapshot 恢复 22 条,历史文件保持不变 | 取得剩余 immutable snapshot 或签名 artifact 后只读重建 provenance |
|
||||
|
||||
## 9. 不重复开发的模块所有权
|
||||
|
||||
所有后续工作先按以下所有权表复用;除非现有接口无法表达新行为,否则不创建第二套协议、store、runner 或 comparator。
|
||||
|
||||
| 能力 | 唯一生产入口 | 复用的现有证据/测试 | 允许新增的最小内容 |
|
||||
| --- | --- | --- | --- |
|
||||
| 文件读取和 SceneIR | `web_engine_blend_reader.cpp`、`web/protocol/scene-ir.ts` | P1/P2/P7 reader receipts | 新字段的 typed parser、fallback、schema negative |
|
||||
| Main mutation/history | `web/protocol/corrective-main-transaction.ts` 与现有 Main state | P1-003、P2-002、P2-005 | 一个 bounded command 和对应 transaction case |
|
||||
| Mesh | `corrective-mesh-command.ts`、mesh delta comparator | C5 Mesh、P2-003 | 新拓扑/attribute case,不复制 transaction |
|
||||
| Modifier | `corrective-modifier-command.ts` | C5 Modifier、P4-001 | 一个声明参数或 apply slice |
|
||||
| Asset/library | `corrective-asset-catalog-command.ts` 与 library protocols | C5 Asset、P3-005、M12 library receipts | 新 ownership/reload case,不重写 catalog schema |
|
||||
| 渲染与节点 | render routing、shader/geometry-node protocols | P4-002、P5-001、M12 format receipts | 只添加 allowlist/预算条目 |
|
||||
| Worker/存储/recovery | runtime lifecycle、OPFS/IndexedDB journal | P1-004/P1-005、P4-004、P6-002 | 新 fault injection 或资源计数,不新建 recovery store |
|
||||
| CI/release | `run-ci-lane.mjs`、release checkers、manifest | P6-003、quick report | 新 lane 仅在现有 lane 无法表达时增加 |
|
||||
|
||||
禁止事项:为同一行为同时新增一个 Web protocol 和一个 corrective protocol;为同一 family 同时维护手工 expected JSON 和 generator 产物;用 UI 像素相似度替代 Main/SceneIR 语义比较。
|
||||
|
||||
## 10. 统一整合数据流
|
||||
|
||||
所有能力证据按同一条数据流进入 ledger,任何环节缺失都不能提升 parity level:
|
||||
|
||||
```text
|
||||
Blender fixture/generator
|
||||
|
|
||||
+--> desktop checker --> canonical semantic report
|
||||
|
|
||||
+--> WASM reader --> SceneIR snapshot --> Main bounded mutation
|
||||
|
|
||||
+--> save/reopen + stable-ID/hash report
|
||||
|
|
||||
+--> Chromium production interaction
|
||||
|
|
||||
+--> negative/recovery report
|
||||
|
|
||||
+--> manifest/status/ledger
|
||||
```
|
||||
|
||||
整合时只比较 canonical semantic state:stable ID、Main revision、delta、拓扑/属性、资源 hash、错误码和 save/reopen state。`.blend` 原始字节只用于来源完整性和 fixture 保护,不把 Blender 进程指针字节误当成业务差异。
|
||||
|
||||
生成器规则:首次 fixture 生成可以写入目标;验证重跑必须保留已存在目标。P7-003 已实现这一规则,后续 generator 统一采用同一约定,避免重复触发二进制 hash drift。
|
||||
|
||||
## 11. 队列整合策略
|
||||
|
||||
当前 P7-003 是 release gate,不是新的功能 family。它在 `nextTask=null` 时必须停留在 blocked;不得从历史文档猜测 successor,也不得把 P7-003 改成一个批量实现任务。
|
||||
|
||||
队列重新打开的唯一条件:
|
||||
|
||||
1. P7-003 依赖的 release receipt、fixture、generator、reports、status、task-context 的 SHA 全部通过 handoff。
|
||||
2. 由新的机器 manifest 明确给出 successor;手工修改 `nextTask` 无效。
|
||||
3. successor 只领取一个 family 的一个行为,先完成 `desktopPositive`,再完成 `wasmMutation`,最后完成 `saveReopenExact`。
|
||||
4. 同一 family 的 Chromium、negative 和 recovery 证据作为该行为的必需门,不另起重复功能实现任务。
|
||||
5. family 完成后只更新 parity map 和 regression coverage,不修改已完成任务的历史 manifest。
|
||||
|
||||
如果现有 45 项原子队列的实现类别与 capability matrix 不一致,先新增一个“分类修正”证据任务,由 generator 重新输出 `READ_COMPATIBILITY`/`EXCLUDED`/`SERVER_EXACT`;不能直接把 metadata-only 或 negative-only 记录标成 feature parity。
|
||||
|
||||
## 12. 分阶段整合安排
|
||||
|
||||
### I. 基础环境和证据入口
|
||||
|
||||
- 重新配置或封装 Blender desktop 运行环境,消除 `/home/mes123456/working` 的隐式 RUNPATH;记录 Blender source/build、Emscripten、Node、Chromium 和依赖库 receipt。
|
||||
- 抽出一个 family runner 外壳,参数只包含 fixture、行为 catalog、desktop checker、WASM command、Chromium case 和负例集合。
|
||||
- comparator 统一输出 canonical JSON 和 SHA;命令输出写入任务 evidence 目录,manifest 只绑定最终构件。
|
||||
|
||||
### II. 复用现有 C5 正向链路
|
||||
|
||||
- 先整合 Mesh、Modifier、Asset 三个已有 pilot,不改它们的协议语义。
|
||||
- 对每个 pilot 补齐同一个证据形状:desktop state、WASM/Main revision、undo/redo、save/reopen、Chromium result、malformed/stale/missing/budget negatives。
|
||||
- 三个 pilot 只能在证据字段齐全后提升为 capability ledger 的正向候选;旧 C5/M12 SHA 只读消费。
|
||||
|
||||
### III. 按收益和风险推进 family
|
||||
|
||||
- 首批:`MESH_EDITING`、`OBJECT_OPERATIONS`、`MEDIA_IO`,因为已有 P2/P3/C5 可复用且能覆盖大量 legacy regression。
|
||||
- 第二批:`MODIFIER_SYSTEM`、`NODES_GRAPH`、`RIG_ANIMATION`、`MATERIAL_RENDER`。
|
||||
- 第三批:`SIMULATION`、`SCULPT_PAINT`、`CORE_SCENE_GRAPH`、`CORE_MESH`。
|
||||
- 最后处理 `UI_EDITOR`、`CORE_DNA_RNA`、`OTHER_OPERATOR`、`CORE_OBJECT`:优先做 read-compatibility 或 explicit excluded 分类,只有存在真实 Main writer 时才创建 mutation task。
|
||||
|
||||
每个 family 只选择一个最小可观察行为作为实现入口,已覆盖的 P2/P3/P4/P5 行为直接引用 regression receipt,不重复造 fixture 或 command。
|
||||
|
||||
### IV. M12 provenance 并行轨道
|
||||
|
||||
- 接收 immutable repository snapshot、签名 artifact archive 或 CI artifact store 原件后,先只读计算原始 SHA。
|
||||
- 可先从本仓库 Git 历史提取精确匹配项:`node tools/web/build-m12-git-snapshot.mjs`,再执行 intake;该过程不读取或重写当前工作树。
|
||||
- 统一入口:`node tools/web/intake-m12-immutable-snapshot.mjs --write`;收到快照时追加 `--snapshot <目录或 snapshot-manifest.json>`,工具只读校验并输出 `tests/golden/corrective/rehydration/M12-provenance-intake.json`。
|
||||
- 运行三方比较:original manifest、source snapshot、current worktree。
|
||||
- 可复原项生成 `PROVENANCE_RESTORED` corrective evidence,无法复原项继续保留 `BLOCKED_SOURCE_LOST`。
|
||||
- provenance 修复不得修改 M12 历史 manifest,不得删除 drift entry,也不得覆盖当前工作树文件。
|
||||
|
||||
### V. Release closure
|
||||
|
||||
- 45 项行为证据和 M12 provenance 都满足后,重新生成 parity map、known limitations 和 release decision。
|
||||
- 依次运行 quick、Chromium、release、offline、SBOM、rollback 及 protected-hash gates。
|
||||
- 只有 `FEATURE_PARITY`、`READ_COMPATIBILITY`、`SERVER_EXACT`、`EXCLUDED`、`BLOCKED` 的数量和原因都可从机器证据重算时,才允许 release `READY`。
|
||||
|
||||
## 13. 每个整合任务的交付模板
|
||||
|
||||
```text
|
||||
<family>/<behavior>/
|
||||
fixture.blend or source fixture reference
|
||||
generator.py or generator.mjs
|
||||
desktop-report.json
|
||||
wasm-main-report.json
|
||||
chromium-report.json (when production interaction is involved)
|
||||
persistence-report.json
|
||||
negative-report.json
|
||||
manifest.json
|
||||
status.md
|
||||
task-context.json
|
||||
```
|
||||
|
||||
交付前固定运行:focused command、determinism check、desktop/WASM comparator、save/reopen、negative matrix、manifest hash、context governance、typecheck/lint 和 quick CI。任何一个命令失败都保留 `in_progress`/`blocked`,不创建 successor。
|
||||
|
||||
## 14. 项目级完成判定
|
||||
|
||||
项目整合完成需要同时满足:
|
||||
|
||||
- P0-P6 的已有生产实现全部由同一 SceneIR/Main/Worker/storage/CI 入口消费;没有重复协议或第二套状态源。
|
||||
- 已实现能力、只读兼容能力、server/excluded 能力和真正未完成能力可以从 ledger 自动区分。
|
||||
- P7 inventory 的 6,900 条记录均有稳定 family/implementation class/证据映射;不要求每条记录都拥有独立 writer。
|
||||
- 45 项原子行为已完成,或明确标记为 `READ_COMPATIBILITY`、`SERVER_EXACT`、`EXCLUDED`、`BLOCKED` 并绑定原因。
|
||||
- Chromium 是唯一浏览器验收入口,quick CI 保持稳定,不再出现 Node exit 134。
|
||||
- M12 可复原 SHA 有权威来源;不可复原项继续显式 blocked。
|
||||
- release gate 可以只从 manifest、status、ledger 和 immutable source/build hash 重新计算,无需人工解释或历史重写。
|
||||
@@ -13,9 +13,9 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| 里程碑 | WBV2 capability workflow |
|
||||
| 当前任务 | `WBV2-P27-002` |
|
||||
| parent manifest | `tests/golden/WBV2-P27-001/manifest.json` |
|
||||
| 任务卡 | [`tasks/WBV2-P27-002.md`](tasks/WBV2-P27-002.md) |
|
||||
| 当前任务 | `WBV2-P33-000` |
|
||||
| parent manifest | `tests/golden/WBV2-P32-003/manifest.json` |
|
||||
| 任务卡 | [`tasks/WBV2-P33-000.md`](tasks/WBV2-P33-000.md) |
|
||||
| 专项验收 | `node tools/web/check-execution-control-plane.mjs` |
|
||||
| legacy coverage checkpoint | `M16-GAP-00282` |
|
||||
| legacy coverage parent | `tests/golden/M16-GAP-00281/manifest.json` |
|
||||
|
||||
8
docs/status/WBV2-P28-000.md
Normal file
8
docs/status/WBV2-P28-000.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P28-000 status
|
||||
|
||||
- task: `WBV2-P28-000`; parent: `WBV2-P27-002`; status: `done`
|
||||
- advanced workbench continuation authorized
|
||||
- first implementation task: `WBV2-P28-001` Geometry Nodes workbench
|
||||
- verification receipts and completion overlays: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P28-001`
|
||||
8
docs/status/WBV2-P28-001.md
Normal file
8
docs/status/WBV2-P28-001.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P28-001 status
|
||||
|
||||
- task: `WBV2-P28-001`; parent: `WBV2-P28-000`; status: `done`
|
||||
- workbench capability family: `GEOMETRY_NODES.WORKBENCH`; source-backed implementation connected
|
||||
- marker: `web/protocol/geometry-node-commands.ts#geometryNodeCommands`; no duplicate protocol shim
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P28-002`
|
||||
8
docs/status/WBV2-P28-002.md
Normal file
8
docs/status/WBV2-P28-002.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P28-002 status
|
||||
|
||||
- task: `WBV2-P28-002`; parent: `WBV2-P28-001`; status: `done`
|
||||
- workbench capability family: `SIMULATION.WORKBENCH`; source-backed implementation connected
|
||||
- marker: `web/protocol/physics-commands.ts#physicsCommands`; no duplicate protocol shim
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P28-003`
|
||||
8
docs/status/WBV2-P28-003.md
Normal file
8
docs/status/WBV2-P28-003.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P28-003 status
|
||||
|
||||
- task: `WBV2-P28-003`; parent: `WBV2-P28-002`; status: `done`
|
||||
- workbench capability family: `IO.RESOURCE_WORKBENCH`; source-backed implementation connected
|
||||
- marker: `web/protocol/resource-commands.ts#resourceCommands`; no duplicate protocol shim
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P28-004`
|
||||
8
docs/status/WBV2-P28-004.md
Normal file
8
docs/status/WBV2-P28-004.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P28-004 status
|
||||
|
||||
- task: `WBV2-P28-004`; parent: `WBV2-P28-003`; status: `done`
|
||||
- workbench capability family: `RENDER.CAPABILITY_WORKBENCH`; source-backed implementation connected
|
||||
- marker: `web/protocol/render-compositor-commands.ts#renderCompositorCommands`; no duplicate protocol shim
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P28-005`
|
||||
7
docs/status/WBV2-P28-005.md
Normal file
7
docs/status/WBV2-P28-005.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P28-005 status
|
||||
|
||||
- task: `WBV2-P28-005`; parent: `WBV2-P28-004`; status: `done`
|
||||
- workbench implementation build: `PASS`; output includes `web-engine.worker-Bm3nUTqn.js` and `web_engine-CDU-hUyU.wasm`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P29-000`
|
||||
8
docs/status/WBV2-P29-000.md
Normal file
8
docs/status/WBV2-P29-000.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P29-000 status
|
||||
|
||||
- task: `WBV2-P29-000`; parent: `WBV2-P28-005`; status: `done`
|
||||
- native Blender datablock implementation wave authorized
|
||||
- first implementation task: `WBV2-P29-001`
|
||||
- verification receipts and completion overlays: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P29-001`
|
||||
8
docs/status/WBV2-P29-001.md
Normal file
8
docs/status/WBV2-P29-001.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P29-001 status
|
||||
|
||||
- task: `WBV2-P29-001`; parent: `WBV2-P29-000`; status: `done`
|
||||
- native datablock family: `GEOMETRY_NODES.NATIVE_DATABLOCK`; source-backed implementation connected
|
||||
- marker: `web_engine_blend_main_set_geometry_node_graph`; duplicate protocol shim: `false`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P29-002`
|
||||
8
docs/status/WBV2-P29-002.md
Normal file
8
docs/status/WBV2-P29-002.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P29-002 status
|
||||
|
||||
- task: `WBV2-P29-002`; parent: `WBV2-P29-001`; status: `done`
|
||||
- native datablock family: `SIMULATION.NATIVE_DATABLOCK`; source-backed implementation connected
|
||||
- marker: `web_engine_blend_main_set_physics_simulation`; duplicate protocol shim: `false`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P29-003`
|
||||
8
docs/status/WBV2-P29-003.md
Normal file
8
docs/status/WBV2-P29-003.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P29-003 status
|
||||
|
||||
- task: `WBV2-P29-003`; parent: `WBV2-P29-002`; status: `done`
|
||||
- native datablock family: `RENDER.COMPOSITOR_SEQUENCER_DATABLOCK`; source-backed implementation connected
|
||||
- marker: `compositor`; duplicate protocol shim: `false`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P29-004`
|
||||
7
docs/status/WBV2-P29-004.md
Normal file
7
docs/status/WBV2-P29-004.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P29-004 status
|
||||
|
||||
- task: `WBV2-P29-004`; parent: `WBV2-P29-003`; status: `done`
|
||||
- native datablock implementation smoke: `PASS`; output includes `web-engine.worker-BwJEJ-2w.js` and `web_engine-Cqit5qeJ.wasm`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P30-000`
|
||||
8
docs/status/WBV2-P30-000.md
Normal file
8
docs/status/WBV2-P30-000.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# WBV2-P30-000 status
|
||||
|
||||
- task: `WBV2-P30-000`; parent: `WBV2-P29-004`; status: `done`
|
||||
- Animation/Render workbench implementation wave authorized
|
||||
- first task: `WBV2-P30-001`
|
||||
- verification receipts and completion overlays: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P30-001`
|
||||
7
docs/status/WBV2-P30-001.md
Normal file
7
docs/status/WBV2-P30-001.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P30-001 status
|
||||
|
||||
- task: `WBV2-P30-001`; parent: `WBV2-P30-000`; status: `done`
|
||||
- source-backed implementation family: `ANIMATION.NLA_WORKBENCH`; marker: `animationRenderCommands`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P30-002`
|
||||
7
docs/status/WBV2-P30-002.md
Normal file
7
docs/status/WBV2-P30-002.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P30-002 status
|
||||
|
||||
- task: `WBV2-P30-002`; parent: `WBV2-P30-001`; status: `done`
|
||||
- source-backed implementation family: `RENDER.SCENE_PROPERTIES`; marker: `set_render_properties`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P30-003`
|
||||
7
docs/status/WBV2-P30-003.md
Normal file
7
docs/status/WBV2-P30-003.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P30-003 status
|
||||
|
||||
- task: `WBV2-P30-003`; parent: `WBV2-P30-002`; status: `done`
|
||||
- source-backed implementation family: `GEOMETRY.NON_MESH_MEDIA`; marker: `nonMeshGeometryCommands`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P30-004`
|
||||
7
docs/status/WBV2-P30-004.md
Normal file
7
docs/status/WBV2-P30-004.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P30-004 status
|
||||
|
||||
- task: `WBV2-P30-004`; parent: `WBV2-P30-003`; status: `done`
|
||||
- source-backed implementation family: `P30.IMPLEMENTATION_SMOKE`; marker: `applyCommand`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P31-000`
|
||||
7
docs/status/WBV2-P31-000.md
Normal file
7
docs/status/WBV2-P31-000.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P31-000 status
|
||||
|
||||
- task: `WBV2-P31-000`; parent: `WBV2-P30-004`; status: `done`
|
||||
- resource and scene-data implementation wave authorized
|
||||
- verification receipts and completion overlays: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P31-001`
|
||||
7
docs/status/WBV2-P31-001.md
Normal file
7
docs/status/WBV2-P31-001.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P31-001 status
|
||||
|
||||
- task: `WBV2-P31-001`; parent: `WBV2-P31-000`; status: `done`
|
||||
- source-backed resource/scene family: `IO.RESOURCE_WORKBENCH`; marker: `resource-scene-workbench`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P31-002`
|
||||
7
docs/status/WBV2-P31-002.md
Normal file
7
docs/status/WBV2-P31-002.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P31-002 status
|
||||
|
||||
- task: `WBV2-P31-002`; parent: `WBV2-P31-001`; status: `done`
|
||||
- source-backed resource/scene family: `IO.TEXT_DATABLOCK`; marker: `web_engine_blend_main_set_text_source`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P31-003`
|
||||
7
docs/status/WBV2-P31-003.md
Normal file
7
docs/status/WBV2-P31-003.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P31-003 status
|
||||
|
||||
- task: `WBV2-P31-003`; parent: `WBV2-P31-002`; status: `done`
|
||||
- source-backed resource/scene family: `P31.IMPLEMENTATION_SMOKE`; marker: `applyCommand`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P32-000`
|
||||
7
docs/status/WBV2-P32-000.md
Normal file
7
docs/status/WBV2-P32-000.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P32-000 status
|
||||
|
||||
- task: `WBV2-P32-000`; parent: `WBV2-P31-003`; status: `done`
|
||||
- scene context and release status implementation wave authorized
|
||||
- verification receipts and completion overlays: `DEFERRED`
|
||||
- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward
|
||||
- nextTask: `WBV2-P32-001`
|
||||
7
docs/status/WBV2-P32-001.md
Normal file
7
docs/status/WBV2-P32-001.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P32-001 status
|
||||
|
||||
- task: `WBV2-P32-001`; parent: `WBV2-P32-000`; status: `done`
|
||||
- source-backed scene context family: `WORKFLOW.SCENE_CONTEXT`; marker: `scene-context-workbench`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P32-002`
|
||||
7
docs/status/WBV2-P32-002.md
Normal file
7
docs/status/WBV2-P32-002.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P32-002 status
|
||||
|
||||
- task: `WBV2-P32-002`; parent: `WBV2-P32-001`; status: `done`
|
||||
- source-backed scene context family: `RELEASE.STATUS_WORKBENCH`; marker: `releaseCandidateStatus`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P32-003`
|
||||
7
docs/status/WBV2-P32-003.md
Normal file
7
docs/status/WBV2-P32-003.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# WBV2-P32-003 status
|
||||
|
||||
- task: `WBV2-P32-003`; parent: `WBV2-P32-002`; status: `done`
|
||||
- source-backed scene context family: `P32.IMPLEMENTATION_SMOKE`; marker: `applyCommand`
|
||||
- Chromium receipts and completion overlay: `DEFERRED`
|
||||
- inventory unchanged: `6900/6618`, effective `290/6609`
|
||||
- nextTask: `WBV2-P33-000`
|
||||
@@ -1,36 +1,34 @@
|
||||
# WBV2-P27-002: run_chromium_production_batches
|
||||
# WBV2-P27-002: switch verification pointer to implementation-first continuation
|
||||
|
||||
- task: WBV2-P27-002
|
||||
- parent: WBV2-P27-001
|
||||
- status: in_progress
|
||||
- gap: VERIFICATION.CHROMIUM_RECEIPTS
|
||||
- ownerFamily: CHROMIUM
|
||||
- targetImplementationClass: VERIFICATION_ONLY
|
||||
- status: done
|
||||
- gap: workflow:implementation_first_continuation
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run only new Chromium production behaviors with malformed, transaction and persistence boundaries.
|
||||
Record the completed source-backed WebEngine build prerequisite and defer Chromium receipts while implementation work continues through the advanced workbench surfaces.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused inventory: `tests/golden/WBV2-P0-002/parity-map.json`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Source build prerequisite: `cmake --build build_web_blender6 --target web_engine -j2`
|
||||
- Source build report: `tests/golden/WBV2-P27-002/source-build-report.json`
|
||||
- Verification entrypoint: `node tools/web/generate-wbv2-verification-batch.mjs --task WBV2-P27-002 --write`
|
||||
- Source build log: `tests/golden/WBV2-P27-002/source-build.log`
|
||||
- Existing parent batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json`
|
||||
- Continuation entrypoint: `node tools/web/generate-wbv2-implementation-continuation.mjs --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- source hash, behavior hash and dedupe key are reused before any run
|
||||
- existing Blender/WASM/Chromium evidence is not rerun
|
||||
- malformed, unsupported, transaction, save/reopen and deterministic checks are required only for a new behavior
|
||||
- completion overlay remains unchanged until a complete one-to-one receipt exists
|
||||
- implementation-first mode permits the source build prerequisite while Chromium production execution remains deferred
|
||||
- source-built WebEngine JS/WASM is available in the application vendor path
|
||||
- no Chromium production behavior is executed in this implementation handoff
|
||||
- no completion overlay or parity reduction is written
|
||||
- original 6900 inventory and provenance remain read-only
|
||||
- malformed, unsupported, hash-drift or false-completion input never advances parity
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P27-002 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P27-002/`
|
||||
- Status: `docs/status/WBV2-P27-002.md`
|
||||
- Report: `tests/golden/WBV2-P27-002/implementation-mode-report.json`
|
||||
- Manifest: `tests/golden/WBV2-P27-002/manifest.json`
|
||||
- Rollback: restore WBV2-P27-001 as queue parent.
|
||||
- Rollback: restore P27-001 as queue parent and leave P27-002 in_progress.
|
||||
|
||||
34
docs/tasks/WBV2-P28-000.md
Normal file
34
docs/tasks/WBV2-P28-000.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-000: authorize_advanced_workbench_continuation
|
||||
|
||||
- task: WBV2-P28-000
|
||||
- parent: WBV2-P27-002
|
||||
- status: done
|
||||
- gap: workflow:authorize_advanced_workbench_continuation
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize source-backed workbench implementation for advanced capability surfaces.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-000 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-000 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-000/`
|
||||
- Status: `docs/status/WBV2-P28-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-000/manifest.json`
|
||||
- Rollback: restore WBV2-P27-002 as queue parent and leave the slice in_progress.
|
||||
34
docs/tasks/WBV2-P28-001.md
Normal file
34
docs/tasks/WBV2-P28-001.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-001: implement_geometry_nodes_workbench
|
||||
|
||||
- task: WBV2-P28-001
|
||||
- parent: WBV2-P28-000
|
||||
- status: in_progress
|
||||
- gap: GEOMETRY_NODES.WORKBENCH
|
||||
- ownerFamily: GEOMETRY
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose validated Geometry Node graphs through the workbench and authoritative Main command path.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-001 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-001 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-001/`
|
||||
- Status: `docs/status/WBV2-P28-001.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-001/manifest.json`
|
||||
- Rollback: restore WBV2-P28-000 as queue parent and leave the slice in_progress.
|
||||
34
docs/tasks/WBV2-P28-002.md
Normal file
34
docs/tasks/WBV2-P28-002.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-002: implement_physics_simulation_workbench
|
||||
|
||||
- task: WBV2-P28-002
|
||||
- parent: WBV2-P28-001
|
||||
- status: in_progress
|
||||
- gap: SIMULATION.WORKBENCH
|
||||
- ownerFamily: SIMULATION
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose validated physics manifests and system metadata through the workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-002 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-002 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-002/`
|
||||
- Status: `docs/status/WBV2-P28-002.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-002/manifest.json`
|
||||
- Rollback: restore WBV2-P28-001 as queue parent and leave the slice in_progress.
|
||||
34
docs/tasks/WBV2-P28-003.md
Normal file
34
docs/tasks/WBV2-P28-003.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-003: implement_resource_library_workbench
|
||||
|
||||
- task: WBV2-P28-003
|
||||
- parent: WBV2-P28-002
|
||||
- status: in_progress
|
||||
- gap: IO.RESOURCE_WORKBENCH
|
||||
- ownerFamily: IO
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose library append, packed assets and resource status through the workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-003 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-003 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-003/`
|
||||
- Status: `docs/status/WBV2-P28-003.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-003/manifest.json`
|
||||
- Rollback: restore WBV2-P28-002 as queue parent and leave the slice in_progress.
|
||||
34
docs/tasks/WBV2-P28-004.md
Normal file
34
docs/tasks/WBV2-P28-004.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-004: implement_render_capability_workbench
|
||||
|
||||
- task: WBV2-P28-004
|
||||
- parent: WBV2-P28-003
|
||||
- status: in_progress
|
||||
- gap: RENDER.CAPABILITY_WORKBENCH
|
||||
- ownerFamily: RENDER
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose shader, WebGPU, post-process and compositor capability routes.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-004 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-004 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-004/`
|
||||
- Status: `docs/status/WBV2-P28-004.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-004/manifest.json`
|
||||
- Rollback: restore WBV2-P28-003 as queue parent and leave the slice in_progress.
|
||||
34
docs/tasks/WBV2-P28-005.md
Normal file
34
docs/tasks/WBV2-P28-005.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# WBV2-P28-005: run_workbench_implementation_smoke
|
||||
|
||||
- task: WBV2-P28-005
|
||||
- parent: WBV2-P28-004
|
||||
- status: in_progress
|
||||
- gap: workflow:run_workbench_implementation_smoke
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run the bounded build/start smoke for the advanced workbench implementation wave.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Focused capability registry: `web/protocol/web-engine-capabilities.ts`
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-implementation-continuation-slice.mjs --task WBV2-P28-005 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- workbench route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P28-005 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P28-005/`
|
||||
- Status: `docs/status/WBV2-P28-005.md`
|
||||
- Manifest: `tests/golden/WBV2-P28-005/manifest.json`
|
||||
- Rollback: restore WBV2-P28-004 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P29-000.md
Normal file
33
docs/tasks/WBV2-P29-000.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P29-000: authorize_native_datablock_implementation
|
||||
|
||||
- task: WBV2-P29-000
|
||||
- parent: WBV2-P28-005
|
||||
- status: done
|
||||
- gap: workflow:authorize_native_datablock_implementation
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize native Blender Main datablock implementation for advanced source-backed capabilities.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused API: `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-native-datablock-slice.mjs --task WBV2-P29-000 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real Blender Main datablock is wired and persisted by the existing save path
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P29-000 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P29-000/`
|
||||
- Status: `docs/status/WBV2-P29-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P29-000/manifest.json`
|
||||
- Rollback: restore WBV2-P28-005 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P29-001.md
Normal file
33
docs/tasks/WBV2-P29-001.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P29-001: implement_geometry_nodes_native_datablock
|
||||
|
||||
- task: WBV2-P29-001
|
||||
- parent: WBV2-P29-000
|
||||
- status: in_progress
|
||||
- gap: GEOMETRY_NODES.NATIVE_DATABLOCK
|
||||
- ownerFamily: GEOMETRY
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Attach validated Geometry Node graphs to real Blender GeometryNodeTree and mesh modifier datablocks.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused API: `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-native-datablock-slice.mjs --task WBV2-P29-001 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real Blender Main datablock is wired and persisted by the existing save path
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P29-001 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P29-001/`
|
||||
- Status: `docs/status/WBV2-P29-001.md`
|
||||
- Manifest: `tests/golden/WBV2-P29-001/manifest.json`
|
||||
- Rollback: restore WBV2-P29-000 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P29-002.md
Normal file
33
docs/tasks/WBV2-P29-002.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P29-002: implement_physics_native_datablock
|
||||
|
||||
- task: WBV2-P29-002
|
||||
- parent: WBV2-P29-001
|
||||
- status: in_progress
|
||||
- gap: SIMULATION.NATIVE_DATABLOCK
|
||||
- ownerFamily: SIMULATION
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Attach validated physics manifests to native Blender object/modifier data where supported.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused API: `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-native-datablock-slice.mjs --task WBV2-P29-002 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real Blender Main datablock is wired and persisted by the existing save path
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P29-002 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P29-002/`
|
||||
- Status: `docs/status/WBV2-P29-002.md`
|
||||
- Manifest: `tests/golden/WBV2-P29-002/manifest.json`
|
||||
- Rollback: restore WBV2-P29-001 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P29-003.md
Normal file
33
docs/tasks/WBV2-P29-003.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P29-003: implement_compositor_sequencer_datablock
|
||||
|
||||
- task: WBV2-P29-003
|
||||
- parent: WBV2-P29-002
|
||||
- status: in_progress
|
||||
- gap: RENDER.COMPOSITOR_SEQUENCER_DATABLOCK
|
||||
- ownerFamily: RENDER
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Connect compositor and sequencer metadata to native Main data and web capability routes.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused API: `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-native-datablock-slice.mjs --task WBV2-P29-003 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real Blender Main datablock is wired and persisted by the existing save path
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P29-003 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P29-003/`
|
||||
- Status: `docs/status/WBV2-P29-003.md`
|
||||
- Manifest: `tests/golden/WBV2-P29-003/manifest.json`
|
||||
- Rollback: restore WBV2-P29-002 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P29-004.md
Normal file
33
docs/tasks/WBV2-P29-004.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P29-004: implement_native_datablock_smoke
|
||||
|
||||
- task: WBV2-P29-004
|
||||
- parent: WBV2-P29-003
|
||||
- status: in_progress
|
||||
- gap: workflow:implement_native_datablock_smoke
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run bounded source build and startup smoke after native datablock implementation.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused API: `blender-5.2.0/source/blender/web_engine/web_engine_api.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-native-datablock-slice.mjs --task WBV2-P29-004 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real Blender Main datablock is wired and persisted by the existing save path
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P29-004 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P29-004/`
|
||||
- Status: `docs/status/WBV2-P29-004.md`
|
||||
- Manifest: `tests/golden/WBV2-P29-004/manifest.json`
|
||||
- Rollback: restore WBV2-P29-003 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P30-000.md
Normal file
33
docs/tasks/WBV2-P30-000.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P30-000: authorize_animation_render_workbench
|
||||
|
||||
- task: WBV2-P30-000
|
||||
- parent: WBV2-P29-004
|
||||
- status: done
|
||||
- gap: workflow:authorize_animation_render_workbench
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize the next source-backed workbench implementation wave.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-animation-render-slice.mjs --task WBV2-P30-000 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P30-000 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P30-000/`
|
||||
- Status: `docs/status/WBV2-P30-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P30-000/manifest.json`
|
||||
- Rollback: restore WBV2-P29-004 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P30-001.md
Normal file
33
docs/tasks/WBV2-P30-001.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P30-001: implement_animation_nla_workbench
|
||||
|
||||
- task: WBV2-P30-001
|
||||
- parent: WBV2-P30-000
|
||||
- status: in_progress
|
||||
- gap: ANIMATION.NLA_WORKBENCH
|
||||
- ownerFamily: ANIMATION
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose active action, FCurve interpolation and NLA stack controls through the workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-animation-render-slice.mjs --task WBV2-P30-001 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P30-001 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P30-001/`
|
||||
- Status: `docs/status/WBV2-P30-001.md`
|
||||
- Manifest: `tests/golden/WBV2-P30-001/manifest.json`
|
||||
- Rollback: restore WBV2-P30-000 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P30-002.md
Normal file
33
docs/tasks/WBV2-P30-002.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P30-002: implement_camera_light_world_workbench
|
||||
|
||||
- task: WBV2-P30-002
|
||||
- parent: WBV2-P30-001
|
||||
- status: in_progress
|
||||
- gap: RENDER.SCENE_PROPERTIES
|
||||
- ownerFamily: RENDER
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose camera, light and world property commands through the workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-animation-render-slice.mjs --task WBV2-P30-002 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P30-002 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P30-002/`
|
||||
- Status: `docs/status/WBV2-P30-002.md`
|
||||
- Manifest: `tests/golden/WBV2-P30-002/manifest.json`
|
||||
- Rollback: restore WBV2-P30-001 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P30-003.md
Normal file
33
docs/tasks/WBV2-P30-003.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P30-003: implement_nonmesh_media_workbench
|
||||
|
||||
- task: WBV2-P30-003
|
||||
- parent: WBV2-P30-002
|
||||
- status: in_progress
|
||||
- gap: GEOMETRY.NON_MESH_MEDIA
|
||||
- ownerFamily: GEOMETRY
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose font, volume, metaball and non-mesh editing controls.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-animation-render-slice.mjs --task WBV2-P30-003 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P30-003 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P30-003/`
|
||||
- Status: `docs/status/WBV2-P30-003.md`
|
||||
- Manifest: `tests/golden/WBV2-P30-003/manifest.json`
|
||||
- Rollback: restore WBV2-P30-002 as queue parent and leave the slice in_progress.
|
||||
33
docs/tasks/WBV2-P30-004.md
Normal file
33
docs/tasks/WBV2-P30-004.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# WBV2-P30-004: run_p30_implementation_smoke
|
||||
|
||||
- task: WBV2-P30-004
|
||||
- parent: WBV2-P30-003
|
||||
- status: in_progress
|
||||
- gap: workflow:run_p30_implementation_smoke
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run bounded build and startup smoke after P30 implementation.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused Main source: `blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp`
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-animation-render-slice.mjs --task WBV2-P30-004 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main implementation is present and connected
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P30-004 --write`
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P30-004/`
|
||||
- Status: `docs/status/WBV2-P30-004.md`
|
||||
- Manifest: `tests/golden/WBV2-P30-004/manifest.json`
|
||||
- Rollback: restore WBV2-P30-003 as queue parent and leave the slice in_progress.
|
||||
37
docs/tasks/WBV2-P31-000.md
Normal file
37
docs/tasks/WBV2-P31-000.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P31-000: authorize_resource_scene_workbench
|
||||
|
||||
- task: WBV2-P31-000
|
||||
- parent: WBV2-P30-004
|
||||
- status: done
|
||||
- gap: workflow:authorize_resource_scene_workbench
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize the next source-backed resource and scene-data implementation wave.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-resource-scene-root.mjs`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P31-000 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- malformed and unsupported resource payloads fail closed with a typed diagnostic
|
||||
- implementation evidence never changes the historical inventory or provenance epoch
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P31-000/`
|
||||
- Status: `docs/status/WBV2-P31-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P31-000/manifest.json`
|
||||
- Rollback: restore WBV2-P30-004 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P31-001.md
Normal file
37
docs/tasks/WBV2-P31-001.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P31-001: implement_resource_workbench
|
||||
|
||||
- task: WBV2-P31-001
|
||||
- parent: WBV2-P31-000
|
||||
- status: in_progress
|
||||
- gap: IO.RESOURCE_WORKBENCH
|
||||
- ownerFamily: IO
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose packed VFonts, sounds, speakers, text blocks, textures and particle settings through a bounded resource workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-resource-scene-slice.mjs --task WBV2-P31-001 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P31-001 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- malformed and unsupported resource payloads fail closed with a typed diagnostic
|
||||
- implementation evidence never changes the historical inventory or provenance epoch
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P31-001/`
|
||||
- Status: `docs/status/WBV2-P31-001.md`
|
||||
- Manifest: `tests/golden/WBV2-P31-001/manifest.json`
|
||||
- Rollback: restore WBV2-P31-000 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P31-002.md
Normal file
37
docs/tasks/WBV2-P31-002.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P31-002: implement_text_datablock_authoring
|
||||
|
||||
- task: WBV2-P31-002
|
||||
- parent: WBV2-P31-001
|
||||
- status: in_progress
|
||||
- gap: IO.TEXT_DATABLOCK
|
||||
- ownerFamily: IO
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Connect a typed text-source command to Blender Main Text datablocks with bounded persistence.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-resource-scene-slice.mjs --task WBV2-P31-002 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P31-002 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- malformed and unsupported resource payloads fail closed with a typed diagnostic
|
||||
- implementation evidence never changes the historical inventory or provenance epoch
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P31-002/`
|
||||
- Status: `docs/status/WBV2-P31-002.md`
|
||||
- Manifest: `tests/golden/WBV2-P31-002/manifest.json`
|
||||
- Rollback: restore WBV2-P31-001 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P31-003.md
Normal file
37
docs/tasks/WBV2-P31-003.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P31-003: run_p31_implementation_smoke
|
||||
|
||||
- task: WBV2-P31-003
|
||||
- parent: WBV2-P31-002
|
||||
- status: in_progress
|
||||
- gap: workflow:run_p31_implementation_smoke
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run the bounded production build smoke after P31 resource implementation.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-resource-scene-root.mjs`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P31-003 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- malformed and unsupported resource payloads fail closed with a typed diagnostic
|
||||
- implementation evidence never changes the historical inventory or provenance epoch
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P31-003/`
|
||||
- Status: `docs/status/WBV2-P31-003.md`
|
||||
- Manifest: `tests/golden/WBV2-P31-003/manifest.json`
|
||||
- Rollback: restore WBV2-P31-002 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P32-000.md
Normal file
37
docs/tasks/WBV2-P32-000.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P32-000: authorize_scene_context_workbench
|
||||
|
||||
- task: WBV2-P32-000
|
||||
- parent: WBV2-P31-003
|
||||
- status: done
|
||||
- gap: workflow:authorize_scene_context_workbench
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize scene context and release status implementation.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/scene-ir.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-scene-context-slice.mjs --task WBV2-P32-000 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P32-000 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- unavailable or blocked status data remains visibly blocked and cannot be treated as ready
|
||||
- implementation evidence never changes historical inventory or provenance
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P32-000/`
|
||||
- Status: `docs/status/WBV2-P32-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P32-000/manifest.json`
|
||||
- Rollback: restore WBV2-P31-003 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P32-001.md
Normal file
37
docs/tasks/WBV2-P32-001.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P32-001: implement_scene_context_workbench
|
||||
|
||||
- task: WBV2-P32-001
|
||||
- parent: WBV2-P32-000
|
||||
- status: in_progress
|
||||
- gap: workflow:implement_scene_context_workbench
|
||||
- ownerFamily: WORKFLOW
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose real SceneIR collections, libraries, armatures and workflow status in the Properties workbench.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/scene-ir.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-scene-context-slice.mjs --task WBV2-P32-001 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P32-001 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- unavailable or blocked status data remains visibly blocked and cannot be treated as ready
|
||||
- implementation evidence never changes historical inventory or provenance
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P32-001/`
|
||||
- Status: `docs/status/WBV2-P32-001.md`
|
||||
- Manifest: `tests/golden/WBV2-P32-001/manifest.json`
|
||||
- Rollback: restore WBV2-P32-000 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P32-002.md
Normal file
37
docs/tasks/WBV2-P32-002.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P32-002: implement_release_status_workbench
|
||||
|
||||
- task: WBV2-P32-002
|
||||
- parent: WBV2-P32-001
|
||||
- status: in_progress
|
||||
- gap: workflow:implement_release_status_workbench
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Expose guarded scripting, render routing, server job and release candidate status without local shims.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/scene-ir.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-scene-context-slice.mjs --task WBV2-P32-002 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P32-002 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- unavailable or blocked status data remains visibly blocked and cannot be treated as ready
|
||||
- implementation evidence never changes historical inventory or provenance
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P32-002/`
|
||||
- Status: `docs/status/WBV2-P32-002.md`
|
||||
- Manifest: `tests/golden/WBV2-P32-002/manifest.json`
|
||||
- Rollback: restore WBV2-P32-001 as queue parent and leave the task in_progress.
|
||||
37
docs/tasks/WBV2-P32-003.md
Normal file
37
docs/tasks/WBV2-P32-003.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# WBV2-P32-003: run_p32_implementation_smoke
|
||||
|
||||
- task: WBV2-P32-003
|
||||
- parent: WBV2-P32-002
|
||||
- status: in_progress
|
||||
- gap: workflow:run_p32_implementation_smoke
|
||||
- ownerFamily: RELEASE
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Run the bounded production build smoke after scene context implementation.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/scene-ir.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-scene-context-slice.mjs --task WBV2-P32-003 --write`
|
||||
|
||||
## 验收
|
||||
|
||||
- real source or WebEngine Main path is wired
|
||||
- worker/client/frontend route uses typed protocol without a duplicate shim
|
||||
- malformed, unsupported, hash-drift or false-completion input fails closed
|
||||
- implementation smoke is reproducible; Chromium receipts, undo/redo, save/reopen and deterministic verification remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P32-003 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- unavailable or blocked status data remains visibly blocked and cannot be treated as ready
|
||||
- implementation evidence never changes historical inventory or provenance
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P32-003/`
|
||||
- Status: `docs/status/WBV2-P32-003.md`
|
||||
- Manifest: `tests/golden/WBV2-P32-003/manifest.json`
|
||||
- Rollback: restore WBV2-P32-002 as queue parent and leave the task in_progress.
|
||||
36
docs/tasks/WBV2-P33-000.md
Normal file
36
docs/tasks/WBV2-P33-000.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# WBV2-P33-000: authorize_next_implementation_wave
|
||||
|
||||
- task: WBV2-P33-000
|
||||
- parent: WBV2-P32-003
|
||||
- status: in_progress
|
||||
- gap: workflow:authorize_next_implementation_wave
|
||||
- ownerFamily: PROGRAM
|
||||
- targetImplementationClass: SOURCE_BACKED
|
||||
|
||||
## 目标
|
||||
|
||||
Authorize the next source-backed implementation wave.
|
||||
|
||||
## 输入与范围
|
||||
|
||||
- Focused protocol: `web/protocol/web-engine.ts`
|
||||
- Implementation entrypoint: `node tools/web/generate-wbv2-scene-context-root.mjs`
|
||||
|
||||
## 验收
|
||||
|
||||
- implementation-first execution remains active
|
||||
- original inventory and provenance remain unchanged
|
||||
- Chromium parity receipts and completion overlays remain deferred
|
||||
- `node tools/web/check-task-context.mjs --task WBV2-P33-000 --write`
|
||||
|
||||
## 失败边界
|
||||
|
||||
- malformed, unsupported and hash-drift inputs fail closed
|
||||
- implementation evidence never changes historical provenance
|
||||
|
||||
## 交付与回滚
|
||||
|
||||
- Reports: `tests/golden/WBV2-P33-000/`
|
||||
- Status: `docs/status/WBV2-P33-000.md`
|
||||
- Manifest: `tests/golden/WBV2-P33-000/manifest.json`
|
||||
- Rollback: restore WBV2-P32-003 as queue parent and leave the wave in_progress.
|
||||
Reference in New Issue
Block a user