2.3 KiB
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_UNSUPPORTEDat the gate. - The first Chromium attempt failed before business execution because
/protocolis 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.