Checkpoint web parity through Chromium input tasks
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions

This commit is contained in:
mes123456
2026-08-19 10:39:03 -04:00
parent 5a11045ca5
commit 380cbed4ff
634 changed files with 41862 additions and 212 deletions

View File

@@ -1,7 +1,8 @@
# N-023 Asset、Library 与 IO
状态:`BLOCKED`asset catalog、来源/许可证元数据、真实 Main library inventory、库依赖与
IO 安全门已落地;Append/Link/Override Main、非 GLB 本地导入和跨桌面重导入未实现)
IO 安全门已落地;bounded Append Main 及其 canonical persistence 已完成Link/Override Main、
非 GLB 本地导入和跨桌面重导入仍未实现)
## 完整对标盘点基线
@@ -91,8 +92,35 @@ M12-03D 已把同一 source-hash-bound closure 送入 WASM Worker 的 authoritat
link/append context 递归导入 Object、Mesh、Material 和 packed ImageMain commit 前核对 source
locator、root、closure 与 base revision四个 ID 均无 `ID.lib`/override、映射为可写 `LOCAL_MAIN`
并只产生一个新的 SceneIR revision。stale revision 与 local ID collision 在 Main mutation 前阻断,
失败路径回滚完整 history state。该项只证明单 transaction Main appendundo/redo/save/reopen 与
desktop canonical report 的联合一致性仍由 M12-03E 验证。
失败路径回滚完整 history state。
M12-03E 已在同一 Chromium/WASM Main 路径完成联合持久化门append 只推进一个 revisionundo
移除 Object/Mesh/Material/Image 四个 closure IDredo 恢复同一 canonical graphsave/reopen 后
再次读取的依赖边、geometry、UV、material slot 和 packed image Float32 pixel hash 与 M12-03C
desktop report 精确一致。图像比较只对 Blender bottom-up `Image.pixels` 与 Canvas top-down row
做规范化;当前 SceneIR 缺省的 `Image.colorSpace` 使用 desktop sRGB semantic default若字段出现
则必须匹配,不放宽其它字段。该证据仍不覆盖 Link/Override 或完整 N-023 IO parity。
M12-03F 已用独立 Blender 5.2 desktop fixture 冻结 LINK 语义。只链接一个 Object rootMesh、
Material 和 packed Image 依赖随 source library 保留;四个 ID 的 `library` 均为
`m12_link_source.blend``isLibraryOverride=false`,并映射为 `SOURCE_LIBRARY/readOnly=true`
target 保存并重开后 stable mapping、依赖边、geometry/UV/material slot 和 packed image Float32
pixel hash 不变。该 enabling evidence 仍不开放 linked writer 或声明完整 Link parity。
M12-03G 已为 linked Object/Mesh/Material/Image writer 建立统一 fail-closed gate。object transform、
mesh geometry/material slot、material property/image node 和 packed image data 六类操作在
`SOURCE_LIBRARY/readOnly=true` context 下全部返回 `LINKED_DATA_MUTATION_BLOCKED`,且
`recoverable=false`stale revision 先返回 `REVISION_CONFLICT`未知字段、operation 和 owner
substitution 也在 Main 前阻断。M12-03H 又将 reload 限定为匹配 source library generation/revision 的
单一 linked snapshot 替换stale、跳代、重复 identity 和 source substitution 均不发布新状态。该项仍不
实现 relocate、override 或 LINK Main transactionM12-03I 的 missing-library placeholder 仍是有界
reference-preservation 证据,不是完整资源恢复。
M12-04A-J 又冻结 declared source-origin admission、canonical project path、path/origin safety、
symlink/hardlink resolution、metadata-first read、entry/total/path/range/conflict budget 与 cancellation
rollback。取消、quota 和 OOM 的部分 staging 都会清零并保持 committed revision/SHA-256 不变,
同一 storage instance 可继续提交小 archive6 个恶意 ZIP/TAR fixture 又进入确定性长期回归。
该组有界证据仍不实现完整 archive decoder、fuzz 或 N-023 全域 parity。
## 已验证切片
@@ -101,8 +129,30 @@ desktop canonical report 的联合一致性仍由 M12-03E 验证。
缺许可证和哈希不匹配会拒绝。
2. N-023-A/B部分catalog 与 library dependency 图做确定性拓扑检查并返回 load order
content-addressed index 报告 `LOCAL_BOUNDED`OPFS 只在运行时 API 存在时报告 `PROBE_REQUIRED`
3. N-023-C现有 GLB 导出与 USD semantic analysis 可放行;GLTF/OBJ/PLY/STL、
USD/Alembic 实际导入保持 `IO_FORMAT_UNSUPPORTED`,库 mutation 需要真实 Main。
3. N-023-C现有 GLB 导出与 USD semantic analysis 可放行;M12-05A 已从 pinned Blender
5.2 runtime 生成 GLTF/GLB/OBJ/STL/PLY/USD/Alembic operator/build inventory但没有把清单
当作执行 receiptM12-05B 仅放行已有 bounded GLB local export其余 import/export local/server
route 均保持 `BLOCKED`M12-05C 又让 UI registry 只消费 matrix 声明且 runtime 可执行的 route
文件选择器仅接受 `.blend`operator search 隐藏 blocked/undeclared 组合M12-05D 再用
pinned Blender 5.2 runtime receipt 在执行前确认 operator registered/build option/RNA identity
M12-05E 又要求 source/settings/runtime 三重 hash 与 parent inventory identity且不从扩展名推断能力
M12-06A 已由同一 pinned runtime 生成五个独立 Mesh/PBR/UV/skin/animation GLB fixture并用
semantic report 与逐字节二次生成固定输入基线M12-06B 又由生产 Web parser 在 Node 与
Chromium Worker 对 topology/attributes/materials/nodes/animations 做 exact canonical 比较;
M12-06C-G 又完成 Main persistence、loss report、desktop re-import、negative budget 和双向取消/
Worker restart/真实 OPFS quota 恢复M12-07A 又冻结 pinned Blender OBJ 单 Mesh position/
normal/UV/material-group 输入M12-07B 又冻结 OBJ 双对象/负索引/相对纹理来源/坏 face 负例;
M12-07C 已完成 bounded Web-to-desktop OBJ round-trip 与 texture-origin loss report
UV/skin mismatch、GLB import UI route 和 OBJ Web route 仍保持阻断M12-07D 已冻结 Blender
STL binary/ASCII 两个独立 runtime variantM12-07E 又对标 normal/unit/degenerate/trailing
trailing 保持 stricter Web blockM12-07F 又完成 STL Web-to-desktop round-trip/material loss
reportSTL Web route 仍保持阻断M12-07G 又冻结 PLY ASCII 与 binary little-endian 两个
独立 desktop capability variantM12-07H 又完成 bounded PLY vertex/face/color/custom property
mapping 与 `PLY_UNKNOWN_PROPERTY` loss reportM12-07I 又让 big-endian、坏 list、超大 count
在 Worker 中稳定 fail-closedM12-07J 又完成 OBJ/STL/PLY cancellation/OOM/restart/small recovery
但 PLY Web route 仍保持阻断;
GLTF/OBJ/PLY/STL、USD/Alembic 实际导入仍保持 `IO_FORMAT_UNSUPPORTED`
库 mutation 需要真实 Main。
4. N-023-A/B部分预览字节先验 SHA-256 和 byte length再校验 PNG signature/尺寸;
WebP 仅在 RIFF/WEBP 容器签名正确时进入后续解码门,不从元数据伪造预览内容。
5. N-023-E项目路径、外部 URI、archive entry 数量/单项/总量、压缩展开比率均有边界。
@@ -110,9 +160,11 @@ desktop canonical report 的联合一致性仍由 M12-03E 验证。
packed/external 状态、只读标志和 archive-parent dependency1024 library/每库 1024 dependency、
重复 ID、缺依赖、依赖环与项目外路径由 SceneIR 再校验。缺外部库字节时返回
`LINKED_LIBRARY_RESOURCE_REQUIRED`,不从路径伪造 SHA-256 或声称已加载。
7. N-023-Earchive 结构门):除 traversal 与展开比预算外,重复规范路径、文件/目录前缀冲突、
累计压缩/解压字节和声明源长度不一致均拒绝;`planIOArchiveRanges` 按路径生成确定性、安全整数
compressed offset 计划。它为后续流式解包提供边界,不代表已有 ZIP decoder。
7. N-023-Earchive 结构门):symlink/hardlink 在写前解析到临时根ZIP central directory/TAR
manifest 必须先读entry/total/path、展开比、重叠 range、重复路径与文件/目录前缀冲突均拒绝。
取消会删除真实 staging、保持 committed identity 且发布数为零quota/OOM 部分写入也会清零,
并允许同一 storage instance 恢复小 archive。三类 ZIP 与三类 TAR 恶意二进制 fixture 确定性
重建、验证真实容器 metadata 后全部 fail-closed这些门不代表已有 ZIP/TAR decoder。
8. N-023-ENanoVDB range 基础件):`.nvdb` manifest 要求连续、32-byte 对齐、逐块 hash
HTTP source 只接受与 manifest 精确一致的 `206 Content-Range`,并按块校验后消费;临时错误重试、
稳定 ETag/If-Range、response-body 偏移续传、错位/短响应拒绝均已完成。OPFS 原子
@@ -125,11 +177,16 @@ desktop canonical report 的联合一致性仍由 M12-03E 验证。
## 仍然阻断
- N-023-BAppend undo/redo/save/reopen、Link/Library Override、reload/relocate 和完整真实 Main
parityM12-03D 的单 transaction append 已有独立证据,但不解除本项阻断。
- N-023-Blinked relocate、missing-library recovery、Library Override 和完整真实 Main parity
M12-03D/E 已证明 bounded Append 的单 transaction 与 desktop canonical persistenceM12-03F/G/H/I
已冻结 desktop LINK source-library/read-only contract、linked writer fail-closed 与
matching-generation reload、missing-reference preservation 和 desktop override ownership/property
fixture、单一 verified override writer、freshness gate、negative cases、三 lane command matrix 与
declared source-origin admission、canonical project-path normalization 与 path/origin security gate
但不解除本项阻断。
- N-023-C/DGLTF/OBJ/PLY/STL、USD/Alembic import/export/save/reopen/desktop reimport。
- N-023-E真实 zip decoder/fuzz、OPFS quota/recovery、license/source offer 发布审计和大文件
流式性能;archive 路径冲突、双向字节预算与确定性 range plan 已完成。
- N-023-E真实 ZIP/TAR decoder/fuzz、license/source offer 发布审计和大文件流式性能仍阻断;
archive link/metadata/budget/conflict/cancellation/quota/OOM 与恶意 fixture regression 已完成。
- N-023-EVDBGPU page resident LRU 已完成64 MiB1 GiB bundle 中断/内存性能门仍阻断。
## 验收
@@ -154,6 +211,13 @@ npm --prefix web run test:asset-preview-display
npm --prefix web run test:library-operation-inventory
npm --prefix web run test:library-operation-identity
npm --prefix web run test:library-main-append
npm --prefix web run test:library-link-safety
npm --prefix web run test:library-metadata-first
npm --prefix web run test:library-archive-budget
npm --prefix web run test:library-archive-conflicts
npm --prefix web run test:library-archive-cancellation
node --test web/tests/unit/library-archive-recovery.test.mjs
node tools/web/check-malicious-archive-fixtures.mjs
npm --prefix web run test:vdb
npm --prefix web run test:vdb-native
```