Files
OrbitTv/docs/VERIFICATION-0.108.5.md
pauljdandClaude Opus 5.5 c398e0b4d5
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 1m48s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m37s
0.108.5: Stage D scoring in Kotlin (parity with Python), Emby collections read, Settings > Director's Chair read only; built, not installed
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-05 00:00:12 +00:00

6.0 KiB
Raw Permalink Blame History

0.108.5: Stage D scoring in the app and Settings › Director's Chair (read only), built on the installed 0.108.4, NOT installed

Paul approved this on 4 November 2026 at 23:49: the BritX, Evidence, Orbit 1 and Romance corrections; a read-only Emby collections read; the scoring ported to Kotlin; and Settings › Director's Chair, read only. Building and verification only, not installation. No approval buttons, no automatic placement, and no pool or schedule change. Auto-approval is off.

The scoring corrections, on genuinely unseen samples

  • BritX: British origin must be verified, from the production countries or a British studio. Unverified means it isn't a BritX title.
  • Evidence: police and forensic procedurals only. It needs police, detective or forensic themes; lawyers, law firms, solicitors, courtrooms and divorce count against it; and anything factual is ruled out.
  • Orbit 1: needs family-sitcom themes. Game, reality and talk shows are ruled out.
  • Romance: romance must be the main theme. Westerns, war films and outlaws count against it.

Fresh sample 5: 60 titles never seen before, labelled before scoring (docs/replays/stage-d-regression-sample-5.json); 11 clear homes, 14 either-way, 35 none.

Model Suggestions Precision Recall of clear fits Titles with no home placed anyway
Genre only (trial 1) 22 32% 5 of 11 11 of 35
This release, Strong tier 11 91% 8 of 11 (73%) 1 of 35
This release, Strong plus Possible 15 80% 8 of 11 3 of 35

Regressions, samples 1 to 4 (Strong tier): 92%, 100%, 92% and 89% precision, with at most 1 title with no home placed anyway in any sample.

The trend on unseen samples: 60% (trial 3) → 76% (trial 4) → 91% (this release) precision, and 50% → 61% → 73% recall.

The labels are my editorial judgement and are kept for Paul to check. Evaluate with docs/replays/stage-d-evaluate.py.

The Kotlin port and its parity with Python

  • DirectorScoring.kt holds the same briefs, rules and local TF-IDF similarity as docs/replays/stage-d-trial-5.py.
  • Parity: DirectorParityTest runs the Kotlin scoring on the same saved inputs: the 2,431 evidence lines, the box's pools and the original titles. All 392 candidate titles get the same best and second channel, with scores equal to within 0.01: 0 differences (docs/replays/stage-d-parity.py, on both the main build and the release build).
  • Speed on this computer (JVM): channel profiles built in about 0.5 s, all 392 titles scored in about 0.9 s. On the Xiaomi box it hasn't been measured, because that needs the install. The Chair logs its own tookMs each time it works the report out, so the first open after install gives the real figure.
  • Where they come from: the evidence read (--ez orbit_read_evidence true) now also reads Emby's own collections (BoxSets) and each one's members. It's read only and resumable, 50 collections a request and at most 1,000 a run, into collections-0.jsonl.
  • How they're used: a title in a collection whose other members are on a channel gets a verified link to that channel. The link only strengthens a channel the title already passes. Format, identity, age and British origin stay hard limits, so a documentary in an Evidence collection still can't go on Evidence (tested).
  • When there's no link: a title in no collection is unknown. Nothing is inferred from similar titles.
  • When nothing has been read: with no collections read yet, the Chair says so ("no collections read, so franchises unknown").

Settings › Director's Chair (read only, as approved)

What it shows:

  • Mode: Familiar, Balanced (the default) and Surprise Me. Each mode only changes how many discoveries are shown, 3, 4 or 5, and Surprise Me reaches into the possibles for channels the strong matches missed.
  • Auto-approval: OFF, always shown.
  • This week:
    • newly released titles not already on a channel (by work, whichever copy);
    • new to the library in the last 14 days, from Stage C, kept separate;
    • the strong matches as counts per channel;
    • "Held as proposals. Nothing is booked."
  • Scan status, always visible: titles not read yet, collections not read, or the library list still importing. Each gap is named, not hidden, and missing metadata is said in the evidence ("no description, not held against it").
  • Worth a look: the strongest strong match per channel, up to the mode's count, each with its tag (Just released, Strong match, Something different), its channel and the first line of its own description.
  • Needs your eye: up to three genuine either-or calls, such as "Terra or Odyssey?".
  • Rules in force: Paul's standing calls. The Chair's own decisions come later, with approval.

How it stays light on the box: the report is worked out off the main thread, saved to director-0.json, and read back for six hours unless the evidence or collections change. The screen itself only lays out counts and a few cards.

Checks

  • Tests: 495 unit tests run, 0 failures; lint has no errors. New tests:
    • DirectorChairTest (5): counts, a few picks one per channel, no decisions; titles already on a channel left out; franchise links only from collections and never breaking the limits; BritX verified origin and Evidence not legal drama; the report saved and read back.
    • DirectorParityTest (hand-run, against Python).
    • EvidenceReaderTest (3, from 0.108.4).
  • Schedules untouched: the four-week replay from the box's files is identical on all 30 channels to 0.108.4. Nothing in this release books, places or changes a pool. The network schedule, Drive-In, seasonal events and presentation are unchanged.

APK: outputs/revision-0.108.5, signed, versionCode 165. Not installed.

After install, with Paul's approval:

  1. Run the evidence read once more, to fetch the collections.
  2. Open Settings › Director's Chair, and read its director ... tookMs= log line for the real on-box speed.