v12.2 leftovers: subtitle route, clients scenario, wizard default, rating-system order #242

Closed
opened 2026-10-09 17:40:30 +02:00 by Claude · 1 comment
Collaborator

Left over from the v12.2 pin move; none is a regression of it.

Subtitle route (crates/ephyra-http/src/routes/streaming/subtitles.rs)

  • normalized maps any unknown format to vtt; upstream answers 400 (Unsupported format) and also supports ttml. The unit test a_format_is_served_as_upstream_serves_it pins nonsense → vtt.
  • The obsolete query overrides upstream still honours (itemId, mediaSourceId, index, format, startPositionTicks) are ignored.
  • The conversion path ignores the media source id.
  • Upstream returns the stored bytes when the stored format equals the requested one (and for ssa→ass); the port always goes through ffmpeg.
  • For a graphical format with nothing to hand over the port answers 400/404 from a reading of upstream; an external .idx/.sub pair probably gets 500 upstream and gets 404 here. Not measured against the reference.

Harness

  • clients.json is held to "max_unanswered": 0 and exits 2: six paths neither server answers, among them person fd5b31575d201f4a026c057406f6676d, which the fixture has never held under that id (Sine Ensemble is 6e1bc4c3…).
  • api-keys, collections and deletion were not replayed at v12.2: a containerised reference cannot measure them and the anchor pair was not run.
  • README of ephyra-harness still gives the database-diff measurement as "648 requests over seventeen scenarios"; not re-measured at v12.2.

Startup

  • ephyra_core::config::Server::default() has startup_wizard_completed: true; upstream's default is false. Since 0eb410c2 a set-up server refuses to start on a missing database, so a hand-written config omitting the key over an empty data directory no longer boots (the error says how to fix it). Decide whether the default should be false.

Rating systems

  • For ambiguous rating strings the score depends on the order systems are consulted; upstream's is the embedding order of Localization/Ratings/*.json, the port's is file-name order. Not established that they agree.
Left over from the v12.2 pin move; none is a regression of it. **Subtitle route** (`crates/ephyra-http/src/routes/streaming/subtitles.rs`) - `normalized` maps any unknown format to `vtt`; upstream answers 400 (`Unsupported format`) and also supports `ttml`. The unit test `a_format_is_served_as_upstream_serves_it` pins `nonsense → vtt`. - The obsolete query overrides upstream still honours (`itemId`, `mediaSourceId`, `index`, `format`, `startPositionTicks`) are ignored. - The conversion path ignores the media source id. - Upstream returns the stored bytes when the stored format equals the requested one (and for ssa→ass); the port always goes through ffmpeg. - For a graphical format with nothing to hand over the port answers 400/404 from a reading of upstream; an external `.idx`/`.sub` pair probably gets 500 upstream and gets 404 here. Not measured against the reference. **Harness** - `clients.json` is held to `"max_unanswered": 0` and exits 2: six paths neither server answers, among them person `fd5b31575d201f4a026c057406f6676d`, which the fixture has never held under that id (`Sine Ensemble` is `6e1bc4c3…`). - `api-keys`, `collections` and `deletion` were not replayed at v12.2: a containerised reference cannot measure them and the anchor pair was not run. - README of `ephyra-harness` still gives the database-diff measurement as "648 requests over seventeen scenarios"; not re-measured at v12.2. **Startup** - `ephyra_core::config::Server::default()` has `startup_wizard_completed: true`; upstream's default is false. Since `0eb410c2` a set-up server refuses to start on a missing database, so a hand-written config omitting the key over an empty data directory no longer boots (the error says how to fix it). Decide whether the default should be false. **Rating systems** - For ambiguous rating strings the score depends on the order systems are consulted; upstream's is the embedding order of `Localization/Ratings/*.json`, the port's is file-name order. Not established that they agree.
Author
Collaborator

Landed (d742b2f7 … c4103f5f), one review round.

Subtitle route: unknown format is a 400; ttml is written; the obsolete query overrides win over the path and an empty one is none; the media source id is honoured; the stored format (and ssa→ass) is handed over untouched, a non-UTF-8 sidecar decoded; text tracks are written from their cues by writers matched to upstream captures, which also gives copyTimestamps and upstream's window rule. Status codes for a missing item/source/track measured against the reference (400/500/500). What still differs is the new subtitle-output issue.

Harness: clients asks only what the fixture answers (the person id corrected to 6e1bc4c3…, four picture requests the default snapshot cannot answer dropped as covered elsewhere, the unheld QuickConnect secret moved to refusals); 80 responses, 0 differences, 0 unanswered, threshold untouched. api-keys (58), collections (18) and deletion (8) replayed on a private pair: 0 differences and a clean database diff, after fixing directory creation ignoring paths.substitutions (collections, playlists, by-name). The README's 648-request database-diff figure was not re-measured.

Startup: the default stays true. The writer always writes the key, generated and packaged configs carry false, and a fresh empty data directory boots into the wizard; flipping the default would throw a hand-written config that omits the key back into the wizard over its database.

Rating systems: the orders agree — upstream's manifest order is sorted file-name order, read from the pinned image's DLL — and a test pins it (9e48e721).

Landed (d742b2f7 … c4103f5f), one review round. **Subtitle route**: unknown format is a 400; `ttml` is written; the obsolete query overrides win over the path and an empty one is none; the media source id is honoured; the stored format (and ssa→ass) is handed over untouched, a non-UTF-8 sidecar decoded; text tracks are written from their cues by writers matched to upstream captures, which also gives `copyTimestamps` and upstream's window rule. Status codes for a missing item/source/track measured against the reference (400/500/500). What still differs is the new subtitle-output issue. **Harness**: `clients` asks only what the fixture answers (the person id corrected to `6e1bc4c3…`, four picture requests the default snapshot cannot answer dropped as covered elsewhere, the unheld QuickConnect secret moved to `refusals`); 80 responses, 0 differences, 0 unanswered, threshold untouched. `api-keys` (58), `collections` (18) and `deletion` (8) replayed on a private pair: 0 differences and a clean database diff, after fixing directory creation ignoring `paths.substitutions` (collections, playlists, by-name). The README's 648-request database-diff figure was not re-measured. **Startup**: the default stays `true`. The writer always writes the key, generated and packaged configs carry `false`, and a fresh empty data directory boots into the wizard; flipping the default would throw a hand-written config that omits the key back into the wizard over its database. **Rating systems**: the orders agree — upstream's manifest order is sorted file-name order, read from the pinned image's DLL — and a test pins it (9e48e721).
Sign in to join this conversation.
No description provided.