# M12-06G Status status: done task: GLB import/export cancellation, Worker restart, and OPFS quota recovery updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false ## Scope Schema-1 GLB recovery receipts now bind operation, worker generation, source/output SHA-256, revision, temporary bytes, live requests, commit state, and stable cancellation/restart/quota codes. Both import and export cancellation release all temporary bytes and publish no result. A new Worker repeats the same bounded GLB import with an identical semantic result hash. The GLB asset persistence path uses the existing content-addressed OPFS store. A real Chromium origin quota of 64 KiB rejects a 128 KiB candidate, while the previously committed GLB remains readable after Storage Worker restart. Raising the quota allows a small follow-up asset to commit. ## Evidence - `node --test web/tests/unit/glb-recovery.test.mjs` passed 2/2 for cancel, quota, commit, and generation transition invariants. - `CHROME_PATH=/usr/bin/google-chrome-stable WEB_TEST_PORT=5455 node_modules/.bin/playwright test --config playwright.config.ts --workers=1 tests/e2e/glb-recovery.spec.ts` passed 2/2 in Chrome 150. The first real-quota run reached the expected browser failure but the assertion only accepted the injected error wording; the final run accepts both native and injected quota messages. - `node tools/web/check-glb-recovery.mjs` passed with `glb-recovery-ok cancelled=2 workerGeneration=2 quota=GLB_OPFS_QUOTA smallRecovery=true next=M12-07A`. - `npm --prefix web run typecheck`, `node --check tools/web/check-glb-recovery.mjs`, and `git diff --check` passed. The package manifest remains unchanged. ## Artifact Hashes - parent manifest: `27b42da0683dab11a884553440088c30cf58d51364268fdaac86668786aaedd4` - recovery protocol: `da4e2a546d7598e80798cfebd105e52b7522c896acb545710c78bb8a5c3705aa` - storage protocol/client/Worker: `2c8ce9e32fcae973e9262a024fd849221680104bcd427ec308f99ef25112d951` / `00cd35e4632479e4cd153314113e201c822fd209ae6c8e9fbeff5f1399728565` / `80bf4d2ac59cbf7998c2a72c8961ae38abe43685b60df564d0746e1a45e9e1bc` - operation Worker/browser adapter: `947c4a768422725ff2f689b2eefa8068bee51bb7ff342af17e8d4a4d0a4a7ca2` / `2c753a04c153471c2bf7691073b836d968a1a1300e3da038f493983b46738cdf` - unit/Chromium: `6dd48f62a85c5aaf3a04b6e572a47a7986b23cbec84a099ea510af81e8dd3a3a` / `7d95e992f44fb913f70c104f0d6b23bd76f47d48db4a21899e35ae1d188e2093` - checker/report: `b185248fdcd6b3cee84252bd68fcb6921bb6385bfa4a00486e93c58e94755cce` / `1a008a76590573468446ca6e5cbdfe0ea5a8b27493291590d937b90db90d6e42` - package: `cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c` - manifest: `1c732b8d9f1a0bdb502f44e2e843e91efea12e93483a35658f8a9c70a69a2430` ## Next Task `M12-07A`: OBJ single-Mesh positive fixture covering position, normal, UV, and material group. ## Rollback Remove the GLB recovery receipt, quota fault option, Worker/browser adapter, tests, checker, report, manifest, and this status entry. Restore M12-06F as the queue tail and move the machine queue back to M12-06G. No parity ledger rollback is required.