Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
8.4 KiB
8.4 KiB
Orbit TV 0.98.0: weighted rotation on Odyssey, Wild, Orbit X, ToonZ and Tots (Morning and Playtime)
Paul approved the rollout on 4 November 2026 at 00:21, with these decisions per channel. The change is to scheduling only: playback, presentation, assets and the homepage are unchanged. Orbit Three stays as 0.97.0 made it.
What's in it
- Odyssey (202), Wild (203) and Orbit X (603) use weighted rotation with their briefs' tiers. These are now in the app as
OdysseyTiers,WildTiersandOrbitXTiersin ChannelIdentities.kt.- Odyssey: the brief's core is 3 and everything else is 2, so the Journeys titles are equal within their weekend block.
- Wild: the survival shows, The Crocodile Hunter and River Monsters are 3, supporting is 2, and Dirty Jobs is 1.
- Orbit X: the core and its earlier names are 3, and everything else is 2.
- ToonZ (605) has its core at 3 and everything else at 2. Danger Mouse, Count Duckula and Bananaman are weighted 3 within the British teatime block (16:00 to 18:00) only, through a new per-block override (
DayPart.weights). Every other daypart is as approved. - Tots (614) has weighted rotation for Morning (06:00 to 09:00) and Playtime (09:00 to 17:00) only, with every show equal. Wind Down (17:00 to 21:00) and Night (21:00 to 06:00) stay on today's equal turns through a new per-block switch (
DayPart.weighted = false).- Bedtime keeps its shows, shuffle, finish-together and soothing identity.
- Wind Down Now is unchanged.
- New
extendByBlock(ChannelSchedule.kt) plans each stretch of weighted blocks with the 0.97.0 rule and each stretch of the others with the existing rule, carrying the cursor across.- On a channel where every block is weighted, such as Orbit Three, it makes exactly one call to the 0.97.0 rule. The fingerprint below confirms Three is unchanged.
- Unchanged: shuffled and in-order episode choice, cursors and decks, cross-channel clash avoidance (checked first, as before), every block, event and timing, every committed booking, and the other 24 channels.
Checks before install
- 397 unit tests pass, including the hand-run replays on copies of the box's files. Lint has no errors.
- Three new unit tests in WeightedRotationTest:
- A block left on equal turns books exactly what equal turns book today, and a top-up in the middle changes nothing.
- A block's own weights apply only in that block.
- A show airing on another channel is skipped.
- One configuration test: exactly 103, 202, 203, 603, 605 and 614 are weighted. Only Tots' Wind Down and Night are off, only ToonZ's teatime has its own weights, and no other channel has either.
- Four-week replay on each channel's real pool (docs/replays/weighted-rollout-replay-0.98.0.txt, WeightedRolloutReplayTest).
- Today's rule and 0.98.0 both top up every six hours from the box's committed plan.
- Both avoid every other channel's programmes, as the box does.
- It was run again with a save and reload every 18 hours.
| Core airtime | Variety, main block (effective shows) | Same file within 7 days; median gap | Never aired / longest wait | Same show twice running | |
|---|---|---|---|---|---|
| Wild today → 0.98.0 | 50% → 50% | evening 3.8 → 9.9 of 10 | 0 → 60; 25.3 → 6.7 d | none / 26.8 d → none / 2.2 d (Dirty Jobs 13.8 d, Saturdays only) | 9 → 0 |
| Orbit X | 80% → 64% (Saturday morning and after school 75% → 88%) | evening 8.7 → 20.2 of 21 | 239 → 108; 4.9 → 10.2 d | Bucky O'Hare, Visionaries / 28 d → none / 2.0 d | 29 → 0 |
| Odyssey | 66% → 69% | evening 4.9 → 15.5 of 16 | 153 → 248; 5.6 → 5.1 d | 7 shows / 28 d → none / 13.9 d (The Civil War, weekends only) | 12 → 0 |
| ToonZ | 72% → 58%; teatime trio about 30% of teatime | daytime 7.2 → 13.5 of 14 | 898 → 953; 2.4 → 7.3 d | none / 16.3 d → none / 1.6 d | 40 → 0 |
| Tots, Morning and Playtime | (no tiers) | morning 4.6 → 9 of 9; playtime 22.9 → 32 of 32 | 439 → 621 for the whole channel; 7.1 → 7.0 d | Andy's Dinosaur Adventures / 28 d → none | 4 → 0 |
| Tots, Wind Down and Night | unchanged | Night Garden 76% → 76%, 75% → 74%; every share within a point | on today's rule | unchanged | today's rule |
- In every 0.98.0 run:
- No file airs again within 24 hours in a weighted block.
- No in-order show steps back, and no shuffled show leaves its deck.
- There are no gaps, overlaps or programmes outside their block, and nothing in a block is never aired.
- Committed programmes come through exactly.
- The save-and-reload run is identical.
- Clash avoidance: 0.98.0 has no programme on at the same time as the same show on another channel, on all five channels. Today's rule had one, on Tots.
- Tots' bedtime blocks carry only today's reasons, with no weighted bookings. Their shares match today's within a point. Their programmes start at slightly different times, because the day before them now ends at different moments, so the order shifts at block edges. The unit test shows that with the same timing the bookings are identical.
- Every other channel: the four-week replay of all 30 channels was run on 0.97.0 and on 0.98.0 (docs/replays/replay-fingerprints-0.98.0.txt), each topping up as its app does.
- Every committed fingerprint is identical.
- Only 202, 203, 603, 605 and 614 differ, as intended.
- Orbit Three (103) and the other 24 channels are identical.
- The Three replay (0.97.0's figures) and the presentation replay (83 transitions, committedKeptExactly=true) are unchanged.
Known limits
- On air from about 10 November. Each channel's committed plan runs to about 10 November, so 0.98.0 starts booking from there and the change shows on air as the plans roll forward.
- The cost is more repeats of small shows. Short catalogues now get their fair share, so some of their episodes come round within a week (Wild 0 → 60, Odyssey 153 → 248, Tots 439 → 621). None comes round within 24 hours in a weighted block. Orbit X's repeats fall.
- Not covered by the replays:
- The replays use copies of the box's files from 3 November.
- Clash avoidance in the replays is against other channels' replayed plans, which is close to, but not exactly, the order the box tops up in.
- Tested here as scheduling logic only. What airs needs checking on the box.
- Tots bedtime is unchanged, as asked. The future read-only proposal will look at separating Wind Down from overnight and at more bedtime titles from the library.
Rollback
Install 0.97.0. It reads the same cursor fields, and the new DayPart fields exist only in code, so saved plans load unchanged.
Installation record (4 November 2026, 00:37 GMT)
Approved by Paul at 00:36. Installed over 0.97.0 with adb install -r. The box reports 0.98.0-weighted-rollout, and Orbit relaunched with no crash in the log. Rollback: 0.97.0's APK is in outputs/revision-0.97.0.
- Snapshots: all 31 plan files and 30 progress files were taken before install and again after relaunch.
- Committed bookings: 14 plans dropped one to three programmes that ended 24 hours ago, which is the ordinary daily trim. Every other entry and every plan cursor is identical, nothing was added, and the other 17 plan files are byte-identical.
- Episode cursors: in 15 progress files, the aired cursor moved on for 21 shows. Each new place is exactly the latest programme of that show already started in its plan, which is the normal record of what has gone out. No place moved anywhere else, and no cursor was reset.
- Scheduling changes: no plan has been topped up yet. The five channels' committed plans run to about 10 November, so their first weighted bookings come at the first top-up when a plan drops under six days ahead, from about 11:30 on 4 November. Orbit Three's plan is identical. The configuration is the one tested (WeightedRotationTest): exactly 103, 202, 203, 603, 605 and 614 weighted, Tots' Wind Down and Night off, and ToonZ's teatime trio at 3.
- Playback: Orbit Three resumed (E-AC3 2ch), with no player, decoder or audio-clock errors in the log. No DTS programme was playing at install, so DTS isn't checked here.
On-air verification (pending)
- After about 11:30 on 4 November: first weighted top-ups on the five channels. Expect "weighted" reasons in 202, 203, 603 and 605 bookings, and in Tots' Morning and Playtime only, with Tots' Wind Down and Night still "next in turn".
- From about 10 November: the new rotation on air.
- Paul's eyes and ears: playback, DTS, audio sync and idents.