main is red: the PyroWave worker proxy never wrote distrust_references #268

Merged
enricobuehler merged 1 commits from worktree-pyrowave-distrust-refs into main 2026-08-16 11:56:33 +00:00
Owner

main is failing pf-encode right now, and has been since the RFI anchor work landed — not since #263. This is the one-line-plus-comment fix.

---- pyrowave_remote::tests::the_proxy_writes_every_trait_method ----
panicked at crates/pf-encode/src/enc/linux/pyrowave_remote.rs:1432:9:
Encoder methods NOT written by RemotePyroWave: ["distrust_references"]
 — an unforwarded default silently disables the feature for every worker-backed session.

Why it is red

distrust_references joined the Encoder trait in 93c1ed07 (the RFI anchor fix). vulkan_video, amf and qsv implement it and lib.rs forwards it — but RemotePyroWave did not gain it, and the trait-coverage test that sits beside that impl exists to catch exactly this.

It only shows under --features nvenc,vulkan-encode,pyrowave, which is why a default cargo test -p pf-encode (33 tests) passes and CI's feature-gated step (122 tests) does not.

Why the fix is a no-op, and why it still has to be written

PyroWave is intra-only. Every AU is already a keyframe — which is why request_keyframe does nothing and invalidate_ref_frames returns false with "No references to invalidate". There is no RFI anchor trust to withdraw, so the correct behaviour genuinely is nothing. The in-process PyroWaveEncoder reaches the same answer by inheriting the trait default, and that is fine there.

It is not fine here, which is the point the guard test is making. This type is a proxy: an inherited default means the worker never hears the call. For a method that does something, that is a feature silently dead on every worker-backed session while the in-process path keeps working — a divergence nothing else would surface. So the test requires the method to be written, making "nothing to do" a visible decision rather than an omission. Written, with the reasoning at the site.

Verification

CI's exact command, on a real Linux box:

cargo clippy -p pf-encode --all-targets --features nvenc,vulkan-encode,pyrowave -- -D warnings
  → RC=0
cargo test  -p pf-encode --features nvenc,vulkan-encode,pyrowave
  → the_proxy_writes_every_trait_method ... ok
  → 122 passed; 0 failed; 50 ignored

Found while merging main into #263 — the failure was inherited, not introduced, and pf-encode in that branch was byte-identical to main.

**`main` is failing `pf-encode` right now**, and has been since the RFI anchor work landed — not since #263. This is the one-line-plus-comment fix. ``` ---- pyrowave_remote::tests::the_proxy_writes_every_trait_method ---- panicked at crates/pf-encode/src/enc/linux/pyrowave_remote.rs:1432:9: Encoder methods NOT written by RemotePyroWave: ["distrust_references"] — an unforwarded default silently disables the feature for every worker-backed session. ``` ## Why it is red `distrust_references` joined the `Encoder` trait in `93c1ed07` (the RFI anchor fix). `vulkan_video`, `amf` and `qsv` implement it and `lib.rs` forwards it — but `RemotePyroWave` did not gain it, and the trait-coverage test that sits beside that impl exists to catch exactly this. It only shows under `--features nvenc,vulkan-encode,pyrowave`, which is why a default `cargo test -p pf-encode` (33 tests) passes and CI's feature-gated step (122 tests) does not. ## Why the fix is a no-op, and why it still has to be written PyroWave is **intra-only**. Every AU is already a keyframe — which is why `request_keyframe` does nothing and `invalidate_ref_frames` returns `false` with "No references to invalidate". There is no RFI anchor trust to withdraw, so the correct behaviour genuinely is nothing. The in-process `PyroWaveEncoder` reaches the same answer by inheriting the trait default, and that is fine there. It is **not** fine here, which is the point the guard test is making. This type is a *proxy*: an inherited default means the worker never hears the call. For a method that does something, that is a feature silently dead on every worker-backed session while the in-process path keeps working — a divergence nothing else would surface. So the test requires the method to be written, making "nothing to do" a visible decision rather than an omission. Written, with the reasoning at the site. ## Verification CI's exact command, on a real Linux box: ``` cargo clippy -p pf-encode --all-targets --features nvenc,vulkan-encode,pyrowave -- -D warnings → RC=0 cargo test -p pf-encode --features nvenc,vulkan-encode,pyrowave → the_proxy_writes_every_trait_method ... ok → 122 passed; 0 failed; 50 ignored ``` Found while merging `main` into #263 — the failure was inherited, not introduced, and `pf-encode` in that branch was byte-identical to `main`.
enricobuehler added 1 commit 2026-08-16 11:39:46 +00:00
fix(encode): the PyroWave worker proxy never wrote distrust_references, so its own guard test failed
android / android (pull_request) Successful in 5m48s
ci / docs-site (pull_request) Successful in 1m24s
ci / bun-nix (pull_request) Successful in 24s
ci / rust-arm64 (pull_request) Successful in 11m49s
ci / web (pull_request) Successful in 11m11s
ci / rust (pull_request) Successful in 23m44s
18fdc4cc6b
Pre-existing on main, inherited by merging it. `distrust_references` arrived with the RFI
anchor work in `93c1ed07`; `RemotePyroWave` did not gain it, and the trait-coverage test
beside the impl caught exactly that.

The answer is a no-op, for the same reason `invalidate_ref_frames` returns false and
`request_keyframe` does nothing: PyroWave is intra-only, so every AU is already a
keyframe and there is no RFI anchor trust to withdraw. The in-process encoder reaches
the same answer by inheriting the trait default, and that is fine there.

It is not fine HERE, which is the point the guard test is making. This type is a proxy:
an inherited default means the worker never hears the call, so a method that does
something is silently dead on every worker-backed session while the in-process path
keeps working. The test therefore requires the method to be WRITTEN, so that "nothing to
do" is a visible decision rather than an omission. Written, with the reason.

Verified with CI's exact command — `cargo test -p pf-encode --features
nvenc,vulkan-encode,pyrowave` — 122 passed, and clippy clean under the same features.
enricobuehler merged commit adf895ced1 into main 2026-08-16 11:56:33 +00:00
enricobuehler deleted branch worktree-pyrowave-distrust-refs 2026-08-16 11:56:35 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unom/punktfunk#268