Repository navigation
feat(meta): VMAFX Phase 4b distributed platform umbrella ADR - #21
Merged
Merged
Conversation
lusoris
marked this pull request as ready for review
May 28, 2026 11:37
Files: - docs/adr/0709-vmafx-phase4b-distributed-platform.md (ADR-0709, Proposed) - docs/architecture/phase4b-distributed-platform.md (Mermaid component diagram) - changelog.d/added/vmafx-phase4b-umbrella-adr.md - docs/adr/README.md (index row for ADR-0709) - docs/state.md (T-VMAFX-PHASE4B-ADR-0709 row) - docs/rebase-notes.md (no rebase impact: doc-only) Locks the Phase 4b architecture: controller/node/operator component split, ffmpeg worker integration (latest ffmpeg), rclone zero-copy storage (rclone-mount / rclone-vfs), eBPF research-first path, Go ONNX Runtime AI inference inside vmafx-node, Python sidecar continuous training (v1), C ABI break with ffmpeg-patches update (Phase 4b.8), and native build sunset — Docker images + Helm chart are the only release artifacts going forward. Nine-phase implementation plan (4b.1 through 4b.9) establishes dependency order for per-sweep child ADRs and PRs. No code changes in this PR. Per-sweep implementation PRs follow in their own dispatches. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
force-pushed
the
feat/vmafx-phase4b-distributed-platform-adr-0709
branch
from
May 28, 2026 11:43
19ccd13 to
12efcdf
Compare
Merged
8 of 10 tasks
lusoris
added a commit
that referenced
this pull request
Jun 28, 2026
… NULL-guard QSV chain (#1067) Two verified defects from the adversarial round-4 audit, in the dedicated libvmaf_sycl filter added by ffmpeg-patches/0005. - sycl_state leak (high): uninit_sycl called vmaf_close() but never vmaf_sycl_state_free(). vmaf_close() explicitly does NOT free the SYCL state (ownership is not transferred), so the state + its USM allocations leaked on every filter close. Now freed explicitly after vmaf_close(); the false "vmaf_close handles it" comment is removed. - QSV NULL deref (med): do_vmaf_sycl walked the QSV zero-copy handle chain (AVFrame->data[3] -> mfxFrameSurface1* -> Data.MemId -> mfxHDLPair* -> ->first) with no NULL guards; a software-fallback QSV surface with no VA backing crashed the filter. All three chain links are now NULL-checked, returning AVERROR(EINVAL) with a clear diagnostic. The patch was regenerated surgically (only these two + blocks in the vf_libvmaf.c hunk + the hunk-header recount 335->353; the configure/Makefile/ allfilters hunks are byte-unchanged). Verified by a full 16-patch `git apply --3way` series replay against n8.1.1 (CLAUDE rule #14). Finding #21 (a redundant but idempotent `check_pkg_config libvmaf_sycl` configure probe) is intentionally left: the probe is idempotent and removing the wrong one risks breaking SYCL detection. Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
docs/architecture/phase4b-distributed-platform.mdwith a Mermaid component diagram showing the controller/node/operator layout, CRD summary, storage flow, and GPU pool affinity table.docs/state.md,docs/rebase-notes.md, andchangelog.d/.Locked decisions (ADR-0709)
vmafx-controller(Go) +vmafx-node(Go) +vmafx-operator(Go, controller-runtime) + thin clients (vmafx-mcp, vmafx-tune, CLI)ffmpeg-patches/stack applies in-containeronnxruntime-go) insidevmafx-node; CUDA EP + ROCm EP + OpenVINO EP(ref, dis, score, metadata)triples during encoding for continuous model refinementffmpeg-patches/updated in the same Phase 4b.8 PR.so/.deb/.rpmpackagesImplementation plan (Phase 4b.N)
vmafx-server→vmafx-controller(job queue, node registry, scheduler)vmafx-nodeGo binary (libvmaf cgo, ffmpeg subprocess, Go ONNX Runtime)vmafx-operatorkubebuilder skeleton + CRDs (VmafxJob,VmafxNode,VmafxModelTraining)Test plan
scripts/adr/next-free.sh --claim vmafx-phase4b-distributed-platformdocs/rebase-notes.mdentry confirms no upstream rebase impactDeliverables checklist
## Alternatives considered(six separate tables covering architecture, ffmpeg integration, storage, eBPF scope, AI inference, sidecar training, C ABI break, and native build publishing)grep -c "Phase 4b" docs/adr/0709-vmafx-phase4b-distributed-platform.mdreturns non-zero;ls docs/architecture/phase4b-distributed-platform.mdexistschangelog.d/added/vmafx-phase4b-umbrella-adr.mdfragmentdocs/rebase-notes.md— no rebase impact: doc-only, no C/Go/Rust source changedstate.md
T-VMAFX-PHASE4B-ADR-0709row added todocs/state.md.🤖 Generated with Claude Code