ADR titles¶
Every ADR, one heading each (1349), so the site search finds an ADR by its title; ADR bodies are not in the search index (ADR-1512).
ADR-0001: Treat uncommitted benchmark result JSON as noise¶
0001-stash-benchmark-noise-file
ADR-0002: Merge path gpu-opt to sycl to master, master is fork default¶
0002-merge-path-master-default
ADR-0003: Introduce .workingdir2 as new planning directory¶
0003-workingdir2-empty-planning-dir
ADR-0004: Auto-push sycl and master to origin after merges¶
ADR-0005: Adopt full framework adaptation scope a-g¶
0005-framework-adaptation-full-scope
ADR-0006: Set CLI precision default to %.17g with --precision flag¶
0006-cli-precision-17g-default
ADR-0007: Rewrite .claude/settings.json from scratch¶
0007-claude-settings-fresh-rewrite
ADR-0008: Rewrite README with fork branding preserving Netflix attribution¶
ADR-0009: MCP server exposes four core tools¶
ADR-0010: Sign release artifacts keyless via Sigstore¶
ADR-0011: Version scheme v3.x.y-lusoris.N¶
0011-versioning-lusoris-suffix
ADR-0012: Coding standards stack JPL + CERT + MISRA¶
0012-coding-standards-jpl-cert-misra
ADR-0013: Support full local dev distro matrix¶
ADR-0014: VSCode uses clangd, disable MS C/C++ IntelliSense¶
0014-vscode-clangd-disable-ms-cpp
ADR-0015: CI matrix Linux/macOS/Windows with sanitizers¶
0015-ci-matrix-asan-ubsan-tsan
ADR-0016: Sycl to master merge conflict resolution policy¶
0016-sycl-to-master-merge-conflict-policy
ADR-0017: Claude skills scope includes domain scaffolding¶
ADR-0018: Claude hooks scope includes safety and auto-format¶
ADR-0019: .workingdir2 is the full planning dossier¶
ADR-0020: Tiny-AI scope covers all four capabilities¶
ADR-0021: Training stack is PyTorch + Lightning with ONNX export¶
0021-training-stack-pytorch-lightning
ADR-0022: Inference runtime is ONNX Runtime via execution providers¶
ADR-0023: Tiny-AI user surfaces span CLI, C API, ffmpeg, and training¶
ADR-0024: Preserve Netflix source-of-truth tests verbatim¶
ADR-0025: Copyright handling preserves Netflix and adds Lusoris/Claude¶
0025-copyright-handling-dual-notice
ADR-0026: Relocate Python harness workspace under python/vmaf/¶
0026-workspace-relocated-under-python
ADR-0027: Non-conservative image pins with experimental toolchain flags¶
0027-non-conservative-image-pins
ADR-0028: Every non-trivial decision gets its own ADR file before the commit¶
ADR-0029: Relocate resource tree under python/vmaf/¶
ADR-0030: Relocate MATLAB sources under python/vmaf/¶
ADR-0031: Fork-added docs live under docs/¶
0031-fork-docs-moved-under-docs
ADR-0032: Relocate root unittest script to scripts/¶
0032-unittest-script-moved-to-scripts
ADR-0033: Relocate CodeQL config to .github/¶
0033-codeql-config-moved-to-github
ADR-0034: Delete patches/ leftover, keep only ffmpeg-patches/¶
ADR-0035: Migrate .claude/settings.json hooks to current schema¶
ADR-0036: Tiny-AI Wave 1 scope expanded beyond D20–D23¶
0036-tinyai-wave1-scope-expansion
ADR-0037: Protect master branch on GitHub with required checks¶
ADR-0038: Purge upstream MATLAB MEX compiled binaries from tree¶
0038-purge-upstream-matlab-mex-binaries
ADR-0039: Pull forward runtime op-allowlist walk and model registry¶
0039-onnx-runtime-op-walk-registry
ADR-0040: Extend DNN session API to multi-input/multi-output with named bindings¶
0040-dnn-session-multi-input-api
ADR-0041: Ship LPIPS-SqueezeNet FR extractor with inverse-ImageNet in graph¶
ADR-0042: Tiny-AI PRs must ship human-readable docs in the same PR¶
0042-tinyai-docs-required-per-pr
ADR-0100: Every user-discoverable change ships docs in the same PR¶
0100-project-wide-doc-substance-rule
ADR-0101: SYCL USM-backed picture pre-allocation pool¶
ADR-0102: DNN execution-provider selection is ordered + graceful, fp16_io does a host-side cast¶
0102-dnn-ep-selection-and-fp16-io
ADR-0103: vmaf_sycl_import_d3d11_surface ships as a staging-texture H2D path, not zero-copy¶
0103-sycl-d3d11-surface-import
ADR-0104: Compile picture_pool unconditionally and size it for the live-picture set¶
ADR-0105: Copyright handling preserves Netflix and adds Lusoris/Claude¶
0105-copyright-handling-dual-notice
ADR-0106: Every non-trivial decision gets its own ADR file before the commit¶
ADR-0107: Tiny-AI Wave 1 scope expanded beyond ADR-0020 through ADR-0023¶
0107-tinyai-wave1-scope-expansion
ADR-0108: Every fork-local PR ships the six deep-dive deliverables¶
0108-deep-dive-deliverables-rule
ADR-0109: Nightly bisect-model-quality runs against a synthetic placeholder cache¶
0109-nightly-bisect-model-quality
ADR-0110: Coverage gate -fprofile-update=atomic for parallel meson tests¶
0110-coverage-gate-fprofile-update-atomic
ADR-0111: Coverage gate lcov → gcovr with ORT in the coverage job¶
0111-coverage-gate-gcovr-with-ort
ADR-0112: Testability surface for ort_backend.c static helpers¶
0112-ort-backend-testability-surface
ADR-0113: ORT CreateSession fallback to CPU + multi-EP CI install¶
0113-ort-create-session-fallback-multi-ep-ci
ADR-0114: Per-file coverage-gate overrides for ort_backend.c + dnn_api.c¶
0114-coverage-gate-per-file-overrides
ADR-0115: CI workflows trigger on master only; consolidate windows.yml into libvmaf.yml¶
0115-ci-trigger-master-only-and-matrix-consolidation
ADR-0116: CI workflow naming convention — purpose-named files + Title Case display names¶
0116-ci-workflow-naming-convention
ADR-0117: Coverage-Gate annotation cleanup (gcov hits + upload-artifact)¶
0117-coverage-gate-warning-noise-suppression
ADR-0118: FFmpeg patches ship as ordered series.txt, not a single carry¶
0118-ffmpeg-patch-series-application
ADR-0119: Revert CLI precision default to %.6f to honour Netflix golden gate¶
0119-cli-precision-default-revert
ADR-0120: DNN-enabled matrix legs across compilers + macOS¶
0120-ai-enabled-ci-matrix-legs
ADR-0121: Windows GPU build-only matrix legs (MSVC + CUDA, MSVC + oneAPI SYCL)¶
0121-windows-gpu-build-only-legs
ADR-0122: CUDA gencode coverage + actionable init-failure logging¶
0122-cuda-gencode-coverage-and-init-hardening
ADR-0123: CUDA prev_ref null-deref on ffmpeg libvmaf_cuda path¶
0123-cuda-post-cubin-load-regression-32b115df
ADR-0124: Automate enforcement of process ADRs (0100 / 0105 / 0106 / 0108)¶
0124-automated-rule-enforcement
ADR-0125: MS-SSIM decimate SIMD fast paths (AVX2 + AVX-512)¶
ADR-0126: SSIMULACRA 2 perceptual metric as a fork-local feature extractor¶
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-0129: Tiny-AI post-training int8 quantisation — static + dynamic + QAT per model¶
ADR-0130: SSIMULACRA 2 scalar implementation¶
0130-ssimulacra2-scalar-implementation
ADR-0131: Port Netflix#1382 — cuMemFreeAsync → cuMemFree in vmaf_cuda_picture_free¶
0131-port-netflix-1382-cumemfree
ADR-0132: Port Netflix#1406 — feature_collector mount/unmount model-list bugfix¶
0132-port-netflix-1406-feature-collector-model-list
ADR-0133: Clang-Tidy push-event should scan push delta, not full tree¶
ADR-0134: Port Netflix#1451 — meson declare_dependency + override_dependency for libvmaf¶
0134-port-netflix-1451-meson-declare-dependency
ADR-0135: Port Netflix#1424 — expose built-in VMAF model-version iterator¶
0135-port-netflix-1424-expose-builtin-model-versions
ADR-0136: Strip markdown emphasis/code characters before ADR-0108 deliverables grep¶
0136-ci-deliverables-checker-strip-markdown
ADR-0137: Thread-local locale handling for numeric I/O¶
0137-thread-local-locale-for-numeric-io
ADR-0138: _iqa_convolve AVX2 bit-exact double-precision fast path¶
0138-iqa-convolve-avx2-bitexact-double
ADR-0139: SSIM SIMD accumulate bit-exact to scalar via per-lane scalar double¶
0139-ssim-simd-bitexact-double
ADR-0140: SIMD DX framework — header macros + scaffolding skill¶
ADR-0141: Every PR leaves its touched files lint-clean¶
0141-touched-file-cleanup-rule
ADR-0142: Port Netflix upstream vif_sigma_nsq feature parameter¶
0142-port-netflix-18e8f1c5-vif-sigma-nsq
ADR-0143: Port Netflix upstream generalised AVX convolve for arbitrary filter widths¶
0143-port-netflix-f3a628b4-generalized-avx-convolve
ADR-0145: motion_v2 NEON SIMD — bit-exact to scalar¶
ADR-0146: Sweep readability-function-size NOLINTs from libvmaf¶
0146-nolint-sweep-function-size
ADR-0147: Thread-pool job-object recycling + inline data buffer¶
ADR-0148: IQA reserved-identifier rename + touched-file lint cascade¶
ADR-0149: Port Netflix #1376 — FIFO-hang fix via multiprocessing.Semaphore¶
0149-port-netflix-1376-fifo-semaphore
ADR-0150: Port Netflix #1472 — CUDA feature extraction on Windows (MSYS2/MinGW)¶
0150-port-netflix-1472-cuda-windows
ADR-0151: i686 build-only CI job — reproduce Netflix #1481¶
ADR-0152: vmaf_read_pictures rejects non-monotonic indices¶
0152-vmaf-read-pictures-monotonic-index
ADR-0153: float_ms_ssim init rejects input below 176×176¶
0153-float-ms-ssim-min-dim-netflix-1414
ADR-0154: vmaf_score_pooled returns -EAGAIN for pending features¶
0154-score-pooled-eagain-netflix-755
ADR-0155: Defer fix for Netflix#955 — i4_adm_cm int32 rounding overflow¶
0155-adm-i4-rounding-deferred-netflix-955
ADR-0156: CUDA backend: graceful error propagation (Netflix#1420)¶
0156-cuda-graceful-error-propagation-netflix-1420
ADR-0157: CUDA preallocation memory leak fix + vmaf_cuda_state_free public API (Netflix#1300)¶
0157-cuda-preallocation-leak-netflix-1300
ADR-0158: Netflix#1486 "Port motion updates" — verified present in fork¶
0158-netflix-1486-motion-updates-verified-present
ADR-0159: psnr_hvs AVX2 port — bit-exact DCT vectorization (T3-5)¶
ADR-0160: psnr_hvs NEON port — bit-exact DCT vectorization (T3-5-neon)¶
ADR-0161: SSIMULACRA 2 SIMD bit-exact ports — AVX2 + AVX-512 + NEON (T3-1 + T3-2)¶
0161-ssimulacra2-simd-bitexact
ADR-0162: SSIMULACRA 2 IIR blur SIMD ports — AVX2 + AVX-512 + NEON (T3-1 phase 2)¶
0162-ssimulacra2-iir-blur-simd
ADR-0163: SSIMULACRA 2 picture_to_linear_rgb SIMD ports (T3-1 phase 3)¶
ADR-0164: SSIMULACRA 2 snapshot-JSON regression gate (T3-3)¶
0164-ssimulacra2-snapshot-gate
ADR-0165: Tracked docs/state.md for bug-status hygiene (T7-1)¶
ADR-0166: MCP server release artifact channel — PyPI + GitHub release attachment + Sigstore (T7-2)¶
0166-mcp-server-release-channel
ADR-0167: Path-mapped doc-drift enforcement (local hook + CI gate)¶
ADR-0168: Tiny-AI Wave 1 baselines C2 + C3 — KoNViD-1k training (T6-1)¶
ADR-0169: ONNX op-allowlist — admit Loop + If with recursive subgraph scan (T6-5)¶
ADR-0170: vmaf_pre extended to 10/12-bit and optional chroma (T6-4)¶
ADR-0171: Bounded Loop.M trip-count guard (T6-5b)¶
ADR-0172: MCP describe_worst_frames tool with VLM fallback (T6-6)¶
0172-mcp-describe-worst-frames
ADR-0173: PTQ int8 audit implementation — registry schema + scripts + CI gate (T5-3)¶
ADR-0174: First per-model PTQ — learned_filter_v1 dynamic int8 (T5-3b)¶
ADR-0175: Vulkan compute backend — scaffold-only audit-first PR (T5-1)¶
ADR-0176: Vulkan VIF cross-backend gate (lavapipe + Arc nightly)¶
0176-vulkan-vif-cross-backend-gate
ADR-0177: Vulkan motion kernel + motion cross-backend gate¶
ADR-0178: Vulkan ADM kernel (T5-1c-adm)¶
ADR-0179: float_moment SIMD parity (AVX2 + NEON)¶
ADR-0180: CPU coverage matrix audit — close 5 stale gaps¶
ADR-0181: Global feature-characteristics registry + per-backend dispatch strategy¶
0181-feature-characteristics-registry
ADR-0182: GPU long-tail batch 1 — psnr + ciede + moment on CUDA / SYCL / Vulkan¶
ADR-0183: libvmaf_sycl FFmpeg filter — zero-copy QSV / VAAPI import¶
0183-ffmpeg-libvmaf-sycl-filter
ADR-0184: Vulkan VkImage import C-API scaffold (T7-29 part 1 of 2)¶
0184-vulkan-image-import-scaffold
ADR-0185: Hide volk / Vulkan-loader symbols from libvmaf's public ABI¶
ADR-0186: Vulkan VkImage import + filter (T7-29 parts 2 + 3)¶
ADR-0187: ciede2000 Vulkan kernel — float-precision per-pixel ΔE¶
ADR-0188: GPU long-tail batch 2 — psnr_hvs / ssim / ms_ssim across CUDA / SYCL / Vulkan¶
ADR-0189: float_ssim Vulkan kernel — host decimation, 2-dispatch GPU¶
ADR-0190: float_ms_ssim Vulkan kernel — 5-level pyramid + Wang product on host¶
ADR-0191: float_psnr_hvs Vulkan kernel — overlapping 8×8 DCT blocks + per-plane log transform¶
ADR-0192: GPU long-tail batch 3 — closing every remaining metric gap (motion_v2 / float_ansnr / ssimulacra2 / cambi + float twins)¶
ADR-0193: motion_v2 Vulkan kernel — single-dispatch SAD via convolution linearity¶
ADR-0194: float_ansnr GPU kernels — single-dispatch 3x3 + 5x5 filters with per-WG float partials¶
ADR-0195: float_psnr GPU kernels — single-dispatch diff² with float partials, bit-exact vs CPU¶
ADR-0196: float_motion GPU kernels — float twin of integer_motion blur+SAD¶
ADR-0197: float_vif GPU kernels — 4-scale pyramid with mirror-asymmetry fix¶
ADR-0198: Rename volk's vk* symbols to vmaf_priv_vk* for static-archive builds¶
0198-volk-priv-remap-static-archive
ADR-0199: float_adm Vulkan kernel — sixth Group B float twin¶
ADR-0200: Move volk -include flag off of volk_dep.compile_args (libvmaf.pc leak fix)¶
0200-volk-priv-remap-pkgconfig-leak-fix
ADR-0201: ssimulacra2 Vulkan kernel¶
0201-ssimulacra2-vulkan-kernel
ADR-0202: float_adm CUDA + SYCL twins — sixth Group B float kernel finishes¶
ADR-0203: Tiny-AI training prep — implementation decisions¶
0203-tiny-ai-training-prep-impl
ADR-0205: cambi GPU feasibility spike¶
ADR-0206: ssimulacra2 CUDA + SYCL twins¶
ADR-0207: Tiny-AI Quantization-Aware Training (QAT) — design¶
ADR-0208: First per-model QAT — learned_filter_v1 int8 (T5-4)¶
0208-learned-filter-v1-qat-impl
ADR-0209: Embedded MCP server — scaffold-only audit-first PR (T5-2)¶
ADR-0210: cambi Vulkan integration (Strategy II hybrid)¶
ADR-0211: Tiny-model registry schema + Sigstore --tiny-model-verify¶
ADR-0212: HIP (AMD ROCm) compute backend — scaffold-only audit-first PR (T7-10)¶
ADR-0213: SSIMULACRA 2 SVE2 SIMD parity¶
ADR-0214: GPU-parity CI gate (T6-8) — cross-device variance matrix¶
ADR-0215: FastDVDnet temporal pre-filter — 5-frame window, placeholder weights¶
ADR-0216: Vulkan PSNR — chroma extension (psnr_cb / psnr_cr)¶
ADR-0217: SYCL toolchain cleanup — multi-version recipe + icpx-aware clang-tidy wrapper¶
ADR-0218: MobileSal saliency feature extractor (T6-2a)¶
0218-mobilesal-saliency-extractor
ADR-0219: motion3 GPU coverage on Vulkan + CUDA + SYCL (3-frame window)¶
ADR-0220: SYCL feature kernels are unconditionally fp64-free¶
ADR-0221: CHANGELOG + ADR-index fragment-file pattern¶
0221-changelog-adr-fragment-pattern
ADR-0222: vmaf-perShot per-shot CRF predictor sidecar¶
ADR-0223 TransNet V2 shot-boundary detector — 100-frame window, placeholder weights¶
0223-transnet-v2-shot-detector
ADR-0228: Tombstone: heap-buffer-overflow fix in the Y4M 411 to 422jpeg conversion¶
0228-y4m-411-422jpeg-heap-overflow-fix
ADR-0234: GPU-generation-aware ULP calibration head¶
ADR-0235: Codec-aware FR regressor (fr_regressor_v2)¶
ADR-0236 — DISTS extractor as LPIPS companion¶
ADR-0237: Quality-aware encode automation surface (vmaf-tune)¶
0237-quality-aware-encode-automation
ADR-0238: Vulkan VmafPicture preallocation surface (API parity with CUDA / SYCL)¶
0238-vulkan-picture-preallocation
ADR-0239: Backend-agnostic GPU picture pool (gpu_picture_pool.{h,c})¶
ADR-0240: GPU backend public-header pattern doc (PR3 of GPU dedup, doc-only)¶
ADR-0241: HIP first-consumer kernel — integer_psnr_hip via mirrored kernel-template¶
ADR-0242: Tiny-AI training on the original Netflix VMAF training corpus¶
0242-tiny-ai-netflix-training-corpus
ADR-0243: enable_lcs MS-SSIM extras on CUDA + Vulkan¶
ADR-0244: vmaf_tiny_v2 — canonical-6 + StandardScaler tiny VMAF MLP¶
ADR-0245: SIMD bit-exact test harness shared header¶
0245-simd-bitexact-test-harness
ADR-0246: Per-backend GPU kernel scaffolding templates (CUDA + Vulkan)¶
ADR-0247: vmaf-roi sidecar binary for per-CTU QP offsets¶
ADR-0248: nr_metric_v1 joins dynamic-PTQ family (T5-3d)¶
ADR-0249: Tiny-AI Wave 1 baseline C1 — fr_regressor_v1 on Netflix Public¶
ADR-0250: Tiny-AI extractor template — shared scaffolding header¶
0250-tiny-ai-extractor-template
ADR-0251: Vulkan VkImage import — v2 async pending-fence model (T7-29 part 4)¶
0251-vulkan-async-pending-fence
ADR-0252: ssimulacra2 Vulkan host-path AVX2 + NEON SIMD (T-GPU-OPT-VK-2)¶
0252-ssimulacra2-host-xyb-simd
ADR-0253: Defer SpEED-QA full-reference reduction¶
ADR-0254: HIP second-consumer kernel — float_psnr_hip via mirrored kernel-template¶
0254-hip-second-consumer-float-psnr
ADR-0255: FastDVDnet temporal pre-filter — real upstream weights via luma adapter (T6-7b)¶
0255-fastdvdnet-pre-real-weights
ADR-0256: Vulkan submit-side template + fence pool + descriptor pre-alloc¶
ADR-0257: MobileSal real-weights swap deferred (T6-2a-followup blocker)¶
0257-mobilesal-real-weights-deferred
ADR-0258: ONNX op-allowlist — admit Resize for saliency / segmentation models (T7-32)¶
ADR-0259: HIP third-consumer kernel — ciede_hip via mirrored kernel-template¶
ADR-0260: HIP fourth-consumer kernel — float_moment_hip via mirrored kernel-template¶
0260-hip-fourth-consumer-float-moment
ADR-0261: TransNet V2 shot-boundary detector — real upstream weights via NTCHW adapter (T6-3a-followup)¶
ADR-0262: bisect-model-quality cache check uses logical comparison for parquet¶
0262-bisect-cache-logical-comparison
ADR-0263: OSSF Scorecard policy and remediation cadence¶
ADR-0264: Vulkan 1.4 API-version bump blocked on shader FP-contraction audit¶
0264-vulkan-1-4-bump-blocked-on-fp-contraction
ADR-0265: U-2-Net u2netp saliency replacement blocked on weights distribution + op allowlist¶
0265-u2netp-saliency-replacement-blocked
ADR-0266: HIP fifth kernel-template consumer — float_ansnr_hip¶
0266-hip-fifth-consumer-float-ansnr
ADR-0267: HIP sixth kernel-template consumer — motion_v2_hip¶
0267-hip-sixth-consumer-motion-v2
ADR-0269: precise decoration audit on vif.comp + ciede.comp — Step A of the Vulkan 1.4 bump path¶
ADR-0270: libFuzzer scaffold for parser surfaces (OSSF Scorecard remediation)¶
ADR-0271: Wire integer_ms_ssim_cuda through the CUDA fence-batching helper¶
ADR-0272: fr_regressor_v2 codec-aware scaffold (Phase B prereq)¶
0272-fr-regressor-v2-codec-aware-scaffold
ADR-0273: HIP seventh kernel-template consumer — float_motion_hip¶
0273-hip-seventh-consumer-float-motion
ADR-0274: HIP eighth kernel-template consumer — float_ssim_hip¶
0274-hip-eighth-consumer-float-ssim
ADR-0275: vmaf_tiny_v3 and vmaf_tiny_v4 join dynamic-PTQ family (T5-3d follow-up)¶
ADR-0276: vmaf-tune fast — proxy-based recommend (Phase A.5)¶
ADR-0277: ffmpeg-patches refresh against n8.1 — 2026-05-04 (no drift)¶
0277-ffmpeg-patches-refresh-2026-05-04
ADR-0278: T7-5 NOLINT-sweep closeout — citation normalisation across libvmaf¶
ADR-0279: vmaf-tune codec adapter — libaom-av1¶
0279-vmaf-tune-codec-adapter-libaom
ADR-0281: vmaf-tune Intel QSV codec adapters (h264_qsv, hevc_qsv, av1_qsv)¶
ADR-0282: vmaf-tune AMD AMF codec adapters (h264 / hevc / av1)¶
ADR-0283: vmaf-tune Apple VideoToolbox codec adapters¶
0283-vmaf-tune-videotoolbox-adapters
ADR-0285: vmaf-tune libvvenc adapter — VVC / H.266 with optional NN-VC tools¶
ADR-0286: Fork-trained saliency student saliency_student_v1 on DUTS-TR¶
0286-saliency-student-fork-trained-on-duts
ADR-0287: vmaf_tiny_v5 — corpus expansion (4-corpus + YouTube UGC vp9 subset)¶
0287-vmaf-tiny-v5-corpus-expansion
ADR-0288: vmaf-tune libx265 codec adapter¶
0288-vmaf-tune-codec-adapter-x265
ADR-0289: vmaf-tune resolution-aware model selection + CRF offsets¶
0289-vmaf-tune-resolution-aware
ADR-0290: NVENC codec adapters for vmaf-tune (h264 / hevc / av1)¶
ADR-0291: fr_regressor_v2 — flip from smoke to production¶
0291-fr-regressor-v2-prod-ship
ADR-0293: vmaf-tune saliency-aware ROI tuning (Bucket #2)¶
ADR-0294: vmaf-tune codec adapter for SVT-AV1¶
0294-vmaf-tune-codec-adapter-svtav1
ADR-0295: vmaf-tune Phase E — per-title bitrate-ladder generator¶
0295-vmaf-tune-phase-e-bitrate-ladder
ADR-0296: Region-of-interest VMAF scoring (vmaf-roi-score) — saliency-weighted scaffold¶
0296-vmaf-roi-saliency-weighted
ADR-0297: vmaf-tune — codec-agnostic encode dispatcher¶
0297-vmaf-tune-encode-multi-codec
ADR-0298: vmaf-tune content-addressed encode/score cache¶
ADR-0299: GPU scoring backend for vmaf-tune (--score-backend)¶
ADR-0300: vmaf-tune HDR-aware encoding + scoring¶
ADR-0301: vmaf-tune --sample-clip-seconds (sample-clip mode)¶
ADR-0302: ENCODER_VOCAB v3 — 16-slot schema expansion + retrain plan¶
0302-encoder-vocab-v3-schema-expansion
ADR-0303: fr_regressor_v2 ensemble — production flip trainer + CI gate¶
0303-fr-regressor-v2-ensemble-prod-flip
ADR-0304: vmaf-tune fast — production wiring (Optuna TPE + v2 proxy + GPU verify)¶
0304-vmaf-tune-fast-path-prod-wiring
ADR-0305: Encoder knob-space Pareto-frontier analysis stratified per (source, codec, rc_mode)¶
0305-encoder-knob-space-pareto-analysis
ADR-0306: vmaf-tune coarse-to-fine CRF search¶
ADR-0307: vmaf-tune ladder default sampler — wire Phase B/E gap¶
0307-vmaf-tune-ladder-default-sampler
ADR-0308: Encoder knob-sweep recipe-regression revision policy¶
0308-encoder-knob-sweep-recipe-regression-policy
ADR-0309: fr_regressor_v2 ensemble — real-corpus retrain harness + flip workflow¶
0309-fr-regressor-v2-ensemble-real-corpus-retrain
ADR-0310: BVI-DVC corpus ingestion for fr_regressor_v2¶
ADR-0311: libFuzzer harness expansion — fuzz_yuv_input + fuzz_cli_parse¶
0311-libfuzzer-harness-expansion
ADR-0312: FFmpeg-patch series for vmaf-tune integration (qpfile + libvmaf_tune + pass-autotune)¶
0312-ffmpeg-patches-vmaf-tune-integration
ADR-0313 — CI required-checks aggregator (unblock doc/Python-only PRs)¶
0313-ci-required-checks-aggregator
ADR-0314: vmaf-tune --score-backend=vulkan (vendor-neutral GPU scoring)¶
0314-vmaf-tune-score-backend-vulkan
ADR-0315: Vendor-neutral VVC encode strategy — tiered Tier-1-now / Tier-2-backlog / Tier-3-revisit¶
0315-vendor-neutral-vvc-encode-strategy
ADR-0316: cli_parse — handle long-only options in error()¶
0316-cli-parse-long-only-error-fix
ADR-0317: Path-filter Docker + FFmpeg-integration on doc/Python-only PRs¶
ADR-0318: fr_regressor_v2 ensemble retrain harness — wrapper-trainer interface fix + Phase A pre-step doc¶
0318-ensemble-retrain-harness-fix
ADR-0319: fr_regressor_v2 ensemble LOSO trainer — real loader + per-fold training¶
0319-ensemble-loso-trainer-real-impl
ADR-0320: fr_regressor_v2 ensemble seeds — production flip (smoke → false)¶
0320-fr-regressor-v2-ensemble-seed-flip
ADR-0321: fr_regressor_v2_ensemble_v1 — full production flip (real ONNX + sidecars)¶
0321-fr-regressor-v2-ensemble-full-prod-flip
ADR-0323: fr_regressor_v3 — train + register on ENCODER_VOCAB v3 (16-slot)¶
0323-fr-regressor-v3-train-and-register
ADR-0324: Ensemble training kit — portable Phase-A + LOSO retrain bundle¶
ADR-0325: KonViD-150k corpus ingestion¶
0325-konvid-150k-corpus-ingestion
ADR-0326: vmaf-tune Phase B — target-VMAF bisect¶
ADR-0328: Cambi cluster port — skip the shared-header rename¶
0328-cambi-cluster-port-skip-shared-header-rename
ADR-0331: Skip CI on draft pull requests¶
ADR-0332: Agent worktree-drift hard guard¶
0332-agent-worktree-drift-hard-guard
ADR-0333: vmaf-tune Phase F — multi-pass encoding (libx265 first)¶
0333-vmaf-tune-multi-pass-encoding
ADR-0334: state.md-touch-check CI gate (ADR-0165 enforcement)¶
0334-state-md-touch-check-ci-gate
ADR-0335: Hardware-capability priors for the FR-regressor corpus¶
0335-hardware-capability-priors
ADR-0336: KonViD MOS head v1 (ADR-0325 Phase 3)¶
ADR-0337: motion_v2 inherits motion v1's public option surface (duplicate registration)¶
0337-motion-v2-public-api-options
ADR-0338: macOS Vulkan-via-MoltenVK CI lane (advisory) for the Vulkan backend¶
0338-macos-vulkan-via-moltenvk-lane
ADR-0339: av1_videotoolbox placeholder adapter + upstream watcher¶
0339-av1-videotoolbox-placeholder-adapter
ADR-0340: Multi-corpus aggregation for the FR-regressor / predictor v2 trainer¶
ADR-0341: paths-ignore filter on heavy CI workflows for doc-only PRs¶
0341-ci-paths-ignore-doc-only-prs
ADR-0345: cambi × {CUDA, SYCL, HIP} GPU port strategy¶
ADR-0346: FR-features-from-NR-corpus adapter pattern¶
0346-fr-features-from-nr-corpus
ADR-0347: Sanitizer matrix — concrete test-set scope per sanitizer¶
0347-sanitizer-matrix-test-scope
ADR-0348: Globally suppress CodeQL cpp/poorly-documented-function¶
0348-codeql-poorly-documented-function-suppressed
ADR-0349: fr_regressor_v3 namespace — reserve _v3plus_features for the next feature-set bump¶
0349-fr-regressor-v3-namespace
ADR-0350: psnr_hvs AVX-512 — re-bench confirms AVX2 ceiling (T3-9 (a))¶
ADR-0351: CUDA PSNR — chroma extension (psnr_cb / psnr_cr)¶
ADR-0352: Vulkan submit-pool migration — PR A (adm, motion, psnr)¶
0352-vulkan-submit-pool-pr-a-adm-motion-psnr
ADR-0353: Vulkan submit-pool migration PR-B — six secondary kernels¶
0353-vulkan-submit-pool-pr-b-six-kernels
ADR-0354: Vulkan submit-pool migration PR-C — cambi, ssimulacra2, float_ansnr, moment¶
0354-vulkan-submit-pool-pr-c-four-kernels
ADR-0355: Symphony-inspired agent-dispatch infrastructure¶
0355-symphony-agent-dispatch-infra
ADR-0356: Two-level GPU reduction for Vulkan VIF / ADM / motion accumulators¶
0356-vulkan-two-level-gpu-reduction
ADR-0357 — Vulkan readback buffer VMA allocation flag separation¶
0357-vulkan-readback-alloc-flag
ADR-0358: CUDA motion correctness — SAD race, pinned-mem leak, and motion2/motion3 precision parity with CPU¶
0358-cuda-motion-race-and-precision-fixes
ADR-0359 — ARC self-hosted runner pool: pilot via ARC_RUNNERS_ENABLED flag¶
ADR-0360: CAMBI CUDA port (Strategy II hybrid, T3-15a)¶
ADR-0361: Metal compute backend — scaffold-only audit-first PR (T8-1)¶
ADR-0362 — K150K-A corpus integration: FR-from-NR extraction of FULL_FEATURES¶
ADR-0363: Mend Renovate replaces Dependabot as the dependency-update bot¶
0363-renovate-replaces-dependabot
ADR-0364: saliency_student_v2 — Resize-decoder ablation on the v1 recipe¶
0364-saliency-student-v2-resize-decoder
ADR-0365: Wire the CoreML execution provider into tiny-AI ORT dispatch¶
ADR-0366: vmaf-tune corpus schema v3 — canonical-6 per-feature aggregates¶
ADR-0367: LSVQ corpus ingestion for nr_metric_v1¶
ADR-0368: External-competitor benchmark harness — wrapper-only architecture¶
0368-external-bench-wrapper-only
ADR-0369: Waterloo IVC 4K-VQA corpus ingestion for nr_metric_v1¶
0369-waterloo-ivc-4k-corpus-ingestion
ADR-0370 — LIVE-VQC MOS-corpus ingestion for nr_metric_v1¶
0370-live-vqc-corpus-ingestion
ADR-0371 — Shared CorpusIngestBase for MOS-corpus ingestion adapters¶
ADR-0372: HIP Batch-1 — integer_psnr_hip and float_ansnr_hip Real Kernels¶
0372-hip-batch1-integer-psnr-float-ansnr
ADR-0373: HIP Batch-2 — float_motion_hip Real Kernel¶
ADR-0374: Build-time-optional public APIs return -ENOSYS when disabled¶
0374-disabled-build-enosys-contract
ADR-0375: HIP batch-3 — float_moment_hip and float_ssim_hip real kernels¶
0375-hip-batch3-float-moment-float-ssim
ADR-0376: Fix silent error-swallow in Vulkan buffer-invalidate readback functions¶
0376-vulkan-void-to-int-buffer-invalidate
ADR-0377: HIP batch-4 — ciede_hip and integer_motion_v2_hip real kernels¶
0377-hip-batch4-ciede-motion-v2
ADR-0378: Per-picture CUDA streams must use CU_STREAM_NON_BLOCKING¶
0378-picture-stream-non-blocking
ADR-0379: libvmaf Symbol Visibility — Hide Internal Symbols with -fvisibility=hidden¶
0379-libvmaf-symbol-visibility
ADR-0380: FFmpeg libvmaf filter — HIP backend selector patch (0011)¶
0380-ffmpeg-patches-hip-backend-selector
ADR-0381: Fix Vulkan VIF Scale 2/3 Numerical Saturation (PR #718)¶
0381-vulkan-vif-scale-precision
ADR-0382: Y4M header parser — reject non-positive width or height before allocation¶
0382-y4m-neg-dimension-rejection
ADR-0383: K150K corpus scoring driver — parallel CPU worker redesign¶
0383-k150k-parallel-cpu-driver
ADR-0384: Switch shfmt pre-commit hook from binary download to Go-source build¶
0384-shfmt-src-hook-and-cache-key-fix
ADR-0385: Feature-extractor deduplication by provided-feature names¶
0385-fex-dedup-by-provided-feature
ADR-0386: ADR Number Collision Prevention — Hook + CI Gate + Helper Script¶
0386-adr-numbering-collision-prevention
ADR-0387: Migrate Renovate from self-hosted workflow to GitHub App¶
0387-renovate-github-app-migration
ADR-0388: Ingest BVI-CC as the second tiny-AI training corpus¶
ADR-0389: vmaf_tiny_v3 — wider/deeper mlp_medium tiny VMAF MLP¶
ADR-0390: vmaf_tiny_v4 — mlp_large arch (opt-in only; arch ladder stops here)¶
ADR-0391: ciede2000 Vulkan NVIDIA places=4 fork debt is a structural f32/f64 precision gap¶
0391-ciede-vulkan-nvidia-f32-f64-precision-gap
ADR-0392: vmaf-tune Phase D — per-shot CRF tuning¶
0392-vmaf-tune-phase-d-per-shot
ADR-0393: fr_regressor_v2 probabilistic head — deep-ensemble + conformal scaffold¶
0393-fr-regressor-v2-probabilistic
ADR-0394: Local sidecar training — on-host bias-correction model¶
ADR-0395: predictor stub-models policy¶
0395-predictor-stub-models-policy
ADR-0396: Video-temporal saliency extension to saliency_student_v1¶
ADR-0397: vmaf-tune Phase F — auto adaptive recipe-aware tuning¶
ADR-0398: MyTestCase upstream migration — partial port (golden-pinned files deferred)¶
0398-mytestcase-migration-partial-port
ADR-0399: vmaf-tune codec-adapter contract becomes a runtime contract (HP-1)¶
0399-vmaftune-codec-adapter-runtime-contract
ADR-0400: encoder-internal-stats capture (corpus expansion v1)¶
0400-encoder-internal-stats-capture
ADR-0401: libvmaf WebAssembly target — phased EXPERIMENT then GO¶
ADR-0402: MCP runtime v2 — UDS transport + real compute_vmaf binding¶
ADR-0403: mkdocs --strict validation policy — actionable carve-outs¶
0403-mkdocs-strict-gate-validation-policy
ADR-0404: Keep nightly.yml + fuzz.yml red until underlying bugs land¶
0404-nightly-fuzz-triage-keep-gates
ADR-0405: Wire OpenVINO NPU execution provider into the tiny-AI dispatch layer¶
ADR-0406: Defer SYCL ADM DWT group_load rewrite — divisibility blocker¶
0406-sycl-adm-dwt-group-load-deferral
ADR-0407: AdaptiveCpp as a second SYCL toolchain¶
0407-adaptivecpp-second-sycl-toolchain
ADR-0408: FFmpeg libvmaf filter — CUDA backend selector¶
0408-ffmpeg-libvmaf-cuda-backend-selector
ADR-0409: Automated CI gate for the ffmpeg-patches surface-sync rule (CLAUDE.md §12 r14)¶
0409-ffmpeg-patches-surface-gate
ADR-0410: ssimulacra2_cuda GPU module leak + per-scale malloc removal¶
0410-ssimulacra2-cuda-leaks-perf
ADR-0412: Fork-local release-artefact mirror scaffold for u2netp.pth (Apache-2.0)¶
0412-u2netp-fork-mirror-scaffold
ADR-0413: YouTube UGC corpus ingestion for nr_metric_v1¶
0413-youtube-ugc-corpus-ingestion
ADR-0414: Saliency-aware ROI for x265 / SVT-AV1 / libvvenc adapters¶
0414-saliency-roi-x265-svtav1-vvenc
ADR-0415: CAMBI SYCL port — closes last CUDA-to-SYCL parity gap¶
ADR-0416: VIF on-the-fly filter sync from Netflix upstream¶
0416-vif-upstream-onthefly-filter-sync
ADR-0417: Tiny-AI Netflix corpus training scaffold — draft PR registration¶
0417-tiny-ai-netflix-training-scaffold-pr
ADR-0418: Full upstream ADM + VIF-prescale sync (companion to PR #758 / ADR-0416)¶
0418-macos-test-recal-post-vif-sync
ADR-0419: Gate SVE2 build probe to non-Darwin hosts¶
ADR-0420: Metal backend runtime (T8-1b)¶
0420-metal-backend-runtime-t8-1b
ADR-0421: Metal first kernel — integer_motion_v2 (T8-1c)¶
0421-metal-first-kernel-motion-v2
ADR-0422: CLI HIP and Metal Backend Selectors¶
0422-cli-hip-metal-backend-selectors
ADR-0423: Metal IOSurface zero-copy import (T8-IOS)¶
0423-metal-iosurface-import-scaffold
ADR-0424: vmaf-tune benchmark consumes Phase-A corpora¶
0424-vmaf-tune-corpus-benchmark
ADR-0425: vmaf-roi-score saliency materialiser¶
0425-vmaf-roi-score-saliency-materialiser
ADR-0426: CHUG HDR corpus ingestion¶
0426-chug-hdr-corpus-ingestion
ADR-0427: Materialise CHUG HDR Features With Reference-Aligned Pairs¶
0427-chug-hdr-feature-materialisation
ADR-0428: vmaf-tune auto selects one winner¶
0428-vmaf-tune-auto-winner-selection
ADR-0429: testdata bench_perf is configurable¶
0429-testdata-bench-perf-portability
ADR-0430: Saliency RGB ingest and SSIMULACRA2 public docs¶
0430-saliency-rgb-ingest-and-ssimulacra2-docs
ADR-0431: Split CUDA and CPU Feature Passes for FR-from-NR Extraction¶
0431-fr-from-nr-cuda-feature-split
ADR-0432: High-Bit-Depth ROI-Score Mask Materialisation¶
0432-roi-score-high-bit-depth-mask
ADR-0433: CHUG Content Splits And HDR Audit¶
0433-chug-content-splits-and-hdr-audit
ADR-0434: CHUG Parquet Metadata Enrichment¶
0434-chug-parquet-metadata-enrichment
ADR-0435: PR-body pre-push validation hook¶
0435-pr-body-pre-push-validation
ADR-0436: MCP server backend-selector parity¶
0436-mcp-backend-selector-parity
ADR-0437: Metal public-header install and vmaf_metal_import_state declaration¶
0437-metal-public-header-install-and-import-state-declaration
ADR-0438: CLI parser short-option handler coverage invariant¶
0438-cli-parse-short-opt-handler-coverage
ADR-0444: Promote saliency_student_v2 to production default¶
0444-saliency-student-v2-production-promotion
ADR-0445: Persistent VkPipelineCache for Vulkan compute backend¶
0445-vulkan-pipeline-cache-persistence
ADR-0446: K150K/CHUG extractor passes HDR and HFR per-feature options¶
0446-extractor-hdr-and-hfr-feature-options
ADR-0447: Motion features under-report on HFR / 50p content¶
ADR-0448: Active upstream monitoring (no silent "wait" deferrals)¶
0448-active-upstream-monitoring-discipline
ADR-0451: Local dev-MCP container for live probing¶
ADR-0452: Port calculate_c_values_row to AVX-512 and NEON¶
0452-cambi-calculate-c-values-avx512-neon
ADR-0453: PSNR enable_chroma option parity across all GPU backends¶
0453-psnr-enable-chroma-gpu-parity
ADR-0454: VIF CUDA shared-memory staging for horizontal and vertical filter passes¶
ADR-0455: KonViD-150k k150ka/k150kb split promotion into the MOS-head trainer¶
0455-k150k-split-trainer-promotion
ADR-0456: SSIMULACRA2 CUDA Blur: 3-Channel Kernel Fusion and V-Pass Transpose for Coalesced Access¶
0456-ssimulacra2-cuda-blur-fusion-transpose
ADR-0457: model/tiny/*.onnx blobs ≥1MB live in GitHub Releases, not git¶
0457-onnx-blobs-to-github-releases
ADR-0458: SYCL CAMBI queue-sync collapse + SSIM horizontal SLM staging¶
0458-sycl-cambi-ssim-slm-staging
ADR-0459: vmaf-tune panel/display-aware recommendation workstream¶
0459-vmaftune-panel-aware-recommendations
ADR-0460: Dispatch-strategy registry audit 2026-05-15¶
0460-dispatch-registry-audit-2026-05-15
ADR-0461: CLI validates positive dimensions and chroma-alignment on input videos¶
0461-cli-validate-dimensions-chroma
ADR-0463: ADM p-norm fast-path split and VIF scalar-fallback malloc hoist¶
0463-adm-p-norm-fast-path-vif-arm64-malloc-hoist
ADR-0464: CAMBI CUDA spatial-mask shared-memory tile¶
ADR-0466: mkdocs strict-mode pre-push hook¶
0466-mkdocs-strict-pre-push-hook
ADR-0467: SSIMULACRA2 AVX-512 + NEON IIR Blur / picture_to_linear_rgb ULP Audit — Clean Close¶
0467-ssimulacra2-avx512-neon-ulp-audit
ADR-0468: HIP float_adm real kernel (ninth HIP consumer)¶
0468-hip-float-adm-real-kernel
ADR-0469: float_psnr HIP twin — wire enable_chroma option¶
0469-float-psnr-hip-enable-chroma
ADR-0470: Disk-Persistent VkPipelineCache for Vulkan Feature Extractors¶
ADR-0471: Add enable_chroma to integer_psnr_hip (chroma parity with CUDA/SYCL/Vulkan twins)¶
0471-integer-psnr-hip-enable-chroma
ADR-0480: Bootstrap Score Name-Builder Deduplication¶
0480-bootstrap-name-builder-dedup
ADR-0481: ADM p-norm Parameter Hardcoded at 3.0 — Deferral Decision¶
0481-adm-p-norm-hardcoded-deferral
ADR-0482: Expand vmaf_pre FFmpeg filter device strings to match full VmafDnnDevice enum¶
ADR-0483: Extract shared vmaf_gpu_dispatch_parse_env tokenizer¶
ADR-0484: Extend kernel-scaffolding.md with HIP and Metal lifecycle contract¶
0484-kernel-scaffolding-hip-metal-doc
ADR-0485: Extract VMAF_LIFECYCLE_ZERO macro to eliminate struct-init duplication across HIP and Metal kernel templates¶
0485-kernel-lifecycle-zero-dedup
ADR-0486: Codify the three-function GPU backend context-API contract in docs¶
ADR-0487: Wire adm_min_val option into integer_adm GPU backends¶
0487-integer-adm-min-val-gpu-parity
ADR-0488: Shared once-snapshot helper for GPU dispatch env variables¶
0488-gpu-dispatch-env-shared-snapshot
ADR-0489: CAMBI SYCL — Replace GPU-to-GPU q.wait() Calls with Event Chains (SY-1)¶
ADR-0490: float_ms_ssim Metal port¶
ADR-0491: Add dedicated docs/metrics/motion.md reference page¶
0491-motion-dedicated-doc-page
ADR-0492: Promote Vulkan VIF g/sv_sq Computation to double Precision¶
0492-vulkan-vif-shader-fp64-g-computation
ADR-0493: Test YUV fixtures must be md5-verified, not just present-by-name¶
0493-test-yuv-fixture-md5-verification
ADR-0494: Restore the non-golden Python test suite to green¶
0494-python-test-suite-restoration
ADR-0495: MCP server probe-driven bug-fix cluster (2026-05-17)¶
ADR-0496: Default to the vmaf-dev-mcp container for all vmaf / vmaf-tune / ai / MCP work¶
0496-prefer-dev-mcp-container-rule
ADR-0497: vmaf-tune BBB end-to-end bug cluster (compare / ladder / report)¶
0497-vmaf-tune-bbb-e2e-bug-cluster
ADR-0498: vmaf-tune BBB end-to-end v2 bug cluster + explicit-backend semantics¶
0498-vmaf-tune-bbb-e2e-v2-bug-cluster
ADR-0499: vmaf-tune ladder must decode container/Y4M references before scoring¶
0499-vmaf-tune-ladder-reference-decode-v3
ADR-0500: VIF log2 LUT Shrink and Gaussian Filter Cache¶
0500-vif-perf-lut-shrink-and-filter-cache
ADR-0501: vmaf-tune ladder cross-resolution scoring + report degraded flag¶
0501-vmaf-tune-bbb-e2e-v4-bug-cluster
ADR-0502: ADM decouple gather prefetch (Approach B)¶
0502-adm-decouple-gather-prefetch
ADR-0503: vif_subsample_rd_8_avx512 Loop Fission to Reduce ZMM Register Spill¶
0503-vif-subsample-rd-8-loop-fission
ADR-0504: AVX-512F port of float separable convolution scanlines¶
0504-float-convolution-avx512-port
ADR-0505: vmaf-tune ladder container-source encode + full per-CRF sample cloud¶
0505-vmaf-tune-bbb-e2e-v5-bug-cluster
ADR-0506: vmaf-tune ladder duration clipping, raw-YUV cross-res decode, CLI exit code¶
0506-vmaf-tune-bbb-e2e-v6-bug-cluster
ADR-0508: vmaf-tune ladder pass-1 stats argv honours --duration¶
0508-vmaf-tune-ladder-pass1-stats-duration-clip
ADR-0509: vmaf-tune compare auto-probes container-source framerate / duration¶
0509-vmaf-tune-compare-container-source-framerate-probe
ADR-0510: CHUG re-extract VMAF-alignment fix — FR-corpus guard on the FR-from-NR extractor¶
0510-chug-extract-vmaf-alignment-fr-from-nr-guard
ADR-0511: MCP backend probe, default allowlist, and vmaf-tune ladder --score-backend (2026-05-18)¶
0511-mcp-backend-probe-allowlist-and-ladder-backend
ADR-0512: Vulkan VIF Two-Variant Compute Shader (fp32 Auto-Fallback)¶
0512-vulkan-vif-two-variant-shader
ADR-0513: Expose --scene-threshold + --max-shot-duration; render 1-shot timeline chart¶
0513-per-shot-scene-threshold-and-1-shot-chart
ADR-0514: dev-MCP container exposes every host GPU backend (CUDA + SYCL + Vulkan + HIP)¶
0514-dev-container-full-backend-exposure
ADR-0515: Portable temp-path setup for test_public_api_score on MinGW64¶
0515-test-public-api-score-mingw64-temp-path
ADR-0516: vmaf-tune compare multi-target rate-quality sweep (schema v2) (2026-05-18)¶
0516-vmaf-tune-compare-rate-quality-sweep
ADR-0517: Repair MCP run_benchmark tool — drop per-call args, inject VMAF_BIN, guard set -u in bench_all.sh¶
ADR-0518: Tiny-model loader accepts external-data and feature-vector ONNX¶
0518-tiny-model-loader-external-data-and-feature-rank
ADR-0519: Implement vmaf_hip_import_state to unblock --backend hip¶
0519-hip-import-state-implementation
ADR-0520: Wire vmaf --no-reference through to the scoring path¶
ADR-0521: MSVC portability gating — vif_avx512.c noinline/noclone + yuv_input.c S_ISREG/fstat¶
0521-msvc-posix-gating-vif-avx512-yuv-input
ADR-0522: --tiny-codec / --tiny-preset / --tiny-crf populate codec one-hot block¶
0522-tiny-codec-preset-crf-cli-flags
ADR-0523: Register vmaf_fex_integer_motion_hip in the extractor list¶
0523-hip-integer-motion-extractor-registration
ADR-0524: Tiny-model loader accepts symbolic batch dim¶
0524-tiny-model-loader-symbolic-batch-dim
ADR-0525: Extract run_cmd subprocess helper into aiutils¶
ADR-0526: Add enable_lcs and enable_chroma to float_ms_ssim SYCL twin¶
0526-ms-ssim-sycl-enable-lcs-parity
ADR-0527: Accept pre-extracted BVI-DVC YUVs via --bvi-dir¶
0527-bvi-dvc-pre-extracted-dir-input
ADR-0528: test_cli_parse_long_only_args stderr-pipe drain + error() non-fatal fallback¶
0528-cli-parse-test-stderr-pipe-drain-and-error-fallback
ADR-0529: Replace /dev/dri/by-path bind with whole /dev/dri bind in dev container¶
0529-dev-container-whole-dri-bind
ADR-0530: HIP feature-extractor flag promotion and HIP_DEVICE picture-buffer type¶
0530-hip-feature-flag-promotion-and-picture-buffer
ADR-0531: Per-shot plan emits bitrate_kbps + chart shows last shot¶
0531-per-shot-bitrate-kbps-and-last-shot-chart
ADR-0532: tune-per-shot tolerates read-only CWD when writing segments¶
0532-per-shot-segments-readonly-cwd
ADR-0533: Full HIP feature-extractor registration sweep¶
0533-hip-all-extractors-registration-sweep
ADR-0534: vmaf-tune compare emits + renders rate-quality curve from per-iteration bisect samples¶
0534-compare-rate-quality-chart-from-bisect-samples
ADR-0535: Atomic ADR Number Allocator with Cross-Branch Claim¶
ADR-0536: Per-shot predicate threads bitrate_kbps through bisect sidecar (PR #1290 follow-up)¶
0536-per-shot-bitrate-predicate-chain
ADR-0537: HIP integer VIF kernel crash fix — filter upload, bounds, HtoD staging¶
0537-hip-integer-vif-kernel-fix
ADR-0538: vmaf-tune compare ships premium-archival --target-vmafs default + bisect reaches VMAF 95+¶
0538-premium-vmaf-target-defaults-and-bisect
ADR-0539: integer ADM HIP kernels — real implementation replacing weak HSACO stubs¶
ADR-0540: dev-MCP container FFmpeg ships AV1 (SVT/aom) + VVenC + hardware encoders (NVENC, oneVPL/QSV, AMF)¶
0540-dev-container-ffmpeg-av1-and-hwaccel-encoders
ADR-0541: Pin dev-MCP container Intel NEO + ROCm runtimes to versions matching the host kernel¶
0541-dev-container-sycl-hip-runtime-fix
ADR-0542: Full GPU backend plumbing in the dev-mcp container¶
0542-dev-container-full-gpu-plumbing
ADR-0543: ADR-0498 enforcement hardening — distinct exit code + structured JSON error + per-feature gate¶
0543-adr-0498-enforcement-hardening
ADR-0544: deduplicate feature_extractor_list[] registrations¶
0544-fix-feature-extractor-list-dedup
ADR-0545: Wire or delete dead Vulkan/Metal feature-extractor source files¶
0545-wire-or-delete-dead-extractor-files
ADR-0546: Audit bundle — Vulkan motion dispatch wiring, saliency hard-fail, model-card placeholder¶
0546-audit-bundle-vulkan-saliency-modelcard
ADR-0547: VMAF_<NAME>_DIR env-var overrides for ai/scripts corpus paths + drop cli.py.bak¶
ADR-0548: vmaf-tune tune-per-shot accepts container sources directly; compare gains --no-bisect mode¶
0548-vmaf-tune-full-file-and-no-bisect
ADR-0549: Audit cleanup bundle 2¶
ADR-0550: Auto-resize input plane to NR tiny-model dims + --tiny-resize flag¶
ADR-0551: VCQ-223 LocalExplainer CI timeout — root cause and fix path¶
0551-local-explainer-hang-diagnosis
ADR-0552: Deterministic wavefront reduction for integer_vif_hip horizontal kernels¶
0552-hip-integer-vif-deterministic-reduce
ADR-0556: Python / MCP / AI silent-fallback audit fixes (2026-05-18)¶
0556-python-mcp-ai-audit-2026-05-18
ADR-0559: Feature Coverage Audit — Add speed_chroma + speed_temporal to Extraction Scripts (HDR-model prep)¶
ADR-0561 — Widen HIP gfx_targets hardcoded fallback¶
0561-hip-gfx-targets-fallback-widening
ADR-0562: VCQ-223 LocalExplainer hang fix — cap neighbor_samples in test runner¶
ADR-0563: HIP extractor audit — verification of 9 remaining scaffold claims¶
0563-hip-extractor-audit-verification
ADR-0564: Real integer_ssim GPU kernels (CUDA, HIP, SYCL) — replace silent float_ssim substitution¶
0564-integer-ssim-gpu-real-kernels
ADR-0565: Continuous Feature-Mix Evaluation Pipeline (predictor-bench)¶
0565-continuous-feature-mix-eval-pipeline
ADR-0566 — HIP VIF per-feature parity gate: places=4 (supersedes ADR-0537 §follow-up)¶
0566-hip-vif-per-feature-places4-gate
ADR-0567: Real On-Device GPU Kernels for speed_chroma and speed_temporal (4 Backends)¶
0567-speed-chroma-temporal-real-gpu
ADR-0568: Default sycl_icpx_aot_targets to full Intel arch list¶
0568-sycl-icpx-aot-targets-default
ADR-0569: SDK / Tool Version Bumps — 2026-05-18¶
0569-sdk-version-bumps-2026-05-18
ADR-0573: Dev-mcp container — ubuntu:26.04 + CUDA 13.2 + hipcc + ocloc¶
0573-dev-container-ubuntu-26-04-with-cuda-13-2
ADR-0574: CUDA Twins for HDR-Model Features — Phase 1 (aim, adm3)¶
0574-hdr-features-cuda-twins-phase-1
ADR-0575: Fix yuv_input.c stat compat — include-order and _MSC_VER guard¶
0575-windows-msvc-stat-compat-include-order
ADR-0576: ffmpeg-patches n8.1.1 full-feature-exposure sync¶
0576-ffmpeg-patches-n811-full-feature-exposure
ADR-0577: vmaf-tune bisect decode concurrency cap and aggressive workdir cleanup¶
0577-vmaftune-bisect-concurrency-cap-and-aggressive-cleanup
ADR-0578: Hoist VIF scratch buffer from per-frame allocation to VifState¶
0578-vif-scratch-buf-hoist-to-vifstate
ADR-0579: vmaf-tune auto --execute — Phase F real encode/score execution mode¶
0579-vmaf-tune-auto-execute-mode
ADR-0580: float_ansnr enable_chroma option¶
0580-float-ansnr-enable-chroma
ADR-0581: Add enable_chroma option to integer_vif¶
0581-integer-vif-enable-chroma
ADR-0582: MS-SSIM enable_db and clip_db option parity on CUDA and SYCL backends¶
0582-ms-ssim-enable-db-clip-db-gpu-parity
ADR-0583: Add enable_chroma option to the float_ms_ssim extractor¶
0583-float-ms-ssim-enable-chroma
ADR-0584 — float_moment SVE2 port¶
ADR-0585: Add enable_chroma option to psnr_hvs_vulkan¶
0585-psnr-hvs-vulkan-enable-chroma
ADR-0586: Introduce integer_adm_vulkan.c as canonical Vulkan integer ADM extractor¶
0586-integer-adm-vulkan-canonical-rename
ADR-0587: Real Metal Compute Kernels for CAMBI¶
ADR-0588: vmaf-tune executor — per-shot and saliency execution modes¶
0588-vmaf-tune-executor-pershot-saliency
ADR-0589: Metal float_ssim option parity — enable_lcs, enable_db, clip_db, scale¶
ADR-0590: Wire enable_db / clip_db into the CUDA and SYCL MS-SSIM twins¶
0590-ms-ssim-enable-db-gpu-parity
ADR-0591: Restore rfe_hw_flags per-frame bitmask cache after PR #1067 clobber¶
0591-restore-rfe-hw-flags-cache
ADR-0592: Remove float_vif_score weak HSACO stub now that real HIP kernel ships¶
0592-hip-float-vif-stub-removal
ADR-0593: HIP integer_moment kernel — register real HSACO blob alongside psnr / psnr_hvs¶
0593-hip-psnr-moment-kernels-real
ADR-0594: Per-kernel hip_cu_extra_flags dispatch — disable FMA contraction for ssimulacra2_blur HIP HSACO¶
0594-hip-ssimulacra2-blur-fp-contract-off
ADR-0595: Real two-pass argv for all 14 codec adapters¶
0595-codec-adapter-two-pass-real
ADR-0596: Delete orphan and duplicate HIP/CUDA translation units¶
ADR-0597: integer_vif is luma-only across every backend; CUDA enable_chroma is a documented no-op¶
0597-integer-vif-luma-only-clarification
ADR-0598: vmaf-tune workdir relocation — disk-space preflight + VMAFTUNE_WORKDIR env var¶
0598-vmaftune-workdir-relocation
ADR-0599: Cross-Backend Parity Audit — Full Extractor Matrix (2026-05-18)¶
0599-cross-backend-parity-matrix-2026-05-18
ADR-0600: Port upstream USE_DIRECT_READ zero-copy input path (Netflix/vmaf@30a6e2a8d)¶
0600-upstream-port-direct-read
ADR-0601: vmaf-tune QSV/AMF hardware-device init + encoder probe size fix¶
0601-vmaftune-qsv-amf-hw-init-and-probe-fix
ADR-0602: macOS SIGSEGV in vmaf_write_output — pic_cnt underflow + missing vmaf NULL guard¶
0602-macos-vmaf-write-output-segv
ADR-0603: Ubuntu 26.04 (Resolute Raccoon) fallout fixes — CUDA 13.2, Python 3.14, apt renames¶
0603-ubuntu-26-04-fallout-fixes
ADR-0604: Add Renovate customManager for ROCm apt-repo tracking¶
ADR-0605: Renovate customManagers for all dev/Containerfile pinned dependencies¶
0605-renovate-custommgr-dev-image
ADR-0606: macOS SIGSEGV deep-fix in output.c writers (PR #1403 follow-up)¶
0606-macos-vmaf-write-output-segv-deep-fix
ADR-0607: vmaf-tune compare: decode reference YUV once for the entire run¶
0607-vmaftune-shared-ref-yuv-decode-once
ADR-0608: Commit .zed/ project configuration for Zed editor parity with .vscode/¶
0608-zed-editor-project-config
ADR-0612: Tiny-AI training on the original Netflix VMAF training corpus¶
0612-tiny-ai-netflix-training-scaffold-2026-05-19
ADR-0613: Dynamic Optimizer — Joint Shot-Boundary + CRF Co-Optimisation¶
ADR-0614: Per-Shot ABR Rendition Selection¶
ADR-0615: Fast NR Pre-Scoring for CRF Bisect Acceleration¶
ADR-0616: VMAF NEG Integration into vmaf-tune¶
ADR-0617: Cross-Shot Complexity Weighting and Title-Level Quality Constraints¶
0617-cross-shot-complexity-weighting
ADR-0618: Content-Aware Classifier for Encoder Routing¶
ADR-0620: Scaffold audit P0 — three silent-correctness fixes¶
0620-scaffold-audit-p0-silent-correctness-fixes
ADR-0621: Scaffold Audit P3 — six cleanup items + state drift¶
0621-scaffold-audit-p3-cleanup
ADR-0622: VMAF NEG Integration Implementation¶
0622-vmaf-neg-integration-impl
ADR-0623: Scaffold audit P2 — half-finished implementation fixes¶
0623-scaffold-audit-p2-half-finished
ADR-0624: Fast NR Pre-Scoring Implementation (ADR-0615 impl)¶
ADR-0626: SSH-into-runner debug session on macOS CI failure via tmate¶
0626-macos-ci-tmate-debug-on-failure
ADR-0628: Remote-aware ADR number allocator — cross-worktree collision prevention¶
0628-adr-allocator-remote-aware
ADR-0634: MCP P0 fixes — isError spec bug, probe_backend, vmaf_version, vmaf_score_encoded¶
0634-mcp-p0-iserror-and-probe-version-encoded
ADR-0635 — CI Warning Omnibus (2026-05-19)¶
0635-ci-warning-omnibus-2026-05-19
ADR-0636: Tombstone: ADR number claimed from the allocator and never used¶
0636-allocator-claim-released-without-record
ADR-0637: Fix 5 master CI failures — MCP smoke syntax, coverage floor, and job timeouts¶
ADR-0638: MCP P1 surface — vmaf-tune integration, list_extractors, describe_model, progress notifications¶
0638-mcp-p1-vmaftune-extractors-models-progress
ADR-0639: Scaffold-audit P1 — backend precheck, HIP picture, mobilesal bpc, DNN multi-output¶
0639-scaffold-audit-p1-feature-plumbing-fixes
ADR-0640: Tiny-AI training on the original Netflix VMAF training corpus (2026-05-20 scaffold iteration)¶
0640-tiny-ai-netflix-training-scaffold-2026-05-20
ADR-0641: Harden dev-container encoder probes and compare reports¶
0641-dev-container-encoder-probe-hardening
ADR-0642: AI refresh defaults use current fork full-feature extractors¶
0642-ai-refresh-full-feature-defaults
ADR-0643: vmaf-tune Reports Carry Encoder Profiles¶
0643-vmaf-tune-encoder-profile-contract
ADR-0644: Add vmaf-tune codec runtime variants¶
0644-vmaf-tune-codec-runtime-variants
ADR-0645: Thread integer ADM p-norm through SIMD callbacks¶
ADR-0646: Route Attached DNN Multi-Output Tensors¶
0646-dnn-attached-multi-output
ADR-0647: Refresh fr_regressor_v1 from the 2026-05-20 Netflix feature table¶
0647-ai-fr-regressor-v1-refresh-20260520
ADR-0648: CHUG HDR MOS Trainer Entry Point¶
0648-mos-head-feature-jsonl-chug-id
ADR-0649: CHUG HDR Wide MOS Feature Schema¶
0649-chug-hdr-wide-mos-feature-schema
ADR-0650: Add a Signal-Mix Audit CLI¶
ADR-0651: Preserve CHUG HDR Metadata On Feature Rows¶
ADR-0652: Add CHUG Visual-Signal Primitives¶
0652-chug-visual-signal-primitives
ADR-0653: CHUG Display Profile Training¶
0653-chug-display-profile-training
ADR-0654: Predictor Preserves Saliency Signals¶
0654-predictor-saliency-signals
ADR-0655: Saliency Feature Materializer¶
0655-saliency-feature-materializer
ADR-0656: External-bench wrappers emit registry competitor keys¶
0656-external-bench-wrapper-schema
ADR-0657: Second-Opinion Feature Materializer¶
0657-second-opinion-feature-materializer
ADR-0658: Project modernization audit¶
0658-project-modernization-audit
ADR-0659: Modernization audit false-positive filter¶
0659-modernization-audit-false-positive-filter
ADR-0660: Tiny-AI extractors check DNN availability before model paths¶
0660-tiny-ai-disabled-runtime-gate
ADR-0661: AI run manifest provenance¶
0661-ai-run-manifest-provenance
ADR-0662: Vulkan Motion Lavapipe Parity¶
0662-vulkan-motion-lavapipe-parity
ADR-0663: MOS Label Materializer¶
ADR-0664: Install Windows CUDA directly in CI¶
0664-windows-cuda-toolkit-installer
ADR-0665: Fast-NR calibration quality guard¶
0665-fast-nr-calibration-quality-guard
ADR-0666: vmaf-tune report quick takeaways¶
0666-tune-report-quick-takeaways
ADR-0667: vmaf-tune score backend native priority¶
0667-vmaf-tune-score-backend-native-priority
ADR-0668: AI Derived Table Provenance¶
0668-ai-derived-table-provenance
ADR-0669: AI Corpus JSONL Provenance¶
0669-ai-corpus-jsonl-provenance
ADR-0670: AI Legacy Corpus Extraction Manifests¶
0670-ai-legacy-corpus-extraction-manifests
ADR-0671: U2NetP Mirror Exporter¶
ADR-0672: Saliency Materializer Temporal Controls¶
0672-saliency-materializer-temporal-controls
ADR-0673: Saliency Materializer Batch Manifest¶
0673-saliency-materializer-batch-manifest
ADR-0674: Second-Opinion Materializer Batch Manifest¶
0674-second-opinion-materializer-batch-manifest
ADR-0675: MOS Label Materializer Batch Manifest¶
0675-mos-label-materializer-batch-manifest
ADR-0676: MOS Corpus Adapter Manifests¶
0676-mos-corpus-adapter-manifests
ADR-0677: AI Dataset Fetch Manifests¶
0677-ai-dataset-fetch-manifests
ADR-0678: Shared AI Run Manifest Helper¶
ADR-0679: CI Draft Auto-Merge Gate¶
ADR-0680: Shared AI CLI Helper Pattern¶
ADR-0681: AI Script Bootstrap Helper¶
0681-ai-script-bootstrap-helper
ADR-0682: Tiny-AI Netflix corpus training scaffold — 2026-05-22 prep scope¶
0682-tiny-ai-netflix-training-scaffold-2026-05-22
ADR-0683: Replace banned functions in vendored MCP cJSON¶
0683-cjson-banned-function-remediation
ADR-0684: Pre-rebase worktree-drift guard¶
0684-pre-rebase-worktree-drift-guard
ADR-0685: Tiny-AI Netflix corpus training scaffold — 2026-05-27 prep scope¶
0685-tiny-netflix-training-scaffold-2026-05-27
ADR-0686: VMAFX Rebrand and Aggressive Modernization — Umbrella ADR¶
0686-vmafx-rebrand-aggressive-modernization
ADR-0687: CHUG HDR MOS head — held-out test partition validator¶
0687-chug-hdr-held-out-test-validator
ADR-0688: HIP wave32 carry-preserving int64 reduction for VIF and motion kernels¶
0688-hip-wave32-vif-motion-fix
ADR-0689: VMAFX CI Matrix Deduplication¶
ADR-0690: VMAFX Binary and AI Tool Aliases¶
0690-vmafx-binary-and-ai-aliases
ADR-0691: VMAFX Phase 1C — Drop Legacy Build Paths¶
0691-vmafx-drop-legacy-build-paths
ADR-0692: Bump C standard to C23 (VMAFX rebrand Phase 1D)¶
ADR-0694: Tighten clang-tidy enforcement + confirm sanitizers as required CI gates¶
0694-vmafx-lint-sanitizer-gates
ADR-0696: --netflix-compat flag for restoring legacy defaults¶
ADR-0698: VMAFX Production Dockerfile — Multi-Arch, Image Signing, SBOM¶
0698-vmafx-production-dockerfile
ADR-0699: VMAFX Helm Chart and Kubernetes Manifests with 3-Vendor GPU Device-Plugin Support¶
ADR-0700: VMAFX Repo Layout¶
ADR-0701: vmafx-server HTTP transport + observability foundation¶
0701-vmafx-cloud-native-redesign
ADR-0702: VMAFX Phase 4 — Multi-Language Modernization Foundation¶
0702-vmafx-phase4-language-modernization
ADR-0703: vmafx-server in Go — gRPC + HTTP, observability¶
ADR-0704: vmafx-mcp Go port (JSON-RPC, stdio transport)¶
ADR-0705: vmafx-tune Go port — Stage 1 (compare subcommand)¶
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¶
0708-vmafx-cpp23-internals-pilot
ADR-0709: VMAFX Phase 4b — Distributed Video-Quality, Encoding, and ML Platform¶
0709-vmafx-phase4b-distributed-platform
ADR-0710: VMAFX CI Slim-Down v2 — One Build per OS + State-of-the-Art Sanitizers¶
ADR-0711: vmafx-controller Phase 4b.1 — Job Queue, Node Registry, and Scheduler¶
ADR-0712: IDE config audit and refresh for multi-language post-rebrand VMAFX¶
0712-ide-config-multilang-refresh
ADR-0713: vmafx-node Go Worker Binary¶
ADR-0714: vmafx-operator kubebuilder skeleton + CRDs¶
ADR-0717: vmafx-node — ffmpeg latest-tag pinning + ffmpeg-patches bundled into Dockerfile¶
ADR-0719: vmafx-node rclone Integration — Remote-Asset Streaming Without Disk Materialisation¶
0719-vmafx-node-rclone-integration
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)¶
0723-cpp23-pilot-fex-ctx-vector
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¶
0727-cpp23-wave2-bump-and-dict
ADR-0728: Sunset Legacy Native Build Modes — Phase 4b.9 Follow-On¶
ADR-0729: C++23 Wave 3 — feature_name, picture_copy, model¶
ADR-0730: vmafx-tune Go port — Stage 2 (ladder subcommand)¶
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)¶
0733-cpp23-wave4-output-writers
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-0743: CUDA VIF filter1d ncu-driven performance optimizations¶
0743-cuda-vif-filter1d-ncu-driven-perf
ADR-0744: CUDA adm_cm __launch_bounds__(128, 8) register reduction (ms_ssim_decimate smem tiling reverted)¶
0744-cuda-ms-ssim-adm-cm-ncu-driven-perf
ADR-0746: integer_adm_cuda — emit integer_adm3 + integer_aim (parity with CPU)¶
0746-cuda-integer-adm3-aim-parity
ADR-0747 — CUDA extern "C" invariant for host-looked-up kernels¶
ADR-0749: Sunset VmafLegacyQualityRunner (float-path runner)¶
0749-sunset-legacy-vmaf-feature-extractor
ADR-0750: Hardware Measurement Verdict for PR perf/cuda-ms-ssim-decimate-adm-cm-ncu-driven¶
0750-cuda-ms-ssim-decimate-adm-cm-measure
ADR-0752 — Multi-Resolution Performance Benchmark Baseline¶
0752-perf-bench-multi-resolution
ADR-0753: Runtime Resolution-Aware CUDA Kernel Variant Dispatch¶
0753-cuda-resolution-aware-dispatch
ADR-0754 — CUDA SSIM vert_combine: __ldg() + __launch_bounds__ + pinned-host leak fix¶
0754-cuda-ssim-vert-combine-ldg-pinned-leak
ADR-0755: C++23 Wave 7 — drop orphan cpu.c, activate cpu.cpp¶
ADR-0756: CUDA F3 struct-by-value kernel audit (scope + dispatch order)¶
0756-cuda-f3-struct-by-value-audit
ADR-0757 — CUDA MS-SSIM ms_ssim_vert_lcs + ms_ssim_horiz: __ldg() + __launch_bounds__ (F3 fix #2)¶
0757-cuda-ms-ssim-vert-lcs-horiz-ldg
ADR-0759: HIP ADM — AdmBufferHip passed by pointer (F3 fix)¶
0759-hip-adm-buffer-by-pointer
ADR-0760: CUDA motion kernel multi-resolution ncu profiling methodology¶
0760-cuda-motion-ncu-multi-resolution
ADR-0761: C++23 Wave 8 — opt.cpp activation + read_json_model.cpp¶
0761-cpp23-wave8-opt-read-json-model
ADR-0762: CUDA CIEDE2000 8bpc/16bpc — __ldg() read-only cache routing (F3 fix)¶
ADR-0763 — CUDA adm_decouple kernels: __ldg() F3 fix¶
ADR-0764: psnr_hvs CUDA kernel — __ldg() + __restrict__ + __launch_bounds__(64)¶
0764-psnr-hvs-ldg-launch-bounds
ADR-0767: Phase 4b.8 — libvmaf C ABI Break for VMAFx v4.0.0¶
0767-phase-4b8-c-abi-break-scoping
ADR-0768: C++23 Wave 9 — picture_pool + gpu_picture_pool¶
ADR-0770: vmafx-tune Go port — Stage 4 (report subcommand)¶
0770-vmafx-tune-go-stage4-report
ADR-0771: SIMD twin coverage inventory and gap prioritisation¶
ADR-0772: Rename feature_extractor.c to feature_extractor.cpp¶
0772-feature-extractor-cpp-rename
ADR-0773: CUDA ADM decouple-inline — __ldg() F3 fix on active path¶
0773-cuda-adm-decouple-inline-ldg
ADR-0774: MCP server audit — path rename, subsample drop, schema drift, dead code¶
ADR-0775: DNN ORT Backend Audit Findings¶
ADR-0777: Thread-Safety Audit — CUDA / SYCL / HIP Backends¶
0777-thread-safety-audit-gpu-backends
ADR-0778: Picture pool / framesync lifecycle audit and targeted fixes¶
0778-picture-pool-framesync-audit
ADR-0779: eBPF FUSE read-path bypass for vmafx-node rclone mounts¶
ADR-0780: NOLINT Cluster Refactor — Slab Allocator, SYCL Stride, ADM Band-Size¶
ADR-0781: Sidecar online training — SGD + EMA + replay buffer¶
0781-sidecar-sgd-ema-online-trainer
ADR-0782: OpenTelemetry tracing and metrics schema for the VMAFX platform¶
ADR-0783: Kubernetes end-to-end integration test harness — kind + kuttl¶
0783-k8s-e2e-integration-test-harness
ADR-0784: AVX2 SIMD path for integer SSIM horizontal moment accumulation¶
ADR-0786: vmafx-operator Stage 2 — reconciler loops, webhook validation, per-controller RBAC¶
0786-vmafx-operator-stage2-reconcilers
ADR-0787 — libvmaf Public API Error-Path Consistency Audit¶
0787-libvmaf-api-error-path-audit
ADR-0788: Doxygen doc-comment and @thread-safety tags on public C-API¶
0788-doxygen-thread-safety-tags
ADR-0790: Containerfile layer optimization — merge apt layer, strip build artifacts, no-cache-dir pip¶
0790-containerfile-layer-optimization
ADR-0792: Env-var overrides for hardcoded YUV and testdata paths¶
0792-hardcoded-yuv-path-env-overrides
ADR-0793: Nightly Workflow Audit — TSan, Artifact Retention, Python Version¶
ADR-0794: Multi-Tenant Auth Gateway for vmafx-controller¶
0794-controller-multi-tenant-auth-gateway
ADR-0795: Clarify and harden VmafFeatureExtractor.prev_ref thread-safety invariant¶
ADR-0797: vmafx-server OpenAPI REST contract¶
ADR-0802: CI Runner Image Standardization — Pin ubuntu-latest to ubuntu-24.04¶
0802-ci-runner-image-standardization
ADR-0804: Add vmaf_context_get_backend — additive ABI introspection¶
ADR-0806: VmafFeatureDictionary caller-ownership contract¶
0806-feature-dictionary-ownership
ADR-0809: C++23 Wave 8 — CLI conversion (cli_parse.c → .cpp, vmaf.c → .cpp)¶
ADR-0810: ADR-0108 Six-Deliverables Compliance Audit (2026-05-29) + D3 Gap Fixes¶
0810-adr-0108-compliance-audit-2026-05-29
ADR-0811: Security hardening — CodeQL Go coverage + codeql-config¶
ADR-0812: Renovate — Go/Cargo grouping, schedule, and concurrent-PR cap¶
0812-renovate-go-rust-scheduling
ADR-0815: Distroless Dockerfiles for vmafx-operator and vmafx-node¶
0815-operator-node-distroless-dockerfiles
ADR-0819: PR-time CI gate for dev/Containerfile¶
ADR-0839: C++23 wave — shadow-identifier and implicit-cast cleanup¶
ADR-0840: Fix cu_state leak on import failure and gpu_dispatch_env TOCTOU¶
0840-gpu-dispatch-toctou-fence
ADR-0841: Environment variable reference page and canonical naming¶
ADR-0844: float_adm AVX2/AVX-512 F2+F3 — double-precision and FP-contraction¶
ADR-0845: CUDA motion — multi-frame SAD batching to reduce per-launch overhead¶
0845-cuda-motion-launch-overhead
ADR-0848: Per-Surface Documentation Compliance Audit — Session 2026-05-29¶
0848-per-surface-doc-compliance-audit
ADR-0852: Wire speed_chroma_hip and speed_temporal_hip into HIP Build and Dispatch¶
0852-hip-speed-extractor-wiring
ADR-0853: Remove dead debug-print macros from motion_avx2.c¶
0853-motion-avx2-remove-debug-macros
ADR-0854 — Direct AVX-512 parity tests for motion kernels¶
0854-motion-avx512-parity-tests
ADR-0858: C++23 conversion of gpu_dispatch_env.c¶
ADR-0860 — Re-include Vulkan FFmpeg patches as no-op shims for chain coherence¶
0860-ffmpeg-patch-chain-no-op-vulkan-shim
ADR-0861: Drop "and Claude (Anthropic)" from fork copyright lines¶
0861-vmafx-copyright-policy-drop-anthropic
ADR-0862: K150K extractor — .done vs parquet consistency check on restart¶
0862-k150k-crash-restart-row-loss-consistency-check
ADR-0865: Sunset ANSNR — drop ansnr / float_ansnr feature extractors¶
0865-ansnr-sunset-pre-vmaf-metric-drop
ADR-0866: Wire markdownlint-cli2 into make lint + pre-commit + CI¶
0866-wire-markdownlint-into-lint-pipeline
ADR-0867: Tombstone: run the semgrep-local pre-commit hook serially¶
0867-precommit-semgrep-serial-execution
ADR-0868: GPU backend kernel parity-test coverage gap-fill¶
0868-gpu-backend-kernel-coverage
ADR-0869: Sanitizer-Pass Cleanup — CAMBI Option-Type Mismatch and AVX{2,512} ADM Signed-Shift UB¶
ADR-0870: Helm chart values.schema.json + dev-MCP Containerfile rebuild audit¶
0870-helm-values-schema-and-container-rebuild-audit
ADR-0871: SSIM SIMD dispatch installation must be pthread_once-guarded¶
0871-ssim-dispatch-pthread-once
ADR-0872: POSIX I/O EINTR-retry + return-value audit on fork-added C¶
ADR-0873: ARM64 NEON bit-exactness audit — -ffp-contract=off carve-out scope¶
0873-arm64-neon-bit-exactness-audit
ADR-0874: Name magic numbers in fork-added C surfaces (CERT INT07-C closeout pass 1)¶
0874-magic-number-audit-cert-int07c
ADR-0875: GitHub Actions hardening audit (2026-05-30)¶
0875-github-actions-audit-2026-05-30
ADR-0876: Adopt <inttypes.h> PRI macros for fixed-width integer printf formatting¶
0876-printf-format-portability-pri-macros
ADR-0877: Error-code consistency audit — fork-added MS-SSIM decimate dispatcher¶
0877-error-code-consistency-audit
ADR-0878: Trivy container scan baseline — production images run as non-root¶
0878-trivy-container-scan-baseline
ADR-0879: Python dependency freshness sweep (2026-05-30)¶
0879-python-dep-freshness-2026-05-30
ADR-0880: Remove unreferenced testdata debug scripts and orphan snapshot¶
0880-unused-testdata-debug-scripts-cleanup
ADR-0881: Coverage-overrides audit — tighten template coverage floor¶
0881-coverage-overrides-audit-2026-05-30
ADR-0882: Fuzz target audit — JSON model + DNN sidecar harness expansion¶
0882-fuzz-target-audit-json-model-sidecar
ADR-0883: HIP kernel parity-test coverage round 2¶
0883-hip-kernel-coverage-round2
ADR-0884: SYCL kernel coverage round 2 — five additional CPU-vs-SYCL parity gates¶
0884-sycl-kernel-coverage-round2
ADR-0886: CUDA kernel parity test coverage — round 2 gap-fill¶
0886-cuda-kernel-coverage-round2
ADR-0887: Reject JSON models whose per-feature arrays disagree on length¶
0887-vmaf-model-slopes-feature-mismatch-validation
ADR-0888: Pyright strict audit of fork-local Python packages¶
ADR-0889: Vendored libsvm 3.24 audit — close header-row-ordering oob, document upstream-version policy¶
ADR-0890: CI concurrency + cost audit follow-up to PR #301¶
0890-ci-concurrency-cost-audit
ADR-0891: SIMD bit-exactness round-2 — unify SSIMULACRA 2 colour-matrix on FMA, extend -fp-model=precise to libvmaf_feature_static_lib¶
0891-simd-bit-exact-round2-fmaf-libvmaf-feature-icx
ADR-0892: Conventional-Commits coverage + Changelog-fragment section hygiene¶
0892-conventional-commits-and-changelog-fragment-hygiene
ADR-0893: Pre-commit config audit — 2026-05-30¶
0893-pre-commit-audit-2026-05-30
ADR-0899: Bash strict-mode + trap-cleanup sweep across in-tree shell scripts¶
ADR-0901: Governance file audit — add GOVERNANCE + MAINTAINERS, expand CODEOWNERS, document ADR-0108 in CONTRIBUTING¶
ADR-0902: Signing and attestation audit — close residual gaps (2026-05-30)¶
0902-signing-and-attestation-audit
ADR-0903: Wire Codecov upload into the existing Coverage Gate jobs¶
ADR-0904: Pin cargo-machete ignore entries for bindgen / cbindgen build dependencies¶
0904-cargo-machete-ignore-build-deps
ADR-0905: .gitignore + .github/workflows/ staleness audit (2026-05-30)¶
0905-gitignore-and-workflow-audit
ADR-0907: Wall-clock perf regression gate over the multi-resolution baseline¶
0907-perf-regression-gate-wall-clock
ADR-0908: Slow-test audit (2026-05-30) — no >30 s tests found; install slow marker as a future gate¶
0908-slow-test-audit-2026-05-30
ADR-0910: Project-wide codespell config + sweep policy¶
ADR-0911: __init__.py export-completeness audit — __all__ + SPDX headers across fork-added Python packages¶
0911-init-py-export-completeness-audit
ADR-0912: Pixel-format edge coverage at the libvmaf unit-test layer¶
0912-pixel-format-edge-coverage
ADR-0913: Changelog fragment renderer — splice contract is ^## \[, not ^##¶
0913-changelog-renderer-splice-contract
ADR-0914: Unified Python test orchestrator (nox at repo root)¶
0914-unified-python-test-orchestrator
ADR-0915: Enable clang-tidy modernize-* family with curated opt-outs¶
0915-clang-tidy-modernize-sweep
ADR-0917: cargo-deny supply-chain policy enforcement¶
0917-cargo-deny-supply-chain-policy
ADR-0918: LLVM IR diff harness for bit-exact SIMD paths¶
ADR-0922: Aggressive coverage ratchet + per-PR coverage-delta gate¶
0922-coverage-ratchet-aggressive
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-0925: Generic in-memory registry for vmafx-controller subsystems¶
ADR-0926: Parquet schema v2 — canonical column order, zstd-3, schema metadata¶
ADR-0927: OpenTelemetry traces + metrics — Phase 1 pilot in vmafx-controller¶
0927-opentelemetry-traces-metrics-phase1
ADR-0928: VmafPicture v2 — explicit per-backend GPU state¶
0928-vmaf-picture-v2-explicit-backend-state
ADR-0929: Rust vmafx safe binding crate — Phase 1 scaffold¶
0929-rust-safe-binding-scaffold
ADR-0930: Ship NetworkPolicy default-deny + Pod Security Standards "restricted" in the VMAFX Helm chart¶
ADR-0931: MCP server — replace subprocess delegation with direct cgo (Phase 1)¶
0931-mcp-cgo-direct-replace-subprocess
ADR-0932: iter.Seq[T] companion APIs for single-pass Go collections¶
ADR-0933: gRPC streaming for multi-frame scoring (ScoreStream)¶
0933-grpc-streaming-multi-frame-scoring
ADR-0934: Migrate user-input dataclass configs to pydantic v2 BaseModel¶
0934-dataclass-to-pydantic-configs
ADR-0935: Wrap multi-step Go cleanup paths with errors.Join; standardise slog error keys¶
0935-go-errors-join-slog-audit
ADR-0936: Final os.path → pathlib.Path sweep + ruff PTH guard¶
ADR-0937: mkdocs ADR nav — per-hundred bucket layout + auto by-tag indexes¶
0937-mkdocs-nav-decade-buckets
ADR-0938: Feature-extractor coverage round 2 — seven CPU-side test executables¶
0938-feature-extractor-coverage-round2
ADR-0939: Skills library expansion — MCP, k8s, audit, bisect consolidation¶
ADR-0945: HIP kernel parity-test coverage round 3¶
0945-hip-kernel-coverage-round3
ADR-0946: SYCL kernel coverage round 3 (float family + PSNR-HVS)¶
0946-sycl-kernel-coverage-round3
ADR-0947: CUDA kernel parity coverage — round 3 (float-path twins + ssimulacra2)¶
0947-cuda-kernel-coverage-round3
ADR-0948: Feature-extractor coverage round 3 — targeted unit tests for low-coverage files¶
0948-feature-extractor-coverage-round3
ADR-0949: HIP motion3 parity test skips cleanly when HIPCC kernels are not built¶
0949-hip-motion3-parity-enosys-skip
ADR-0950: Fix symmetric "adm" vs "adm_hip" feature-name bug in test_hip_adm_parity and add ENOSYS skip¶
0950-hip-adm-parity-feature-name-and-enosys-skip
ADR-0951: GitHub Actions custom-action and reusable-workflow audit¶
0951-github-actions-custom-audit
ADR-0952: Push test coverage on vendored libsvm + IQA paths the fork uses¶
0952-test-vendored-libsvm-iqa-coverage
ADR-0953: Doxygen public-API build is warning-clean¶
ADR-0954: Host-only unit test for shared GPU dispatch runtime¶
0954-gpu-runtime-coverage-test
ADR-0955: Fix two latent bugs in upstream-mirror compat/python-vmaf/ (scanf width handling + ProcessRunner locale forcing)¶
0955-compat-python-vmaf-scanf-locale-bugs
ADR-0956: CUDA kernel parity coverage — round 4 (last 5 uncovered kernels)¶
0956-cuda-kernel-coverage-round4
ADR-0957: SYCL kernel coverage round 4 (float_moment + SpEED + SSIMULACRA2)¶
0957-sycl-kernel-coverage-round4
ADR-0958: HIP kernel parity-test coverage round 4¶
0958-hip-kernel-coverage-round4
ADR-0959: Metal kernel parity coverage round 4 — closeout¶
0959-metal-kernel-coverage-round4-closeout
ADR-0960: GPU runtime error-path leak fixes — round 25 (A.1 + A.2 + A.3)¶
0960-gpu-runtime-error-path-leaks-round25
ADR-0961: Controller queue — roll back PullWork on post-update Get failure (round-25 audit B.1)¶
0961-queue-pullwork-rollback-on-get-failure
ADR-0962: Controller fixes — implement StreamJobs snapshot and add reaper stop signal (round-25 audit B.3 + B.4)¶
0962-controller-streamjobs-and-reaper-stop
ADR-0963: ai/src: guard NaN propagation in eval + tune (round-25 audit C.1 + C.2)¶
0963-ai-nan-propagation-guards-round25
ADR-0964: Implement speed_internal.c and wire speed_{chroma,temporal}_{hip,sycl}¶
0964-implement-speed-internal-and-wire-gpu-speed-extractors
ADR-0965: CUDA SpEED TU repair — align with current CudaFunctions table (closes T-CUDA-SPEED-TU-REPAIR-2026-05-31)¶
ADR-0966: Fix dev/Containerfile post-ADR-0700 libvmaf → core paths (Round 26 audit C.1)¶
0966-dev-containerfile-libvmaf-rename
ADR-0967: MCP HTTP transport security — add auth + body limit + safer bind default (Round 26 audit A.1)¶
0967-mcp-http-transport-security-hardening
ADR-0968: CI scripts — rebrand-proof assertion-density grep + tempfile EXIT trap in changelog concat (Round 26 audit D.1 + D.2)¶
0968-ci-scripts-rebrand-proof-and-tempfile-trap
ADR-0969: Helm chart — add seccompProfile default and fix node-deployment image helper (Round 26 audit B.1 + B.3)¶
0969-helm-seccomp-default-plus-node-image-helper
ADR-0970: test_gpu_picture_pool.c: remove unused malloc + dead code (Round 27 audit D.3 + D.4)¶
0970-test-gpu-picture-pool-cleanup
ADR-0971: Test suite: NULL-check malloc in 3 test files (Round 27 audit D.1)¶
0971-test-unchecked-malloc-sweep
ADR-0972: Public headers — replace ISO-reserved __VMAF_*__ include guards with LIBVMAF_*_H (Round 27 audit A.1, SEI CERT DCL37-C)¶
0972-public-header-iso-reserved-guards
ADR-0973: Master CI fixes — Metal MS-SSIM fixture dim + ssimulacra2 icpx XYB bit-exactness¶
0973-master-ci-regressions-verified-2026-05-31
ADR-0975: Use NamedTemporaryFile in _run_vmaf_score to eliminate task-name collision risk¶
0975-mcp-server-tempfile-collision
ADR-0976: Remove dead has_norm sidecar fields and fix extract_string_array leak¶
0976-dnn-sidecar-dead-norm-fields-removal
ADR-0977: core/tools input-reader safety — Y4M malloc-NULL check, YUV/Y4M size_t cast, bench GPU-state leaks¶
0977-core-tools-input-reader-safety
ADR-0978: vmafx-server + pkg/score bug-audit — shutdown leak, gRPC Send-EOF surfacing, HTTP body cap, panic recovery¶
ADR-0979: Tombstone: narrowing markdownlint to five rules, rejected¶
0979-markdownlint-narrow-to-five-rules
ADR-0980: Markdown-lint full-ruleset discharge — content fixes + per-file scoped disables¶
0980-markdown-lint-full-ruleset-discharge
ADR-0982: GPU runtime bug audit — round 26 (init/teardown leak sweep)¶
0982-gpu-runtime-bug-audit-round-26
ADR-0983: gosec sweep — fix all findings + add CI gate¶
ADR-0984: Port Netflix Upstream May–Jun 2026 (5 commits)¶
0984-port-upstream-netflix-may-jun-2026
ADR-0985: SYCL parity divergence investigation — float_ssim + ssimulacra2 on Arc A380¶
0985-sycl-parity-divergence-2026-06-03
ADR-0986: Add PR trigger to docs.yml CI workflow¶
ADR-0987: AVX-512 path for float_moment feature extractor¶
ADR-0988: Route strict-JSON helpers through vmaftune.jsonio across vmaf-tune¶
0988-shared-strict-json-helpers
ADR-0989: Wire motion_add_uv through integer_motion_sycl; emit warning on motion_five_frame_window¶
ADR-0990: Restore double-precision L/C/S accumulation in CUDA ms_ssim_vert_lcs¶
0990-cuda-ms-ssim-double-precision-lcs
ADR-0991: Second-Opinion Batch Materializer — Smoke-Run Scaffold and Test Fix¶
0991-second-opinion-batch-runs
ADR-0992: MOS-label batch-run manifests for KonViD and CHUG¶
ADR-0993: KoNViD / UGC / BVI-DVC Saliency Batch Manifests and Run Scaffolding¶
0993-konvid-ugc-bvi-saliency-batch-launch
ADR-0994: Fix Coverage Gate build break — integer_motion.c compile error¶
0994-coverage-build-fix-motion-v2-ref
ADR-0995: Shorten CI workflow and job display names¶
0995-ci-workflow-name-shortening
ADR-0996: eBPF FUSE bypass for rclone zero-copy path in vmafx-node¶
ADR-0999: Guard <stdatomic.h> includes in C++ translation units (GCC 14 + Clang-18 fix)¶
0999-stdatomic-cxx-header-guard
ADR-1000: Tech-stack badges in README and Go/Rust version pin consistency¶
1000-tech-stack-badges-go-rust-pins
ADR-1001: SYCL parity round 5 — CAMBI CPU vs. SYCL parity gate¶
ADR-1002: Bump Rust workspace to edition 2024 and bindgen to 0.72¶
1002-rust-edition-2024-bindgen-072
ADR-1003: Bump project-wide C++ standard from c++11 to c++23¶
ADR-1004: HIP kernel parity-test coverage round 5¶
1004-hip-kernel-coverage-round5
ADR-1005: Perf Gate Advisory Mode and Baseline Refresh Documentation¶
1005-perf-gate-advisory-threshold
ADR-1007: Fix C string/numeric UB cluster — NULL strcmp, size_t underflow, signed-shift overflow, snprintf truncation¶
1007-c-string-numeric-ub-fixes
ADR-1008: Fix C lifecycle bugs — pic_cnt double-increment, div-by-zero in pooled score, silent test failures¶
ADR-1009: Fix Go shutdown / goroutine correctness — WaitForShutdown unconditional block, unbounded GracefulStop¶
1009-go-shutdown-goroutine-fixes
ADR-1010: MCP server JSON parse guards — vmaf output and ffprobe output¶
ADR-1011: Add static to TU-internal CUDA helper functions — VIF, ADM, motion¶
ADR-1012: Go queue state-machine guards — PullWork AND-status, ReportResult idempotency¶
1012-go-queue-state-machine-guards
ADR-1014: Prometheus registry isolation for SetControllerSources¶
ADR-1017: Go operator controller resource-allocation fixes¶
ADR-1018: MCP exec.CommandContext + controller gRPC panic recovery¶
ADR-1020: acq_rel memory ordering on ref-count decrement + mutex-destroy-after-unlock + picture-pool unlock ordering¶
ADR-1021: Constant-time session-token comparison + JWT nbf-claim validation¶
1021-session-token-const-time-compare
ADR-1022: Cast dst_buf_read_sz operands to size_t in y4m_input to prevent signed-integer overflow¶
1022-y4m-dst-buf-read-sz-overflow
ADR-1023: MCP server asyncio correctness — async wrappers for blocking I/O¶
ADR-1024: R6 per-metric scoring guards — PSNR/ADM correctness fixes¶
ADR-1025: R6 CUDA/HIP kernel correctness fixes¶
1025-r6-cuda-hip-kernel-correctness
ADR-1026: R6 SYCL kernel correctness — rd-stride OOB and unchecked graph_wait¶
1026-r6-sycl-kernel-correctness
ADR-1030: HIP adm_decouple dangling body + VIF wavefront 32-bit carry + Metal motion vertical halo¶
1030-hip-metal-kernel-correctness
ADR-1032: vmaf_init double-init guard and vmaf_close pointer-contract documentation¶
1032-vmaf-init-double-init-guard-vmaf-close-pointer-contract
ADR-1033: CPU-side scoring NaN/UB guards across PSNR/SSIM/MS-SSIM/ADM/CAMBI/MOTION¶
1033-cpu-scoring-nan-ub-guards
ADR-1034: Fix SYCL integer_vif rd_stride OOB on odd widths and integer_motion UV queue sync gap¶
1034-sycl-vif-rd-stride-motion-uv-sync
ADR-1035: CI workflow concurrency guards and job timeouts¶
1035-ci-workflow-concurrency-timeout
ADR-1036: Correct SPDX license identifiers and add missing libsvm copyright¶
1036-licensing-spdx-svm-copyright
ADR-1038: MCP cross-surface precision-default and probe-precision drift¶
1038-mcp-cross-surface-precision-subsample-drift
ADR-1039: Fix CERT MEM04-C realloc OOM safety in vendored libsvm¶
1039-vendored-svm-realloc-oom-safety
ADR-1040: Promote integer_ssim_moments_t to shared header (macOS / Windows arm64 build fix)¶
1040-integer-ssim-moments-type-non-x86
ADR-1041: Fix CI RED — Go metal option type + Rust AVX-512 test guard¶
ADR-1042: Containerfile hardening — non-root USER + build-time DEBIAN_FRONTEND¶
1042-containerfile-user-hardening
ADR-1047: Helm chart schema and values.yaml correctness fixes (R9 batch)¶
ADR-1048: vmaf-tune ladder --duration sentinel dest mismatch fix¶
1048-vmaf-tune-duration-sentinel
ADR-1049: Exponential backoff for vmafx-node online-feedback drainLoop¶
ADR-1051: Port upstream batch-threading + picture-pool defaults (dff4082b + 46d3a154)¶
1051-upstream-batch-threading-picture-pool
ADR-1052: Re-register CPU motion_v2 extractor and fix post-flush test ordering¶
1052-arm-motion-v2-re-register
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-1057: Revert float-ADM SIMD dispatch wiring (PR #685) — NEON FMA divergence unfixable in scope¶
1057-revert-float-adm-simd-dispatch-neon-fma
ADR-1058: Helm chart security hardening — PDB, RBAC split, metrics NetworkPolicy, schema tightening¶
1058-helm-chart-security-hardening
ADR-1060: Round 10 C++23 wave error-path cleanup¶
ADR-1061: Fix depth-limit, integer-overflow, and banned-function bugs in vendored pdjson and cJSON¶
1061-vendored-cjson-pdjson-depth-overflow
ADR-1063: Rust clippy strictness — scoped bindings suppression, unsafe_op lint, no panicking Default¶
1063-rust-clippy-library-strictness
ADR-1064: Wire score_fmt option on all vmaf FFmpeg filters¶
ADR-1065: Go staticcheck r10 — poll-loop timer leak and missing body guards¶
1065-go-staticcheck-timer-body
ADR-1066: Regression tests for the sequential-realloc double-free in libsvm¶
1066-svm-multiclass-realloc-regression
ADR-1068: Fix fast-path data race in gpu_dispatch_env.cpp via atomic publication flag¶
1068-thread-safety-gpu-dispatch-env
ADR-1069: Operator CRD status-schema gaps and VmafxNode LastHeartbeat ownership¶
1069-operator-crd-status-schema-gaps
ADR-1071: Promote HIP ms_ssim_vert_lcs to double precision (ADR-0990 parity)¶
1071-ms-ssim-hip-double-partials
ADR-1072: Fix PREV_REF refcount leak in threaded batch and serial dispatch paths¶
1072-prev-ref-batch-refcount-leak
ADR-1073: Fix vmaf_score_at_index EAGAIN-guard misapplication for model output slots¶
1073-mcp-score-at-index-eagain-guard
ADR-1074: Helm chart values completeness — missing knobs and schema gaps¶
ADR-1075: MCP HTTP transport POST /v1/score body-validation edge cases¶
1075-mcp-http-score-body-validation
ADR-1077 — vmaf-tune corner cases: parse_versions + compare preset¶
1077-vmaftune-corner-cases-r14
ADR-1078: ms_ssim option parity across HIP and SYCL backends¶
ADR-1079: TSan-eligible thread-safety test for threaded_extract_batch_func¶
ADR-1080: UBSan enum-invalid-value fixes in vmaf_log and vmaf_option_set¶
1080-ubsan-enum-invalid-value-log-opt
ADR-1081: vmaf_bench correctness — unchecked alloc returns and wall-clock timer¶
ADR-1083: y4m_input_fetch_frame signed-integer overflow + fread(NULL) UB fixes¶
ADR-1084: Use filepath.SplitList for VMAF_MCP_ALLOW path-list parsing¶
1084-cross-platform-path-list-separator
ADR-1085: MCP streaming backpressure — kill child processes on client disconnect¶
1085-mcp-streaming-backpressure-disconnect
ADR-1086: CI Workflow Least-Privilege Permissions Audit¶
1086-ci-workflow-least-privilege-permissions
ADR-1087: Extend test coverage for pkg/storage and cmd/vmafx-node/bpf¶
ADR-1088: CLI flag-parsing hardening — parse_unsigned overflow/negative guards and --help in cli_parse.cpp¶
ADR-1089: Block non-standard ONNX operator domains in the DNN wire scanner¶
ADR-1090: Fix CUDA stream and event leaks on init error paths¶
1090-cuda-stream-event-leak-fix
ADR-1092: framesync producer-death deadlock — abort flag + shutdown broadcast¶
1092-framesync-producer-death-deadlock
ADR-1093: Disable two recurring-failure tests via should_fail while root cause is under investigation¶
1093-disable-recurring-flaky-tests
ADR-1094: Helm chart rolling-update correctness — node strategy, PDB default, probe fix, grace period¶
1094-helm-rolling-update-correctness
ADR-1095: Fix OTel trace context propagation across gRPC boundaries¶
ADR-1096: Doxygen @brief/@param coverage for core internal headers¶
ADR-1097: Atomic file writes for AI-script cache and output files¶
ADR-1099: Propagate -fsycl via sycl_dependency to fix test-binary SIGSEGV¶
1099-sycl-fsycl-link-propagation
ADR-1100: Skip GPU-flagged extractors when flags == 0 in vmaf_get_feature_extractor_by_feature_name¶
1100-feature-extractor-flags-zero-skip-gpu
ADR-1101: Change vmaf container user GID/UID from 1000 to 2000¶
1101-containerfile-gid-uid-2000
ADR-1102: Container-only canonical artifact publishing (Phase 4b.9)¶
1102-phase4b9-container-only-publishing
ADR-1103 — Fix integer_vif_hip boundary condition: clamp_i → mirror2_i¶
ADR-1104: Remove AVX-512 dispatch from float VIF convolution to restore Netflix golden scores¶
1104-float-vif-avx512-golden-regression-fix
ADR-1105: fr_regressor_v2_ensemble production flip deferred to the one-shot post-RC retrain¶
1105-ensemble-v2-prod-flip-deferred-oneshot-retrain
ADR-1106: HIP motion_v2 mirror is reflect-101 (-2), correcting ADR-0377's -1 parity claim¶
1106-hip-motion-v2-mirror-reflect101-correction
ADR-1107: Per-extractor prev_ref in the threaded batch path (multi-PREV_REF starvation fix)¶
1107-threaded-multi-prev-ref-extractor-starvation
ADR-1108: CUDA motion_v2 twin emits motion3_v2_score¶
1108-cuda-motion-v2-motion3-emission
ADR-1109: vmafx-node Serve() registers the VmafxScoring gRPC service¶
1109-vmafx-node-serve-scoring-grpc
ADR-1110: Add ΔE-ITP (Delta E ITP) — PQ-only HDR colour-difference CPU extractor¶
ADR-1111: Add PU21 HDR perceptual metric (PU-PSNR + PU-SSIM, PQ input only)¶
ADR-1112: NIQE no-reference CPU feature extractor (fork-pkl parity)¶
ADR-1113: Vendor the Pelorus interop ABI as a pinned read-only mirror¶
1113-vendor-pelorus-interop-abi
ADR-1114: Y-FUNQUE+ wavelet-domain atom features (atoms-only, fused SVR deferred)¶
ADR-1115: BRISQUE no-reference CPU feature extractor (bundled LIVE model)¶
ADR-1116: vmaf-tune autotune prefilter control plane (Pelorus deband)¶
1116-autotune-prefilter-control-plane
ADR-1117: MCP vmaf_score tiny-AI / feature / CTC parameter coverage¶
1117-mcp-tiny-ai-feature-coverage
ADR-1118: Pelorus perceptual side-data weights VMAF spatial pooling, golden-isolated and opt-in¶
1118-perceptual-sidedata-weighting
ADR-1119: Adopt the golusoris fx framework across all vmafx Go binaries¶
1119-golusoris-go-framework-adoption
ADR-1120: Re-pin the vendored Pelorus interop ABI to minor-3 and consume PEL_SEC_COMPLEXITY in perceptual weighting¶
1120-pelorus-abi-minor3-resync-complexity
ADR-1121: SYCL QSV zero-copy — P010 pixel normalization and separate-session decode contract¶
1121-sycl-qsv-zerocopy-p010-normalization
ADR-1122: Adopt and port VMAF v1 models (opt-in, v0.6.1 stays default)¶
ADR-1123: Raise the Required-Checks-Aggregator deadline to 240 minutes and batch Docker digest updates¶
1123-ci-throughput-aggregator-deadline-docker-grouping
ADR-1124: vmafx-tune-go Stage 5 — per-shot tuning, codec-adapter table, and backend resolution¶
1124-vmafx-tune-go-stage5-per-shot
ADR-1125: Reconciling seven independent vmafx-tune Go ports into one tree¶
1125-vmafx-tune-go-port-integration
ADR-1126: Retire the standalone isort hook; ruff's I rules own import sorting¶
ADR-1127: Use one independent SemVer release stream¶
1127-single-semver-release-stream
ADR-1128: Make changelog fragments own release cuts¶
1128-fragment-owned-release-cuts
ADR-1129: Align release containers with the published tag and runtime ABI¶
1129-release-container-runtime-alignment
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-1137: One implementation per shared Go package — folding the vmafx-tune shadow packages¶
ADR-1138: C translation units keep NULL; modernize-use-nullptr is scoped to C++¶
1138-c-translation-units-keep-null
ADR-1140: Route required CI work by measured impact instead of pre-declared path filters¶
ADR-1141: Rework the upstream-mirror integer ADM to the fork lint profile, bit-exact¶
1141-integer-adm-upstream-mirror-rework
ADR-1142: Whole-codebase standards; lint debt only ratchets down¶
ADR-1143: CUDA and Intel SYCL Backend Gap Closure¶
ADR-1145: Derive the Intel NEO compute stack (gmmlib and IGC) dynamically from pinned compute-runtime release metadata¶
1145-neo-stack-derived-from-release
ADR-1146: SPEED and CAMBI Feature Rework to Fork Standards (Bit-Exact)¶
1146-speed-cambi-upstream-mirror-rework
ADR-1151: Cut the fork's first release as v1.0.0 on a fresh number line¶
1151-vmafx-first-release-1-0-0
ADR-1152: Exempt Dependency-Only Bot PRs from Documentation Gates¶
1152-dependency-pr-gate-exemption
ADR-1153: Resolution of Dead .c/.cpp Twin Sides (model.cpp, test_dict.c, test_feature.c)¶
1153-twin-dead-sides-resolution
ADR-1154: AMD ROCm HIP Backend Gap Closure and Extractor Promotion¶
ADR-1155: Rework CLI and Tools Translation Units to Fork Lint Standards¶
1155-tools-upstream-mirror-rework
ADR-1166: Harvest stale upstream Netflix/vmaf reports, verify each against the fork, fix what still bites¶
ADR-1167: Row-level rounding accumulator and border row selection for integer ADM GPU kernels¶
1167-adm-cm-row-level-rounding
ADR-1168: The default VMAF model is defined in exactly one place¶
1168-default-model-single-source
ADR-1169: The fork's default VMAF model is vmaf_v1.0.16_3d0h¶
ADR-1171: release-please credential gate warns on push, errors on dispatch¶
1171-release-please-credential-gate-warning
ADR-1172: Bound per-link LTO parallelism to four partitions by default¶
1172-bound-lto-link-parallelism
ADR-1173: AI Teacher Model Follows Default Model Single Source¶
1173-ai-teacher-follows-default-model
ADR-1176: Metal motion_v2 mirror closeout and reflect-101 parity contract¶
1176-metal-motion-v2-mirror-closeout
ADR-1177: Containerised self-hosted GitHub Actions runner for Intel Arc SYCL parity CI¶
1177-sycl-arc-self-hosted-runner
ADR-1178: Dev container image publication and release artifact container enforcement¶
1178-dev-container-image-publish
ADR-1179: Fix Intel Arc SYCL Crashes and Default Model Resolution Divergence¶
ADR-1182: Windows UTF-8 Path Contract (vmaf_fopen_utf8 / vmaf_open_utf8)¶
1182-windows-utf8-path-contract
ADR-1183: Model options gate GPU twin selection¶
1183-model-options-gate-gpu-twin-selection
ADR-1184: The MCP gRPC control-plane bridge is Go-only¶
ADR-1185: Per-backend performance baselines are median-of-N, one backend per build dir¶
1185-backend-perf-baseline-methodology
ADR-1188: Percentile temporal pooling in the public C API¶
1188-percentile-pooling-methods
ADR-1190: Backslash escapes and a drive-letter affordance in the CLI option-string grammar¶
1190-cli-option-string-escape-grammar
ADR-1191: Integer ADM rejects CSF configurations its fixed-point storage cannot represent¶
1191-adm-csf-fixed-point-representability-guard
ADR-1192: Keep the recorded Netflix benchmark snapshot; do not regenerate it while the GPU paths are broken¶
1192-netflix-bench-snapshot-drift-not-regenerated
ADR-1193: Opt-in uncapped option splits the PSNR infinity sentinel from the truncation¶
ADR-1194: One integer-ADM angle_flag predicate for every backend¶
1194-adm-angle-flag-single-source
ADR-1195: Record and verify which source revision the dev container was built from¶
1195-container-source-revision-guard
ADR-1196: Dispatch the SpEED dense matrix product through bit-exact AVX2 / AVX-512 kernels¶
1196-speed-matmul-simd-dispatch
ADR-1197: The threaded flush leaves GPU extractors to their own backend flush¶
1197-gpu-threaded-flush-ownership
ADR-1198: An unknown changelog.d/ subdirectory fails the run instead of warning¶
1198-changelog-unknown-section-is-an-error
ADR-1199: Order caller-written CUDA pictures once per frame, at the dispatch point¶
1199-cuda-picture-handover-barrier
ADR-1200: The dev container falls back to the GitHub mirror for nv-codec-headers¶
1200-nv-codec-headers-mirror-fallback
ADR-1201: Cut release candidates before the final 1.0.0¶
1201-release-candidates-before-1-0-0
ADR-1202: GPU SpEED-chroma twins report singularity separately from failure¶
1202-cuda-speed-chroma-4k-launch-bounds
ADR-1203: psnr_hvs_cuda defaults enable_chroma to true, matching every other backend¶
1203-cuda-psnr-hvs-enable-chroma-default
ADR-1204: GPU ADM contrast-masking twins clamp the far edge instead of mirroring it¶
1204-adm-cm-edge-clamp-gpu-twins
ADR-1205: The ssimulacra2 FMA unification extends to the scalar fallback and every GPU host copy¶
1205-ssimulacra2-fma-unification-scalar-and-gpu
ADR-1206: Every CUDA parity test also runs against a second, larger fixture¶
1206-gpu-parity-large-fixture-variants
ADR-1207: A test gates every feature's score against the host instruction set¶
1207-feature-isa-invariance-gate
ADR-1208: The ssimulacra2 edge-diff SIMD loops take their difference in double¶
1208-ssimulacra2-edge-diff-double-subtract
ADR-1209: --gpumask keeps rejecting negative values; the test script uses a positive mask¶
1209-cli-gpumask-negative-contract
ADR-1210: The SYCL integer-ADM contrast-masking kernel mirrors its near edge¶
1210-sycl-integer-adm-cm-near-edge-mirror
ADR-1211: integer_adm_hip stages the luma plane onto the device before launching¶
1211-hip-integer-adm-picture-staging
ADR-1212: The GPU float_moment twins normalise by the bit-depth scaler on the host¶
1212-gpu-moment-bit-depth-normalisation
ADR-1213: ciede_hip sizes its chroma staging with the picture's ceil dimensions¶
1213-hip-ciede-chroma-ceil-dimensions
ADR-1214: The float-ADM GPU twins ignore adm_csf_scale in Watson mode and share the CPU's option aliases¶
1214-float-adm-csf-scale-watson-mode-and-aliases
ADR-1215: The 16-bpc CUDA PSNR kernel takes the plane index the host has always passed¶
1215-cuda-psnr-16bpc-plane-argument
ADR-1216: The GPU motion3 twins apply motion_fps_weight exactly once¶
1216-gpu-motion3-fps-weight-applied-once
ADR-1217: The GPU float-VIF kernels read vif_sigma_nsq and vif_enhn_gain_limit from their options¶
1217-gpu-float-vif-options-reach-kernel
ADR-1218: The GPU SpEED twins zero the device solution and report singularity from the temporal path¶
1218-gpu-speed-singular-device-solution
ADR-1219: The HIP and Metal CAMBI twins use the shared TVI bisection and the CPU's border rules¶
1219-gpu-cambi-tvi-shared-bisection
ADR-1220: The GPU float-ADM kernels honour adm_p_norm, adm_bypass_cm and adm_skip_scale0¶
1220-gpu-float-adm-options-reach-kernels
ADR-1221: clip_db is a ceiling on the MS-SSIM dB output, not a clamp on the linear score¶
ADR-1222: In-code suppressions do not close code-scanning alerts; scope the scan instead¶
1222-code-scanning-alert-triage-and-scope
ADR-1223: The CUDA backend requires compute capability 8.0 (Ampere), and CI standardises on CUDA 13.3.1¶
1223-cuda-ampere-architecture-floor
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¶
1225-rocm-10-therock-migration
ADR-1226: Size the CUDA AIM CM launch by SM count, not by a fixed rows-per-thread¶
1226-cuda-adm-cm-aim-grid-occupancy
ADR-1227: Workflow display names are short labels; the axis list lives in the file¶
1227-short-workflow-display-names
ADR-1228: A recurring "faster than upstream, and still exact" milestone¶
1228-upstream-ab-perf-milestone
ADR-1229: The MCP server is the Go binary; the Python package is deprecated¶
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¶
1233-github-native-release-notes
ADR-1234: The local gate builds with every compiler CI does¶
ADR-1235: libvmaf.pc advertises the ABI version, not the product version¶
1235-pkgconfig-advertises-abi-version
ADR-1236: Single-source package versions and unify Python dependencies¶
1236-version-single-source-tree
ADR-1237: CAMBI Anti-Dithering AVX2 Vectorization, SpEED SIMD QR Dispatch, and Threaded GPU Flush Alignment¶
ADR-1238: Require the Go security and test job through impact routing¶
1238-go-security-required-gate
ADR-1239: Preserve work during agent-state cleanup¶
1239-agent-cleanup-preserve-work
ADR-1240: Maintain the FFmpeg patch stack against stable releases¶
1240-ffmpeg-release-patch-lifecycle
ADR-1241: Keep Git hooks independent of installer worktrees¶
ADR-1242: Require source-owned ADR metadata freshness¶
ADR-1243: Allow measured scoped tightening of the lint baseline¶
1243-tidy-scoped-baseline-tightening
ADR-1244: Guard merge-train ownership and exact-head validation¶
1244-merge-train-ownership-and-validation
ADR-1245: Analyze configured Cppcheck paths exhaustively¶
1245-cppcheck-exhaustive-configured-analysis
ADR-1246: Model verified public functions as Cppcheck entrypoints¶
1246-cppcheck-public-entrypoints
ADR-1247: Bind Scorecard gates to their measured source and scope¶
1247-scorecard-exact-head-gates
ADR-1248: Enforce repository security through public rulesets¶
1248-repository-security-enforcement
ADR-1249: Adopt praetor governance, with lefthook owning the git hooks¶
1249-praetor-governance-adoption
ADR-1250: Fork-authored code moves to EUPL-1.2; code that carries someone else's work does not¶
ADR-1251: Renovate opens automerge-eligible and security bumps ready for review¶
1251-renovate-draft-automerge-deadlock
ADR-1252: Declare the single maintainer's bypass actor¶
1252-solo-maintainer-declared-bypass
ADR-1253: Scalar references compute their fused multiply-add themselves¶
1253-scalar-fma-not-fused-on-msvcrt
ADR-1254: Wide vector register pressure is a Win64 correctness constraint, not a performance one¶
1254-win64-cannot-realign-the-stack
ADR-1255: Correct the SPDX identifiers PR #1457 does not reach, to the licence this repository already declares¶
1255-spdx-residual-identifier-correction
ADR-1256: Dispatch CAMBI's spatial-mask row SIMD kernels only where they measurably beat scalar¶
1256-cambi-spatial-mask-simd-dispatch
ADR-1257: Retire the Darwin three-tap integer-ADM DWT2 compatibility dispatch¶
1257-retire-darwin-adm-dwt2-legacy-dispatch
ADR-1258: Keep the fork 64-bit only; retire the resurrected i686 lane¶
1258-keep-64-bit-only-retire-i686-lane
ADR-1259: Record the CI build matrix as it actually runs¶
1259-ci-build-matrix-as-it-runs
ADR-1260: Windows on ARM64 CPU build-and-test lane¶
ADR-1261: The local type-check hook fails on findings a branch introduces, not on ones it inherits¶
ADR-1262: A failed input read exits 102; a legitimately shorter stream stays exit 0¶
1262-cli-input-read-error-exit-code
ADR-1263: __HIP_PLATFORM_AMD__ is declared once by the build, not by each source¶
1263-hip-platform-macro-single-source
ADR-1264: The HIP scaffold posture reports -ENOSYS, and its tests check both sites¶
1264-hip-scaffold-enosys-contract
ADR-1265: The clang-tidy header filter matches absolute paths, so headers count¶
1265-clang-tidy-header-filter-absolute-paths
ADR-1270: Bound repository subprocess execution behind one validated API¶
1270-bounded-process-execution
ADR-1271: Pass NEO GitHub credentials through optional BuildKit secrets¶
1271-neo-buildkit-github-token-secret
ADR-1273: Select language standards through warning-clean Meson preference lists¶
1273-warning-clean-meson-language-standards
ADR-1274: Make HISS-21 claims replayable and platform-gated¶
ADR-1276: Re-pin the Pelorus mirror for released parser safety fixes¶
1276-pelorus-v022-parser-safety-repin
ADR-1277: Separate private state, corpora, and tracked evidence¶
1277-workingdir-contract-cleanup
ADR-1278: Use spawn-safe Python process execution and the canonical five-parameter logistic curve¶
1278-python-safe-parallel-execution
ADR-1280: Synchronize private state through regular worktree mirrors¶
ADR-1282: mypy's python_version follows requires-python¶
1282-mypy-python-version-follows-requires-python
ADR-1283: The whole-tree clang-tidy ratchet gets an arm64 cross lane¶
1283-whole-tree-ratchet-arm64-lane
ADR-1284: Gate merges on the work they would remove from the target¶
1284-silent-revert-detection-gate
ADR-1285: CUDA is a coordinated pin — group it in Renovate, gate the rest¶
1285-cuda-coordinated-pin-lockstep
ADR-1286: A cited lint suppression is retired only by a refactor that satisfies the invariant it cites¶
1286-retiring-cited-lint-suppressions
ADR-1287: Bound the fork CLI tools' open-ended read and retry loops¶
1287-cli-tool-unbounded-loop-ceilings
ADR-1288: An MCP tool schema that fails to marshal is fatal, never defaulted¶
1288-mcp-tool-schema-fail-closed
ADR-1289: The three SSIMULACRA2 HIP host functions may be split; their no-split citations are withdrawn¶
1289-hip-ssimulacra2-host-helper-split
ADR-1290: The tidy ratchet owns its per-lane compilation database¶
1290-sycl-tidy-lane-compile-database
ADR-1291: A reversal an accepted ADR mandates is declared in the tree, not in the PR body¶
1291-silent-revert-declared-reversals
ADR-1292: Resolve the vmaf compatibility shim by file location instead of re-import¶
ADR-1293: Move tiny-AI QAT onto torchao's pt2e API¶
ADR-1294: Scope the docs build's concurrency group to its ref, not to Pages¶
1294-docs-build-concurrency-per-job
ADR-1295: Correct sureal's Gaussian density for unanimously rated stimuli in-process¶
1295-sureal-degenerate-opinion-score-statistics
ADR-1296: GPU init failure paths are tested device-free, by compiling the backend TU against runtime stubs¶
1296-gpu-failure-path-stub-interposition
ADR-1297: Every check that reports on a pull request is a required context¶
1297-ci-gate-every-reporting-check
ADR-1298: Scope the local HISS audit's touched-file rule to what the committer wrote¶
1298-hiss-audit-merge-touched-scope
ADR-1299: Compute MS-SSIM chroma on SYCL¶
1299-sycl-ms-ssim-chroma-implementation
ADR-1300: Install CUDA on every CI leg from NVIDIA's own distribution¶
1300-cuda-install-from-nvidia-apt
ADR-1301: A non-finite SpEED score fails the frame instead of being published¶
1301-speed-nonfinite-score-fails-frame
ADR-1302: A non-finite feature score fails the frame, everywhere¶
1302-nonfinite-scores-fail-the-frame
ADR-1303: Give checklist backlog items explicit stable IDs¶
1303-backlog-checklist-tracker-schema
ADR-1304: Bind MCP HTTP scoring runtimes per server instance¶
1304-mcp-http-runtime-isolation
ADR-1305: Hash-locked Python dependency installs and OpenSSF supply-chain hardening¶
1305-hash-locked-python-installs
ADR-1306: Replace nvidia/cuda base images with digest-pinned Ubuntu and version-locked apt installation¶
ADR-1307: Pure SHA-256 memoization keys with cold cache invalidation¶
1307-sha256-memoization-cache-invalidation
ADR-1308: Resolve CodeQL float equality alerts via contract-preserving comparisons¶
1308-codeql-float-equality-contracts
ADR-1309: Owner-only sidecar socket with identity-checked lifecycle¶
1309-socket-path-ownership-and-owner-only-mode
ADR-1310: Reuse the merge-base mypy gate in required CI¶
ADR-1311: Bind source ADR citations to exact decisions and governed retirements¶
1311-source-adr-citation-provenance
ADR-1312: GPU option aliases match CPU collector keys¶
ADR-1314: Keep unpinned Semgrep registry results advisory¶
1314-semgrep-registry-advisory-artifact
ADR-1315: Drive libvmaf public C API Doxygen warnings to zero and fail closed¶
1315-doxygen-public-api-fail-closed
ADR-1316: Mark extractor options whose implementation is default-only¶
1316-gpu-option-value-capability-fallback
ADR-1317: Isolate Netflix golden gate build profile to eliminate floating-point drift from compiler variations¶
1317-golden-gate-build-isolation
ADR-1318: Bound vmaf-perShot scan loop with operator frame ceiling¶
ADR-1319: Admit self-hosted GPU jobs through a live fail-closed probe¶
1319-fail-closed-self-hosted-gpu-admission
ADR-1320: CUDA fatbin and HIP HSACO kernel header dependency tracking¶
1320-cuda-hip-kernel-header-dependency-tracking
ADR-1321: Pre-RC1 CI flake remediation and contract alignment¶
1321-pre-rc1-flake-survey-remediation
ADR-1322: Restore enable_chroma option parity on integer_psnr_metal¶
1322-metal-integer-psnr-enable-chroma-parity
ADR-1324: Resolve GPU float-SSIM auto-scale before backend initialization¶
1324-gpu-float-ssim-auto-scale-fallback
ADR-1325: Normalize integer ADM Barten weights with one exponent per scale¶
1325-integer-adm-barten-fixed-point-normalization
ADR-1326: Use a fixed-point oracle for SYCL motion-add-UV parity¶
1326-sycl-motion-uv-fixed-oracle
ADR-1333: Meson test environment secret sanitization¶
1333-meson-test-secret-env-sanitization
ADR-1334: Extend MS-SSIM option parity to the Metal twin¶
1334-metal-ms-ssim-option-parity
ADR-1335: Bind research-digest debt to the trusted merge base¶
1335-research-digest-identity-ratchet
ADR-1336: Tear down CUDA resources in their owning context¶
1336-cuda-context-owned-resource-teardown
ADR-1337: C++ Placement New Visibility — Hide Inline Run-time Symbols¶
1337-cpp-placement-new-visibility
ADR-1338: Require a clean Go fix modernization gate¶
ADR-1341: Stage correctness, benchmarking, and retraining across RC1 through RC3¶
1341-rc-correctness-benchmark-retrain-sequence
ADR-1342: RC1 external tester evidence bundle¶
1342-rc1-external-tester-report-bundle
ADR-1343: Statically check that every dev-container stage copies the files it reads¶
1343-dev-container-stage-input-contract
ADR-1344: Leave [project].version out of the Python lock input fingerprint¶
1344-lock-fingerprint-ignores-project-version
ADR-1345: Exempt release changelog archives from the large-file gate¶
1345-changelog-archive-large-file-exemption
ADR-1346: Build native release artifacts on a hosted runner inside the build-deps container stage¶
1346-hosted-slim-container-release-build
ADR-1347: Recover a release's container images with the default branch's build recipe¶
1347-image-recovery-from-default-branch
ADR-1348: Number release candidates with release-please's prerelease versioning¶
1348-release-candidate-prerelease-versioning
ADR-1349: Build the vmafx-node image per architecture on native runners¶
1349-native-arch-node-image-build
ADR-1350: Include the FFmpeg patch series in the image recovery recipe¶
1350-recovery-overlay-ffmpeg-patches
ADR-1351: Move the praetor engine pin: re-record engine-measured debt and adopt its documentation gate¶
ADR-1352: Shift the first-release candidate mapping by one¶
ADR-1353: Give the Helm server workload its own component selector¶
1353-helm-server-component-selector
ADR-1354: Build the native Linux bundle on the Debian 13 release track¶
1354-native-bundle-release-track
ADR-1355: Backslashes in CLI option values are data, except in runs that touch a delimiter¶
1355-cli-option-value-backslashes
ADR-1356: Release provenance from GitHub build-provenance attestations, not slsa-github-generator¶
1356-release-provenance-attest
ADR-1357: Run the SYCL CAMBI extractor entirely on the device¶
1357-sycl-cambi-device-resident
ADR-1358: The SYCL SpEED twins are device-resident, with the 25x25 linear algebra on the device and exact fp32 arithmetic¶
1358-sycl-speed-device-resident-linalg
ADR-1359: The CLI maps --feature <cpu-name> to the explicit --backend's twin¶
ADR-1360: Generate SYCL AOT images at compile time and fail the build when they are missing¶
1360-sycl-aot-compile-time-device-codegen
ADR-1361: Scale the psnr_hvs cross-backend tolerance with the CPU's float-sum length¶
1361-psnr-hvs-area-scaled-parity-tolerance
ADR-1362: The SYCL integer ADM twin computes AIM on the device and finalises every ADM output in the CPU's float arithmetic¶
1362-sycl-integer-adm-aim-device-pass
ADR-1363: The SYCL ssimulacra2 twin is device-resident, and float_ms_ssim_sycl waits once per frame¶
1363-sycl-ssimulacra2-msssim-device-resident
ADR-1364: Register the SYCL device images of a Windows MSVC build through one explicit device link¶
1364-windows-sycl-msvc-device-link
ADR-1365: SYCL PSNR, SSIM and float-motion twins take the CPU option tables¶
1365-sycl-twin-cpu-option-parity
ADR-1366: The vmaf CLI reads each input on its own thread, a bounded number of frames ahead¶
ADR-1367: Every SYCL feature TU compiles with contraction off and correctly rounded fp32 division and square root¶
1367-sycl-strict-fp-every-feature-tu
ADR-1368: Build and run the oneAPI release image on Debian 13 with pinned Intel packages¶
1368-oneapi-release-image-debian13
ADR-1369: SYCL twins read the planes the state uploads once per frame; opt-in shared chroma planes and a device-side slot fence¶
1369-sycl-shared-planes-light-twins
ADR-1370: float_ssim_sycl decimates on the device, bit-identical to the CPU¶
1370-sycl-float-ssim-device-decimation
ADR-1371: SYCL motion differences the frames before the blur, in one shared kernel¶
1371-sycl-motion-diff-first-pipeline
ADR-1372: CUDA motion differences the frames before the blur, in the kernel motion_v2 already had¶
1372-cuda-motion-diff-first-pipeline
ADR-1373: CUDA PSNR, SSIM and motion twins take the CPU option tables and the CPU's arithmetic¶
1373-cuda-twin-cpu-option-parity
ADR-1374: CUDA integer ADM and VIF guard tiny frames like their SYCL twins¶
1374-cuda-integer-tiny-frame-guards
ADR-1377: HIP motion differences the frames before the blur, in one shared kernel, and waits only in collect¶
ADR-1378: Run the HIP CAMBI extractor entirely on the device¶
1378-hip-cambi-device-resident
ADR-1379: Run the CUDA CAMBI extractor entirely on the device¶
1379-cuda-cambi-device-resident-pipeline
ADR-1380: The CUDA SpEED twins are device-resident, with the 25x25 linear algebra on the device and CPU-exact fp32 arithmetic¶
1380-cuda-speed-device-resident-pipeline
ADR-1381: HIP tile loads and the ADM vertical DWT clamp their rows; vif_hip hands frames below 16 pixels to the CPU¶
1381-hip-integer-tiny-frame-guards
ADR-1382: HIP PSNR, SSIM and float-motion twins take the CPU option tables¶
1382-hip-twin-cpu-option-parity
ADR-1383: Resolve docs/state.md rebase conflicts three-way, keyed by bug id¶
1383-state-md-three-way-conflict-resolver
ADR-1384: Run the HIP SpEED twins entirely on the device, in the CPU's fp32 arithmetic¶
1384-hip-speed-device-resident
ADR-1386: One script runs the home GPU box's RC3 verify commands, row by row, under per-device locks¶
ADR-1387: Migrate Windows MinGW CI leg from deprecated MINGW64 to UCRT64¶
ADR-1388: Exempt PAT-mode release PRs from authoring-discipline gates via verified release-only diff¶
1388-release-pat-mode-gate-exemption
ADR-1389: Run CodeQL (Actions) unconditionally on every pull request for universal SAST coverage¶
1389-codeql-actions-universal-pr-sast
ADR-1390: The HIP ssimulacra2 twin is device-resident with tiled row-pass Gaussian blur¶
1390-hip-ssimulacra2-device-resident
ADR-1391: The CUDA ssimulacra2 twin is device-resident¶
1391-cuda-ssimulacra2-device-resident
ADR-1392: CUDA motion, PSNR and moment kernels add one atomic per block, the motion SAD filters separably, and PSNR selects its plane with constant indices¶
1392-cuda-integer-reductions-one-atomic-per-block
ADR-1393: CAMBI's c-values walks clip the window to the frame at every edge¶
1393-cambi-clip-window-to-frame
ADR-1395: SYCL kernels use no scratch memory on Intel GPUs¶
ADR-1396: vmaf_init() treats its handle as output-only again¶
1396-vmaf-init-output-only-handle
ADR-1397: GPU psnr_hvs twins reproduce the CPU's running float sum bit for bit¶
1397-psnr-hvs-twins-cpu-float-sum
ADR-1398: CLI accepts odd dimensions for chroma-subsampled raw YUV inputs¶
1398-cli-accept-odd-dimensions-chroma-subsampled
ADR-1399: float_ssim_cuda decimates and convolves on the device with the CPU's arithmetic¶
1399-cuda-float-ssim-device-decimation
ADR-1400: integer_ssim_hip sums small frames in the CPU's raster order¶
1400-hip-integer-ssim-raster-sum-small-frames
ADR-1401: psnr_hvs_sycl and psnr_hvs_hip return the CPU's scores bit for bit; the fp64-free masking threshold is an integer square root¶
1401-psnr-hvs-sycl-hip-exact-twins
ADR-1402: Integer ADM keeps the scale-0 masking centre tap in int32 and clamps the excess in int64¶
ADR-1403: Every CUDA feature kernel compiles without FMA contraction, and a twin spells the fused operations its reference performs¶
1403-cuda-strict-fp-every-kernel
ADR-1404: float_motion_hip emits motion3 and implements every CPU float_motion option on the device¶
1404-hip-float-motion-motion3-and-options
ADR-1405: float_ssim_hip decimates on the device, bit-identical to the CPU¶
1405-hip-float-ssim-device-decimation
ADR-1406: Preallocate pinned host pictures for zero-copy 4K CLI CUDA upload¶
1406-cuda-cli-pinned-host-picture-pool
ADR-1407: Every HIP kernel compiles with contraction off and correctly rounded fp32 division and square root¶
1407-hip-strict-fp-every-kernel
ADR-1408: A VmafContext uploads each plane of a frame once and every HIP twin reads that copy¶
ADR-1409: float_motion_cuda adds its SAD in the CPU's order and returns the CPU's scores bit for bit¶
1409-float-motion-twins-cpu-float-sum
ADR-1410: SYCL CLI picture pool allocates pinned host USM to bypass staging upload¶
1410-sycl-cli-pinned-host-picture-pool
ADR-1411: float_motion_sycl adds its SAD in the CPU's order and returns the CPU's scores bit for bit¶
1411-sycl-float-motion-cpu-float-sum
ADR-1412: float_vif_cuda computes the CPU's arithmetic, adds in the CPU's order and returns its scores bit for bit¶
1412-cuda-float-vif-cpu-arithmetic
ADR-1413: Every integer ADM implementation bounds the enhancement gain with the scalar's truncated double product¶
1413-adm-gain-limit-truncated-double-product
ADR-1414: float_ms_ssim_sycl computes the CPU's arithmetic and returns its per-scale means bit for bit¶
1414-sycl-float-ms-ssim-cpu-arithmetic
ADR-1415: every x86 SIMD library is built without FP contraction¶
1415-x86-simd-libraries-strict-fp
ADR-1416: adm_cuda takes its CSF weights, its rounding shifts and its score conclusion from the CPU's routines and folds the denominator once per row¶
1416-cuda-adm-cpu-row-rounding
ADR-1417: Integer AIM stays the unclipped ratio upstream defines; float AIM stays clipped at 1¶
1417-integer-aim-unclipped-upstream-parity
ADR-1418: Motion parity cells compare what every twin emits; a missing metric is a cell error¶
1418-motion-parity-gate-metric-alignment
ADR-1419: float_motion_hip stores its differences transposed and adds each row in the CPU's order¶
1419-hip-float-motion-cpu-float-sum
ADR-1420: float_adm_cuda computes the CPU's arithmetic, divides through the host's reciprocal estimate and returns the CPU's scores bit for bit¶
1420-cuda-float-adm-cpu-arithmetic
ADR-1421: Map the first-release candidates RC3 to RC8¶
ADR-1422: float_vif_sycl computes the CPU's arithmetic without an fp64 type and returns its scores bit for bit¶
1422-sycl-float-vif-cpu-arithmetic
ADR-1423: adm_hip takes its weights, shifts and score conclusion from the CPU, folds the denominator once per row and clears its accumulators after the upload¶
ADR-1424: integer_ssim_cuda adds its terms in the CPU's raster order, on the host, and returns the CPU's score bit for bit¶
ADR-1426: ciede_cuda computes the CPU's arithmetic and adds in the CPU's order; what remains is the math library, and the gate bounds it¶
1426-cuda-ciede-cpu-arithmetic
ADR-1427: A HIP frame queues its accumulator clears after its upload¶
ADR-1428: Exact GPU twins are declared by one fragment file each, not by a shared literal¶
ADR-1429: vmaf_read_pictures() accepts an index that skips values and documents what the motion scores do¶
1429-read-pictures-index-gaps-accepted
ADR-1430: speed_chroma_cuda keeps its correctly rounded log2; the gate bounds what glibc's log2f adds¶
1430-cuda-speed-chroma-log2f-bound
ADR-1431: vmaf_read_pictures() owns the pictures it is given on every return¶
1431-read-pictures-owns-pictures-on-every-return
ADR-1432: vif_sycl computes the gain terms of the integer VIF in exact integer arithmetic and returns the CPU's scores bit for bit¶
1432-sycl-integer-vif-exact-gain
ADR-1433: ssimulacra2_cuda returns the sums of the CPU's loops, formed on the device from integer increments per binade¶
1433-cuda-ssimulacra2-cpu-sum-order
ADR-1434: float_adm_sycl computes the CPU's arithmetic without an fp64 type, adds in the CPU's order and returns the CPU's scores bit for bit¶
1434-sycl-float-adm-cpu-arithmetic
ADR-1435: vif_hip reads the CPU's log2 table instead of evaluating log2f() on the device, and returns the CPU's scores bit for bit¶
ADR-1436: ciede_sycl runs the CPU's statements on fp32 pairs and adds in the CPU's order; it lands where the CUDA twin does, 1.4e-11 from the CPU¶
1436-sycl-ciede-cpu-arithmetic
ADR-1437: motion_hip, motion_v2_hip, psnr_hip, integer_ms_ssim_hip and cambi_hip are declared exact twins; float_psnr_hip and float_moment_hip are not¶
ADR-1438: integer_ssim_hip adds its terms in the CPU's raster order at every frame size and returns the CPU's score bit for bit¶
ADR-1440: float_psnr_hip adds its squared differences as integers and returns the CPU's score bit for bit¶
1440-hip-float-psnr-exact-block-sums
ADR-1441: float_ssim_hip forms its window sums through the arithmetic float_ms_ssim_hip shares with the CPU and returns the CPU's score bit for bit¶
1441-hip-float-ssim-cpu-window-sums
ADR-1442: float ADM divides; the processor's reciprocal estimate leaves the reference and the CUDA twin¶
1442-float-adm-reference-divides
ADR-1443: integer_ssim_sycl computes the CPU's fp64 term in 64-bit integers and adds in the CPU's order; it returns the CPU's ssim bit for bit¶
ADR-1444: float_vif_hip runs the arithmetic of the CUDA twin from one shared header and returns the CPU's scores bit for bit¶
1444-hip-float-vif-cpu-arithmetic
ADR-1445: ssimulacra2_hip evaluates the CPU's fp64 terms and returns the sums of the CPU's loops¶
1445-hip-ssimulacra2-cpu-sum-order
ADR-1446: ssimulacra2_sycl forms the CPU's fp64 terms in 64-bit integers and returns the sums of the CPU's loops; it returns the CPU's score bit for bit¶
1446-sycl-ssimulacra2-cpu-bits
ADR-1447: float_moment_hip adds the float squares the CPU adds, and is bit-identical while the CPU's own sum is exact¶
1447-hip-float-moment-cpu-float-squares
ADR-1448: ciede_hip runs the CPU's arithmetic in fp32 pairs, from the header the SYCL twin runs; what remains is glibc's powf and the last bits of a pair¶
ADR-1449: float_moment_sycl adds the float squares the CPU adds, and is bit-identical while the CPU's own sum is exact¶
1449-sycl-float-moment-cpu-float-squares
ADR-1450: float_psnr_sycl adds its squared differences as integers, and is bit-identical to the CPU¶
1450-sycl-float-psnr-exact-block-sums
ADR-1451: adm_sycl, motion_sycl, motion_v2_sycl, psnr_sycl, float_ssim_sycl and cambi_sycl are declared exact twins; speed_chroma_sycl is not¶
1451-sycl-exact-twins-declared
ADR-1452: the gate bounds speed_chroma_hip against the CPU by what glibc's log2f adds, as it does for the CUDA twin¶
1452-hip-speed-chroma-log2f-bound
ADR-1453: float_moment_cuda adds the float squares the CPU adds, and is bit-identical while the CPU's own sum is exact¶
1453-cuda-float-moment-cpu-float-squares
ADR-1454: A large subtree AGENTS.md is a generated index over one page per topic¶
1454-agents-index-and-topic-pages
ADR-1455: float_psnr_cuda adds its squared differences as integers, and is bit-identical to the CPU¶
1455-cuda-float-psnr-exact-block-sums
ADR-1456: vif_cuda keeps its device log2f(), proven equal to the CPU's log2 table on every entry, and is declared an exact twin¶
1456-cuda-vif-device-log2-pinned
ADR-1457: motion_cuda, motion_v2_cuda, psnr_cuda, float_ssim_cuda, float_ms_ssim_cuda and cambi_cuda are declared exact twins¶
1457-cuda-exact-twins-declared
ADR-1458: float_adm_hip runs the CPU's arithmetic from the header the CUDA twin runs and returns the CPU's scores bit for bit¶
1458-hip-float-adm-cpu-arithmetic
ADR-1459: SpEED's covariance kernels return the scalar kernel's bits; they vectorise across sums, not within one¶
ADR-1460: speed_temporal becomes a parity-gate feature with a derived bound, and every registered twin of a gated backend has to be a gate cell¶
1460-gate-speed-temporal-and-uncovered-twins
ADR-1461: no C or C++ translation unit is built with floating-point contraction; the strict policy is a project argument¶
1461-strict-fp-every-translation-unit
ADR-1462: vif_cuda reads the CPU's log2 table instead of evaluating log2f() on the device¶
1462-cuda-vif-reads-host-log2-table
ADR-1463: float_ssim_sycl forms the CPU's fp64 terms in 64-bit integers and adds them on the host in the CPU's raster order¶
1463-sycl-float-ssim-raster-sum
ADR-1464: float_ssim_cuda adds its frame sums in the CPU's raster order, on the host¶
1464-cuda-float-ssim-raster-order-sum
ADR-1465: float_ms_ssim_cuda adds the terms of every scale in the CPU's raster order, on the host¶
1465-cuda-float-ms-ssim-raster-order-sum
ADR-1466: float_ms_ssim_sycl stores every window's l, c and s of every scale and adds them on the host in the CPU's raster order¶
1466-sycl-float-ms-ssim-raster-sum
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¶
1467-ciede-squares-as-products
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¶
1468-sycl-sub-group-sizes-every-aot-target
ADR-1469: the psnr_hvs SIMD butterfly is two functions, cut at the same statement in the AVX2 and the NEON twin¶
1469-psnr-hvs-simd-butterfly-two-stages
ADR-1470: An enum that C and C++ translation units both see has one size: no C++-only underlying type other than int's width¶
1470-c-cxx-shared-enum-one-definition
ADR-1471: The clang-tidy lanes are measured in the dev container, with the device toolchains¶
1471-tidy-lanes-in-dev-container
ADR-1472: The integer ADM weight limits follow from the contrast-masking cube and the largest wavelet coefficient of a scale¶
1472-integer-adm-cm-weight-budget
ADR-1473: The x86 float ADM wavelet and CSF kernels return the scalar bits and are dispatched; the two reduction kernels are removed¶
1473-float-adm-x86-simd-exact-and-dispatched
ADR-1474: A fork-created header that replays upstream arithmetic is EUPL-1.2 AND the licences of exactly that code, and the relicensing check becomes a required CI job¶
1474-relicense-helper-headers-and-ci-check
ADR-1475: The quantisation step of integer ADM is Netflix's expression again, so vmaf_v0.6.1 returns Netflix master's bits¶
1475-integer-adm-quant-step-upstream-float
ADR-1476: ciede2000() forms its two products in float, as Netflix's source does; the double casts of PR #552 are removed and the three GPU twins follow¶
1476-ciede-upstream-expression
ADR-1477: SpEED evaluates Netflix's fp64 expressions again, and its GPU twins form the entropies and the score on the host with the same statements, so every twin returns the CPU's scores bit for bit on any C library¶
1477-speed-upstream-double-math
ADR-1478: Port motion_five_frame_window from Netflix; the deferral of ADR-0337 ends for this option¶
1478-motion-five-frame-window-port
ADR-1479: ciede upsamples 4:2:2 chroma with the horizontal flag for columns and the vertical flag for rows; upstream has the two swapped, and ciede2000 differs by up to 0.153 on 4:2:2 input¶
1479-ciede-422-chroma-subsampling-flags
ADR-1480: speed_temporal sizes its frame buffers for the prescaled height; upstream sizes them for the source height and reads past them when speed_prescale is above 1¶
1480-speed-frame-buffers-prescale-above-one
ADR-1481: an extractor that fails on a worker thread fails the run; upstream drops the worker's error and returns success without the metric¶
1481-extractor-failure-fails-the-run
ADR-1482: integer adm on frames of 17 to 32 pixels reads inside the frame and rounds a zero shift with 0; upstream reads index -1 there, and scale 3 differs by up to 0.23¶
1482-integer-adm-frames-17-to-32
ADR-1483: a subsampled chroma plane of an odd-sized picture is rounded up; upstream rounds down, and chroma metrics on odd sizes differ by up to 0.83 dB¶
1483-odd-size-chroma-planes-round-up
ADR-1484: float_ms_ssim takes the magnitude of a scale's terms before pow(); upstream raises a negative structure term to a fractional power and returns NaN on anti-correlated frames¶
1484-float-ms-ssim-magnitude-before-pow
ADR-1485: the aggregate PSNR of a plane without error is the per-frame cap; upstream publishes a ceiling 54 dB above it on the 1080p checkerboard chroma¶
1485-apsnr-zero-error-plane-reports-cap
ADR-1486: float_motion scales its scale-1 planes with the stride it was called with; upstream recomputes the stride from the plane width, and motion_add_scale1 with motion_add_uv differs by up to 25¶
1486-float-motion-scale1-uses-callers-stride
ADR-1487: code inherited from Netflix/vmaf evaluates as Netflix's source does, a difference needs an ADR, and a guard compares every emitted value against the recorded upstream head¶
1487-upstream-parity-policy-and-guard
ADR-1488: the psnr_hvs masking threshold is the double root of a float product, as Netflix's source writes it; the double product of PR #552 is removed and the AVX2, NEON, CUDA, HIP and SYCL forms follow, bit for bit¶
1488-psnr-hvs-upstream-mask-product
ADR-1489: The CSF weights of float ADM are Netflix's float arithmetic again, so float_adm differs from Netflix by the division alone¶
1489-float-adm-barten-upstream-float
ADR-1490: Insert RC7 CPU capability source of truth and shift the later candidates¶
1490-rc3-rc9-candidate-map-cpu-capability
ADR-1491: The CUDA, SYCL and HIP motion twins compute motion_five_frame_window: the frame two back on the device, the CPU's window function on the host¶
1491-gpu-motion-five-frame-window
ADR-1492: Tester image with one report command, hardware reports as tracked files¶
1492-tester-image-arm64-report
ADR-1493: macOS tester bundle, an exception to container-only publishing¶
ADR-1494: adm and float_adm refuse frames below 17x17; upstream's integer ADM crashes there and its float ADM returns values that at 8x8 and 12x9 depend on the heap¶
1494-adm-refuses-frames-below-17
ADR-1495: icx and icpx builds link glibc's libm, not Intel's libimf¶
ADR-1496: The macOS tester bundle runs the parity gate's Metal cells and reports per state row what it measured¶
1496-metal-gate-in-tester-bundle
ADR-1497: The float_moment twins form the CPU's rounded second-moment sum past 2^53 units, and return the CPU's bits on every frame¶
1497-float-moment-twins-cpu-sum-past-2-53
ADR-1498: Metal twins take the exact designs of their CUDA, HIP and SYCL twins, on a strict FP kernel policy¶
1498-metal-twins-exact-designs
ADR-1499: The float_psnr twins add each row's exact sum in the CPU's order, and return the CPU's bits on every frame¶
1499-float-psnr-twins-cpu-row-order
ADR-1500: The NEON and SVE2 float_moment kernels add in the scalar's order and return its bits on every input and vector length¶
1500-arm-float-moment-scalar-order
ADR-1501: The float_adm_sycl term kernel takes the large register file and leaves the sub-group size to the compiler, so it uses no scratch memory on Xe2¶
1501-sycl-float-adm-terms-large-grf-xe2
ADR-1502: Tests that assert an exact result compare floats by their bits through one helper, core/test/float_bits.h, which treats a NaN as identical to nothing¶
1502-float-bit-identity-test-helper
ADR-1503: Every published tester artifact carries its licence texts, an attested SPDX SBOM and the source its copyleft parts require, and a gate refuses a file with no recorded licence¶
1503-tester-artifact-licensing
ADR-1504: Decline praetor's branch ruleset; the policy file is the only declaration¶
1504-decline-praetor-branch-ruleset
ADR-1505: An Intel GPU tester image with a backend-neutral GPU section in the report¶
ADR-1506: Move the praetor pin to 0af07a733e65 to drop the braces chain from the documentation gate's lock¶
1506-praetor-pin-move-markdownlint-braces
ADR-1507: The bundled BRISQUE model is used and redistributed under the LIVE release notice as written, not as a research-only exception¶
1507-brisque-live-notice-terms
ADR-1508: Documentation site generator, charts, diagrams and typography for the redesign¶
1508-docs-site-toolchain-and-charts
ADR-1509: An NVIDIA GPU tester image that ships no NVIDIA file and measures every CUDA twin on a tester's GPU¶
ADR-1510: Collapse the ADR navigation behind the index and tag pages¶
1510-adr-nav-collapse-behind-index
ADR-1511: An AMD GPU tester image that ships only the ROCm runtime files the HIP build loads, with the source of its LGPL parts¶
ADR-1512: Site search covers user pages only; record bodies leave the index¶
1512-docs-search-user-pages-only
ADR-1513: The production images, release assets and Python packages follow the tester licensing rules, checked by the same tool¶
1513-production-artifact-licensing
ADR-1514: The Go service images record every linked module's licence from the binary, and the node image ships a redistributable FFmpeg, a source-built rclone and the records of the libraries it copies¶
1514-go-and-node-image-licensing
ADR-1515: A native Windows tester zip for x64 and Arm64, built by the hosted runners with MSVC and a static C runtime¶
ADR-1516: A Windows CUDA tester zip that ships no NVIDIA file and measures every CUDA twin on a tester's Windows PC¶
ADR-1517: The production GPU images are built on Debian 13, ship only the vendor files libvmaf loads, and share the tester images' licence records¶
ADR-1518: The controller authorises every gRPC call against one per-method role table, and a method without an entry is refused¶
1518-controller-grpc-authorization
ADR-1519: The controller reads its tenants from VmafxTenant resources (or a file of them), verifies each token against its own tenant's provider, and refuses what it cannot verify¶
1519-controller-tenant-registry
ADR-1520: Feature-vector tiny models request their inputs, score at flush, and fail on a missing input¶
1520-tiny-model-feature-inputs-at-flush
ADR-1521: vmafx-mcp names the Go server; the Python wheel's script of that name is a one-release alias¶
1521-python-mcp-console-script-name
ADR-1522: Every job read of the controller is scoped to the caller's tenant in the query, and a node session belongs to the tenant that registered it¶
1522-controller-tenant-scoped-reads
ADR-1523: HIP twins run on the device of the imported state¶
1523-hip-twins-run-on-the-state-device
ADR-1524: vmafx-node pulls work from the controller, advertises exactly the backend it runs, and refuses to start when it cannot honour its configuration¶
1524-vmafx-node-controller-client
ADR-1525: adm_hip computes AIM on the device and is dispatched¶
ADR-1526: vmafx-node reads job sources through pkg/storage and streams http-served inputs into the vmaf CLI through pipes¶
1526-node-storage-streamed-inputs
ADR-1527: TransNet V2 runs upstream's 100-frame windows on 0..255 thumbnails and binds its output by position¶
1527-transnet-v2-upstream-windows
ADR-1528: Every test file belongs to a suite that a required check runs¶
ADR-1539: vmafx-node starts the eBPF descriptor tracker on request, fails closed when the host cannot run it, and ships the compiled BPF object¶
ADR-1540: The mobilesal extractor pads frames to a multiple of 8 for the saliency students¶
1540-saliency-pad-to-multiple-of-8
ADR-1546: The registry validator holds tiny-model metadata to the shipped graphs¶
1546-tiny-model-metadata-against-graphs
ADR-1547: The Helm chart derives the GPU resource name from the vendor and the Intel kernel driver, with an explicit override¶
ADR-1558: A codec-aware sidecar declares how its codec block's scalar slots are normalised¶
1558-codec-block-encoding-from-sidecar
ADR-1559: the node's eBPF program stays EUPL-1.2 and declares "GPL" to the kernel under EUPL-1.2's compatibility clause¶
1559-ebpf-kernel-licence-string
ADR-1560: A Python package declares the licences of every file its sdist and wheel carry, its compiled extension included¶
1560-python-package-licence-union
ADR-1561: integer VIF converts its residual variance through vif_sv_sq(), which returns x86's value without the undefined double to int32_t conversion¶
1561-integer-vif-sv-sq-defined
ADR-1562: Every vmaf-tune command returns the lowest-bitrate encode that meets the target¶
1562-vmaf-tune-lowest-passing-bitrate-pick
ADR-1563: a dedicated vmafx:node role is the only role that reaches the controller's node API¶
ADR-1564: The dev container is pushed only into a private package, checked before every push¶
ADR-1565: A libx265 two-pass cell at a CRF is pass 1 at the CRF, then ABR at pass 1's bitrate¶
1565-vmaf-tune-x265-two-pass-abr-at-pass1-bitrate
ADR-1566: A Windows SYCL tester zip built with /MD that carries its runtime beside every program and measures every SYCL twin on a tester's Intel GPU¶
ADR-1567: a cancelled running job reaches its node through the heartbeat answer, and the node stops the vmaf process¶
ADR-1568: A test runs once in CI¶
ADR-1569: the operator presents a bearer token to the controller from a file it reads on every call, through credentials shared with the node¶
ADR-1570: Tiny models trained on restricted data stay, their cards quote the data's terms, and RC9 retrains them on cleared data¶
1570-tiny-model-dataset-terms-retrain-rc9
ADR-1571: a GPU dispatch variable is documented only when library code reads it; VMAF_CUDA_DISPATCH is read at extractor init, VMAF_HIP_DISPATCH and its predicate are removed¶
1571-gpu-dispatch-env-consulted
ADR-1577: each tenant scores only inputs under its own scoring roots, denied by default, checked by the controller and again by the node¶
ADR-1578: The rc.1 and rc.2 ROCm and node images are withdrawn; every other published rc image gets notices and a source companion¶
1578-published-rc-licence-companions
ADR-1589: the Helm chart deploys vmafx-controller as its own one-replica workload, and the release publishes a licence-gated controller image¶
ADR-1590: Every build stores its GPU device code compressed at the toolchain's strongest setting, and the build refuses raw device code¶
ADR-1591: Publish every archive and image at the strongest compression its documented consumers open¶
ADR-1592: the controller runs under its own service account, the only one that may read VmafxTenants¶
1592-helm-split-service-accounts
ADR-1593: the node image carries FUSE mount tools, and the Helm chart grants FUSE and the eBPF tracker per value¶
ADR-1594: zstd image layers with a Docker Engine 23.0 floor, and zopfli for the Windows zips¶
ADR-1595: Build and run what the push-only and release-only workflows publish, before they publish¶
1595-pr-time-verify-push-only-workflows
ADR-1601: integer VIF forms the denominator log argument sigma_nsq + sigma1_sq in uint32_t¶
ADR-1622: the node's eBPF object is generated at build time with a pinned clang and no object is committed¶
1622-bpf-object-generated-at-build-time
ADR-1673: A push to master never cancels the runs of an earlier master commit; the concurrency group carries the SHA there¶
1673-master-runs-not-cancelled-by-concurrency
ADR-1679: The Metal IOSurface import reads NV12 and P010 surfaces itself, and the FFmpeg filter imports whole frames¶
1679-metal-iosurface-biplanar-import
ADR-1685: A post-1.0 embedding milestone: zero-copy device-frame import with fences, asynchronous window scores, and an unchanged licence¶
1685-post-1-0-embedding-zero-copy-milestone
ADR-1686: a Scorecard master run whose master moved on to a descendant ends cancelled¶
1686-scorecard-superseded-master-runs
ADR-1687: Require the pull-request release legs through the aggregator¶
1687-required-release-dry-run-legs
ADR-1688: The SYCL zero-copy path admits only extractors that compute from the shared luma, and names every other one¶
1688-sycl-zero-copy-luma-only-admission
ADR-1699: The root licence files state ADR-1250's terms, and every package manifest declares the licences of the files it ships¶
ADR-1700: The tester selectors follow their own paths, not the full-mode fallback¶
1700-tester-selectors-own-paths-only
ADR-1701: Build and test the tester image every night on master¶
1701-nightly-tester-image-build
ADR-1707: Cut v1.0.0-rc.3 without waiting for outside-hardware reports¶
1707-rc3-exit-without-outside-hardware
ADR-1713: Rust feature-extractor twins behind the unchanged C ABI (RC4 framework)¶
1713-rc4-rust-extractor-framework
ADR-1755: The feature collector owns the models it mounts¶
1755-collector-owns-mounted-model
ADR-1761: The libvmaf_sycl filter retries a failed VA import, then stops naming the frame; each input is imported with its own VA display¶
1761-sycl-filter-import-retry-then-fail
ADR-1762: Every translation unit is read by a clang-tidy lane or excepted by name¶
1762-tidy-every-translation-unit-read
ADR-1768: The FFmpeg libvmaf and libvmaf_cuda filters print no pooled score after a mid-run error¶
1768-ffmpeg-libvmaf-no-score-after-error
ADR-1794: Bilinear column tables without a width limit¶
1794-bilinear-column-tables-no-width-limit
ADR-1805: Delete the Netflix release tags inherited by VMAFx/vmafx¶
1805-delete-inherited-netflix-tags
ADR-1806: Run Metal kernel files on the host through a Metal Shading Language shim in tests¶
1806-metal-kernels-host-replay
ADR-1822: vmaf_picture_convert ships additively, with the source colour as an argument¶
ADR-1828: Netflix's own golden-assertion updates are ported verbatim from upstream¶
1828-port-netflix-golden-updates
ADR-1829: RC4 owns the whole device-memory import API, not only the first full Rust metric¶
ADR-1830: vif_sycl runs at SIMD-16 only; the SIMD-32 kernels and VMAF_SYCL_VIF_SUBGROUP_SIZE are removed¶
ADR-1836: vif_cuda names its scores after enable_chroma when the caller sets it¶
1836-cuda-vif-enable-chroma-names
ADR-1852: A new VMAFx C API generated from one definition, libvmaf as its compatibility layer, and VMAFx-named FFmpeg filters (RC4)¶
ADR-1868: Fold the 2026-10-05 scope into the existing RC4 to RC9 candidates¶
ADR-1874: The vmaf CLI reports its usable backends; the score-backend selectors read that report¶
ADR-1880: Format envelope and device-targeted scoring in the 1.0.0 candidates¶
1880-format-envelope-device-targets
ADR-1886: torch only where training runs¶
1886-torch-training-environments-only
ADR-1897: VMAFx ABI numbering before 1.0: additions take a patch bump and join the current minor's version node¶
ADR-1898: A resumable stage runner and a mini retrain that exercises the retrain tooling in CI¶
ADR-1899: govulncheck at symbol level, OpenVEX for what is not called¶
1899-govulncheck-symbol-gate-openvex
ADR-1900: Deterministic verification and state contract for VPL decode retry ceiling¶
1900-vpl-decode-ceiling-contract
ADR-1906: VMAFx core API semantics: per-context logging, size negotiation, frame and model references¶
ADR-1917: The integer ADM scale-0 horizontal and vertical weight limit is 43900, set by the CSF stage's 16-bit magnitude¶
1917-integer-adm-scale0-weight-limit-csf-magnitude
ADR-1918: Samples above 2^bpc - 1 are invalid input; an opt-in check refuses them¶
1918-sample-range-contract-opt-in-check
ADR-1929: VMAFx device frames, fences and the import rule: the shared contract the backend lanes implement¶
1929-vmafx-device-frames-fences
ADR-1930: sycl_device_asan puts the device sanitizer on every SYCL compile and the link¶
ADR-2001: Release scope of 1.0.0 and the roadmap to 2.0¶
2001-release-scope-1-0-and-roadmap-to-2-0
ADR-2012: Lefthook and the pre-commit framework on Windows hosts¶
ADR-2023: VMAFx device frames on CUDA: one library stream per device, fences on it, release events recorded where the frame is released¶
ADR-2044: VMAFx option groups generate every scoring surface, and the scoring API is a versioned contract¶
2044-vmafx-option-groups-scoring-contract
ADR-2055: The x86 AVX2 level requires FMA¶
2055-x86-avx2-gate-requires-fma
ADR-2056: float_adm files its debug ratio unsuffixed; a second debug instance is refused¶
2056-float-adm-debug-key-refusal
ADR-2062: The cpu tidy lane measures the MATLAB MEX sources against self-authored stub headers¶
ADR-2073: The provenance record is canonical JSON with one digest over the configuration and the scores, the library writes it into every report, and --verify-provenance re-runs it¶
ADR-2074: VMAFx window scores: a completion thread per context, one pooling implementation, the window clock and the in-flight bound¶
ADR-2090: Derive motion2 / motion3 frame by frame: final once the frame after is scored, the same statements as the flush¶
2090-motion-window-incremental
ADR-2092: VMAFx device frames on HIP: one library stream per device copies every frame for the twins, dma-bufs as external memory, sync_file checked on the host¶
ADR-2093: HDR-VMAF groundwork from upstream, with the input colorimetry on the context¶
2093-upstream-hdr-groundwork-input-colorimetry
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¶
2094-libvmaf-compat-library-split
ADR-2126: Declare the single-maintainer gaps of OpenSSF Scorecard's Code-Review and Branch-Protection checks as exceptions¶
2126-scorecard-single-maintainer-exceptions
ADR-2134: adm_cm_aim_line_kernel_4 gets its own register budget of 209 for the exact scale-0 angle flag¶
2134-cuda-adm-cm-aim-register-budget-angle-flag
ADR-2153: Move the praetor pin to 04cc813ff054 for the documentation lint budget and the tidy coverage gate¶
ADR-2167: -qpfile on libx264 applies its offsets through quant_offsets¶
2167-ffmpeg-x264-qpfile-quant-offsets
ADR-2169: CI runs the tier a pull request owes, not the whole suite on every push¶
ADR-2170: A CI leg that prints no warnings turns them into errors, one leg at a time¶
2170-warnings-are-errors-per-leg
ADR-2171: A weekly research radar over public video-quality sources¶
ADR-2197: Generated changelog, ADR index and rebase notes are rendered when pull requests land¶
2197-render-generated-docs-at-landing
ADR-2198: A tester leg builds where its inputs change, and no release is cut on a leg nobody saw green¶
2198-windows-sycl-leg-and-cut-check
ADR-2199: actionlint runs under a deadline and fails loudly when it hangs¶
ADR-2200: The live source ADR-citation bindings are derived from the tree, not recorded¶
2200-source-adr-citations-derived
ADR-2321: Move the praetor pin to afb739ed81f3 and meet its nested-context, supply-chain and harness checks¶
ADR-2342: Record the scope decisions of 2026-10-06 and 2026-10-07 in the candidate map¶
ADR-2343: Reference-exact extractors by default, with a named Netflix compatibility mode¶
2343-reference-exact-default-compat-mode
ADR-2349: One metric definition drives the services, the generated dashboards and the observability package¶
ADR-2350: The VMAFx platform keeps its state in PostgreSQL, scales on queue depth and generates its platform surfaces from a definition¶
ADR-2377: Go saliency inference runs through the core's MobileSal extractor and the RC4 Go binding¶
2377-go-saliency-through-mobilesal-binding
ADR-2383: macOS and Windows package channels are fed by the verified native release pipelines¶
2383-package-channels-native-pipelines
ADR-2399: SLO objectives, burn-rate windows and alert thresholds are chart values, rendered from one rule builder¶
2399-observability-slo-settings-as-values
ADR-2440: Move the praetor pin to 7458a220e1c9 and drop the exceptions for the managed workflows¶
ADR-2461: A lighter deliverables track for small pull requests¶
2461-small-pr-deliverables-track
ADR-2462: Every commit carries a DCO sign-off, checked on pull requests¶
ADR-2478: Rust replaces the host-side C and C++ through 3.0, behind the unchanged C ABI¶
ADR-2485: VMAFx keeps its own credits page, generated from a curated list and held to the tree¶
ADR-2646: POSIX-only build parts stay off Windows, and preflight refuses an unguarded POSIX header¶
ADR-2647: the operator records events in every namespace through a write-only ClusterRole¶
2647-operator-events-cluster-wide
ADR-2673: the Helm chart declares EUPL-1.2 AND Apache-2.0 because its values schema embeds Kubernetes type schemas¶
2673-chart-licence-kubernetes-schemas
ADR-2689: sponsorship is recognition only, in four monthly tiers, with one source file for the list¶
2689-sponsorship-tiers-recognition-only
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¶
2751-win32-pthread-shim-timed-wait
ADR-2752: A static MSVC build installs vmaf.lib and vmafx.lib¶
2752-msvc-static-library-platform-names