Files
OrbitTv/docs/VERIFICATION-0.90.0.md
pauljdandClaude Opus 5.5 eb1d5f7764
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 1m45s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m24s
0.90.0 post-install check
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-03 14:32:32 +00:00

4.8 KiB

Orbit TV 0.90.0: film matching by identity

A separate change from 0.89.0. No scheduler change: the film planner, rest periods and day parts are untouched.

What changed

  • A list entry can name its year, as "Halloween (1978)". FilmIdentity.kt holds the film meant (title, year, and the IMDb ID where two films share a title and year), kept apart from the copy that plays.
  • The search reads up to 200 results in pages of 50, and narrows by year (one either side) when the list gives one. It used to read only the first 10.
  • Resolution: the IMDb ID settles it; otherwise the year; a year out by one counts only when no other film is near. A title with no year is taken only when the library has one film of that name. Several copies of the same film are fine, and the first this box can play is used.
  • Never a substitute. If the intended film isn't in the library, is ambiguous or can't be played here, the channel goes without it and plans its other films. The reason goes to the log (OrbitSchedule, "film=...").
  • A film channel's old line-up keeps its films, except an earlier copy of a title the list now names, so a remake from the old line-up doesn't linger.

Baseline

239 list entries share their title with another film in the library (read-only copy of the box's catalogue, 3 November 2026). Each now names the intended year; 237 IMDb IDs recorded, 11 of them needed because two films share the title and year (The Descent, The Guard, Pocahontas, The Hunchback of Notre Dame, Hercules, Contact, The Purge, Talk to Me, The Strangers, Ghost, Emma). Before this change, 60 of those entries played a different film on the box; [REC] (2007) wasn't in its pool at all. The table is app/src/test/resources/film-matching-baseline.json, and FilmMatchingTest checks every entry resolves to its intended film and IMDb ID.

Other tests: remakes, unplayable originals (no substitute), titles without a year, two films with the same name and year, other copies of one film, a year out by one, a film missing from the library, and a search that only finds the film on its third page.

Not verified here: whether each corrected film's file plays on this box. That shows on the first run after install, in the log.

Replay

Four weeks of hourly top-ups from the box's real files for all smart channels, with the 60 corrected films swapped into the film pools, against the same run with today's films.

  • Every corrected film airs. No gaps, no fallbacks added, committed plans unchanged, and no film on two channels at once.
  • Horror improves: with one more film in its pool it now keeps its 7-day rest (293 showings inside the rest before, 0 after).
  • Found, not caused by this change: After Dark, VHS, Detour, BritX, Wonder and PixelZ can't keep their 7-day rest, because their lists run out before the week does, so the film that has waited longest returns early (about 290 to 370 showings in four weeks). The same today. Longer lists or a shorter rest would fix it; that's a separate decision.

Unit tests: 344 passed. Lint passed. Not installed.

After install (3 November 2026, about 14:20, box on its home screen; Orbit opened to plan, then closed)

  • Committed plans: all 9,366 kept programmes unchanged across every channel (and against the 0.88.0 and 0.89.0 snapshots). The only gaps are the Drive-In's, which shows screenings only.
  • Every film channel re-read its films. Corrected identities: 232 of the 239 ambiguous entries resolved to the intended year; the other 7 resolved to newer copies of the intended films that the catalogue snapshot predates (runtimes match the originals: Pinocchio 88 min, Dumbo 64, Peter Pan 77, Lady and the Tramp 76, Snow White 83). Ghostbusters is now the 105-minute 1984 film, Halloween the 91-minute 1978 film, Dawn of the Dead the 127-minute 1978 film.
  • No substitutions. Logged instead: 9 films not in the library (Van Wilder, Borat, Green Street, Alan Partridge, Arrietty, Kaguya, Alien 3, Ringu, Pet Sematary Two, Rambo: First Blood), Bloodsport and Crank unplayable here, Happy Feet using its second copy because the first can't play here, and Sing left out as ambiguous: the library has two films called Sing from 2016, so the list needs "Sing (2016)" with its IMDb ID.
  • Lookup cost: about one request per film (91 to 108 per film channel, so the deeper search rarely needed a second page); 8 to 15 seconds per film channel, VHS 53 s and Premiere 64 s. Planning itself under 130 ms per channel.
  • Playback: the corrected films aren't on air yet. The committed week still holds the films booked before the fix (for example Lady and the Tramp 2019 at 15:27 today), and the corrected ones arrive as the week phases in, from about 9 November. Their playability was checked by the box's own decoder check when they were chosen; actual playback can be watched once they air, or sooner if the film channels' plans are rebuilt with Paul's OK.