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.
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`.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
mainis failingpf-encoderight now, and has been since the RFI anchor work landed — not since #263. This is the one-line-plus-comment fix.Why it is red
distrust_referencesjoined theEncodertrait in93c1ed07(the RFI anchor fix).vulkan_video,amfandqsvimplement it andlib.rsforwards it — butRemotePyroWavedid 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 defaultcargo 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_keyframedoes nothing andinvalidate_ref_framesreturnsfalsewith "No references to invalidate". There is no RFI anchor trust to withdraw, so the correct behaviour genuinely is nothing. The in-processPyroWaveEncoderreaches 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:
Found while merging
maininto #263 — the failure was inherited, not introduced, andpf-encodein that branch was byte-identical tomain.