ADRs tagged build¶
Auto-generated by scripts/docs/generate-adr-by-tag.sh. Edit ADR Tags: lines to update.
202 ADR(s) carry this tag.
| ID | Title |
|---|---|
| ADR-0005 | Adopt full framework adaptation scope a-g |
| ADR-0013 | Support full local dev distro matrix |
| ADR-0014 | VSCode uses clangd, disable MS C/C++ IntelliSense |
| ADR-0022 | Inference runtime is ONNX Runtime via execution providers |
| ADR-0027 | Non-conservative image pins with experimental toolchain flags |
| ADR-0034 | Delete patches/ leftover, keep only ffmpeg-patches/ |
| ADR-0104 | Compile picture_pool unconditionally and size it for the live-picture set |
| ADR-0110 | Coverage gate -fprofile-update=atomic for parallel meson tests |
| ADR-0111 | Coverage gate lcov → gcovr with ORT in the coverage job |
| ADR-0115 | CI workflows trigger on master only; consolidate windows.yml into libvmaf.yml |
| ADR-0118 | FFmpeg patches ship as ordered series.txt, not a single carry |
| ADR-0120 | DNN-enabled matrix legs across compilers + macOS |
| ADR-0121 | Windows GPU build-only matrix legs (MSVC + CUDA, MSVC + oneAPI SYCL) |
| ADR-0122 | CUDA gencode coverage + actionable init-failure logging |
| ADR-0127 | Vulkan compute backend — vendor-neutral GPU path alongside CUDA/SYCL/HIP |
| ADR-0128 | Embedded MCP server in libvmaf — SSE + UDS + stdio transports, build-flag-gated |
| ADR-0134 | Port Netflix#1451 — meson declare_dependency + override_dependency for libvmaf |
| ADR-0140 | SIMD DX framework — header macros + scaffolding skill |
| ADR-0150 | Port Netflix #1472 — CUDA feature extraction on Windows (MSYS2/MinGW) |
| ADR-0151 | i686 build-only CI job — reproduce Netflix #1481 |
| ADR-0185 | Hide volk / Vulkan-loader symbols from libvmaf's public ABI |
| ADR-0198 | Rename volk's vk* symbols to vmaf_priv_vk* for static-archive builds |
| ADR-0200 | Move volk -include flag off of volk_dep.compile_args (libvmaf.pc leak fix) |
| ADR-0270 | libFuzzer scaffold for parser surfaces (OSSF Scorecard remediation) |
| ADR-0311 | libFuzzer harness expansion — fuzz_yuv_input + fuzz_cli_parse |
| ADR-0317 | Path-filter Docker + FFmpeg-integration on doc/Python-only PRs |
| ADR-0331 | Skip CI on draft pull requests |
| ADR-0332 | Agent worktree-drift hard guard |
| ADR-0341 | paths-ignore filter on heavy CI workflows for doc-only PRs |
| ADR-0372 | HIP Batch-1 — integer_psnr_hip and float_ansnr_hip Real Kernels |
| ADR-0373 | HIP Batch-2 — float_motion_hip Real Kernel |
| ADR-0374 | Build-time-optional public APIs return -ENOSYS when disabled |
| ADR-0375 | HIP batch-3 — float_moment_hip and float_ssim_hip real kernels |
| ADR-0376 | Fix silent error-swallow in Vulkan buffer-invalidate readback functions |
| ADR-0377 | HIP batch-4 — ciede_hip and integer_motion_v2_hip real kernels |
| ADR-0379 | libvmaf Symbol Visibility — Hide Internal Symbols with -fvisibility=hidden |
| ADR-0381 | Fix Vulkan VIF Scale 2/3 Numerical Saturation (PR #718) |
| ADR-0384 | Switch shfmt pre-commit hook from binary download to Go-source build |
| ADR-0401 | libvmaf WebAssembly target — phased EXPERIMENT then GO |
| ADR-0407 | AdaptiveCpp as a second SYCL toolchain |
| ADR-0419 | Gate SVE2 build probe to non-Darwin hosts |
| ADR-0437 | Metal public-header install and vmaf_metal_import_state declaration |
| ADR-0468 | HIP float_adm real kernel (ninth HIP consumer) |
| ADR-0470 | Disk-Persistent VkPipelineCache for Vulkan Feature Extractors |
| ADR-0482 | Expand vmaf_pre FFmpeg filter device strings to match full VmafDnnDevice enum |
| ADR-0485 | Extract VMAF_LIFECYCLE_ZERO macro to eliminate struct-init duplication across HIP and Metal kernel templates |
| ADR-0504 | AVX-512F port of float separable convolution scanlines |
| ADR-0515 | Portable temp-path setup for test_public_api_score on MinGW64 |
| ADR-0521 | MSVC portability gating — vif_avx512.c noinline/noclone + yuv_input.c S_ISREG/fstat |
| ADR-0529 | Replace /dev/dri/by-path bind with whole /dev/dri bind in dev container |
| ADR-0541 | Pin dev-MCP container Intel NEO + ROCm runtimes to versions matching the host kernel |
| ADR-0545 | Wire or delete dead Vulkan/Metal feature-extractor source files |
| ADR-0546 | Audit bundle — Vulkan motion dispatch wiring, saliency hard-fail, model-card placeholder |
| ADR-0549 | Audit cleanup bundle 2 |
| ADR-0561 | 0561-hip-gfx-targets-fallback-widening.md |
| ADR-0568 | Default sycl_icpx_aot_targets to full Intel arch list |
| ADR-0569 | SDK / Tool Version Bumps — 2026-05-18 |
| ADR-0573 | Dev-mcp container — ubuntu:26.04 + CUDA 13.2 + hipcc + ocloc |
| ADR-0575 | Fix yuv_input.c stat compat — include-order and _MSC_VER guard |
| ADR-0576 | ffmpeg-patches n8.1.1 full-feature-exposure sync |
| ADR-0578 | Hoist VIF scratch buffer from per-frame allocation to VifState |
| ADR-0586 | Introduce integer_adm_vulkan.c as canonical Vulkan integer ADM extractor |
| ADR-0587 | Real Metal Compute Kernels for CAMBI |
| ADR-0592 | Remove float_vif_score weak HSACO stub now that real HIP kernel ships |
| ADR-0593 | HIP integer_moment kernel — register real HSACO blob alongside psnr / psnr_hvs |
| ADR-0594 | Per-kernel hip_cu_extra_flags dispatch — disable FMA contraction for ssimulacra2_blur HIP HSACO |
| ADR-0596 | Delete orphan and duplicate HIP/CUDA translation units |
| ADR-0600 | Port upstream USE_DIRECT_READ zero-copy input path (Netflix/vmaf@30a6e2a8d) |
| ADR-0603 | Ubuntu 26.04 (Resolute Raccoon) fallout fixes — CUDA 13.2, Python 3.14, apt renames |
| ADR-0604 | Add Renovate customManager for ROCm apt-repo tracking |
| ADR-0605 | Renovate customManagers for all dev/Containerfile pinned dependencies |
| ADR-0608 | Commit .zed/ project configuration for Zed editor parity with .vscode/ |
| ADR-0623 | Scaffold audit P2 — half-finished implementation fixes |
| ADR-0664 | Install Windows CUDA directly in CI |
| ADR-0686 | VMAFX Rebrand and Aggressive Modernization — Umbrella ADR |
| ADR-0689 | VMAFX CI Matrix Deduplication |
| ADR-0690 | VMAFX Binary and AI Tool Aliases |
| ADR-0691 | VMAFX Phase 1C — Drop Legacy Build Paths |
| ADR-0692 | Bump C standard to C23 (VMAFX rebrand Phase 1D) |
| ADR-0700 | VMAFX Repo Layout |
| ADR-0704 | vmafx-mcp Go port (JSON-RPC, stdio transport) |
| ADR-0706 | Rust vmafx-sys FFI bindings crate |
| ADR-0707 | TAD — Temporal Absolute Difference Feature Extractor Implemented in Rust (cbindgen Pilot) |
| ADR-0708 | C++23 Internals Pilot — metadata_handler.c conversion |
| ADR-0710 | VMAFX CI Slim-Down v2 — One Build per OS + State-of-the-Art Sanitizers |
| ADR-0712 | IDE config audit and refresh for multi-language post-rebrand VMAFX |
| ADR-0720 | C++23 Wave-1 Pilot — mem.c conversion |
| ADR-0721 | C++23 Pilot Wave 1 — opt.c conversion |
| ADR-0723 | C++23 Pilot — fex_ctx_vector.c Conversion (Wave 2) |
| ADR-0725 | C++23 Pilot — log.c conversion (real C++23, supersedes ADR-0722) |
| ADR-0726 | Drop Vulkan backend |
| ADR-0727 | C++23 Wave 2 — project-wide cpp_std=c++23 bump and dict.c → dict.cpp |
| ADR-0728 | Sunset Legacy Native Build Modes — Phase 4b.9 Follow-On |
| ADR-0729 | C++23 Wave 3 — feature_name, picture_copy, model |
| ADR-0731 | C++23 Wave 3 Part B — psnr_tools, luminance_tools, mkdirp |
| ADR-0733 | C++23 Wave 4 — output writers (XML, JSON, CSV, subtitle) |
| ADR-0735 | C++23 Wave 5 — cpu, ref, thread_locale |
| ADR-0738 | Bump local CUDA toolkit pin to 13.3 + R610 minimum driver (partial — CI deferred) |
| ADR-0753 | Runtime Resolution-Aware CUDA Kernel Variant Dispatch |
| ADR-0755 | C++23 Wave 7 — drop orphan cpu.c, activate cpu.cpp |
| ADR-0761 | C++23 Wave 8 — opt.cpp activation + read_json_model.cpp |
| ADR-0768 | C++23 Wave 9 — picture_pool + gpu_picture_pool |
| ADR-0772 | Rename feature_extractor.c to feature_extractor.cpp |
| ADR-0790 | Containerfile layer optimization — merge apt layer, strip build artifacts, no-cache-dir pip |
| ADR-0802 | CI Runner Image Standardization — Pin ubuntu-latest to ubuntu-24.04 |
| ADR-0809 | C++23 Wave 8 — CLI conversion (cli_parse.c → .cpp, vmaf.c → .cpp) |
| ADR-0812 | Renovate — Go/Cargo grouping, schedule, and concurrent-PR cap |
| ADR-0819 | PR-time CI gate for dev/Containerfile |
| ADR-0844 | float_adm AVX2/AVX-512 F2+F3 — double-precision and FP-contraction |
| ADR-0852 | Wire speed_chroma_hip and speed_temporal_hip into HIP Build and Dispatch |
| ADR-0858 | C++23 conversion of gpu_dispatch_env.c |
| ADR-0873 | ARM64 NEON bit-exactness audit — -ffp-contract=off carve-out scope |
| ADR-0891 | SIMD bit-exactness round-2 — unify SSIMULACRA 2 colour-matrix on FMA, extend -fp-model=precise to libvmaf_feature_static_lib |
| ADR-0904 | Pin cargo-machete ignore entries for bindgen / cbindgen build dependencies |
| ADR-0914 | Unified Python test orchestrator (nox at repo root) |
| ADR-0918 | LLVM IR diff harness for bit-exact SIMD paths |
| ADR-0923 | Adopt BuildKit cache mounts and ccache across the container build matrix |
| ADR-0924 | Native bash pre-commit hook as opt-in alternative to the pre-commit framework |
| ADR-0936 | Final os.path → pathlib.Path sweep + ruff PTH guard |
| ADR-0968 | CI scripts — rebrand-proof assertion-density grep + tempfile EXIT trap in changelog concat (Round 26 audit D.1 + D.2) |
| ADR-0994 | Fix Coverage Gate build break — integer_motion.c compile error |
| ADR-0999 | Guard <stdatomic.h> includes in C++ translation units (GCC 14 + Clang-18 fix) |
| ADR-1000 | Tech-stack badges in README and Go/Rust version pin consistency |
| ADR-1002 | Bump Rust workspace to edition 2024 and bindgen to 0.72 |
| ADR-1003 | Bump project-wide C++ standard from c++11 to c++23 |
| ADR-1011 | Add static to TU-internal CUDA helper functions — VIF, ADM, motion |
| ADR-1040 | Promote integer_ssim_moments_t to shared header (macOS / Windows arm64 build fix) |
| ADR-1041 | Fix CI RED — Go metal option type + Rust AVX-512 test guard |
| ADR-1052 | Re-register CPU motion_v2 extractor and fix post-flush test ordering |
| ADR-1053 | Default docker-compose runtime to nvidia and expand GPU capabilities |
| ADR-1056 | Use /std:c++latest on MSVC instead of cpp_std=c++23 |
| ADR-1064 | Wire score_fmt option on all vmaf FFmpeg filters |
| ADR-1080 | UBSan enum-invalid-value fixes in vmaf_log and vmaf_option_set |
| ADR-1084 | Use filepath.SplitList for VMAF_MCP_ALLOW path-list parsing |
| ADR-1101 | Change vmaf container user GID/UID from 1000 to 2000 |
| ADR-1102 | Container-only canonical artifact publishing (Phase 4b.9) |
| ADR-1113 | Vendor the Pelorus interop ABI as a pinned read-only mirror |
| ADR-1120 | Re-pin the vendored Pelorus interop ABI to minor-3 and consume PEL_SEC_COMPLEXITY in perceptual weighting |
| ADR-1126 | Retire the standalone isort hook; ruff's I rules own import sorting |
| ADR-1134 | Build vmafx-ort-runner in-tree as a cgo shim over libvmaf's DNN session API |
| ADR-1135 | CI twin-drift + stale-source-reference gate |
| ADR-1140 | Route required CI work by measured impact instead of pre-declared path filters |
| ADR-1145 | Derive the Intel NEO compute stack (gmmlib and IGC) dynamically from pinned compute-runtime release metadata |
| ADR-1153 | Resolution of Dead .c/.cpp Twin Sides (model.cpp, test_dict.c, test_feature.c) |
| ADR-1166 | Harvest stale upstream Netflix/vmaf reports, verify each against the fork, fix what still bites |
| ADR-1172 | Bound per-link LTO parallelism to four partitions by default |
| ADR-1195 | Record and verify which source revision the dev container was built from |
| ADR-1200 | The dev container falls back to the GitHub mirror for nv-codec-headers |
| ADR-1223 | The CUDA backend requires compute capability 8.0 (Ampere), and CI standardises on CUDA 13.3.1 |
| ADR-1224 | CUDA Tile C++ is not adopted; the audit's incidental findings are |
| ADR-1225 | Migrate the HIP backend to ROCm 10.0.0, installed from digest-pinned container images |
| ADR-1230 | The CI gcc moves forward with clang and meson, and the ratchet records it |
| ADR-1231 | Container bases and toolchain versions come from one config file |
| ADR-1233 | GitHub generates the release body; CHANGELOG.md keeps an index |
| ADR-1234 | The local gate builds with every compiler CI does |
| ADR-1235 | libvmaf.pc advertises the ABI version, not the product version |
| ADR-1236 | Single-source package versions and unify Python dependencies |
| ADR-1240 | Maintain the FFmpeg patch stack against stable releases |
| ADR-1245 | Analyze configured Cppcheck paths exhaustively |
| ADR-1246 | Model verified public functions as Cppcheck entrypoints |
| ADR-1253 | Scalar references compute their fused multiply-add themselves |
| ADR-1254 | Wide vector register pressure is a Win64 correctness constraint, not a performance one |
| ADR-1255 | Correct the SPDX identifiers PR #1457 does not reach, to the licence this repository already declares |
| ADR-1258 | Keep the fork 64-bit only; retire the resurrected i686 lane |
| ADR-1259 | Record the CI build matrix as it actually runs |
| ADR-1260 | Windows on ARM64 CPU build-and-test lane |
| ADR-1263 | __HIP_PLATFORM_AMD__ is declared once by the build, not by each source |
| ADR-1271 | Pass NEO GitHub credentials through optional BuildKit secrets |
| ADR-1273 | Select language standards through warning-clean Meson preference lists |
| ADR-1285 | CUDA is a coordinated pin — group it in Renovate, gate the rest |
| ADR-1297 | Every check that reports on a pull request is a required context |
| ADR-1306 | Replace nvidia/cuda base images with digest-pinned Ubuntu and version-locked apt installation |
| ADR-1320 | CUDA fatbin and HIP HSACO kernel header dependency tracking |
| ADR-1333 | Meson test environment secret sanitization |
| ADR-1337 | C++ Placement New Visibility — Hide Inline Run-time Symbols |
| ADR-1343 | Statically check that every dev-container stage copies the files it reads |
| ADR-1360 | Generate SYCL AOT images at compile time and fail the build when they are missing |
| ADR-1364 | Register the SYCL device images of a Windows MSVC build through one explicit device link |
| ADR-1367 | Every SYCL feature TU compiles with contraction off and correctly rounded fp32 division and square root |
| ADR-1387 | Migrate Windows MinGW CI leg from deprecated MINGW64 to UCRT64 |
| ADR-1403 | Every CUDA feature kernel compiles without FMA contraction, and a twin spells the fused operations its reference performs |
| ADR-1407 | Every HIP kernel compiles with contraction off and correctly rounded fp32 division and square root |
| ADR-1415 | every x86 SIMD library is built without FP contraction |
| ADR-1461 | no C or C++ translation unit is built with floating-point contraction; the strict policy is a project argument |
| ADR-1467 | ciede.c writes its squares as products, so ciede2000 no longer depends on the compiler or on the C library's powf for them; a GCC build moves by up to 2e-11 |
| ADR-1468 | A SYCL kernel requires only a sub-group size every default AOT target accepts (16 or 32); the six kernels that required 8 move to 16 |
| ADR-1471 | The clang-tidy lanes are measured in the dev container, with the device toolchains |
| ADR-1495 | icx and icpx builds link glibc's libm, not Intel's libimf |
| ADR-1590 | Every build stores its GPU device code compressed at the toolchain's strongest setting, and the build refuses raw device code |
| ADR-1622 | the node's eBPF object is generated at build time with a pinned clang and no object is committed |
| ADR-1713 | Rust feature-extractor twins behind the unchanged C ABI (RC4 framework) |
| ADR-1822 | vmaf_picture_convert ships additively, with the source colour as an argument |
| ADR-1930 | sycl_device_asan puts the device sanitizer on every SYCL compile and the link |
| ADR-2094 | libvmaf.so.3 is a compat library on the exported VMAFx API; the engine compiles its libvmaf bodies under engine names, and backends keep theirs until their lanes land |
| ADR-2134 | adm_cm_aim_line_kernel_4 gets its own register budget of 209 for the exact scale-0 angle flag |
| ADR-2170 | A CI leg that prints no warnings turns them into errors, one leg at a time |
| ADR-2478 | Rust replaces the host-side C and C++ through 3.0, behind the unchanged C ABI |
| ADR-2646 | POSIX-only build parts stay off Windows, and preflight refuses an unguarded POSIX header |
| ADR-2705 | formulas are TeX rendered by self-hosted KaTeX, checked at build time |
| ADR-2751 | MSVC threads stay on the Win32 shim, which gains a timed wait |
| ADR-2752 | A static MSVC build installs vmaf.lib and vmafx.lib |
| ADR-2828 | Every CI build lane spells warnings as errors where praetor's build-warnings gate reads it |