# M12-05C Status status: done task: prevent matrix-undeclared combinations from appearing in file selection and operator search updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false ## Scope The schema-1 UI registry is generated from the M12-05B capability matrix and is bound to its exact SHA-256. Only routes whose runtime operator is `AVAILABLE` and whose local matrix route is `READY` are exposed to the UI. The current registry therefore accepts `.blend` projects, exposes the existing bounded local GLB export command, and exposes no blocked import or export route. The file input uses the registry-derived accept string and performs a second filename gate before opening. A matrix-blocked or unknown extension returns `IO_FORMAT_UNSUPPORTED` without invoking the engine or replacing the current scene. Operator search filters every format-tagged command through the same registry, so blocked server routes and undeclared formats cannot appear as executable results. ## Evidence - Direct M12-05C lane passed: `node --test web/tests/unit/io-format-ui-gate.test.mjs`, `node tools/web/check-io-format-ui-gate.mjs`, and Chromium 1/1 on dynamic ports 5413/5417. - `node tools/web/check-io-format-ui-gate.mjs` reproduced the committed registry byte-for-byte; import routes=0, local export routes=1, project accept=`.blend,application/octet-stream`. - `npm --prefix web run typecheck` and `npm --prefix web run build` passed. - `WEB_TEST_PORT=5412 npm --prefix web run test:asset-library` passed 2/2 N-023 Chromium regressions. - An initial command without `WEB_TEST_PORT` was blocked by an already occupied 5173; rerunning on the isolated dynamic port passed and left no server/profile process in the test lane. ## Artifact Hashes - parent manifest: `8cc9517c9f25138c351bc5a79efe3b1ce6d9f6663d3b7c14397c5e4e8f11181a` - protocol: `fc397ceb947d4ede6c34c1d51438253a6b59244fc40f5eb77ce155bf1c477476` - generator: `1ef4ae8a3e8d2f73101a87cba1c42ea99a065e1f6846f6a591841b97c0c39e6f` - checker: `81d6f27df26aab7b633fbe61c6d7b37519668aff41e43314924dceaacb3affde` - unit: `84ca8fb6022da9f167daa104c44489a6c7d9f059699e57ce621b8d7f64f19082` - Chromium: `eda2cdb9ede3bcbd717800c9c6fdb28d8cebef96f0296a2ee847a05e60cd0eed` - registry: `6b410bc6f2cad032af55bf13e1c8ddd841b01e9913ffc0ba381da8b7204285fd` - package commands: `cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c` - manifest: `f46fd394e2144255d8b4304e8ce4fe60aad4302a80e991fd83d50cd915235ee3` ## Next Task `M12-05D`: determine capability from runtime receipts and never infer it from filename extensions. ## Rollback Remove the UI registry protocol, generator/checker, registry, unit/Chromium tests, package command, golden manifest, and this status entry. Restore M12-05B as the queue tail and move the machine queue back to `M12-05C`. No parity ledger rollback is required.