docs(specs): record what shipped, and where the design bent
DR-242 … DR-247 are in. The spec now says so rather than reading as a proposal for work that already exists. One deviation is recorded rather than quietly absorbed: DR-246 called for the engines to own seek strategy outright, and they cannot — re-negotiating a stream needs the repository, which sits above them. The engine declares the ability and the caller acts on it. `determine_video_seek_strategy` therefore survives, correctly typed over a declared capability instead of over a guess, because the defect was its input rather than its existence.
This commit is contained in:
@@ -1,6 +1,11 @@
|
|||||||
# Spec: MediaPlayer — one controller API, three interchangeable engines
|
# Spec: MediaPlayer — one controller API, three interchangeable engines
|
||||||
|
|
||||||
**Status:** Proposed
|
**Status:** **Partially implemented.** DR-242 … DR-247 have shipped: the
|
||||||
|
contract, `FakePlayer` and the conformance suite, `MpvPlayer`, the standalone
|
||||||
|
runner, `LegacyPlayer`, the controller port, the capability-driven seek
|
||||||
|
strategy, and ExoPlayer conformance on a device. What is left is DR-248 (the
|
||||||
|
webview as an engine) and DR-249 (deleting `PlayerBackend` and the frontend
|
||||||
|
playback-state flags).
|
||||||
**Requirements:** UR-081 (new) → DR-242 … DR-249 (new); IR-034. Re-check
|
**Requirements:** UR-081 (new) → DR-242 … DR-249 (new); IR-034. Re-check
|
||||||
`requirements.md` before allocating — ids moved several times while this was
|
`requirements.md` before allocating — ids moved several times while this was
|
||||||
written.
|
written.
|
||||||
@@ -226,6 +231,15 @@ Strangler, not a rewrite. Each step ships independently and leaves the app worki
|
|||||||
behind an adapter so the other engines keep working.
|
behind an adapter so the other engines keep working.
|
||||||
5. **DR-246** Move seek strategy and reload orchestration out of
|
5. **DR-246** Move seek strategy and reload orchestration out of
|
||||||
`commands/player/mod.rs` into the engines; delete `seek.rs`'s truth table.
|
`commands/player/mod.rs` into the engines; delete `seek.rs`'s truth table.
|
||||||
|
|
||||||
|
**Shipped with a deviation.** The engine cannot own this outright:
|
||||||
|
re-negotiating a stream needs the repository, which sits *above* the engine.
|
||||||
|
So the engine *declares* `seeks_transcoded_in_place` and the caller acts on
|
||||||
|
it. That removes the defect — nobody guesses on another component's behalf,
|
||||||
|
and adding an engine no longer means editing a shared table — without
|
||||||
|
pretending an engine can reach upward. `determine_video_seek_strategy`
|
||||||
|
survives as a correctly-typed decision over declared abilities rather than
|
||||||
|
being deleted; the defect was its *input*, not its existence.
|
||||||
6. **DR-247** `ExoPlayerPlayer`; conformance on device.
|
6. **DR-247** `ExoPlayerPlayer`; conformance on device.
|
||||||
7. **DR-248** `WebviewPlayer`; retire the adapter shim.
|
7. **DR-248** `WebviewPlayer`; retire the adapter shim.
|
||||||
8. **DR-249** Delete `PlayerBackend` and the frontend playback-state flags.
|
8. **DR-249** Delete `PlayerBackend` and the frontend playback-state flags.
|
||||||
|
|||||||
Reference in New Issue
Block a user