Files
OrbitTv/docs/VERIFICATION-0.99.9.md
pauljdandClaude Opus 5.5 64f7ef9706
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 1m44s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m33s
0.99.9 installation record
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-04 11:43:30 +00:00

5.8 KiB

Orbit TV 0.99.9: confirmed events start on time; faster planning

Paul approved the fix on 4 November 2026 at 10:33, as an isolated correction before the cutover. The change is to scheduling only. This release includes 0.99.8.

What's in it

Appointments. The confirmed events become appointments, using the same mechanism as Ring X's weeknights and PPV Sunday:

Event Appointment
After Dark: B-Movie Throwbacks Friday 21:00
After Dark: The Last Drive-In with Joe Bob Briggs Saturday 21:00 (its window used to open at 20:00, so it would land around 21:00)
After Dark: Cult Classics Sunday 21:00
Horror: Slasher Saturday 20:00
Evidence: Sunday Mystery 20:00
Odyssey: Journeys Saturday and Sunday 14:00
Terra: Sunday on Terra 20:00

How the planners fit them (fitBeforeAppointment and nextAppointment, used by the weighted and film planners; equal turns already had this and is unchanged):

  • In the run-in before an appointment, the planner picks, from what its rules already allow, a programme that ends at the appointment or in its first 20 minutes. Failing that, it picks one that a short run of others can follow so the appointment starts in time.
  • Weighted channels: the run-in is 90 minutes, as before, and they choose in tally order.
  • Film channels: the run-in is 6 hours and up to two more films may follow, because films are long. They choose among rested films, in the same seeded order as any pick. When none is rested, they choose among the longest waiting, as the existing fallback does.
  • Never weakened: whole programmes always, no gaps, every rest, repeat, clash and episode-order rule kept. When nothing fits, the event starts late rather than break a rule.

Faster planning, with no rule changed. Each block's eligible shows are now worked out once per pool and block (PartPools), instead of normalising every title again for every programme planned. On the box this was the remaining cost of 4 to 18 seconds per top-up.

Checks before install

  • 422 unit tests pass, including the hand-run replays. Lint has no errors.
  • New EventAppointmentsTest:
    • The seven events are appointments at the hours above.
    • A film event and a weighted event both start within 20 minutes of their hour over three weeks, with no gaps and every film whole.
  • LastDriveInTest now expects Joe Bob at 21:00, within its grace.
  • Four-week network replay on box copies taken at 10:36. All channels book together, and 0.99.8 and 0.99.9 run on the same data (docs/replays/final-network-audit-0.99.9.md). The first programme of each event starts this many minutes after its hour, median (range):
Event 0.99.8 0.99.9
After Dark B-Movie, Friday 21:00 62 (7 to 78) 16 (1 to 16)
After Dark Joe Bob, Saturday 21:14 (20:12 to 21:35), window from 20:00 21:17 (21:03 to 21:52), appointment 21:00
After Dark Cult, Sunday 21:00 62 (34 to 92) 13 (4 to 102)
Horror Slasher, Saturday 20:00 73 (46 to 122) 6 (3 to 16)
Evidence Sunday Mystery, 20:00 42 (8 to 67) 10 (5 to 17)
Odyssey Journeys, weekends 14:00 35 (15 to 57) 15 (0 to 17)
Terra Sunday, 20:00 33 (6 to 37) 19 (6 to 37)
  • The two remaining late nights on After Dark (Cult 102 and Joe Bob 52 minutes late) are Sundays and Saturdays when only a handful of daytime films are rested. No rested combination ends in time, so the event starts late rather than repeat a film early.
  • Joe Bob: its median start is about the same as before, now aimed at 21:00 instead of the first slot after 20:00.
  • The full audit still passes every hard rule on every channel: no gaps, no clashes, order and decks kept, nothing within 24 hours in weighted blocks, and committed bookings kept.
  • Fingerprints (docs/replays/replay-fingerprints-0.99.9.txt):
    • Every committed fingerprint is identical.
    • Only the five channels with new appointments differ: 107, 201, 202, 304 and 305.
    • The faster lookup changes nothing anywhere else.
  • Presentation replay: committedKeptExactly=true.

Rollback

Install 0.99.8. No saved data changes.

Installation record (4 November 2026, about 11:18 GMT)

Paul approved this release at 11:13 and confirmed at 11:17 that it could go in while YouTube was playing. I took a snapshot of all 96 schedule files and installed over 0.99.8. The box reports 0.99.9-event-appointments. The rollback APK is in outputs/revision-0.99.8.

Wireless debugging switched itself off just after the install, as it has before; Paul turned it back on at 11:32. The box hadn't restarted (uptime 12 h 53 min). I relaunched Orbit for its checks, then returned the TV to its home screen.

  • Plans: every plan kept every remaining entry. No cursor was reset. Dark Files topped up on its own (33 programmes, from about 10 November). Every channel logged clashes=0, and there was no crash or player error.
  • Appointments: the seven event appointments are in the installed configuration (EventAppointmentsTest).
  • Eligibility cache: the cached eligible shows are keyed by the very pool and block objects. A refreshed pool or catalogue change is a new list, and a changed rule set is a new release with new blocks, so either is always worked out afresh. A new unit test confirms this (EventAppointmentsTest.eligibilityIsWorkedOutAfreshWhenThePoolOrTheBlockChanges).
  • Fingerprints: outside the five intended channels, the replay fingerprints are identical (docs/replays/replay-fingerprints-0.99.9.txt).
  • Planning speed: no channel needed a top-up in the checking pass. Passes without one took 66 to 722 ms per channel. Under 0.99.8, a top-up pass took 4 to 18 seconds. Real top-up timings are due from about 12:35, when Orbit Three, Junior, Wild, PixelZ, Paradox and Odyssey reach their six-day mark. A check is scheduled to read them then, if the TV is idle.