89 lines
7.3 KiB
Markdown
89 lines
7.3 KiB
Markdown
# 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/C:Chromium 主线程/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/E:license、SBOM、source offer、deterministic package 为发布必需证据;每个 true
|
||
字段必须绑定实际成功命令、耗时、输出与构件 SHA-256,manifest 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/SceneIR;25 秒动画量级的写入加播放总耗时须小于
|
||
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-256,manifest `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 bytes;ACK 背压使源端峰值工作集为 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
|
||
```
|