Problem
Poll, spine, full-state, and one-shot work contend for one sync slot. Fire-and-forget callers depend on retry conventions, so a new command can be lost if it does not re-arm. Snapshot projection and structural updates still run through one UI-thread apply graph.
Not #509. #509 is the 197 ms participant-rebuild stutter. Same apply graph, different failure: lost commands versus jank.
Evidence
Static review at 6f4f025 (2026-09-24).
- MediaCoreSupervisor.cs ~670-672
- MediaCoreBridgeService.cs
- StudioViewModel.cs snapshot/sync paths
Done when
- Production sync has one scheduler with a stated contention policy (queue, coalesce, or reject-visible).
- A one-shot command that loses the slot is retried by the scheduler or failed to the caller. Silent drop is not allowed.
- A test constructs two overlapping syncs and proves the second command is not discarded.
Related, not duplicate
Problem
Poll, spine, full-state, and one-shot work contend for one sync slot. Fire-and-forget callers depend on retry conventions, so a new command can be lost if it does not re-arm. Snapshot projection and structural updates still run through one UI-thread apply graph.
Not #509. #509 is the 197 ms participant-rebuild stutter. Same apply graph, different failure: lost commands versus jank.
Evidence
Static review at 6f4f025 (2026-09-24).
Done when
Related, not duplicate