59 lines
3.2 KiB
Markdown
59 lines
3.2 KiB
Markdown
# M11-12 Status
|
|
|
|
status: done
|
|
task: keep final video encoding on an explicit server-export capability route
|
|
updated: 2026-08-17 America/New_York
|
|
|
|
## Scope
|
|
|
|
Schema 1 final-export requests bind the Main timeline ID/revision, source `.blend`
|
|
SHA-256, bounded frame range and rational frame rate, output dimensions, and one declared
|
|
container/video/audio codec combination. The canonical encoding settings and the complete
|
|
source identity receive separate SHA-256 hashes, so source revision drift and settings
|
|
drift produce different request identities.
|
|
|
|
The only route is `SERVER_EXPORT`. A missing endpoint fails closed with
|
|
`SEQUENCER_EXPORT_SERVER_UNAVAILABLE`; a configured endpoint returns
|
|
`SERVER_EXPORT_REQUIRED`, not local success. Browser `VideoEncoder` availability is
|
|
recorded for diagnostics only and cannot change the route or the invariant
|
|
`localEncoding=BLOCKED`. This task does not claim a server encoder implementation,
|
|
upload/progress/cancellation, audio mixing, or encoded-output verification.
|
|
|
|
## Evidence
|
|
|
|
- `WEB_TEST_PORT=5579 npm --prefix web run test:sequencer-final-export`: unit 4/4 and
|
|
Chromium 1/1 passed on the first complete run.
|
|
- Chromium opened the real Blender 5.2 `sequencer_scene.blend` through WebEngine Main and
|
|
bound timeline `sequencer:scene:SequencerScene`, revision 1, frames 1..250, 24000/1001
|
|
FPS, and source SHA-256
|
|
`5f5212487bb6b5df62b5ca915c75133f1ca45678614712ea4c7d902d823cd90c`.
|
|
- The fixed settings hash is
|
|
`01e39d1fdd88c75aecad7bc48a2b756bbcd645929963528b42ceb180b51e5566`;
|
|
the source/timeline/settings request hash is
|
|
`20d3a9e333804e014a993a9892a557842293fc44902229dd6eb65661f0691cfc`.
|
|
- No-server, server-without-encoder, server-with-injected-encoder, and actual Chromium
|
|
runtime cases all retained the server route and blocked local encoding. Undeclared
|
|
fields, invalid codec combinations, over-budget ranges, and environment drift returned
|
|
`SEQUENCER_EXPORT_REQUEST_INVALID`.
|
|
- Regression passed: M11-09 unit 3/3 plus Chromium 1/1, M11-10 unit 3/3 plus Chromium
|
|
1/1, M11-11 unit 4/4 plus Chromium 1/1, one-million-frame long-media 1/1, Sequencer Main
|
|
reader, full Node 187/187, typecheck, lint, and production build (75 modules).
|
|
|
|
## Artifact Hashes
|
|
|
|
- protocol: `559516163ce9a9c60917033455c71a1ae6be2f34666371f12723a056ddfdb3dd`
|
|
- browser adapter: `f9f193eb71afa48a23b4eb618cd98b5c0064c59943b3652fb6a601b545ac175c`
|
|
- app protocol exports: `d30783528fabaaefe8835998e11d75da357d265ee06db67713e57e4b85b58d7d`
|
|
- error contract: `747894b216db59c753b24ce85eb946925e64340f63684311e5d9628c9a6a9c8e`
|
|
- unit: `6f5030852e89160fd898b2aff4dc9911963342bd6c2301a2c0e8a3d518ddbcbd`
|
|
- Chromium spec: `d8cba79c9a330c1e5c777c8f0ed08362b29f50702c31d8229fd65f4304bce363`
|
|
- golden: `c0061f82ef156e53ad4dfc6aedf7c6a8f53e616d8d9fa1435fd9491ba3d07e01`
|
|
- package: `83ee5bfa50a0e5b742048d4563ae815171232a121cf3df4a1e813f21313a6509`
|
|
|
|
## Rollback
|
|
|
|
Remove the final-export protocol/browser adapter/tests/golden and package command, remove
|
|
the two export error codes and SequencerTimeline exports, restore M11 to 11/14, and remove
|
|
the N-021 final-export completed slice. Keep M11-09/10/11 decode, proxy, and revision
|
|
gates and the existing `sequencerRuntimeCapabilities().localEncoding=BLOCKED` contract.
|