Files
workinf_Blender_Wasm/docs/status/M11-12.md
mes123456 0fe8d2bb56
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

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.