fix: pin retained Linux FFmpeg build and monitor asset availability - #526
Merged
kstonekuan merged 2 commits intoSep 13, 2026
Merged
Conversation
kstonekuan
approved these changes
Sep 13, 2026
Contributor
There was a problem hiding this comment.
LGTM, merging.
Checksum verified here independently: c733b4b2...b4d2b for linux64.
The TRANSFORM_BEHAVIOR_VERSION bump is what #525 was missing. compute_pipeline_version does not hash ffmpeg_version, so without it the two encoder builds share one pipeline identity.
Reverting the bump passes every test, and that is correct rather than a gap: it declares that bytes may differ, which no test can observe.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #521.
HFlow's managed Linux FFmpeg pin pointed at a mid-month BtbN daily autobuild:
That asset was pruned under BtbN's retention policy, so a fresh Linux setup could hit HTTP 404 before the first video operation.
This repins HFlow to the retained August month-final build:
Both x86_64 and aarch64 archives were downloaded directly and their SHA256 values were calculated locally before updating the pin.
Retention and availability
The old SHA256 pin guaranteed the identity of the downloaded bytes, but not that the upstream asset would continue to exist.
The comment next to the pin and
CONTRIBUTING.mdnow document that future pins should be selected from the last successful build of a completed month rather than an arbitrary daily autobuild.I kept this as documented policy rather than enforcing the calendar date in a unit test, since BtbN's actual retention property is the last successful build of the month, not necessarily something that can be proven safely from the tag date alone.
Detecting future expiry
Added an opt-in availability test for both pinned Linux architectures:
It:
The check now runs in two places:
.github/workflows/pinned-assets.yml, with manual dispatch supportThis means a disappeared pin can be noticed while the project is otherwise idle, and a release will also refuse to publish with unavailable managed FFmpeg assets.
Managed download validation
The existing real-download test now clears both FFmpeg overrides and uses an isolated cache, so it validates a genuinely fresh managed installation rather than succeeding from an existing cache or system binary.
The new x86_64 pin successfully:
ffmpegandffprobeObserved versions:
The aarch64 archive was also downloaded, hashed and inspected separately. It contains the expected executable
ffmpegandffprobebinaries for AArch64.Pipeline identity
TRANSFORM_BEHAVIOR_VERSIONis bumped from7to8.Changing the managed FFmpeg version changes the provenance of transcoded canonical output, so those outputs should not share the previous pipeline identity.
Behavior unchanged
The existing FFmpeg resolution policy is preserved:
HFLOW_FFMPEGremains the explicit overrideHFLOW_FFPROBEbehavior is unchangedffmpegandffprobeare installed togetherValidation
The normal full suite uses system FFmpeg through conftest, so the separate network runs were used to validate the managed provisioning path directly.