3.0 KiB
M12-06D Status
status: done task: Web GLB export generates a machine-readable loss report updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false
Scope
The production GLB exporter now has a schema-1 deterministic loss-report wrapper. It records the
source SceneIR identity/revision, exportability, error/warning counts, sorted loss entries and the
bounded data-block surface. Chromium opens all five M12-06C authoritative Main fixtures and sends
their real snapshot/geometry/packed assets through the production exporter Worker. Exportable
PBR/UV/skin/animation outputs are byte-hashed; the mesh fixture's unsupported Color Attribute
shader is reported as SHADER_GRAPH_UNMAPPABLE and no GLB bytes are emitted.
This task reports the bounded exporter surface only. It does not claim lossless GLB round-trip, desktop re-import, arbitrary shader mapping, or GLB file-picker import; those remain later M12-06E/G tasks or explicit blockers.
Evidence
node --test web/tests/unit/glb-loss-report.test.mjspassed deterministic sorting/count semantics.node tools/web/check-glb-loss-report.mjspassed artifact hashes, parent Main fixture binding, deterministic loss ordering, mesh fail-closed output, and four exportable fixture output hashes. It reportsfixtures=5 blocked=mesh warnings=3.CHROME_PATH=/usr/bin/google-chrome-stable WEB_TEST_PORT=5445 node_modules/.bin/playwright test --config playwright.config.ts --workers=1 tests/e2e/glb-export-loss-report.spec.tspassed 1/1. The test usesWebEngineClientand a production module Worker, requests packed image assets, produces the report, and compares it byte-for-byte with the checked-in golden report.npm --prefix web run typecheckandgit diff --checkpassed.web/package.jsonremains unchanged so previous M12 package bindings stay valid.
Artifact Hashes
- parent manifest:
e3a57636a47591e3b02dff5a07e8a0aec5e0dc43bf6b4829bffc811035dbbb31 - export protocol:
a5d342827860a9e55b49a3bb3a196a01b1e53546325d6e594778afb9360c3125 - loss report protocol:
dce9c790b2f52d46efe0908ecb044d63d21b3c6c3f7d77ddb5e697b29a7a2d6e - Worker:
6f6294d26fe7b717416a5dd25fe834fb4b9a2ecbe8b011395c9559a26701ec77 - Chromium test:
ce334b6bb5d82c133d317e916c03711029fba1c19c634dec06c06da9eddbd776 - checker:
a23346860fa26405b2cd24591b0ab36fea29cb561ec8c2991ecfeabcffc17ee1 - unit:
dfcc2d968e4e0c0cef4496bc304cb481f10d1f0dc4c76a40ea1d6e2f11b6b708 - web loss report:
c6db52234d867985ef5fbcdc7c62298ec9aaa013028b5a54e2b9a16aa4133397 - package:
cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c - manifest:
c01c5861d493e1f177e8cde3038bc5283a7671fa39bf84484662d307623325a2
Next Task
M12-06E: desktop Blender re-imports Web GLB and compares the canonical report.
Rollback
Remove the loss-report protocol/Worker, checker, manifest, golden report, Chromium test, and this status entry. Restore M12-06C as the queue tail and move the machine queue back to M12-06D. No parity ledger rollback is required.