Skip to content

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