2.8 KiB
M11-11 Status
status: done task: revision-gate late seek, scrub, and decode results before publication updated: 2026-08-17 America/New_York
Scope
Schema 1 uses one request identity for SEEK, SCRUB, and DECODE. Every request binds a timeline ID, timeline revision, monotonically increasing request revision, operation, and frame. A completed result must echo that identity and add a bounded source frame and payload SHA-256. Publication is allowed only when both the timeline revision and latest request revision still match the controller state.
The production controller advances one shared request revision across all three operation types. Replacing a timeline invalidates every pending request before a new request begins, and same-timeline revisions must advance monotonically. The publish callback is invoked only after the pure gate returns PUBLISH, so stale results cannot update the visible frame or write a decoded payload into cache. This task does not claim frame-accurate WebCodecs seeking or the M11-14 cancellation/restart resource lifecycle.
Evidence
WEB_TEST_PORT=5576 npm --prefix web run test:sequencer-media-revision: unit 4/4 and Chromium 1/1 passed on the first complete run.- Chromium scheduled SEEK revision 1 behind SCRUB revision 2. SCRUB published first and
the late SEEK returned
STALE/REVISION_CONFLICT. A real H.264 runtime decode started at timeline revision 7, completed after replacement with revision 8, and was rejected before publish/cache. The revision-8 DECODE published; a forged result identity stayed stale. - The machine sequence is frozen in
tests/golden/M11-11/sequencer-media-revision.json: onlySCRUB@2andDECODE@5publish, and onlyDECODE@5reaches the cache-write callback. - Regression passed: M11-10 unit 3/3 plus Chromium 1/1, M11-09 unit 3/3 plus Chromium 1/1, one-million-frame long-media 1/1, full Node 183/183, typecheck, lint, and production build (75 modules).
Artifact Hashes
- protocol:
326f1525f50af3b2c4132ff58508ed6174ba3aa4a5075b2a6660e549c280826a - production controller:
29a44404bb28e46d67439eec0622a69ce4cd7264ce45da77a3f320c8687b7006 - app protocol exports:
be2eca8482a60e437878b99f69d3178f47fee61618886d141760320e3a3ed1e1 - unit:
2099f738120897dfbb8662741831774b5f9150d51924dfa7832907177de5e7 - Chromium spec:
e47f105360ce0e2d4d561d3cf790ceec9f41dd6bac7361965914ada307db843c - golden:
672b4fde6e27f8b15cd51d839cacb5efb128c0d0f4c7f6aa4e184c713f9b45e5 - package:
5d17b17d67ee587191552c3dfe226cd8f2e5a872791224d8e6c22aafa1177ebe
Rollback
Remove the media revision protocol/controller/tests/golden and package command, restore M11 to 10/14, and remove the N-021 revision-gate slice. Keep M11-09 runtime probes, M11-10 proxy-cache identity, and the V1 long-media generation behavior unchanged.