Advance Blender 5.2 web parity through M12-03D
This commit is contained in:
464
后续工作.txt
464
后续工作.txt
@@ -14,9 +14,11 @@ Web Blender M6/M7/M8/M9/M10/M11 接续执行记录
|
||||
- M8 当前完成:20/20;剩余:0。
|
||||
- M9 当前完成:14/14;剩余:0。
|
||||
- M10 正式完成:15/15;剩余:0。
|
||||
- M11 当前完成:13/14;剩余:1。
|
||||
- 已完成到:M11-13。
|
||||
- 下一领取点:机器队列的最新 `nextTask`(本文不缓存任务名称)。
|
||||
- M11 正式完成:14/14;剩余:0。
|
||||
- 已完成到:M11-14。
|
||||
- M12 当前完成:M12-01A-I、M12-02A-H 与 M12-03A-D。
|
||||
- 已完成到:M12-03D。
|
||||
- 下一领取点:机器队列的最新 `nextTask` 为 `M12-03E`。
|
||||
- quick lane:READY,7/7 命令通过,总命令耗时 11,455 ms,报告
|
||||
release/ci-reports/quick.json。
|
||||
- Chromium lane:READY,9/9 命令通过;每个 browser server 使用独立动态端口,报告
|
||||
@@ -96,6 +98,9 @@ Web Blender M6/M7/M8/M9/M10/M11 接续执行记录
|
||||
- M11-13 已完成实时音频恢复门:schema 1 区分 context/output/mute 状态;真实 Chromium
|
||||
`AudioContext` 通过 suspend/resume、muted resume、unmute gain 恢复和 close。缺 API/
|
||||
构造失败与 resume failure 均保持结构化静音阻断。
|
||||
- M11-14 已完成 Render/Compositor/Media 三域故障生命周期门:真实 `.blend`、H.264 和 WebGL
|
||||
输出通过取消不发布、generation 2 重开、预算失败不改已提交状态、显式 clear/dispose 回执、
|
||||
owned resource 归零和恢复后 identity/output SHA-256 一致性验证。
|
||||
|
||||
本轮新增并已验证
|
||||
- M6-09A-C:binary archive 解包到 mktemp 后由包内 deployment contract 启动;新浏览器
|
||||
@@ -2329,3 +2334,456 @@ M11-13 实际验证(2026-08-17 America/New_York)
|
||||
已同步;M11 更新为 `13/14`,machine slice 计数为 191 completed/58 blocked。waveform、A/V
|
||||
sync、实际多 strip 混音/设备选择和 M11-14 跨域 fault lifecycle 均未提前声明。下一领取点
|
||||
继续只读取机器队列最新 `nextTask`,本文不缓存任务名称。
|
||||
|
||||
M11-14 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M11-14:新增 schema 1 `RenderCompositorMediaRecoveryEvidenceIR`,固定 RENDER、
|
||||
COMPOSITOR、MEDIA 三域 source、cancellation、restart、budget、release、recovery 字段;逐域
|
||||
cancellation/budget code 固定,协议拒绝缺失/重复域、取消后发布、restart hash drift、预算
|
||||
改变 committed identity、非正释放回执和资源未归零。
|
||||
- Render 生产路径打开真实 `m11_render_reference.blend`,以 `ViewportRenderer` 读取非空 WebGL
|
||||
RGBA8;预取消 open 返回 `OPEN_CANCELLED` 且旧 Main identity 不变,WebEngine generation 2
|
||||
重开后 scene/output SHA-256 一致。纹理 aggregate 超限返回
|
||||
`GPU_TEXTURE_BUDGET_EXCEEDED` 且已加载 texture stats 不变,dispose 返回正数 byte/resource
|
||||
并归零。Compositor 从真实 Main 读取 allowlist GraphIR,周期取消和 8193 宽超预算分别返回
|
||||
`COMPOSITOR_CANCELLED`/`COMPOSITOR_BUDGET_EXCEEDED`,重开后 Float32 output hash 一致,
|
||||
LRU clear 返回释放字节并归零。
|
||||
- Media 通过真实 H.264 HTMLMedia probe/decode 生成 8x8 RGBA8 proxy;预取消返回
|
||||
`SEQUENCER_CANCELLED`,低于一帧预算返回 `SEQUENCER_BUDGET_EXCEEDED` 且 cache 仍为空。
|
||||
首会话 clear 后重新 probe/decode H.264 并重建 cache,source/decode/profile identity 与
|
||||
payload SHA-256 保持一致。
|
||||
- `WEB_TEST_PORT=5592 npm --prefix web run test:render-compositor-media-recovery` 首次完整运行通过:
|
||||
protocol unit `3/3`、Eevee reference checker、Compositor desktop golden checker、Chromium
|
||||
`1/1`。全量 Node `193/193`、typecheck、lint 和 production build(75 modules)通过;受影响
|
||||
回归中的 render resource budget unit `3/3` + Chromium 主线程/Offscreen `3/3`、Compositor
|
||||
golden unit `3/3` + Chromium `1/1`、media proxy cache unit `3/3` + Chromium `1/1` 全部通过。
|
||||
status consistency 为 12 parity blocked、0 release blocked、17 evidence、0 missing;release
|
||||
evidence 为 `READY`,`git diff --check` 通过。
|
||||
- M11-14 hashes:protocol
|
||||
`a1b0b36cf93173347d55a955ff2e02f3666f7c28ef7f06442b86f0ee2b272286`;production suite
|
||||
`ef9cd58ce3bbd522c72075e82d6423387b61039509996851d8d5ebf3a0d86789`;media proxy cache
|
||||
`7a1dbf8e838c47e2b99bc8932997e79d3c3cf2636b6285ace083800d833e2e64`;texture store
|
||||
`a87adefa67b243cfd0cfcad0573a1b646f1e8be8abd0a187e1dc29cab2954d44`;compositor cache
|
||||
`3ce4819dadb2d6de7305c3676b2708689cd8be95e6fa7894651d6a02c4658b31`;unit
|
||||
`3cec4a33f28a76423a9678bcb61244cc463f5f2f5939c3f0b6865d34063e1f55`;Chromium spec
|
||||
`1578848eda7cb26cdf1584fa13f4cc2e252e782959d489dc4454e45c8d06595a`;golden manifest
|
||||
`87f17b0437d819e00c4a0902146d6549cf713482667ead627a45ba2b46050247`;package
|
||||
`0e731a5c826a999eef372f875c6c5ce9d697fd369a929025370a74cf18a93582`;parity ledger
|
||||
`abf91dd37de5fe1b5ce43912f87672b1346994500da27090fabce6cff66c6786`;release evidence
|
||||
`7cc927bf068500e0dfabd5dbb76082292c0eef92969850ba11a3ee533601daca`。
|
||||
- `docs/status/M11-14.md`、N-019/020/021、当前/完整对标计划、项目状态、parity ledger、release
|
||||
evidence 和本文件已同步;M11 更新为 `14/14`,machine slice 计数为 194 completed/58
|
||||
blocked。12 个 family 的全域 `parityStatus` 仍保持 `BLOCKED`;机器队列唯一下一任务切换为
|
||||
`M12-01A`,未提前实现 catalog inventory。
|
||||
|
||||
M12-01A 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01A:新增 machine inventory,逐项绑定 Blender 5.2 `DNA_asset_types.h`、
|
||||
`rna_asset.cc`、Blend IO、AssetCatalog/CDF/path 源码和当前 Web v1 protocol 共 8 个 source
|
||||
SHA-256。清单覆盖 `AssetMetaData` 14 个 DNA 字段、10 个真实 RNA 属性、`AssetTag` 3 个
|
||||
存储字段、catalog 3 个持久语义字段、3 个 runtime flag、CDF v1 格式和 path hierarchy。
|
||||
- 实际 Blender 5.2 background runtime 返回 author/description/copyright/license/tags/active_tag/
|
||||
catalog_id/catalog_simple_name/use_preferred_import_method/preferred_import_method 共 10 个 RNA
|
||||
属性;类型和 readonly/runtime 标志与源码 inventory 完全一致。
|
||||
- Web v1 snapshot 通过 TypeScript AST 固定 `AssetCatalogIR` 3 字段和 `AssetEntryIR` 10 字段。
|
||||
当前缺 properties、description、copyright、catalog recovery name、active tag 和 preferred import
|
||||
两字段共 7 项;同时记录 Blender optional author/license、path hierarchy 与 Web parentId graph、
|
||||
64-byte tag 和 custom ID properties 的语义差异,未在本任务直接改 schema。
|
||||
- `npm --prefix web run test:asset-catalog-inventory` 首次完整通过:
|
||||
`dna=14 rna=10 tag=3 catalog=3 gaps=7 next=M12-01B`。inventory hash
|
||||
`194d5fd0fef5044f5e82a51931a061e226445f0f53410af9dc0594c70a79e936`;checker hash
|
||||
`38839f47dbe82ad7931e5e444e124e87b64a604d9358be6d71cce7769439e57b`;package hash
|
||||
`4b234613a016a43ef918876b69bfdd65db0a57aae0c37324d1f58c4dd8acb736`。
|
||||
- `docs/status/M12-01A.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked,
|
||||
release evidence 无需伪造新功能记录;机器队列唯一下一任务切换为 `M12-01B`。
|
||||
|
||||
M12-01B 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01B:锁定 Blender 5.2 generator 在临时目录生成 CDF v1 和 `.blend`,覆盖 3 条
|
||||
catalog、嵌套 path、Object/Material/World 三类资产、assigned/nil UUID、可空文本、ordered
|
||||
tags、active tag、preferred import method 和 custom ID properties。Object `asset_mark()` 自动
|
||||
生成的 dimensions metadata 也进入 canonical,不手写删除真实字段。
|
||||
- 独立 exporter 由新的 Blender 进程重开 fixture 后读取 AssetMetaData 和 CDF,稳定排序并输出
|
||||
schema 1 canonical JSON。`catalog_simple_name` 如实保持 RNA setter 在无 Asset Browser context
|
||||
下产生的空恢复名,不伪造只读字段。
|
||||
- `npm --prefix web run test:asset-catalog-v1-fixture` 完整通过:从新临时目录重新生成 fixture/CDF,
|
||||
新进程重开生成物和 checked-in fixture,两次 canonical 均与 golden 精确一致;输出
|
||||
`catalogs=3 assets=3 metadata=complete next=M12-01C`。
|
||||
- hashes:generator `4156ec6293562d44f87ad5a268de52fbfa31a65da8263a67a2bc45bf22999307`;
|
||||
exporter `3dbccd8df54d8686aa526f7967f58fd1008336c4c5b1deed01a136ba15aa3e41`;checker
|
||||
`c2813aa36482eff0b23ca0209f488cfe70ea11e4f39cc6c6036d6c47bbc8e17b`;fixture
|
||||
`8facfe82e3ca0a0605c139ef5bdcbb82d27a6953a6add4e008b68af90bc1211f`;CDF
|
||||
`a72f542acb2d2239951a2b20cda0f92305e1d6d8222f84072ad1aab52e3e4c98`;canonical
|
||||
`6fc6def0b9d0e4f51ef40c1d87a1f17074f6340c126a01aee49e5e53271c961e`;manifest
|
||||
`1ee0abf961b82195e5fb586eb9e59302e4f7f839615f1ebbdf5cdcba8b60accd`。
|
||||
- `docs/status/M12-01B.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked,
|
||||
release evidence 无需修改;机器队列唯一下一任务切换为 `M12-01C`。
|
||||
|
||||
M12-01C 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01C:新增独立 schema v2。catalog 以 canonical RFC4122 UUID 和 cleaned slash path
|
||||
为权威,`parentPath` 必须从 path 精确导出,不延续 Web v1 `parentId` 图;asset 以 Blender
|
||||
AssetWeakReference 的 library identifier + relative asset identifier 生成 SHA-256 stable Web ID。
|
||||
- schema 覆盖 M12-01B 全部 metadata,nil UUID 映射为 null,同时保留空 author/license 等合法
|
||||
Blender 状态。catalog/tag simple text 固定 63-byte payload,所有 name/path/dynamic metadata/
|
||||
custom property 和 aggregate text 预算均按 UTF-8 字节计算;catalog/assets/tags/properties/array
|
||||
元素均有显式上限。
|
||||
- 生产 converter 从 M12-01B desktop canonical 生成 M12-01C golden,不复制测试实现。
|
||||
`npm --prefix web run test:asset-catalog-v2` 4/4 通过,覆盖 Blender source/hash 绑定、desktop
|
||||
转换、local/external stable ID、预算常量和 golden parse;typecheck、lint、diff-check 通过。
|
||||
- hashes:protocol `0949838efb2f69466368185b80bb1d2e851672d78311fcd5270eb0814576e5d7`;
|
||||
generator `b20e7dbd8508ca8ecf17d7da507b45b1225315bac7759c55c7b324683d660881`;unit
|
||||
`73038022124ddc7e683602b47a4804297b3a64ecd4819160c7ec086d2f6190ae`;golden
|
||||
`2abe279cebbffd1341dc61b1fdc5366dd1f6f42769ba36171782019ca61fb929`;manifest
|
||||
`612892b03a689ebe19804e495bd29744634ab43a3b29fff41adc2d7a5d0b67b9`;Blender source
|
||||
`ace3d6468bcdb2f6190431e967495794b7afa35758fd82fc3941b1ce7d374635`。
|
||||
- `docs/status/M12-01C.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01D`。
|
||||
|
||||
M12-01D 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01D:迁移先走现有 v1 production parser,再对所有层级做 exact-key 审计,任何未知
|
||||
字段在转换前阻断,避免静默丢失。canonical UUID 原样保留;其他 legacy catalog ID 用固定
|
||||
namespace 的 RFC4122 UUIDv5 映射;parent graph 转为 Blender cleaned slash path。
|
||||
- asset 按 Blender weak reference identity 生成 v2 ID。logical revision 保持不变,author/license/
|
||||
tags/source hash/path/preview receipt/library dependency graph 全量保留;v1 缺少的 dynamic metadata、
|
||||
preferred method 和 custom collection 使用显式默认并计入 report。
|
||||
- migration report 绑定 canonical source/target SHA-256、逐 catalog/asset mapping 和 preserved/default
|
||||
计数。`npm --prefix web run test:asset-catalog-migration` 3/3 通过;3 catalog、2 asset、1 preview、
|
||||
2 source、2 library 正例与重复执行完全一致;M12-01C、typecheck、lint、diff-check 回归通过。
|
||||
- hashes:migration protocol `6d74bc5605f94e05208eda82830192d38f88066dfc409058555a8876c785f226`;
|
||||
generator `954d15c02d68e3f644b57c8c4c136ce09bd037a0af2012bf74b97f681c77dd60`;unit
|
||||
`6b927e7a8238e4e0a77cc0fdf783b099d8add22c5f875df2299012eb32730186`;v1
|
||||
`1cc43d181afefd63b53cb9c3626bb58195fad20187d6e534adc1ecbe65f75da5`;v2
|
||||
`38e5d1771b3d2d63ce5e10268eac4513f2043b0cbf71ab1799c1868bc2aa97fb`;report
|
||||
`57b972c1bbb9ae326c3f264c225c21546682442ff3194fbc343e1c46a2cd410a`;manifest
|
||||
`fea9e01b51f64a7e9c15dcfc521b3e84636525ffbe0a849f7a6f1b0be2b02e9d`。
|
||||
- `docs/status/M12-01D.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01E`。
|
||||
|
||||
M12-01E 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01E:新增 compatibility contract。原生 v1 文档保持 READY;合法 v2 对 v1 reader
|
||||
只返回有界 catalog/asset/library metadata snapshot 和 canonical source hash,状态为 READ_ONLY;
|
||||
CATALOG_WRITE、ASSET_WRITE、SAVE 都返回 `ASSET_SCHEMA_DOWNGRADE_BLOCKED`。
|
||||
- 未知未来 schema 返回不可恢复 `PROTOCOL_MISMATCH` 且不产生 snapshot;非法 v1/v2 返回
|
||||
`ASSET_MANIFEST_INVALID`。所有检查只读,不能把 lossy projection 序列化回 source。
|
||||
- generator 固定 read、3 类 write/save 和 future 共 5 份报告。`npm --prefix web run
|
||||
test:asset-catalog-legacy-reader` 4/4 通过,验证 snapshot、全写入阻断、native v1、future reject、
|
||||
source hash 一致和输入对象不变;M12-01C/D、typecheck、lint、diff-check 回归通过。
|
||||
- hashes:protocol `5d51029b232e03f08fc0778d4933910b2a54818b4d653fbcc185c8d764641349`;
|
||||
error contract `309ab84d5c755a69466ddb73e4b54e87caf62cbcac0f10f34d904e9f6f4a5f34`;generator
|
||||
`208f568db092e1712095d77ab28db92d5a1eb11fe62813b237ce466f9268fd4e`;unit
|
||||
`f6477222412044e6784b64c1be83dc9bd6050fe6a955ba5430a4ea963b20dbb4`;report
|
||||
`3c2f9241b56ad5bd742dc4152dec703bdc56eef4e6d8d60e6edf163c4571ad54`;manifest
|
||||
`cf55ea1f9430df04fb55bf07c68c1b2099b044b0da0fdb07a7251b13c459724b`。
|
||||
- `docs/status/M12-01E.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01F`。
|
||||
|
||||
M12-01F 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01F:直接对 production v2 parser 和 v1→v2 migrator 注入 duplicate catalog ID、
|
||||
duplicate asset ID、legacy parent cycle、v2 parentPath mismatch、64-byte UTF-8 simple-name/tag、
|
||||
v2 top/nested unknown field 和 v1 nested unknown field 共 9 类负例。
|
||||
- duplicate/cycle/parent/unknown 均稳定返回 `ASSET_MANIFEST_INVALID`;多字节文本用 32 个双字节
|
||||
code point 证明 63-byte 上限按 UTF-8 byte 而非 JS length,稳定返回 `ASSET_BUDGET_EXCEEDED`。
|
||||
每个负例后立即重新 parse 原始 v2 golden,9/9 均通过,失败不污染 parser 状态。
|
||||
- `npm --prefix web run test:asset-catalog-negatives` 2/2 通过;typecheck、lint、diff-check 通过。
|
||||
unit hash `3a11605ac8666c8c4e1e2e85ccfd423115915820d0de6f92bdf72dff1f01ce41`;cases
|
||||
`74672fa0aec248fd5d9a265743ef4dfe4d417fce8a24622b8b3d6be2f95c8874`;manifest
|
||||
`127b2b605ac79a891cd6ab516ee031c02624a512e1043b111bfac2ebf1d8278d`。
|
||||
- `docs/status/M12-01F.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01G`。
|
||||
|
||||
M12-01G 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01G:新增 production IndexedDB catalog migration。v2 manifest 先由现有 v1 parser/
|
||||
migrator 完整准备,readwrite transaction 内再次核对 source row,再共同写入 v2 index、migration
|
||||
receipt 并删除 v1 index;source 并发变化返回 `REVISION_CONFLICT`。
|
||||
- Chromium 分别在 target put 后和 source delete 后注入 `STORAGE_TRANSACTION`。每次都关闭并重开
|
||||
数据库,database version、完整 v1 index、无关 legacy migration 行、缺失 v2/receipt 与基线精确
|
||||
相同;随后无故障重试才原子提交 v2 index/receipt 并保留 revision 7 和 M12-01D 双 hash。
|
||||
- `WEB_TEST_PORT=5593 npm --prefix web run test:asset-catalog-indexeddb-migration` 通过:M12-01D
|
||||
production migration unit `3/3`、M12-01G artifact unit `1/1`、Chromium `1/1`;typecheck 和
|
||||
diff-check 通过。
|
||||
- hashes(M12-01H 扩展同一生产 reader 后重绑):production migration `283a08bccb5ea301bd2aef8f01d4496972e3962f75e340479336c50e3539ba57`;
|
||||
browser `82c40f38898277b4053a9654537ec9c21bc01a784d1091831e139361575a81e9`;unit
|
||||
`a4366a16f28b91b3ff213e0232308eaecd392731f27972cfa49a11568eb0feca`;manifest
|
||||
`2596067956211698f1b7a07d9423411e2db830b72e6b78593354953a568738e7`。
|
||||
- `docs/status/M12-01G.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01H`。
|
||||
|
||||
M12-01H 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01H:production loader 对 stored v2 index 重新 parse、计算 canonical SHA-256 并与
|
||||
transaction receipt 校验,再发布 revision、catalog order、asset order 和完整 AssetWeakReference
|
||||
identity snapshot;receipt revision/hash drift 在发布前返回 `ASSET_MANIFEST_INVALID`。
|
||||
- 初始页面从 v1 原子迁移后读取 snapshot,真实 page reload 后重开相同 IndexedDB;随后两个独立
|
||||
module Worker 顺序启动,generation 1 terminate 后 generation 2 再打开数据库。四个 context 的
|
||||
3 个 catalog、2 个 asset、revision 7 和 manifest hash 逐字段完全相同。
|
||||
- `WEB_TEST_PORT=5594 npm --prefix web run test:asset-catalog-restart` 从同步 G hash 后完整通过:
|
||||
Node `5/5`、Chromium `2/2`;首次运行由 G manifest 旧 module hash 正确阻断,重绑后从头通过。
|
||||
- hashes:reader `283a08bccb5ea301bd2aef8f01d4496972e3962f75e340479336c50e3539ba57`;Worker
|
||||
`e6007d352555be046b89d0becd719692652ee0418cc97087bf7599155f2a538e`;browser
|
||||
`7945ff38dd474a74c265594b66534a280eb69407509137e60d41f1bea3b3c19b`;unit
|
||||
`eb22b5cc852fa47d9bdd30afec2977facfca0dfa554e7ce738dc1bf8c4bf2122`;manifest
|
||||
`59138eb83d63ae0d397b152e587fbe005d02bc2d229ee484c279b452ea3f2eae`。
|
||||
- `docs/status/M12-01H.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-01I`。
|
||||
|
||||
M12-01I 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-01I:新增 M12-01 aggregate evidence,按精确队列顺序绑定 A-H 八份 manifest,并递归
|
||||
核对每份声明的 Blender/Web source 与 artifact SHA-256;单独绑定 desktop canonical、Web v2
|
||||
golden/protocol、migration v1/v2 fixture/report/protocol、IndexedDB runtime 和 restart Worker。
|
||||
- checker 对 v1/v2 manifest 重新做 stable JSON SHA-256,结果与 migration report 的 source/target
|
||||
hash、revision 7、preserved catalog/assets count 一致;H 的 catalog/asset order 与 target fixture
|
||||
一致,G 的两个 fault point 与 evidence 一致。
|
||||
- `WEB_TEST_PORT=5595 npm --prefix web run test:asset-catalog-m12-evidence` 完整通过:Blender 5.2
|
||||
inventory/fixture、schema v2 `4/4`、migration `3/3`、legacy `4/4`、negatives `2/2`、runtime Node
|
||||
`5/5`、Chromium `2/2`;aggregate 输出 `subtasks=8 catalogs=3 assets=2 next=M12-02A`。
|
||||
- hashes:evidence `2b99f64a207c2ffb966963be8a2150feef67d5bf78946939d3a49a6335b55bc3`;checker
|
||||
`7d0d9f5390648d4af79a8da6226627edb1bf99945bae1a7b1acfb2c5e2419a8b`;package
|
||||
`a810fec6a9a24cad94cb01475f9529ac2f85da827d391a70ab7ddb57421003f8`。
|
||||
- `docs/status/M12-01I.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
M12.1 收口,机器队列唯一下一任务切换为 `M12-02A`。
|
||||
|
||||
M12-02A 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02A:machine inventory 绑定 Blender 5.2 PreviewImage DNA、slot enum、BKE/RNA、
|
||||
Blend reader、asset generator、尺寸常量和当前 Web v1/v2 共 11 个 source hash,以及 PNG/no-preview
|
||||
两个 fixture hash。原生有 ICON/PREVIEW 两槽,持久字段为 w/h/flag/timestamp/rect,runtime pointer
|
||||
不持久化;rect 每像素一个 packed RGBA32。
|
||||
- 延迟加载路径显式 premultiply alpha;RNA packed pixels 长度为 w*h,float components 为 w*h*4,
|
||||
只执行 byte/255。PreviewImage DNA/RNA 均无 color-space 字段,因此 inventory 固定 colorSpace=null,
|
||||
不伪造 sRGB 声明。
|
||||
- 锁定 asset fixture 重开后 Object/Material/World 三项 preview 都是真实 null;真实 8x8 PNG 经
|
||||
Blender preview API 加载得到 image 8x8、icon 32x32、packed/float count 64/256 和 icon count 1024。
|
||||
- `npm --prefix web run test:asset-preview-inventory` 通过,输出
|
||||
`slots=2 rna=9 absent=3 loaded=8x8 next=M12-02B`。inventory hash
|
||||
`a4427426d94afdf1a2ccf5379d76d1797f8604a742a3f0d15bdca629272864bd`;checker
|
||||
`c9cc83d21bac5f34c6d68cb1225dffcd92a5ec76c158ddce909b620cbbcb245c`;package
|
||||
`04f832a3c5773c8cc5294ecdcf175478eed9710496e48c63698d79043384e328`。
|
||||
- `docs/status/M12-02A.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02B`。
|
||||
|
||||
M12-02B 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02B:新增 schema 1 preview identity。source 与 encoded content 分别绑定 MIME、bytes、
|
||||
SHA-256;content 额外绑定 width/height、RGBA8、SRGB 和 alpha mode;generator 绑定 name/version、
|
||||
Blender executable、script 与 canonical settings SHA-256。完整 record 再生成 canonical identity hash。
|
||||
- 锁定 Blender 5.2 用明确 PNG RGBA8/compression 0/Standard-sRGB/零 exposure/gamma 1 设置重编码
|
||||
8x8 PNG。source 261 bytes 与 content 513 bytes 的 hash 不同,第二进程解码 pixel max error=0;
|
||||
两次临时重生成 content SHA-256 完全一致。
|
||||
- `npm --prefix web run test:asset-preview-identity` 通过:unit `3/3` 及 Blender generator checker。
|
||||
source/content bytes、generator、dimensions、identity 和 unknown field 漂移均 fail-closed。
|
||||
- hashes:protocol `2a1d877af42424014097c669e9d44c21b27e3171be185320554693cbefcd7438`;generator
|
||||
`753a26be90f7d97828737ebc3a4ab88275a7c655b4f9992406c7c35fba6535ce`;checker
|
||||
`4d8ece1a5440d202f4e79a48f1f26bc75b3fb11a02d821b8ebc5aee14b11e41a`;unit
|
||||
`5b7b3ccaf410d627365579fa82bf2b48fed9ef17144aad963cdbd4bb7fbd4b5a`;identity
|
||||
`1b1eb8416ce4aa4d83b0dc42b9cb375f1da965e3f0cb9650991289fc619a0a7b`;content
|
||||
`ff139c4a1c5d388c78c5168dfd3272e80ea0d1b15b3743e29a38cd908e8c70e7`;manifest
|
||||
`096f125461b963ee2c414f98f6bb00f02034a380a0cc9c43e0d84754324adb17`。
|
||||
- `docs/status/M12-02B.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02C`。
|
||||
|
||||
M12-02C 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02C:新增 schema 1 pre-decode planner。production 入口先 parse M12-02B identity,
|
||||
在 content hash 前限制 encoded payload 为 16 MiB;随后核对 SHA-256、PNG/WebP header、header
|
||||
dimensions 与 identity,并计算 pixel count、RGBA8 decoded bytes 和 compression ratio。
|
||||
- 所有门均在 browser decoder 与 decoded allocation 前执行。预算固定为 width/height 各 4096、
|
||||
16,777,216 pixels、64 MiB decoded RGBA8 和 100:1 ratio;PNG 只接受 signature + first IHDR,
|
||||
WebP 只接受 size-bound RIFF/WEBP VP8X、VP8L 或 VP8 header。
|
||||
- `npm --prefix web run test:asset-preview-decode-budget` 5/5 通过。8 类负例覆盖 payload hash/length、
|
||||
MIME、dimensions、pixel/decoded bytes、compression ratio、encoded bytes 和 corrupt signature;
|
||||
每次失败后 513-byte/8x8 小正例立即再次通过。typecheck、lint、diff-check 通过。
|
||||
- hashes:decode protocol `3d1c491af2503a7a6012541ed43400d680f8e666cc12a54db284aeb6ac18ff63`;
|
||||
unit `1a65df86d568ae8defd7cd9242f426ac900d92637eb3bed2cbb4a0fae2e86c20`;package
|
||||
`8563916637fc3cb29b53432ae9b80d1dcf6269f2f5c092b595e72c6b0ada55ab`;manifest
|
||||
`934b3ca29d905ad2f5c46f35acff4cf4b9ea291c423fb3aad4afe7e9f10e6244`。
|
||||
- `docs/status/M12-02C.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02D`。
|
||||
|
||||
M12-02D 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02D:production coordinator 先执行 M12-02C gate,将 content SHA-256 写入项目 OPFS,
|
||||
再回读并重复 identity/hash/header/budget 验证;只有这些步骤全部通过才构造 catalog revision+1。
|
||||
- IndexedDB transaction 重新读取并比较完整 source row,随后共同写 v2 catalog preview reference
|
||||
和 M12-02D head receipt。receipt 绑定 project/asset、base/committed revision、双 manifest hash、
|
||||
preview identity、payload bytes/hash 和 OPFS path;并发变化返回 `REVISION_CONFLICT`。
|
||||
- `BEFORE_OPFS_WRITE`、`AFTER_OPFS_WRITE`、`AFTER_CATALOG_PUT` 三处 Chromium fault 均保持完整
|
||||
revision 7 catalog 且无 receipt;后两处只留下未引用 payload。成功路径先持久化 513-byte PNG,
|
||||
再提交 revision 8;关闭/重开数据库后 receipt/reference 相同,OPFS bytes 再次复算 hash。
|
||||
- `WEB_TEST_PORT=5596 npm --prefix web run test:asset-preview-opfs-commit` 通过 Node `1/1`、Chromium
|
||||
`1/1`;typecheck、lint、diff-check 通过。
|
||||
- hashes:coordinator `36418e480b108eb885b5d8da6633174ed1face1fa62742a64372a45280e727a2`;browser
|
||||
`043b9b06d4c0275938cc1d4f9837df95f58f281130f3c0f2b90c10540244592e`;unit
|
||||
`f489a1d9a4c5fb24a99bce6d31841534c7cf3981b53076a0d9e19d106e9d0d74`;manifest
|
||||
`34fe6c6ab097e58f7b648dd84cb919ecb407a5742e387c513bb3ed53db50eed6`;package
|
||||
`7363a8a03cb5f6b1d6bf40d8eabc90b9d48e91aeb4787b175deb4f242c676243`。
|
||||
- `docs/status/M12-02D.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02E`。
|
||||
|
||||
M12-02E 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02E:使用同一 production M12-02D coordinator,让 catalog 中 Action/Object 两个不同
|
||||
Blender weak-reference asset 依次绑定同一 content SHA-256。两个 preview identity 因 assetId
|
||||
不同而不同,catalog author/license/type/path/tags 等 metadata 也保持各自原值。
|
||||
- 首次 commit 在 revision 8 写入 513-byte payload 并报告 `deduplicated=false`;第二次在 revision 9
|
||||
先读取同一 SHA-256 path,完整长度/hash 复验后报告 `deduplicated=true`。真实 OPFS prefix 目录
|
||||
最终只含一个以 content hash 命名的文件,无临时文件或 metadata sidecar 覆盖 payload。
|
||||
- 关闭/重开 IndexedDB 后 revision 9、第二 asset head receipt 和 preview reference 一致;两条 asset
|
||||
都引用相同 content,去除 preview 后的完整 catalog metadata 与初始两条分别精确相同。
|
||||
- `WEB_TEST_PORT=5597 npm --prefix web run test:asset-preview-dedup` 通过 Node `1/1`、Chromium `1/1`;
|
||||
typecheck、diff-check 通过。
|
||||
- hashes:browser `4e53b7a35eb109b152bd6dc0c3348dcb08879d17619968d37fc761c67aa38b40`;unit
|
||||
`e023fdd33e0f40c1331dfdd73cd287dc684256b9d134971ab17db8cfe2a83835`;manifest
|
||||
`7d25f1d8335481795257c643c8589d1607a865634b27a7e5d145a57ce2a92a62`;package
|
||||
`5a83676e821bb768f6d3e282ea4728413cf84c5f3d57672fc664fac3883873e5`。
|
||||
- `docs/status/M12-02E.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02F`。
|
||||
|
||||
M12-02F 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02F:新增 production preview inspector/quarantine。它先独立核对 catalog reference 的
|
||||
expected bytes/hash;健康数据返回 READY。缺失或 hash/length 漂移返回稳定
|
||||
`ASSET_SOURCE_HASH_MISMATCH`,不让 optional preview 阻断 asset metadata 读取。
|
||||
- 对存在的损坏 bytes,先复制到项目 `assets/quarantine`、复算实际 SHA-256/长度,再删除原
|
||||
content-addressed path,最后在 catalog full-row guard 下提交隔离 receipt。catalog v2 row 不改写,
|
||||
receipt 绑定 project/asset/revision、完整 expected preview、actual bytes/hash 和 quarantine path。
|
||||
- Chromium 先确认 513-byte PNG READY,再翻转末字节制造同长度 hash drift。隔离后 SHA-256 path
|
||||
不存在、quarantine 文件 513 bytes;target asset、另一 asset 和 revision 8 全部不变。关闭/重开
|
||||
IndexedDB 后直接从相同 receipt 返回 QUARANTINED、preview/data null 和完整 asset metadata。
|
||||
- `WEB_TEST_PORT=5598 npm --prefix web run test:asset-preview-quarantine` 通过 Node `1/1`、Chromium
|
||||
`1/1`;typecheck、diff-check 通过。
|
||||
- hashes:protocol `a5f3330dbd16d9f578d85d9504c980fffea85b834b77340a307ce21ce9b1cb04`;browser
|
||||
`d8e1d0741765e8f8bfd47b45cf03213d8629efdbbf77dfd33846785a3ec80c27`;unit
|
||||
`79c836c7a3be4e9f305a962775444c766577cca87fa6d1698811e75eb21f2d9a`;manifest
|
||||
`d1a9feeb98c5332b1a14a14c5b813d75a29f172601590e1b5cde254c5059a7c5`;package
|
||||
`77b5cd3d3af68ac390d8fbdb9b2f64764fb4521a1d2bf22cd8a89e40d69424f6`。
|
||||
- `docs/status/M12-02F.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02G`。
|
||||
|
||||
M12-02G 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02G:新增 production reference GC。它先 parse v2 catalog、核对 expected revision,
|
||||
只清空目标 asset.preview 并推进 revision;IndexedDB transaction 对完整 source row 再校验,
|
||||
提交新 catalog/hash receipt 后才允许触及 payload。
|
||||
- committed manifest 中仍有同 SHA-256 reference 时返回 RETAINED;计数为零时才删除
|
||||
`projects/<projectId>/assets/sha256` 下该文件并把 receipt 更新为 COLLECTED。OPFS project namespace
|
||||
是跨项目 ownership 边界,回收函数无法定位或删除另一 projectId 的 payload。
|
||||
- Chromium 中项目 A 两个不同 asset 先共享同一 payload,项目 B 另持同 hash payload。A 的首次
|
||||
removal revision 9->10 保留文件;末次 10->11 回收 A 文件。B 文件始终存在,inspector 返回
|
||||
READY/513 bytes;重开 A 后两 preview 都为 null,完整 metadata 与初始一致。
|
||||
- `WEB_TEST_PORT=5599 npm --prefix web run test:asset-preview-reference-gc` 通过 Node `1/1`、Chromium
|
||||
`1/1`;typecheck、diff-check 通过。
|
||||
- hashes:GC protocol `76b9d8ccd3e7992356f33adc694001f9b0ff364788234389eacdb09198d1415e`;browser
|
||||
`2e9e9b47883997092c5afb0fb7859a484754764de19006e24a8ff2bdeb24f35a`;unit
|
||||
`c5de3122b5d8aab17daf0179cb4f5bb0b5d299408818849cbe7b18e40a47706e`;manifest
|
||||
`3449f2ea9488f66ea5e3f5f2423413e8e290d8ffed3b3d941bdeee3f76addd0a`;package
|
||||
`7d1db0932fbe7405ffdbd44b770ce7bf9815b9dfb829c1906a06bfff635ae702`。
|
||||
- `docs/status/M12-02G.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步。
|
||||
本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 194 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-02H`。
|
||||
|
||||
M12-02H 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-02H:新增共享的 production preview display。它复用 M12-02C pre-decode 门,随后以
|
||||
`colorSpaceConversion/premultiplyAlpha/imageOrientation=none` 创建 ImageBitmap,禁用 smoothing,
|
||||
用 copy composition 绘制并读取 RGBA8;receipt 绑定 identity/content/backend/dimensions/pixel hash,
|
||||
bitmap 在成功和失败路径均关闭。
|
||||
- Blender 5.2 重新生成 8x8 `SRGB/RGBA8/STRAIGHT` PNG,ImageMagick 读取的 desktop reference
|
||||
为 256 bytes,SHA-256 `c2ff81750b41193ce1a06d47d0ff18168a756136dbf0f2586cd0638d4bf0ef00`。
|
||||
主线程 HTMLCanvasElement 与独立 Worker OffscreenCanvas 共用同一实现并逐字节匹配 reference;
|
||||
MAE/RMS/P95/max/bad-pixel/alpha delta 全为 0,foreground IoU=1,单通道错误负例被阻断。
|
||||
- `WEB_TEST_PORT=5600 npm --prefix web run test:asset-preview-display` 通过 Node `1/1`、desktop
|
||||
checker 与 Chromium `1/1`。manifest 分类纠正为 `LOCAL_EXACT`,未把渲染结果误标为平台等价。
|
||||
- hashes:runtime `e4a46a40291427afc185caf016b02120ea71639ab4ab4ac250a5c3de28ee8d28`;Worker
|
||||
`6322562f54b608b7eaac4ca3bc0f8d861f47bb8e9b37b3c2ae3d61163108724f`;desktop checker/report
|
||||
`d03d766e69ea0547be2c247b5d7ef8fd5ceab6b399dc996eba711fa0cac0ca54` /
|
||||
`cdf841f5d27362f6df380772ada8b7b1427d051a8b46b5c2c20aab0b597c25d0`;browser
|
||||
`340d386c6a854c44cd6f6207e3699f870b8ded2aada4747afd6ff1103c719520`;unit
|
||||
`f10a05900c4d1282251f7a76e7c413a18602910f55fe8400f1713f548eba3873`;manifest
|
||||
`30e6e4b6f53e07768d2ae8d853fe08a5c0782f8608320a72e41db77f6d87f2c4`;package
|
||||
`2510242fbc0c2da787f558365733a4db6faf9f490e2594f69dc978920ed09f21`。
|
||||
- `docs/status/M12-02H.md`、N-023、当前/完整对标计划、项目状态、WBS、ledger 和本文件已同步。
|
||||
本项增加 `A-preview-desktop-browser-main-offscreen-display`,ledger 更新为 195 completed/58
|
||||
blocked;机器队列唯一下一任务切换为 `M12-03A`。
|
||||
|
||||
M12-03A 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-03A:新增 Append/Link/Library Override machine inventory,绑定 link/append context、
|
||||
closure、operator、Python load、Blend reader、override DNA/API/implementation 与当前 Web gate
|
||||
共 9 个 source hash,并绑定真实 nested-library `.blend` fixture。
|
||||
- Blender runtime 公开 36 类 selectable collections;Screen/WorkSpace 为 append-only,Library 为
|
||||
source/transitive metadata,Key 为 embedded owner dependency。Append 盘点 direct/indirect、跨库、
|
||||
override-only、reuse-local 和 instantiate 角色;Link 盘点 EXTERN/INDIRECT、ID.lib 和 parent library;
|
||||
Override 盘点 linked reference/local owner/hierarchy root/system dependency/property operation。
|
||||
- `npm --prefix web run test:library-operation-inventory` 通过,报告
|
||||
`roots=36 appendOnly=2 operations=3 overrideFields=17 gaps=8 next=M12-03B`。首轮源码 token 与
|
||||
第二轮单行 Python 语法问题均已纠正后完整重跑通过。
|
||||
- hashes:inventory `0dcb16233b52b3c0be2373f489d6bf3c771c9d6564993ff98b5d63dcd322fef7`;
|
||||
checker `1581490d1923578293202d27a1c379eb2a8c5e13be418547d148cf09c6a783fd`;package
|
||||
`a7cf339b0cf6fab17ef63e9394b2e540af60327f7bf1f7fe95823d182e0d3e63`。
|
||||
- 本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 195 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-03B`。
|
||||
|
||||
M12-03B 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-03B:新增 schema 1 library operation identity。sourceLibraryId 由 canonical locator 与
|
||||
`.blend` SHA-256 生成;binding 再绑定 operation、source root、owner、read-only、generation、
|
||||
revision、dependency closure 与 invalidation token。
|
||||
- APPEND 强制 `LOCAL_MAIN/readOnly=false/referenceReadOnly=false`;LINK 强制匹配 source 的
|
||||
`SOURCE_LIBRARY/true/true`;LIBRARY_OVERRIDE 强制 `LOCAL_OVERRIDE/false/true` 并保留 linked
|
||||
reference/hierarchy root。三种 operation 对相同 source 生成三个不同 token。
|
||||
- generation/revision/source ID/source hash/dependency closure 任一 current state 漂移均返回
|
||||
`REVISION_CONFLICT`;owner 互换、只读漂移、reference 替换、未知字段和伪造 token 均 fail-closed。
|
||||
- `npm --prefix web run test:library-operation-identity` 完整通过 `6/6`;typecheck 通过。
|
||||
- hashes:protocol `5371133bd98e05935cd75bab582abedec32a36559af8d212f0bc8a534ef19451`;
|
||||
golden `b39c0f26697ac688c1203ae4e3e27d8a02686c7c9da9afc438c89a0b4d69370f`;unit
|
||||
`0e5b2c82d481180eb8eb22de16ad8cdef5e58fa7423c26011faaffbac788e547`;manifest
|
||||
`f388aedb9c0901932cf90c058f2f2b83259d9797cd6b144566a25e37a348c64b`;package
|
||||
`48cf41f0d0041bf4f497bc2a454cfa9469874eded1775cea50fe3249d4e0b59e`。
|
||||
- 本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 195 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-03C`。
|
||||
|
||||
M12-03C 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-03C:新增 Blender 5.2 desktop 单 Object append generator,source library 中的
|
||||
Object 通过 Mesh material slot 和 Material Image Texture node 形成 Mesh/Material/packed Image
|
||||
依赖闭包。干净 Main 只选择 append Object,Blender 自动带入全部依赖。
|
||||
- target 中 Object/Mesh/Material/Image 四个 ID 的 library pointer 均为 null,无 library
|
||||
override,全部映射为可写 `LOCAL_MAIN`。保存并重开后 3 条依赖边、4/4/1 geometry、
|
||||
UVMap、material slot、2x2 sRGB RGBA packed image 及 Float32 pixel hash 不变。
|
||||
- `npm --prefix web run test:library-append-desktop` 通过,输出
|
||||
`roots=1 mapping=4 edges=3 pixels=6f0f8c231d65149e69e6ed12d370bcfa095ef90adc202065492ea8c8ef17e45a next=M12-03D`。
|
||||
- hashes:generator `b9d8e3bd24966b0d7d419382d7ef0b35ae8def9ee2c2236dfd3ad1a90aebe66f`;
|
||||
checker `6f8cc0d51be19423cf6fb7203c3c16f8d27e0fbb3b5b357bad5dec6c5ceb432d`;source/target
|
||||
`.blend` `5b60d02926efd588a6ca300ba31414cdf37dbc48786c17b383a70319057c0606` /
|
||||
`5cde4927f47e33f0338de38184ce5ba971825fcefd1d8dc6feb48d41a6cdb60c`;report
|
||||
`b1d7b8b9e832d18d69081f63981062800e0f00f0c9aec025b18274510ed76e2a`;manifest
|
||||
`cbfbd8c919125108334dd24925b9ef8e69880983515e56841e6ead4a2b182aed`。
|
||||
- 本项保持 `enablingTask=true/parityStateChange=false`,ledger 仍为 195 completed/58 blocked;
|
||||
机器队列唯一下一任务切换为 `M12-03D`。
|
||||
|
||||
M12-03D 实际验证(2026-08-17 America/New_York)
|
||||
- 领取 M12-03D:Worker 对 source `.blend` 做 SHA-256、closure、owner/read-only 和 base revision
|
||||
校验后,调用新导出的 `_web_engine_append_library_object`。Native Blender Main 用递归
|
||||
link/append context 在一次 transaction 中导入 Object/Mesh/Material/packed Image,并在发布前
|
||||
检查四个 ID 均无 `ID.lib`/override、均为可写 `LOCAL_MAIN`。
|
||||
- `source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8`
|
||||
通过(当前构件无待重编译);`bash tools/web/install-web-engine-assets.sh` 通过并完成双 variant
|
||||
manifest 资产校验。`npm --prefix web run test:library-append-desktop`、
|
||||
`npm --prefix web run test:library-operation-identity`、`npm --prefix web run typecheck` 和
|
||||
`WEB_TEST_PORT=5601 npm --prefix web run test:library-main-append` 均通过;Chromium 为 1/1。
|
||||
- 浏览器结果确认 `transactionCount=1`、四条 source/local mapping 均为 `LOCAL_MAIN`、revision
|
||||
只增加 1,Object→Mesh→Material→Image 依赖闭包完整;stale revision 返回 `REVISION_CONFLICT`,
|
||||
local ID collision 返回 `ASSET_MANIFEST_INVALID` 且 revision 不变。失败前后 history、undo/redo
|
||||
和保存 buffer 均保持可恢复,完整 desktop canonical 对标仍留给 M12-03E。
|
||||
- hashes:test `7130453cbc81f22eb1bcf598ff3745672ac8177dccb11cef667f5b68b43e87c6`;worker
|
||||
`e3bb430e401144bf17cdcbd0de13cde0a4f904f1f9ff9d5b10a73d90f0d4c648`;protocol
|
||||
`bfd98561cbe797d7b8f07c92c53a25460c839a64ab7222b7795cf58d54dff8d7`;source/target `.blend`
|
||||
`5b60d02926efd588a6ca300ba31414cdf37dbc48786c17b383a70319057c0606` /
|
||||
`9b1ecbcc3d7f8079ee5469de64193ffcaa0a7b01e0f2ac340bbb18aa88734a63`;WASM JS/binary
|
||||
`9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed` /
|
||||
`7821f408687e455c6f4e185fc3741c199c1c60d409836a2fe1b32f521d81e0ea`;Main append API/implementation
|
||||
`5a71260c542fa559f73c6b82e23e72d39bd2844f5ebe12c6edc809a49d79791b` /
|
||||
`d0c484ab62e6ec051c8c2f67c49d750a456578aaccc2aa4f461026307af0db95`。
|
||||
- `docs/status/M12-03D.md`、N-023、当前/完整对标计划、项目状态、WBS 和本文件已同步;本项
|
||||
保持 `parityStatus=BLOCKED`,ledger 仍为 195 completed/58 blocked。机器队列唯一下一任务切换为
|
||||
`M12-03E`。
|
||||
|
||||
Reference in New Issue
Block a user