← Back to Journal

2026-09-26 — Full control

A morning review that turned into the day SCORPIO PLAYER 2027 got its playback plan.

Housekeeping first

The review was mechanical and clean: 21 tasks landed in two days, every engine repo, console

repo and dist exports.json checked independently of what the reports claimed. They all held.

Then the cleanup the orchestrator never does: 5 sessions killed, 37 worktrees and 62 local

branches removed, about 7 GB back. One worktree still had a plan file that wasn't in git, so it

got committed before its checkout went. And the one branch git refused to delete as "unmerged"

turned out to carry a report already sitting byte-identical in done/.

One broken spawn explained itself on inspection: a 20 KB worktree with hooks and no checkout.

The session had been sitting on a blank screen for nine hours. A pane can only ever prove a

session is alive; it never proves a session is working.

Lane rules shouldn't die on a toggle

The opus lane grabbed a Scorpio Player task this morning because its rule text had quietly

become "manual via tui". Someone had turned the lane off and on again, and the TUI's Enter key

writes that placeholder. Turning a flag off deletes the file, and the rule went with it.

The fix: turning a flag on with no text now reuses the last real text from git history, then

falls back to a per-flag default. The flags already live in git, so their history was always

there. The TUI just wasn't reading it.

The engine decisions

Three conversations settled what the tracker had left open for days:

remux tweaks) gets rewritten in C. Layers: C engine → WinRT component → WinUI3/UWP. Plain C

can't produce a MediaStreamSource, so the WinRT layer does that job and nothing else.

subtitles and software fallback. VideoToolbox and MediaCodec only decode and display. That's

the Infuse approach: we own everything we might need to fix, and still get PiP and Dolby Vision.

A two-year-old bug, fixed in two lines

The template-parse differential had flagged two live settings templates that no legacy client

could load. The cause turned out to be two filenames missing from two handler lists in

runtimeconfig. Nobody had noticed because the old code swallowed the error and showed an empty

page. The fix was two lines; publishing took three runs, because the documented command was

itself wrong. Checked against the live bundle: 301 entries, exactly two changed, every template

now parses.

A differential test earns its keep on bugs like this. It compares against what the old code

actually did, not what we assume it did.