Files
workinf_Blender_Wasm/docs/status/M11-13.md
mes123456 0fe8d2bb56
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

59 lines
3.2 KiB
Markdown

# M11-13 Status
status: done
task: verify AudioContext suspend, resume, missing-device, and mute recovery
updated: 2026-08-17 America/New_York
## Scope
Schema 1 audio-session reports separate context state
(`UNAVAILABLE/SUSPENDED/RUNNING/CLOSED`) from output state
(`BLOCKED/SILENT/ENABLED`). Every initialize, resume, suspend, mute, device-recovery, and
close operation advances a monotonic revision. Reports bind the mute flag, effective gain,
and a stable issue code, and reject contradictory states such as enabled output from a
suspended or muted context.
The production `SequencerAudioSession` owns one `AudioContext` and master `GainNode`.
Mute schedules gain zero; unmute restores the configured nominal gain. Suspend and resume
must reach the corresponding real context state before output can be enabled. Missing API,
constructor failure, and resume/suspend failure remain silent with structured errors.
Closing first zeros and disconnects the gain node, closes the context, drops all references,
and reports `CLOSED/SILENT`. This task does not claim waveform generation, A/V sync,
multi-strip mixing, output-device selection, or encoded audio export.
## Evidence
- `WEB_TEST_PORT=5586 npm --prefix web run test:sequencer-audio-recovery`: unit 3/3 and
Chromium 1/1 passed on the first complete run.
- The Chromium case creates a real `AudioContext` inside a trusted click handler, then
verifies suspend, mute, resume-while-muted, unmute, second suspend/resume, and close.
Muted output remains `RUNNING/SILENT` at gain 0; unmute restores
`RUNNING/ENABLED` at gain 0.75; close reports `CLOSED/SILENT` at gain 0.
- A scope without `AudioContext` returns
`UNAVAILABLE/BLOCKED/SEQUENCER_AUDIO_DEVICE_UNAVAILABLE`. The deterministic unit path
then makes a constructor available and verifies `recoverDevice()` plus resume. Constructor
and resume failures stay silent; malformed state reports return
`SEQUENCER_AUDIO_CONTEXT_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, M11-12 unit 4/4 plus Chromium 1/1,
one-million-frame long-media 1/1, Sequencer Main reader, full Node 190/190, typecheck,
lint, and production build (75 modules).
## Artifact Hashes
- protocol: `0b1b75c7630b599723914bbced9ee0a107bd8c0ac4382ced1f1c5114dac8fd01`
- production controller: `c09914d2581ee454e042ed6a9ef5b8c0f6f7b0688eadb1deff45163263742109`
- app protocol exports: `e630f647ddd3680a04e07ce7388cf03f54268d4e2d839aa5991cb9ceb6a53bda`
- error contract: `6589f712058a39a2177cb174cc355c01777a549d254c4b9eac2301a344c619f2`
- unit: `1a888d1b19a3d12091e6edd05287a5bcc19912415cf7f2ed73a028d12846a298`
- Chromium spec: `1b94ea07ab5fafb0b06fbd73742c77d6b69d745a546fc60def85857844afc719`
- golden: `584aea46687fd5cec8d89e8fac51314acc9a8d05af2a8d762e8d6a74483e0940`
- package: `8d87390f9b1b7382bf9c0ba189f7a9d95daa3ee15d1d422a8d856fa4eb6d3cca`
## Rollback
Remove the audio-session protocol/controller/tests/golden and package command, remove the
four audio error codes and SequencerTimeline exports, restore M11 to 12/14, and remove the
N-021 audio-recovery completed slice. Keep M11-09 offline audio decoding and M11-12 final
export routing unchanged.