test(media): prove production client to private receiver wire #1622

Open
lytedev wants to merge 4 commits from propose/private-media-receiver-proof into propose/jellyfin-private-playback
Owner

See the commits.

See the commits.
feat(tv-player): isolate authenticated media streams (WIP)
Some checks failed
/ check-format (push) Has been cancelled
/ build (push) Has been cancelled
e4639b0cec
test(tv-player): use the proven TCG launch configuration
All checks were successful
/ check-format (push) Successful in 21s
/ build (push) Successful in 21m4s
6bada73e87
The generated launcher combined -machine accel=kvm:tcg with -accel
tcg; QEMU rejects these accelerator options as incompatible. Use the
same forceAccel setting and machine option as the desktop capability
fixture instead of overriding the QEMU package or CPU.

Verified on Bigtower under the exclusive synthetic-validation lock:
Nix formatting, Ruff, Python compilation, and the registered NixOS TCG
check. All eight receiver tests pass, including authenticated identical
WAV bytes, credential canaries, owned process controls, replacement and
backpressure cancellation, legacy playlists, and pinned mpv null output.
Physical screen playback and the separate trusted client integration
remain outside this validation.
test(media): compose client and receiver prerequisites with wire proof
Some checks failed
/ check-format (push) Has been cancelled
/ build (push) Has been cancelled
4dc9e696a7
Compose only the published Jellyfin client and private receiver feature
parents as the focused dependency for a ninth NixOS integration case.
The fixture imports the production TypeScript helper using native Node 24,
with credential files rather than argument or environment values.

Validation is in progress on trusted bigtower. The first formatter attempt
in an archive failed because nixfmt-tree chose /nix/store as its root.
Formatting the explicit Nix path with a task-local Git root then passed.
No product code or existing eight test assertions are changed.
test(media): publish fake-player argv atomically after TCG race
All checks were successful
/ check-format (push) Successful in 11m2s
/ build (push) Successful in 33m14s
1bddd1fa3c
The first full TCG run passed the new production Node client case but
failed existing case 3: the fake player created its argv record before
writing JSON, so accepted_play occasionally read an empty file.
Publish the completed fixture record by rename; preserve every assertion
in the existing eight cases. Run the one sequential Node client at nice 15.

Trusted bigtower, exclusive assistant-synthetic-validation.lock:
nix fmt -- packages/checks/tv-player/default.nix: passed.
nice -n 10 nix build --max-jobs 1 --cores 2
  .#checks.x86_64-linux.tv-player-private-stream: passed.
All 9 TCG cases passed (8 existing + 1 production adapter wire case),
12.316s unittest / 56.54s VM test script. Node 24 imports the two production
TypeScript modules without node_modules; success resolves to undefined,
fetches one header-authenticated unkeyed item URL, and delivers exact
nonempty WAV stdin. Wrong TV bearer reports 401 with zero new fetches or
players. Canary checks cover owned child and Node argv, client output,
public fetch path, and service journal.

This proves adapter wire compatibility, not physical playback, audience
authority, tool-factory authorization, or cloud routing.
All checks were successful
/ check-format (push) Successful in 11m2s
/ build (push) Successful in 33m14s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin propose/private-media-receiver-proof:propose/private-media-receiver-proof
git switch propose/private-media-receiver-proof

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch propose/jellyfin-private-playback
git merge --no-ff propose/private-media-receiver-proof
git switch propose/private-media-receiver-proof
git rebase propose/jellyfin-private-playback
git switch propose/jellyfin-private-playback
git merge --ff-only propose/private-media-receiver-proof
git switch propose/private-media-receiver-proof
git rebase propose/jellyfin-private-playback
git switch propose/jellyfin-private-playback
git merge --no-ff propose/private-media-receiver-proof
git switch propose/jellyfin-private-playback
git merge --squash propose/private-media-receiver-proof
git switch propose/jellyfin-private-playback
git merge --ff-only propose/private-media-receiver-proof
git switch propose/jellyfin-private-playback
git merge propose/private-media-receiver-proof
git push origin propose/jellyfin-private-playback
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
lytedev/nix!1622
No description provided.