# M12-07J Status status: done task: three-format cancellation, OOM, Worker restart, and small-file recovery updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false ## Scope OBJ, STL, and PLY now share a schema-1 recovery receipt. Each bounded production Worker run binds format, input hash, base/candidate revision, Worker generation, output hash, temporary bytes, live requests, published result count, and commit state. Cancellation clears temporary state and publishes no result; over-budget/OOM input returns `IO_FORMAT_OOM`; a generation-2 rerun and a generation-3 small-file run reproduce the generation-1 output hash. This is recovery evidence for the bounded format workers, not a general file-picker or full Blender IO claim. ## Evidence - `node --test web/tests/unit/io-format-recovery.test.mjs` passed 2/2 for cancellation/OOM cleanup, commit identity, generation recovery, and stale-generation blocking. - `UPDATE_IO_FORMAT_RECOVERY_REPORT=1 CHROME_PATH=/usr/bin/google-chrome-stable WEB_TEST_PORT=5492 node_modules/.bin/playwright test --config playwright.config.ts --workers=1 tests/e2e/io-format-recovery.spec.ts` passed 1/1. The report covers OBJ, STL, and PLY separately: three cancellations, three OOM budget faults, three Worker-generation restarts, and three small recovery commits; all output SHA-256 values are stable. - A second run without report update passed against the same golden, proving deterministic operation IDs and receipt output. `node tools/web/check-io-format-recovery.mjs` passed: `io-format-recovery-ok formats=OBJ,STL,PLY cancelled=3 oom=3 restart=3 smallRecovery=3 deterministic=true next=M13-01A`. - `npm --prefix web run typecheck` and `git diff --check` passed. ## Artifact Hashes - protocol: `7e352539e3300969c7409c34d6056eb6ad31055431ffce84b1b0a459c335480a` - worker/testing adapter: `63b78fbf25132cad28147ef68731f2cd212a26c96b464fdec349a13ebaa1174f` / `cfcebb6ec38936a66983957b0dede716871cfbfbea3cb53cddc16f3e24fb19b0` - unit/e2e: `aaed1f2abe4789b084c8a6a60bcce8595d38220d7e6678a93924cd05c5716b4f` / `5c1750fa408e1297fc43f2e5749be3e9ac08a16b86265d22f0f06053f52b3bd7` - checker: `6ef6bc4a168f8675a4933a06c296f61076b9ea64cec25b295e961a9b610ab1a2` - report: `35d4fe10d8a4fa84d6e05a85f20ca50975d93a86df41e73c7bbc5875edc4fc70` ## Next Task `M13-01A`: begin the next machine-queued milestone task. ## Rollback Remove the IO recovery protocol, worker, adapter, tests, checker, report, manifest, and this status entry. Restore M12-07I as the queue tail and move the machine queue back to M12-07J. No parity ledger rollback is required.