Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1.3 KiB
1.3 KiB
Orbit TV 0.82.0: selection reasons (Phase 1)
Each newly planned programme now keeps a short reason saying which block it came from, whether it was next in turn or a fallback, and which choices were passed over and why. Film channels record how long the film had rested and how many films it was picked from. The hourly OrbitSchedule log line now adds added, deferred and fallbacks for the programmes just planned.
Scheduling is unchanged:
PlanBaselineTestfingerprints nine planning scenarios, taken from 0.81.4 before any change: turns, finish together, day parts, clashes, every choice clashing, shuffle, films, films with clashes, and a top-up. All nine match exactly.- Choosing a film and the day-part pools go through the same code as before, with the reason worked out alongside.
Backward compatibility:
- The reason is an optional
wfield on each programme inschedule-N.json. Plans written before 0.82.0 load with an empty reason, as the test proves on a file with the field removed. - 0.81.4 and earlier read named fields only, so they ignore
w, and rolling back keeps every plan readable. - Programmes already committed keep no reason and stay exactly as planned. Reasons appear from the next top-up onwards.
Unit tests: 313 passed, 0 failed. Lint passed.
On the box: see the install notes below.