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
|
||||
|
||||
**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.md` before allocating — ids moved several times while this was
|
||||
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.
|
||||
5. **DR-246** Move seek strategy and reload orchestration out of
|
||||
`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.
|
||||
7. **DR-248** `WebviewPlayer`; retire the adapter shim.
|
||||
8. **DR-249** Delete `PlayerBackend` and the frontend playback-state flags.
|
||||
|
||||
Reference in New Issue
Block a user