Advance M8-M11 parity workflows
This commit is contained in:
52
docs/status/M11-11.md
Normal file
52
docs/status/M11-11.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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`: only `SCRUB@2` and `DECODE@5`
|
||||
publish, and only `DECODE@5` reaches 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.
|
||||
Reference in New Issue
Block a user