Files
workinf_Blender_Wasm/后续工作.txt
mes123456 7c16b279ae
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
Advance M7 workflows and release operations
2026-08-15 17:43:53 -04:00

217 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Web Blender M6/M7 接续执行记录
更新时间2026-08-15America/New_York
执行规则
1. 本文件是当前接续入口;每轮先读本文件,再按“唯一下一领取点”直接执行。
2. 严格按当前里程碑原子任务顺序推进,前一项未通过时不把后一项标为完成。
3. 每完成一段写回实际命令、结果、hash、当前计数和下一领取点。
4. 不覆盖用户已有改动,不提交或改写 git 历史。
当前状态
- M6 正式完成71/71剩余0。
- M7 正式完成7/18剩余11。
- 已完成到M7-07。
- 唯一下一领取点M7-08Worker 崩溃时展示可恢复错误,不清空当前项目列表)。
- quick laneREADY7/7 命令通过,总命令耗时 11,455 ms报告
release/ci-reports/quick.json。
- Chromium laneREADY9/9 命令通过;每个 browser server 使用独立动态端口,报告
release/ci-reports/chromium.json总命令耗时 41,003 ms。
- release laneREADY25/25 命令通过,总命令耗时 1,334,766 ms报告
release/ci-reports/release.json。
本轮新增并已验证
- M6-09A-Cbinary archive 解包到 mktemp 后由包内 deployment contract 启动;新浏览器
context 阻断所有非 loopback 请求manifest、WASM、CSS、3 个 Worker、字体和基础 UI 冷启动通过。
- M6-10A-D真实归档环境完成 OPFS open/edit/save、Worker 重建、离线恢复、继续 edit、
undo/redo、revision 单调保存和 GLB 严格回读stable object/data IDs 与 blend SHA-256 已核对。
- M6-11A-Cbinary archive 在独立目录校验 SHA256SUMS、合同、许可证、SBOM、manifest
23 个 manifest 文件通过archive browser smoke 通过并清理 server/profile。
- M6-12A-Dsource archive 在另一个独立目录校验 18,173 个文件,无 pycache/dist/build 输出;
npm ci、typecheck、build 通过14 个 production build 文件与 binary app 逐项一致。
- M6-13A-C确认 Gitea Actions、自托管 Debian 13 runner、Node 20.19.2、Playwright 1.62.1、
Chromium 149/Chrome 150、Blender 5.2.0、Emscripten 3.1.69quick cache 只绑定 lockfile/toolchain。
- M6-14A-CP0、main/Offscreen、network、device-loss、OOM、OPFS quota、malicious blend/archive
共 9 个 Chromium lane 子命令通过,端口均动态分配并由 Playwright 清理。
- M6-15Afull E2E 126/126、100k/1M/10M geometry、4K/8K texture、600 帧 simulation、
1M 帧 media、VDB native/server/OPFS/WebGPU/双视口/故障、49/49 acceptance、
offline reproducibility 和 archive 复验共 19/19 通过。
- full E2E 首次发现开发服务器错收集 archive-only spec已将该 spec 限制到
playwright.archive.config.ts定向 M6-09 通过后完整 release lane 从头重跑通过。
- M6-15B/Crelease 仅由 main push 或 workflow_dispatch 触发exit code 17 失败注入
只生成新 FAILED 报告,不复用旧 READY。
- M6-16A-Cquick/Chromium/release 三报告联合校验通过,绑定同一 commit、
lockfile、ledger、engine、archive 和每条日志 SHA-256retention 固定为 7/14/30 天。
- M6-17ADEPLOYMENT.md 已补齐空目录安装和 transport preflight自动门在 mktemp
中校验交付 SHA-256、拒绝危险 tar 条目、安装到内容 hash 目录、原子建立 current
验证 HTTPS/127.0.0.1 READY 与 public HTTP/file BLOCKED并从安装后目录验证合同头/range。
- M6-17Bbinary archive 新增 release-metadata.json绑定 product/engine、IDB schema 6、
OPFS schema 1、3 个 Worker 和缓存策略;双版本门验证 5->6 前向迁移、Worker 换代、
失败前置不改 current、成功原子切换、旧 release 保留和项目 SHA-256 不变。
- M6-17C回滚合同只原子切换 current 的整套 app/engine release相同 IDB/OPFS schema
旧版 READYIDB 降级和 OPFS 逆迁移稳定 BLOCKED新版目录、项目 bytes、revision 17 和
blend SHA-256 全部保留。
- M6-17Doperations-diagnostics.json 与 DEPLOYMENT.md 表格覆盖 MIME、range、isolation、
hash、quota、Worker、GPU 七域21 个信号唯一;检查、预期、恢复和数据安全边界
与 deployment contract 联合校验,诊断 JSON 已进入 binary archive。
- M6-17Eoperations rehearsal 在同一个全新 mktemp 根内连续执行 8/8 步骤:
delivery hash/path、空目录安装、deploy HTTP、项目写入、upgrade 切换/HTTP、rollback 切换/HTTP
revision 23 与 blend SHA-256 不变,临时根已清理。
- M6-18A冻结 `0.1.0-rc.1`、engine `blender-wasm-0.1.0-rc.1` 和 HEAD
`17ab961485fe2ea1574c5f0b7d3ef9608a2bf424`RC 生成器先稳定拒绝旧 `0.1.0`
metadata再重建并两次复验确定性 binary/source archive。`RC_MANIFEST.json` 与 sidecar
已绑定 package/package-lock、engine manifest、binary 内 release metadata/SBOM、ledger、
`SHA256SUMS.txt`、3 个主要构件和 5 个 operations reportbinary 25 文件、source 18,185
文件及 14 个重建产物独立复验通过。
- M6-18B新增 RC 发布说明,只列已通过的 P0、双 viewport、single/pthread、OPFS、
性能/故障、离线交付和 CI/运维能力;自动核对 12 个 V1 family `READY` 与 12 个
Blender 全域 `BLOCKED`7 个本地链接全部可解析。`V1_SCOPE.md` 和机器 ledger 已进入
离线包binary manifest 复验 28 个文件通过。
- M6-18C已知限制明确 Chromium-only、HTTPS/loopback、AUTO/SINGLE/PTHREAD 选择、
初始化失败单次 fallback、hash fatal 和 release 刷新边界;记录 WASM 16 MiB 初始/2 GiB
ceiling、origin-bound storage/无最低 quota 保证、纹理 64 MiB/16,384 px/256 项,以及
VDB/NanoVDB 512 MiB/1 GiB/512 MiB 上限与 adapter 可能更低。限制自动检查与 binary
29 文件复验通过。
- M6-18D发布恢复手册覆盖 SHA256SUMS/RC manifest/归档/三 lane 证据校验、生产
Save Project 的 OPFS commit + 外部 `.blend` 备份、revision/hash/origin 记录、切换前失败、
切换后兼容回滚、IDB/OPFS schema 稳定阻断及独立恢复 origin文档检查、binary 30 文件
复验和全新临时根 operations rehearsal 8/8 再次通过。
- M6-18Equick 从首次 unit hardcoded version 的新 `FAILED` 报告定位并修正后完整重跑
`READY 7/7`Chromium `READY 9/9`release 扩充 RC 文档、5 项 operations 和 manifest
门后 `READY 25/25`。full E2E 126/126、49/49 acceptance、归档重建/浏览器/独立 source
rebuild 全部通过;三报告与 RC manifest 联合绑定同一 HEAD、package/lockfile、ledger、
engine、SBOM、3 份发布文档和最终 archive hashexit code 17 仍只生成新 `FAILED`。
- M7-01新增纯 `user-action-state` 合同,覆盖 IMPORT/OPEN/SAVE/SAVE_AS/EXPORT 和
IDLE/RUNNING/SUCCEEDED/FAILED/CANCELLEDaction identity、允许转换、身份/复用/错误码
拒绝均为确定性结果。生产 App 已在图片 Main transaction、blend open、OPFS commit、blend
download 和 GLB export 的真实边界记录状态保存仍保持先原子提交再下载。unit 4/4、
Chromium 正负例 2/2、typecheck 和 production build 全部通过。
- M7-02新增纯项目动作互斥合同OPEN/SAVE/CLOSE 冲突矩阵完全对称且独占,冲突统一返回
`USER_ACTION_CONFLICT`,并细分 REPEATED_OPEN、CONCURRENT_SAVE、CLOSE_DURING_SAVE。
App 的 open、manual save、autosave 和 close 使用同一 owner lock同一浏览器任务竞争验证第二次
open 不替换首个 projectId、双 save 只提交/下载一次、save 中 close 不清空 scene 或终止 Worker
提交后继续 edit/save/close 正常。互斥 unit 4/4联合 unit 8/8、新 Chromium 5/5、既有
save/autosave 2/2、typecheck 和 build 全部通过。
- M7-03新增 `File.stream()` 分块 reader每个实际 stream chunk 最多按 1 MiB 有界复制,
进度来自累计真实字节/文件声明大小,每 4 MiB 让出一次 UI 并同步提交紧凑进度状态,不使用
时间插值。每次 open 有独立 AbortController读入阶段提供取消按钮取消稳定进入
`CANCELLED/OPEN_CANCELLED`,不调用 WebEngine、不替换旧 scene/projectId。621,323-byte 有效
blend 精确完成40 MiB 合成输入在中间字节取消reader unit 3/3联合 unit 11/11、
新 Chromium 7/7、既有 save/autosave 2/2、typecheck 和 build 全部通过。
- M7-04reader 资源 ledger 在取消返回前执行 stream cancel/release、清零未完成 output并证明
live reader/input bytes/staging 全为 0。WebEngine open 改为隔离候选 WASM module/Main handle
AbortSignal 通过 cancelOpen request 在 NATIVE_INITIALIZE/NATIVE_OPENED 阶段取消;只有构建
SceneIR 成功才原子替换当前 Main取消则释放 native input、销毁候选 handle当前架构无 OPFS
import staging计数恒为 0。native 取消后旧 Basic Main 继续 edit/save联合 unit 11/11、
新 Chromium 8/8、既有 open/save/autosave/concurrent-open/isolated-preview 5/5、build 全部通过。
- M7-05新增纯 save transaction 合同,冻结 base committed revision/hashSERIALIZE、OPFS_STAGE、
SCENE_COMMIT、METADATA_COMMIT 任一失败均只更新 attempt只有 Storage 返回的 revision/hash 与
candidate 完全一致才推进 committed。已有基线项目在 after-stage、after-scene-commit、
before-metadata-commit 故障中用同一原子 writer 回写旧 bytes 后抛错Worker 重启后旧
revision/hash/bytes 逐项不变;无基线 M6 journal 前滚仍通过。unit 14/14、新 Chromium 9/9、
旧 recovery/save/autosave/quota 4/4、build 全部通过。
- M7-06新增纯 dirty stateopen/recover 建立 current/committed Main revision只有成功 Main
transaction 推进 current匹配 candidate 的成功 save 才对齐 committedpreview、workspace、
失败 import/open 保持原状态。删除手动 dirty toggle旧 autosave 测试改用真实 Add Cube。
unit 17/17、新 Chromium 10/10、真实 Main/save/autosave 3/3、build 全部通过。
- M7-07undo/redo 成功后序列化当前 Main 并与最近成功 save 的 blend SHA-256 比较;逻辑
revision 始终单调增加,内容 hash 相同即 clean、不同即 dirty。save -> edit -> undo clean ->
redo dirty -> undo clean 的 Chromium 路径通过。联合 unit 18/18、Chromium 10/10、build 通过。
待完成任务(严格顺序)
- M7-08Worker 崩溃时展示可恢复错误,不清空当前项目列表。
- M7-09 至 M7-18Worker/recent projects 恢复、
存储预算与清理、输入/响应式/双 viewport/键盘可访问性、诊断报告和 30 分钟 soak。
M6-15/M6-16 实际验证命令
- BLENDER_BIN=<official-usd-enabled-blender> BLENDER_ARCHIVE_SHA256=96f6c181...1c48
CHROME_PATH=<chrome-150> VDB_RESOURCE_ROOT=<vdb-root> npm --prefix web run ci:release
- node tools/web/check-ci-report.mjs release/ci-reports/quick.json
release/ci-reports/chromium.json release/ci-reports/release.json
- npm --prefix web run test:ci-failure-report
M7-01 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5194 npm --prefix web run test:user-actions`unit 4/4、Chromium 2/2 通过。
- `npm --prefix web run build`通过55 modules transformed。
- `git diff --check -- web/protocol/user-action-state.ts web/tests/unit/user-action-state.test.mjs
web/tests/e2e/user-action-state.spec.ts web/app/src/app/App.tsx web/package.json`:通过。
- `user-action-state.ts` SHA-256232257fb0e85a6827d71a1acbbf82477ba8c441c224cf994049bde96943c518e。
- unit/Chromium spec SHA-25688ace5b65a5bee44d4ab417ea2144391d461117e848b1446da86b1cf0b21e237 /
9ecb1e63f58c25dc64e0f8738b272b45529212469c9ea2ca660b68d4f0e7b566。
M7-02 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5196 npm --prefix web run test:user-actions`:联合 unit 8/8、Chromium 5/5 通过。
- `WEB_TEST_PORT=5197 npx --prefix web playwright test --config web/playwright.config.ts
web/tests/e2e/smoke.spec.ts -g "saves the opened blend|autosaves a dirty project"`2/2 通过。
- `npm --prefix web run build`通过56 modules transformed。
- `project-action-mutex.ts` SHA-256330da0a7253f9bda9f7b43f5df4a252596fe43723c489308b1e0cbb6311aefd4。
- unit/Chromium spec SHA-25692af891ddbb54c54c2717a8e8d4466678de2cb7117f413f431a2e32fa2446f0c /
0eb8f7c40dab623762d04e485348fbdaa68e9782010199e5d1b888f9475d6896。
M7-03 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5206 npm --prefix web run test:user-actions`:联合 unit 11/11、Chromium 7/7 通过。
- `WEB_TEST_PORT=5207 npx playwright test --config web/playwright.config.ts web/tests/e2e/smoke.spec.ts
-g "saves the opened blend|autosaves a dirty project"`2/2 通过。
- `npm --prefix web run build`通过57 modules transformed。
- `file-byte-reader.ts` SHA-2563472e2a8cc01b6a78dda85d90a0a6f106ee3c0ad0e3c598bd3f6a7cbca14b536。
- unit/Chromium spec SHA-2561e86e6f553cafcd2a890eab76f090ba2eb249c21fced88b6f82db80162254bc8 /
78608c721e5bd66570ae73b13c9c4531fc7d555b226c194188e73cddcde6b370。
M7-04 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5210 npm --prefix web run test:user-actions`:联合 unit 11/11、Chromium 8/8 通过。
- `WEB_TEST_PORT=5211 npx playwright test --config web/playwright.config.ts web/tests/e2e/smoke.spec.ts
-g "opens a local .blend|serializes concurrent WebEngine init|previews Decimate|saves the opened blend|autosaves"`5/5 通过。
- `npm --prefix web run build`通过57 modules transformed。
- WebEngineClient/Worker SHA-2561e2cac9f9a9ebfb068cb8a7cfeab5100d9534600dcdd703a12d68614940a28e5 /
331c7854ea75e2def1bf503118c670908d39ce9ede9c5deb5a4432812172582b。
- Chromium spec SHA-256467d50dadce0f2b1d8da090fcc9383c642d3fd9fa19d19b53833340d418490a6。
M7-05 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5214 npm --prefix web run test:user-actions`:联合 unit 14/14、Chromium 9/9 通过。
- `WEB_TEST_PORT=5215 npx playwright test --config web/playwright.config.ts web/tests/e2e/smoke.spec.ts
-g "recovers verified atomic saves|quota exhaustion|saves the opened blend|autosaves"`4/4 通过。
- `npm --prefix web run build`通过58 modules transformed。
- save transaction/StorageWorker SHA-2569c6d932d6d2ce308ae8fbc56ee56296f1b67bd22e76b90a69751813f174bc766 /
bfde02b78850beb510c7a92fcefb6b3b9f5d2ef4bef09027a7fdc6f737181789。
- unit/Chromium spec SHA-25699fde5eb7152e1fe0df8702660724f8457a6423fb1d731f92758670b531cfd96 /
e453f817b3bae19ddf18c57c4429743e7157d083ab9ebf2e8e523bc6301d226d。
M7-06 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5217 npm --prefix web run test:user-actions`:联合 unit 17/17、Chromium 10/10 通过。
- `WEB_TEST_PORT=5218 npx playwright test --config web/playwright.config.ts web/tests/e2e/smoke.spec.ts
-g "Main-authoritative|saves the opened blend|autosaves a dirty project"`3/3 通过。
- `npm --prefix web run build`通过59 modules transformed。
- dirty contract/unit/Chromium SHA-256283d08dd92e7f7afc13ba004982160d23369a42ea487c77c7fc6de803f4c00e7 /
ab71114adb58fec8387ff8b8ca0a1729681a57e370a995c0ee7e71eeabc3baf2 /
9980065a202b97975d299ef93312c442f4bc69b8840e899e89b1f802d13967e7。
M7-07 实际验证
- `npm --prefix web run typecheck`:通过。
- `WEB_TEST_PORT=5220 npm --prefix web run test:user-actions`:联合 unit 18/18、Chromium 10/10 通过。
- `npm --prefix web run build`通过59 modules transformed。
- dirty contract/unit/Chromium SHA-256ee1a04a6f43a4c5504657f318249c9c2e27abe47647cef64237b94ba2e56f1ea /
1e5c6ddeb29ca110b90a01f40a8ceca26e18d7787455dd13aeb8a0da76adb602 /
9b884c1e975b4ae4b55f6bc80ed191444790d75eccb09718863f24a54fd4aa18。
M7-08 立即执行
- WebEngine/Storage Worker error 统一映射为 recoverable worker fault不在 error callback 中清空 snapshot、
recent project 或 committed/dirty identity所有 pending request 只结算一次。
- 提供显式“重启并恢复”入口,先重建 Worker再从当前项目 OPFS commit + operation log 恢复。
- 添加 Worker 崩溃注入,验证可恢复短错误、项目列表/当前 UI 保留和恢复成功;完成后推进 M7-09。
关键当前构件
- binary archive SHA-2568af6c782b8e4b31020219597b821160b7634439749c455fd31d9d919676e2e2e
- source archive SHA-256ee09b3e43e715b3d5497573bbf63a449cbea146150d56c08c6506afd5fce2871
- SBOM SHA-2567d0fb22790c44bada5f01e5ebc12f6050e1c0436a53f58dceb2e979c17bb593a
- RC manifest SHA-256862d332b3c931cb5c0898bb7f66e02f0dd4562053b18d0c87a7cea390ebaacdf
- M6-17E rehearsal report SHA-256b953dd89165b5dd9260d75c7ec6e982a69cfeea358fbc2ce35c75e99544cac2c
- quick/Chromium/release report SHA-256dcaa32be911fa7ed36127b5cb1458bb07dcca19d562cabc64e022f13b094f911 /
90b19d057957f1edce264c7137f89d6701643e46feb88001054eea1bf0a18eb5 /
7d28a5018b78ba45935f832388d6b4e632c6198476a2fdcb4a0abef3066c5ec6
- HEAD commit17ab961485fe2ea1574c5f0b7d3ef9608a2bf424