# M11-09 Status status: done task: runtime codec probes for IMAGE, SOUND, and MOVIE strips updated: 2026-08-17 America/New_York ## Scope Schema 1 codec probe requests and receipts bind the Sequencer strip family, canonical MIME type, source byte length, and source SHA-256. File names and source paths are not accepted by the probe contract, so extensions cannot grant capability. A READY receipt must also use the family-specific backend and carry validated decoded dimensions or audio frame metadata. The production browser probe hashes the supplied bytes and performs a real decode: `createImageBitmap` for IMAGE, a fixed 48 kHz `OfflineAudioContext` for SOUND, and a muted `HTMLMediaElement` load/seek/canvas readback for MOVIE. The committed movie is a deterministic 16x16, two-frame H.264 MP4 generated locally by FFmpeg. This task does not claim frame-accurate WebCodecs seeking, waveform/proxy generation, A/V synchronization, arbitrary codec support, or final encoding. ## Evidence - `WEB_TEST_PORT=5570 npm --prefix web run test:sequencer-codec-probe`: unit 3/3 and Chromium 1/1 passed. PNG, WAV, and H.264 MP4 returned READY with their expected runtime backend and decoded metadata. - Deliberately wrong file extensions had no effect. Corrupt bytes, source identity drift, PNG bytes declared as MOVIE, a forged backend, and a forged receipt all stayed BLOCKED with `SEQUENCER_CODEC_UNSUPPORTED` at the gate. - The first Chromium attempt failed before business execution because `/protocol` is not exposed by Vite; the test now imports the existing app adapter. The second decoded all media but exposed device-rate Web Audio resampling; the production probe now uses a fixed 48 kHz OfflineAudioContext. The complete command was then rerun successfully. - Sequencer Main reader, N-021 browser regression, and the one-million-frame long media performance/restart test passed. Full regression passed: typecheck, lint, Node suite, production build, status consistency, release evidence validation, and `git diff --check`. ## Rollback Remove the codec probe protocol/runtime/tests/movie fixture, restore the MIME-set gate, restore M11 to 8/14, and remove the new N-021 completed slice. Keep the V1 long-media IMAGE/SOUND index/cache behavior and all M11-08 compositor behavior unchanged.