Files
workinf_Blender_Wasm/docs/status/N-026.md
2026-08-14 22:32:09 -04:00

89 lines
7.3 KiB
Markdown
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.
# N-026 全域发布门
状态:`parity BLOCKED / V1 release READY`machine-readable parity/release manifest、依赖/状态
检查、命令/hash 证据绑定、Chromium 完整套件、离线包/OPFS、SPDX SBOM、1M/10M geometry、
simulation cache、1M 帧长媒体、4K/8K texture、运行中断网、主线程 WebGL device loss、四类
确定性 OOM 和 P0 用户闭环证据已落地V1 evidence 为零缺失)
## 已验证切片
1. N-026-A版本化 schema 4 `ReleaseManifestIR` 分别记录 Blender 全域 `parityStatus`、V1
`releaseClass/releaseStatus`、required/excluded slices、roadmap 状态、验收命令和依赖;
required 未声明、READY 仍含未完成 required、V1 排除已完成切片、缺失 family 或依赖环都会拒绝。
2. N-026-B/CChromium 主线程/OffscreenCanvas、offline/Worker restart/OPFS recovery、
1M/10M geometry、4K/8K texture、长媒体、simulation cache、OOM/device loss/网络
中断/损坏 blend/zip bomb 等证据字段必须逐项为 true 才能放行。
3. N-026-D/Elicense、SBOM、source offer、deterministic package 为发布必需证据;每个 true
字段必须绑定实际成功命令、耗时、输出与构件 SHA-256manifest family 排序可确定性序列化,
当前 V1 缺证据为空并聚合为 `READY`;全域 parity 仍使用独立 `parityStatus=BLOCKED`,没有
把有界发布范围虚报为完整 Blender 对标。
4. 当前 Chromium smoke 已通过引擎启动/Main 编辑与内容寻址资产恢复,并通过真实 64 KiB
OPFS quota 下的失败保持旧 revision、Worker 重启恢复门。这只计为 partial evidence不等于
完整 suite 或其余 family 的桌面 golden。发布门 schema 4 仅接受 Chromium 浏览器证据,
Firefox/WebKit 不在本项目当前测试配置内。
5. N-015 Curve/Surface/Font/Metaball 已通过 Blender 5.2 desktop geometry golden这四类及
PointCloud/Curves/Hair 共 7 对象已通过 GLB/USDA desktop round-trip。Volume/VDB 已重新纳入,
当前已有真实资源/license/hash、OpenVDB 13->NanoVDB 32 desktop 转换、manifest/range 和确定性
证据server job、OPFS 重开、Float32 WebGPU core 和 Main Volume 属性保存重开已有专项证据,
双生产视口、有限 grid 材质和显式 GPU resident LRU 已接入自动缺页重绘、GLB/USD loss、联合重开和
desktop/Chromium 发布 golden 仍计为阻断;自动 demand paging 不计入已完成证据。
6. 当前发布包已通过本地 third-party notices、Blender/Three license 文件、无远程运行时依赖、
非空 SHA-256 manifest、SPDX 2.3 lockfile/vendored SBOM、对应源码提供和离线二进制/源码包
确定性复建100k/1M decimate、5 类损坏 blend 和 archive 高压缩比拒绝有实际命令记录。
7. `docs/status/release-evidence.json` 记录 Chromium 完整 E2E + release suite 以及上述发布命令;
`docs/web/sbom.spdx.json` 确定性覆盖 npm lockfile 与 notices 中显式 vendored/native 组件。
8. simulation cache 性能门在 Chromium 中写入并重开真实 OPFS 内容寻址缓存,逐帧范围读取、
SHA-256 复验、解码并发布 600 帧 BTF1/SceneIR25 秒动画量级的写入加播放总耗时须小于
30 秒。该门衡量浏览器缓存管线,不声称 native physics 求解或 bake 性能已完成。
9. network interruption 门在 Chromium 页面和 Worker 启动后切换真实 offline context离线完成
Main Add Cube、`.blend` 下载保存和保存文件重开,检查 revision 与 4 个对象均保持;该门不把
未实现的远端 job 断点续传计为完成。
10. 主线程视口显式跟踪 `lost -> restoring -> ready` WebGL 状态Chromium 使用
`WEBGL_lose_context` 真正丢失并恢复 context恢复后重新应用 PBR 配置、绘制非空像素并
完成一次 Main 编辑。OffscreenCanvas Worker device loss 尚未计入该证据。
11. 4K texture 门在 Chromium 生成 4096x4096 PNG经 SHA-256/维度/字节预算校验、
`createImageBitmap` 解码、GPUTextureStore 和 Three.js WebGL 实际采样,要求非空彩色像素且
解码上传渲染小于 30 秒。
12. evidence record 只能绑定 schema 中已知且值为 true 的字段;任何绑定字段的记录必须包含
至少一个唯一构件 SHA-256manifest `generatedAt` 必须是可往返的 canonical UTC 时间戳。
13. 8K texture 门先要求 WebGL `MAX_TEXTURE_SIZE >= 8192`,再对 8192x8192 PNG 执行同样的
SHA-256、解码、GPU 上传和实际采样,独立 Chromium 进程内耗时须小于 45 秒。
14. P0 用户闭环使用同一真实 `.blend` 完成对象/网格/材质 Main 编辑、undo/redo、OPFS 原子保存、
StorageWorker/WebEngineWorker 双重启、稳定 ID/几何 SHA 重开比较、主线程/Offscreen 视口和
GLB 语义/PBR 回读;不支持 Shader 仍返回 `SHADER_NODE_UNSUPPORTED`
15. 10M geometry 门以 40 个 250K triangle transferable chunk 连续覆盖 10,000,000 triangles
实际传输 180,492,000 bytesACK 背压使源端峰值工作集为 4,512,300 bytes。20K/2K 两级 LOD
使用既有 cache key/manifest 和 OPFS 重开路径,在完整流完成前进入主线程/Offscreen 双视口,
覆盖选择、相机、近远 LOD 切换、中途取消、renderer/Worker/cache 释放和小场景恢复。range
manifest 固定 SHA-256 为 `224738e0c3aa28ae42167bf8974455a3d0f940f59f19eb51c5768f435c66b24f`
16. long media 门覆盖 1,000,000 帧/10,001 strips 的有界 bucket index、起中末/64 个随机 seek、
最新 scrub 胜出、index/seek/decode 取消、20 KiB LRU 和活动 key 保留;本地 PNG/WAV 及会话
manifest 经内容寻址 OPFS 保存StorageWorker/media Worker 双重启后恢复当前帧。MP4 codec
与最终编码仍返回结构化阻断,不被该 V1 证据扩白。
17. OOM 门使用测试专用 token session 和 fail-after-bytes/count在真实 Chromium WebEngine、
OPFS、WebGL 与 WebGPU 路径分别注入 WASM open/edit/save、staging 中途写、GPU geometry/texture
原子资源组和 NanoVDB resident/page-table 失败;报告验证旧 revision/hash、undo/redo、临时资源
归零、释放字节、同会话继续执行与 Worker/持久存储重开,并由独立 record 绑定 `faults.oom`
## 仍然阻断
- V1 evidence 当前为 17 条记录、0 个缺失release gate 为 `READY`。N-015 至 N-025 的全域
对标差距继续记录为 `parityStatus=BLOCKED`;本项目当前只配置 Chromium。
- VDB 发布证据已覆盖 server job、HTTP 续传/OPFS 分块恢复、quota/tamper/rollback、Float32 WebGPU
数值/专项像素、显式 resident 分页/LRU、双生产视口、有限材质映射与 Volume Main 属性重开;仍缺自动缺页重绘、生产
Offscreen device-loss 重建、大 bundle、完整材质和三视角
desktop/Chromium golden。
- 完整 native dependency/license 审计仍需发行审核;当前 SBOM 覆盖 lockfile 和显式 notices
不声称替代 Blender 全部传递依赖的发布级法律审计。
## 验收
```bash
WEB_TEST_PORT=5326 npm --prefix web run test:e2e -- --grep "N-026 release"
npm --prefix web run test:release-evidence
npm --prefix web run test:geometry-10m-performance
npm --prefix web run test:long-media-performance
npm --prefix web run test:oom-recovery
npm --prefix web run release:evidence
```