Files
OrbitTv/docs/VERIFICATION-0.99.10.md
pauljdandClaude Opus 5.5 3903d73304
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 2m6s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m26s
0.99.11: seriesKey compiles its expressions once; pool-read failures logged by list position and kind. 0.99.10 installation record
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-04 12:32:36 +00:00

7.0 KiB

Orbit TV 0.99.10: catalogue hybrid on ToonZ, Tots, Odyssey and Orbit Three; every pool read again

Paul approved this release to build and verify, not to install, on 4 November 2026 at 11:45. The change is to scheduling only. It includes 0.99.9.

What's in it

The 24-hour catalogue hybrid (catalogueScaleHours) on four more weighted channels. A show with under a day of playable episodes has its tier's weight scaled by its size, so it comes round at a pace its catalogue can sustain.

Channel Scaling Notes
ToonZ full The British teatime trio keeps its core-level weights in teatime. A block's own weights stand apart from the hybrid.
Tots full Morning and Playtime only. Wind Down and Night stay on equal turns and are untouched.
Odyssey at least half the tier (catalogueScaleFloor 0.5) Its Wonders series keep regular airings.
Orbit Three at least half the tier (catalogueScaleFloor 0.5) Spaced and Phoenix Nights keep regular airings.

Full scaling would have halved Odyssey's Wonders series and Three's Spaced and Phoenix Nights, solving repeats by starving short series. Keeping half the tier avoids that, as the figures below show.

CHANNEL_POOL_VERSION 4 → 5. Every channel reads its pool again once after install, as asked before the cutover. The pool diagnostics from 0.99.7 log the reason for any listed show that doesn't make it in, including Vortex's Tenchi Universe.

  • Time on the box: the refresh runs in the background while Orbit is open, one channel at a time. A whole pass takes a while; Dark Files alone took about 9 minutes in an earlier refresh.
  • Programmes on air aren't affected.

Unchanged: episode choice (each show's own cursor or shuffle deck), dayparts, events, appointments and presentation keys, committed bookings, and every other channel.

Checks before install

  • 424 unit tests pass, including the hand-run replays on box copies taken at 11:35. Lint has no errors.
  • The audit passes every hard rule on every channel.
  • The configuration test checks that exactly 103, 202, 204, 601, 604, 605 and 614 use the hybrid, with the half-tier floor on 103 and 202 only.

Four weeks of new bookings on the real pools, each channel avoiding every other as the box does (docs/replays/hybrid-0.99.10.txt, WeightedRolloutReplayTest.hybridComparison):

Channel 7-day repeats Median repeat interval Core airtime Different episodes Longest wait Episode progression
ToonZ 981 → 0 7.3 → 9.1 d 58% → 70% 1,584 → 1,843 1.8 → 2.2 d in order and on deck, 0 breaks
Tots (Morning and Playtime) 642 → 431 (the rest are bedtime, unchanged) 7.0 → 7.1 d no tiers 1,767 → 1,974 9.9 → 9.8 d (bedtime) 0 breaks
Odyssey 235 → 112 5.2 → 7.4 d 69% → 70% 569 → 629 21 → 21 d (Journeys, weekends only) 0 breaks
Orbit Three 219 → 158 10.0 → 12.0 d 51% → 54% 853 → 878 4.1 → 4.0 d 0 breaks

The shows Paul named, airings in four weeks (before → after):

  • ToonZ's teatime trio: 106 → 124 teatime airings out of about 320. Danger Mouse 55 → 70, Count Duckula 37 → 49. Bananaman's tiny catalogue goes 176 → 102 overall, because it was the main source of repeats.
  • Odyssey: Cosmos 24 → 19, Cosmos (2014) 32 → 37, Wonders of the Universe 25 → 19, Wonders of the Solar System 25 → 18, Wonders of Life 29 → 22. All stay in regular rotation, about every one to two days.
  • Orbit Three: Gavin & Stacey 53 → 43, The Mighty Boosh 53 → 44, Spaced 26 → 22, Phoenix Nights 26 → 22. All stay regular, at least five or six a week. Core rises from 51% to 54%.

In every run:

  • no file aired again within 24 hours in a weighted block
  • nothing went unaired, and nothing aired outside its block
  • there were no gaps and no clashes
  • no show aired twice running where its block had a choice

Fingerprints (docs/replays/replay-fingerprints-0.99.10.txt): every committed fingerprint is identical, and only 103, 202, 605 and 614 differ.

For comparison (same file): full scaling would remove ToonZ's, Odyssey's and Three's weekly repeats entirely. The cost would be Odyssey's Wonders series at 8 to 11 airings and Three's Spaced and Phoenix Nights at 12 to 14, so the half-tier floor is used there instead.

Rollback

Install 0.99.9. Pools then keep whatever this release read.

Installation record (4 November 2026, 12:03 GMT)

Paul approved this release at 12:03. The TV was on its screensaver. I took a snapshot of all 96 schedule files, then installed over 0.99.9. The box reports 0.99.10-hybrid-four.

Orbit ran two scheduling passes (12:04 to 12:20, and 12:21 to 12:27), after which I returned the TV to its home screen. There was no crash and no player or decoder error in the log. The rollback APK is in outputs/revision-0.99.9.

  • Bookings and positions: every plan kept every remaining entry. No episode cursor or shuffle position was reset.
  • New bookings: Orbit Three (51), Junior (69) and Wild (33) topped up on their own, all with clashes=0.
    • Orbit Three's are weighted under the hybrid, and include Gavin & Stacey 2, The Mighty Boosh 2, Spaced 1 and Phoenix Nights 1.
    • Junior stays on equal turns.
    • Tots didn't need a top-up. Its configuration keeps Wind Down and Night on equal turns (WeightedRotationTest).
  • Pool refresh:
    • Read again: 29 of the 30 channels across the two passes.
    • Not yet read: Heroes failed both times at the same list entry, its 6th (X-Men: The Animated Series), after about 18 seconds and without an HTTP status. It keeps its previous pool, so nothing changes on air. 0.99.11 logs the kind of failure to find out why.
    • Retried on the second pass: Vortex, Terra and Riot failed the first time the same way, and refreshed on the second.
    • Time per channel: 9 to 20 seconds for most, up to 75 to 123 seconds for the large ones: Orbit 1, Orbit 2, Evidence, Junior, Sci-Fi, Vortex and Riot.
    • Load on the box: Orbit's memory rose from about 119 MB to about 260 MB (PSS), with CPU at 27% to 97% of one core while reading. Nothing on air was interrupted.
  • Tenchi Universe:
    • The cause is found. Vortex's list entry 27, Tenchi Muyo! Tenchi Universe, is matched in the library, but none of its episodes can play on the box (matched copies=1 playableEpisodes=0). They fail the box's decoder check, so the pool leaves the series out.
    • Fixing it would mean a playable copy in the library. No transcoding has been asked for, so none is done.
  • Planning speed:
    • Top-ups are still slow: Three took 14.4 s (6.2 s of it reading other plans), Junior 8.3 s (2.9 s) and Wild 4.6 s (0.6 s). That's about 80 to 160 ms per programme planned.
    • The likely cause is seriesKey building two regular expressions every time it runs, and it runs for every show on every pick. That isn't proven yet; 0.99.11 compiles them once and will show whether it helps.