Files
OrbitTv/docs/VERIFICATION-0.99.14.md
pauljdandClaude Opus 5.5 0bd9a89bb4
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 1m35s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m35s
0.99.14 install record, Beerus diagnostic findings, Vortex Prime premiere proposal
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-04 14:43:43 +00:00

4.8 KiB

Orbit TV 0.99.14: read-only source diagnostics (Beerus check)

Paul approved building this on 4 November 2026 at 14:27. Installing it needs its own approval. The change is diagnostics only: it extends the existing hand-triggered orbit_inspect_series log, and nothing else. Scheduling, playback, presentation, pools and bookings are unchanged.

What's in it

  • describeSource (SourceDiagnostics.kt) writes one log line per media source of each inspected episode:
    • Source: its id and container.
    • Runtime.
    • Video: codec, profile, resolution and bit depth, and whether the box has a decoder.
    • Audio: every track, with codec, language, channels, the default flag, and a no-decoder flag where the box has no decoder for that type.
    • English sound: yes or no.
    • Subtitles: every track, with format, language and the external, forced and default flags.
    • Verdict: playable, or rejected with each reason. The verdict uses the same tests the scheduler applies when it reads a pool (playableSource):
      • a directly played container;
      • a usable source id;
      • a video decoder on the box;
      • a runtime in range;
      • plus the box's own record of files that failed before.
  • Per series, the inspection now adds:
    • the number of playable episodes;
    • the season 1 episode range;
    • any missing episode numbers;
    • each episode's id and location type (a file, or a placeholder).
  • BoxDecoders.has: reads the box's decoder list, for the audio flags. It's information only; the app doesn't reject on sound.
  • Safe by construction:
    • only short labels made of letters, digits, - and _, sizes, counts and 2- or 3-letter language codes are written;
    • no path, URL, token, track title or file name is logged;
    • anything else becomes "unknown" or "und".
    • As before, the hook runs only when started by hand with the intent extra, once.
  • Version: 0.99.14 (versionCode 144).

Checks before install

  • 440 unit tests pass (2 skipped: hand-run replays that need input files). Lint has no errors.
  • Four new tests in SourceDiagnosticsTest:
    • A playable source is described in full.
    • Each rejection reason is given.
    • The verdict matches what the scheduler accepts, on playable, wrong-container, unknown-runtime and no-decoder sources.
    • Nothing sensitive reaches the line. The test feeds it paths, stream URLs, api_key values, track titles and hostile codec, language and profile values.
  • Booking fingerprints: the four-week replay of all 30 channels on 0.99.14 is identical to 0.99.13 on every channel, committed and four weeks (docs/replays/replay-fingerprints-0.99.14.txt).
  • The Stage A Paradox replay still passes.

Use

With the TV idle, the box gets one launch with --es orbit_inspect_series 'Dragon Ball Super: Beerus', quoting the whole am start command so the title isn't split. Both library copies are reported. Nothing is booked, added to Vortex, changed or transcoded.

Rollback

Install 0.99.13. Nothing is saved by this change.

Installation record (4 November 2026, 14:38 GMT)

Approved by Paul at 14:36. The box was on its home screen with nothing playing.

  • Snapshot and rollback:
    • All 191 schedule-folder files were copied off the box, with SHA-256 sums, to Codex/install-0.99.14-20261104-143641/before.
    • A rollback copy is on the box in no_backup/schedule-rollback-0.99.13.
    • The 0.99.13 APK is in outputs/revision-0.99.13.
    • The cutover snapshots and the 0.99.13 install snapshot are kept.
  • Install: with adb install -r. The box reports versionCode 144, 0.99.14-source-diagnostics.
  • Bookings and cursors: all 31 plans and 30 progress files were compared after launch.
    • 164 files are byte-identical.
    • The rest only dropped programmes that ended more than 24 hours ago, which is the daily trim.
    • Every remaining entry is identical, including presentation keys. Nothing was added, and every plan cursor is the same.
    • 12 aired places moved, each to the latest programme of its show already started.
    • Shuffle decks: this release leaves the code that builds them untouched.
  • Scheduling: all 30 channels topped up with added=0 and clashes=0. Booking fingerprints were already shown identical to 0.99.13 before install.
  • Playback: Orbit resumed with one player start and audio running, with no player, decoder or crash errors. The box was then returned to its home screen.
  • Privacy: the inspection lines contain no path, URL, api_key, token or file name. A search of them for http, api_key, token, /mnt, /media, backslashes and .mkv found nothing. Source ids appear only as Emby's own mediasource_N identifiers.
  • The Beerus inspection output: docs/replays/beerus-inspect-log-0.99.14.txt.
  • Finding: Emby didn't return a location type for these episodes, so it reads "unknown". It's harmless.