# M12-05D Status status: done task: determine format capability from pinned Blender runtime receipts, never filename extensions updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false ## Scope The schema-1 runtime receipt set is generated from the pinned Blender 5.2 M12-05A inventory and bound to that inventory's SHA-256. Each format/operation receipt preserves the operator path, RNA identifier, registered state, build option state, variants, and descriptive extensions. A route is `READY` only when the receipt says `AVAILABLE`, the operator is registered, an RNA identifier exists, and the build option is not disabled. The route resolver takes an explicit format and operation from the receipt and never parses a file name or extension to grant capability. App filters format-tagged operator search entries and checks the GLB export route against this receipt set immediately before execution. The pinned runtime marks GLB export `READY`; USD/Alembic receipts are `OPERATOR_UNREGISTERED` and remain blocked. ## Evidence - `node --test web/tests/unit/io-format-runtime-receipt.test.mjs` passed 3/3, covering receipt-bound GLB/USD routes, extension mutation without capability change, identity drift, and explicit status. - `node tools/web/check-io-format-runtime-receipts.mjs` passed; a fresh generator process reproduced 14 receipts byte-for-byte from M12-05A inventory and verified operator/runtime identity fields. - `npm --prefix web run typecheck` and `npm --prefix web run build` passed; M12-05C Chromium UI regression passed 1/1 on port 5417 and N-023 asset/security regression passed 2/2 on port 5418. - The existing frozen package hash `cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c` is preserved; dedicated commands remain direct to avoid invalidating prior release evidence. ## Artifact Hashes - parent manifest: `f46fd394e2144255d8b4304e8ce4fe60aad4302a80e991fd83d50cd915235ee3` - protocol: `461a84557fa368c29dbc6707959b689faae7c8f7050dccc4d3f12e358b61bb22` - generator: `796cd641e86d8242c13317f771ae237cbf1692ff675a53bbdb689615edb5f372` - checker: `aaf9862041f155f96f50ea8481ff765089255bc59ecd8944f12362b81b8c1f1a` - unit: `a5f09277f5dcdacd25c44191f7407d6cee944f8022b1c467c2a69e172fc2ac6b` - runtime receipts: `f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b` - App receipts: `f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b` - App: `74216aac70992f8d879e983237ca324b998008582f0cd4658e90994cf9fae0a8` - package commands: `cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c` - manifest: `3d0049a7b0331f01bb71df043270c18d1a5c9ce6dc74353c49c8ce591761df1b` ## Next Task `M12-05E`: bind each runtime receipt to source, settings, and runtime hashes. ## Rollback Remove the runtime receipt protocol, generator/checker, receipt set, App gate, unit test, golden manifest, and this status entry. Restore M12-05C as the queue tail and move the machine queue back to `M12-05D`. No parity ledger rollback is required.