Skip to content

ADRs tagged fork-local

Auto-generated by scripts/docs/generate-adr-by-tag.sh. Edit ADR Tags: lines to update.

658 ADR(s) carry this tag.

ID Title
ADR-0164 SSIMULACRA 2 snapshot-JSON regression gate (T3-3)
ADR-0165 Tracked docs/state.md for bug-status hygiene (T7-1)
ADR-0168 Tiny-AI Wave 1 baselines C2 + C3 — KoNViD-1k training (T6-1)
ADR-0170 vmaf_pre extended to 10/12-bit and optional chroma (T6-4)
ADR-0172 MCP describe_worst_frames tool with VLM fallback (T6-6)
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-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
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
ADR-0184 Vulkan VkImage import C-API scaffold (T7-29 part 1 of 2)
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
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)
ADR-0202 float_adm CUDA + SYCL twins — sixth Group B float kernel finishes
ADR-0203 Tiny-AI training prep — implementation decisions
ADR-0205 cambi GPU feasibility spike
ADR-0207 Tiny-AI Quantization-Aware Training (QAT) — design
ADR-0208 First per-model QAT — learned_filter_v1 int8 (T5-4)
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-0214 GPU-parity CI gate (T6-8) — cross-device variance matrix
ADR-0217 SYCL toolchain cleanup — multi-version recipe + icpx-aware clang-tidy wrapper
ADR-0218 MobileSal saliency feature extractor (T6-2a)
ADR-0219 motion3 GPU coverage on Vulkan + CUDA + SYCL (3-frame window)
ADR-0221 CHANGELOG + ADR-index fragment-file pattern
ADR-0222 vmaf-perShot per-shot CRF predictor sidecar
ADR-0223 0223-transnet-v2-shot-detector.md
ADR-0234 GPU-generation-aware ULP calibration head
ADR-0235 Codec-aware FR regressor (fr_regressor_v2)
ADR-0236 0236-dists-extractor.md
ADR-0237 Quality-aware encode automation surface (vmaf-tune)
ADR-0238 Vulkan VmafPicture preallocation surface (API parity with CUDA / SYCL)
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
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
ADR-0246 Per-backend GPU kernel scaffolding templates (CUDA + Vulkan)
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
ADR-0251 Vulkan VkImage import — v2 async pending-fence model (T7-29 part 4)
ADR-0254 HIP second-consumer kernel — float_psnr_hip via mirrored kernel-template
ADR-0257 MobileSal real-weights swap deferred (T6-2a-followup blocker)
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
ADR-0261 TransNet V2 shot-boundary detector — real upstream weights via NTCHW adapter (T6-3a-followup)
ADR-0264 Vulkan 1.4 API-version bump blocked on shader FP-contraction audit
ADR-0265 U-2-Net u2netp saliency replacement blocked on weights distribution + op allowlist
ADR-0269 precise decoration audit on vif.comp + ciede.comp — Step A of the Vulkan 1.4 bump path
ADR-0271 Wire integer_ms_ssim_cuda through the CUDA fence-batching helper
ADR-0273 HIP seventh kernel-template consumer — float_motion_hip
ADR-0274 HIP eighth kernel-template consumer — float_ssim_hip
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)
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
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
ADR-0287 vmaf_tiny_v5 — corpus expansion (4-corpus + YouTube UGC vp9 subset)
ADR-0288 vmaf-tune libx265 codec adapter
ADR-0289 vmaf-tune resolution-aware model selection + CRF offsets
ADR-0290 NVENC codec adapters for vmaf-tune (h264 / hevc / av1)
ADR-0293 vmaf-tune saliency-aware ROI tuning (Bucket #2)
ADR-0294 vmaf-tune codec adapter for SVT-AV1
ADR-0295 vmaf-tune Phase E — per-title bitrate-ladder generator
ADR-0296 Region-of-interest VMAF scoring (vmaf-roi-score) — saliency-weighted scaffold
ADR-0297 vmaf-tune — codec-agnostic encode dispatcher
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-0303 fr_regressor_v2 ensemble — production flip trainer + CI gate
ADR-0304 vmaf-tune fast — production wiring (Optuna TPE + v2 proxy + GPU verify)
ADR-0305 Encoder knob-space Pareto-frontier analysis stratified per (source, codec, rc_mode)
ADR-0307 vmaf-tune ladder default sampler — wire Phase B/E gap
ADR-0308 Encoder knob-sweep recipe-regression revision policy
ADR-0309 fr_regressor_v2 ensemble — real-corpus retrain harness + flip workflow
ADR-0310 BVI-DVC corpus ingestion for fr_regressor_v2
ADR-0311 libFuzzer harness expansion — fuzz_yuv_input + fuzz_cli_parse
ADR-0314 vmaf-tune --score-backend=vulkan (vendor-neutral GPU scoring)
ADR-0315 Vendor-neutral VVC encode strategy — tiered Tier-1-now / Tier-2-backlog / Tier-3-revisit
ADR-0316 cli_parse — handle long-only options in error()
ADR-0318 fr_regressor_v2 ensemble retrain harness — wrapper-trainer interface fix + Phase A pre-step doc
ADR-0319 fr_regressor_v2 ensemble LOSO trainer — real loader + per-fold training
ADR-0320 fr_regressor_v2 ensemble seeds — production flip (smoke → false)
ADR-0323 fr_regressor_v3 — train + register on ENCODER_VOCAB v3 (16-slot)
ADR-0324 Ensemble training kit — portable Phase-A + LOSO retrain bundle
ADR-0325 KonViD-150k corpus ingestion
ADR-0326 vmaf-tune Phase B — target-VMAF bisect
ADR-0331 Skip CI on draft pull requests
ADR-0332 Agent worktree-drift hard guard
ADR-0333 vmaf-tune Phase F — multi-pass encoding (libx265 first)
ADR-0334 state.md-touch-check CI gate (ADR-0165 enforcement)
ADR-0336 KonViD MOS head v1 (ADR-0325 Phase 3)
ADR-0337 motion_v2 inherits motion v1's public option surface (duplicate registration)
ADR-0339 av1_videotoolbox placeholder adapter + upstream watcher
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
ADR-0345 cambi × {CUDA, SYCL, HIP} GPU port strategy
ADR-0346 FR-features-from-NR-corpus adapter pattern
ADR-0347 Sanitizer matrix — concrete test-set scope per sanitizer
ADR-0348 Globally suppress CodeQL cpp/poorly-documented-function
ADR-0350 psnr_hvs AVX-512 — re-bench confirms AVX2 ceiling (T3-9 (a))
ADR-0353 Vulkan submit-pool migration PR-B — six secondary kernels
ADR-0354 Vulkan submit-pool migration PR-C — cambi, ssimulacra2, float_ansnr, moment
ADR-0355 Symphony-inspired agent-dispatch infrastructure
ADR-0359 0359-arc-runners-pilot.md
ADR-0360 CAMBI CUDA port (Strategy II hybrid, T3-15a)
ADR-0361 Metal compute backend — scaffold-only audit-first PR (T8-1)
ADR-0362 0362-k150k-corpus-integration.md
ADR-0363 Mend Renovate replaces Dependabot as the dependency-update bot
ADR-0364 saliency_student_v2 — Resize-decoder ablation on the v1 recipe
ADR-0365 Wire the CoreML execution provider into tiny-AI ORT dispatch
ADR-0367 LSVQ corpus ingestion for nr_metric_v1
ADR-0368 External-competitor benchmark harness — wrapper-only architecture
ADR-0369 Waterloo IVC 4K-VQA corpus ingestion for nr_metric_v1
ADR-0370 0370-live-vqc-corpus-ingestion.md
ADR-0374 Build-time-optional public APIs return -ENOSYS when disabled
ADR-0375 HIP batch-3 — float_moment_hip and float_ssim_hip real kernels
ADR-0376 Fix silent error-swallow in Vulkan buffer-invalidate readback functions
ADR-0377 HIP batch-4 — ciede_hip and integer_motion_v2_hip real kernels
ADR-0378 Per-picture CUDA streams must use CU_STREAM_NON_BLOCKING
ADR-0379 libvmaf Symbol Visibility — Hide Internal Symbols with -fvisibility=hidden
ADR-0382 Y4M header parser — reject non-positive width or height before allocation
ADR-0383 K150K corpus scoring driver — parallel CPU worker redesign
ADR-0384 Switch shfmt pre-commit hook from binary download to Go-source build
ADR-0385 Feature-extractor deduplication by provided-feature names
ADR-0387 Migrate Renovate from self-hosted workflow to GitHub App
ADR-0389 vmaf_tiny_v3 — wider/deeper mlp_medium tiny VMAF MLP
ADR-0391 ciede2000 Vulkan NVIDIA places=4 fork debt is a structural f32/f64 precision gap
ADR-0392 vmaf-tune Phase D — per-shot CRF tuning
ADR-0393 fr_regressor_v2 probabilistic head — deep-ensemble + conformal scaffold
ADR-0394 Local sidecar training — on-host bias-correction model
ADR-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-0399 vmaf-tune codec-adapter contract becomes a runtime contract (HP-1)
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
ADR-0405 Wire OpenVINO NPU execution provider into the tiny-AI dispatch layer
ADR-0406 Defer SYCL ADM DWT group_load rewrite — divisibility blocker
ADR-0407 AdaptiveCpp as a second SYCL toolchain
ADR-0410 ssimulacra2_cuda GPU module leak + per-scale malloc removal
ADR-0412 Fork-local release-artefact mirror scaffold for u2netp.pth (Apache-2.0)
ADR-0413 YouTube UGC corpus ingestion for nr_metric_v1
ADR-0414 Saliency-aware ROI for x265 / SVT-AV1 / libvvenc adapters
ADR-0415 CAMBI SYCL port — closes last CUDA-to-SYCL parity gap
ADR-0416 VIF on-the-fly filter sync from Netflix upstream
ADR-0417 Tiny-AI Netflix corpus training scaffold — draft PR registration
ADR-0418 Full upstream ADM + VIF-prescale sync (companion to PR #758 / ADR-0416)
ADR-0420 Metal backend runtime (T8-1b)
ADR-0421 Metal first kernel — integer_motion_v2 (T8-1c)
ADR-0422 CLI HIP and Metal Backend Selectors
ADR-0425 vmaf-roi-score saliency materialiser
ADR-0430 Saliency RGB ingest and SSIMULACRA2 public docs
ADR-0431 Split CUDA and CPU Feature Passes for FR-from-NR Extraction
ADR-0432 High-Bit-Depth ROI-Score Mask Materialisation
ADR-0433 CHUG Content Splits And HDR Audit
ADR-0434 CHUG Parquet Metadata Enrichment
ADR-0436 MCP server backend-selector parity
ADR-0437 Metal public-header install and vmaf_metal_import_state declaration
ADR-0444 Promote saliency_student_v2 to production default
ADR-0445 Persistent VkPipelineCache for Vulkan compute backend
ADR-0446 K150K/CHUG extractor passes HDR and HFR per-feature options
ADR-0447 Motion features under-report on HFR / 50p content
ADR-0448 Active upstream monitoring (no silent "wait" deferrals)
ADR-0451 Local dev-MCP container for live probing
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
ADR-0457 model/tiny/*.onnx blobs ≥1MB live in GitHub Releases, not git
ADR-0458 SYCL CAMBI queue-sync collapse + SSIM horizontal SLM staging
ADR-0459 vmaf-tune panel/display-aware recommendation workstream
ADR-0463 ADM p-norm fast-path split and VIF scalar-fallback malloc hoist
ADR-0464 CAMBI CUDA spatial-mask shared-memory tile
ADR-0471 Add enable_chroma to integer_psnr_hip (chroma parity with CUDA/SYCL/Vulkan twins)
ADR-0484 Extend kernel-scaffolding.md with HIP and Metal lifecycle contract
ADR-0486 Codify the three-function GPU backend context-API contract in docs
ADR-0488 Shared once-snapshot helper for GPU dispatch env variables
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
ADR-0496 Default to the vmaf-dev-mcp container for all vmaf / vmaf-tune / ai / MCP work
ADR-0502 ADM decouple gather prefetch (Approach B)
ADR-0514 dev-MCP container exposes every host GPU backend (CUDA + SYCL + Vulkan + HIP)
ADR-0515 Portable temp-path setup for test_public_api_score on MinGW64
ADR-0517 Repair MCP run_benchmark tool — drop per-call args, inject VMAF_BIN, guard set -u in bench_all.sh
ADR-0521 MSVC portability gating — vif_avx512.c noinline/noclone + yuv_input.c S_ISREG/fstat
ADR-0523 Register vmaf_fex_integer_motion_hip in the extractor list
ADR-0525 Extract run_cmd subprocess helper into aiutils
ADR-0528 test_cli_parse_long_only_args stderr-pipe drain + error() non-fatal fallback
ADR-0533 Full HIP feature-extractor registration sweep
ADR-0540 dev-MCP container FFmpeg ships AV1 (SVT/aom) + VVenC + hardware encoders (NVENC, oneVPL/QSV, AMF)
ADR-0547 VMAF_<NAME>_DIR env-var overrides for ai/scripts corpus paths + drop cli.py.bak
ADR-0549 Audit cleanup bundle 2
ADR-0551 VCQ-223 LocalExplainer CI timeout — root cause and fix path
ADR-0552 Deterministic wavefront reduction for integer_vif_hip horizontal kernels
ADR-0559 Feature Coverage Audit — Add speed_chroma + speed_temporal to Extraction Scripts (HDR-model prep)
ADR-0561 0561-hip-gfx-targets-fallback-widening.md
ADR-0562 VCQ-223 LocalExplainer hang fix — cap neighbor_samples in test runner
ADR-0563 HIP extractor audit — verification of 9 remaining scaffold claims
ADR-0564 Real integer_ssim GPU kernels (CUDA, HIP, SYCL) — replace silent float_ssim substitution
ADR-0565 Continuous Feature-Mix Evaluation Pipeline (predictor-bench)
ADR-0566 0566-hip-vif-per-feature-places4-gate.md
ADR-0567 Real On-Device GPU Kernels for speed_chroma and speed_temporal (4 Backends)
ADR-0568 Default sycl_icpx_aot_targets to full Intel arch list
ADR-0569 SDK / Tool Version Bumps — 2026-05-18
ADR-0575 Fix yuv_input.c stat compat — include-order and _MSC_VER guard
ADR-0577 vmaf-tune bisect decode concurrency cap and aggressive workdir cleanup
ADR-0579 vmaf-tune auto --execute — Phase F real encode/score execution mode
ADR-0583 Add enable_chroma option to the float_ms_ssim extractor
ADR-0585 Add enable_chroma option to psnr_hvs_vulkan
ADR-0588 vmaf-tune executor — per-shot and saliency execution modes
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
ADR-0601 vmaf-tune QSV/AMF hardware-device init + encoder probe size fix
ADR-0602 macOS SIGSEGV in vmaf_write_output — pic_cnt underflow + missing vmaf NULL guard
ADR-0606 macOS SIGSEGV deep-fix in output.c writers (PR #1403 follow-up)
ADR-0620 Scaffold audit P0 — three silent-correctness fixes
ADR-0621 Scaffold Audit P3 — six cleanup items + state drift
ADR-0624 Fast NR Pre-Scoring Implementation (ADR-0615 impl)
ADR-0626 SSH-into-runner debug session on macOS CI failure via tmate
ADR-0628 Remote-aware ADR number allocator — cross-worktree collision prevention
ADR-0634 MCP P0 fixes — isError spec bug, probe_backend, vmaf_version, vmaf_score_encoded
ADR-0637 Fix 5 master CI failures — MCP smoke syntax, coverage floor, and job timeouts
ADR-0641 Harden dev-container encoder probes and compare reports
ADR-0642 AI refresh defaults use current fork full-feature extractors
ADR-0644 Add vmaf-tune codec runtime variants
ADR-0647 Refresh fr_regressor_v1 from the 2026-05-20 Netflix feature table
ADR-0656 External-bench wrappers emit registry competitor keys
ADR-0659 Modernization audit false-positive filter
ADR-0667 vmaf-tune score backend native priority
ADR-0671 U2NetP Mirror Exporter
ADR-0672 Saliency Materializer Temporal Controls
ADR-0673 Saliency Materializer Batch Manifest
ADR-0674 Second-Opinion Materializer Batch Manifest
ADR-0675 MOS Label Materializer Batch Manifest
ADR-0676 MOS Corpus Adapter Manifests
ADR-0677 AI Dataset Fetch Manifests
ADR-0679 CI Draft Auto-Merge Gate
ADR-0682 Tiny-AI Netflix corpus training scaffold — 2026-05-22 prep scope
ADR-0683 Replace banned functions in vendored MCP cJSON
ADR-0684 Pre-rebase worktree-drift guard
ADR-0685 Tiny-AI Netflix corpus training scaffold — 2026-05-27 prep scope
ADR-0687 CHUG HDR MOS head — held-out test partition validator
ADR-0688 HIP wave32 carry-preserving int64 reduction for VIF and motion kernels
ADR-0692 Bump C standard to C23 (VMAFX rebrand Phase 1D)
ADR-0694 Tighten clang-tidy enforcement + confirm sanitizers as required CI gates
ADR-0696 --netflix-compat flag for restoring legacy defaults
ADR-0698 VMAFX Production Dockerfile — Multi-Arch, Image Signing, SBOM
ADR-0699 VMAFX Helm Chart and Kubernetes Manifests with 3-Vendor GPU Device-Plugin Support
ADR-0702 VMAFX Phase 4 — Multi-Language Modernization Foundation
ADR-0705 vmafx-tune Go port — Stage 1 (compare subcommand)
ADR-0707 TAD — Temporal Absolute Difference Feature Extractor Implemented in Rust (cbindgen Pilot)
ADR-0708 C++23 Internals Pilot — metadata_handler.c conversion
ADR-0709 VMAFX Phase 4b — Distributed Video-Quality, Encoding, and ML Platform
ADR-0711 vmafx-controller Phase 4b.1 — Job Queue, Node Registry, and Scheduler
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
ADR-0720 C++23 Wave-1 Pilot — mem.c conversion
ADR-0721 C++23 Pilot Wave 1 — opt.c conversion
ADR-0723 C++23 Pilot — fex_ctx_vector.c Conversion (Wave 2)
ADR-0725 C++23 Pilot — log.c conversion (real C++23, supersedes ADR-0722)
ADR-0726 Drop Vulkan backend
ADR-0727 C++23 Wave 2 — project-wide cpp_std=c++23 bump and dict.c → dict.cpp
ADR-0730 vmafx-tune Go port — Stage 2 (ladder subcommand)
ADR-0733 C++23 Wave 4 — output writers (XML, JSON, CSV, subtitle)
ADR-0735 C++23 Wave 5 — cpu, ref, thread_locale
ADR-0754 0754-cuda-ssim-vert-combine-ldg-pinned-leak.md
ADR-0755 C++23 Wave 7 — drop orphan cpu.c, activate cpu.cpp
ADR-0757 0757-cuda-ms-ssim-vert-lcs-horiz-ldg.md
ADR-0759 HIP ADM — AdmBufferHip passed by pointer (F3 fix)
ADR-0761 C++23 Wave 8 — opt.cpp activation + read_json_model.cpp
ADR-0762 CUDA CIEDE2000 8bpc/16bpc — __ldg() read-only cache routing (F3 fix)
ADR-0763 0763-cuda-adm-decouple-ldg.md
ADR-0764 psnr_hvs CUDA kernel — __ldg() + __restrict__ + __launch_bounds__(64)
ADR-0767 Phase 4b.8 — libvmaf C ABI Break for VMAFx v4.0.0
ADR-0768 C++23 Wave 9 — picture_pool + gpu_picture_pool
ADR-0770 vmafx-tune Go port — Stage 4 (report subcommand)
ADR-0772 Rename feature_extractor.c to feature_extractor.cpp
ADR-0773 CUDA ADM decouple-inline — __ldg() F3 fix on active path
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
ADR-0779 eBPF FUSE read-path bypass for vmafx-node rclone mounts
ADR-0781 Sidecar online training — SGD + EMA + replay buffer
ADR-0784 AVX2 SIMD path for integer SSIM horizontal moment accumulation
ADR-0786 vmafx-operator Stage 2 — reconciler loops, webhook validation, per-controller RBAC
ADR-0790 Containerfile layer optimization — merge apt layer, strip build artifacts, no-cache-dir pip
ADR-0793 Nightly Workflow Audit — TSan, Artifact Retention, Python Version
ADR-0804 Add vmaf_context_get_backend — additive ABI introspection
ADR-0809 C++23 Wave 8 — CLI conversion (cli_parse.c → .cpp, vmaf.c → .cpp)
ADR-0815 Distroless Dockerfiles for vmafx-operator and vmafx-node
ADR-0839 C++23 wave — shadow-identifier and implicit-cast cleanup
ADR-0845 CUDA motion — multi-frame SAD batching to reduce per-launch overhead
ADR-0848 Per-Surface Documentation Compliance Audit — Session 2026-05-29
ADR-0852 Wire speed_chroma_hip and speed_temporal_hip into HIP Build and Dispatch
ADR-0853 Remove dead debug-print macros from motion_avx2.c
ADR-0858 C++23 conversion of gpu_dispatch_env.c
ADR-0865 Sunset ANSNR — drop ansnr / float_ansnr feature extractors
ADR-0879 Python dependency freshness sweep (2026-05-30)
ADR-0884 SYCL kernel coverage round 2 — five additional CPU-vs-SYCL parity gates
ADR-0889 Vendored libsvm 3.24 audit — close header-row-ordering oob, document upstream-version policy
ADR-0892 Conventional-Commits coverage + Changelog-fragment section hygiene
ADR-0902 Signing and attestation audit — close residual gaps (2026-05-30)
ADR-0903 Wire Codecov upload into the existing Coverage Gate jobs
ADR-0907 Wall-clock perf regression gate over the multi-resolution baseline
ADR-0910 Project-wide codespell config + sweep policy
ADR-0912 Pixel-format edge coverage at the libvmaf unit-test layer
ADR-0918 LLVM IR diff harness for bit-exact SIMD paths
ADR-0922 Aggressive coverage ratchet + per-PR coverage-delta gate
ADR-0924 Native bash pre-commit hook as opt-in alternative to the pre-commit framework
ADR-0928 VmafPicture v2 — explicit per-backend GPU state
ADR-0929 Rust vmafx safe binding crate — Phase 1 scaffold
ADR-0930 Ship NetworkPolicy default-deny + Pod Security Standards "restricted" in the VMAFX Helm chart
ADR-0933 gRPC streaming for multi-frame scoring (ScoreStream)
ADR-0937 mkdocs ADR nav — per-hundred bucket layout + auto by-tag indexes
ADR-0939 Skills library expansion — MCP, k8s, audit, bisect consolidation
ADR-0945 HIP kernel parity-test coverage round 3
ADR-0947 CUDA kernel parity coverage — round 3 (float-path twins + ssimulacra2)
ADR-0949 HIP motion3 parity test skips cleanly when HIPCC kernels are not built
ADR-0950 Fix symmetric "adm" vs "adm_hip" feature-name bug in test_hip_adm_parity and add ENOSYS skip
ADR-0956 CUDA kernel parity coverage — round 4 (last 5 uncovered kernels)
ADR-0958 HIP kernel parity-test coverage round 4
ADR-0960 GPU runtime error-path leak fixes — round 25 (A.1 + A.2 + A.3)
ADR-0961 Controller queue — roll back PullWork on post-update Get failure (round-25 audit B.1)
ADR-0962 Controller fixes — implement StreamJobs snapshot and add reaper stop signal (round-25 audit B.3 + B.4)
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)
ADR-0967 MCP HTTP transport security — add auth + body limit + safer bind default (Round 26 audit A.1)
ADR-0970 test_gpu_picture_pool.c: remove unused malloc + dead code (Round 27 audit D.3 + D.4)
ADR-0971 Test suite: NULL-check malloc in 3 test files (Round 27 audit D.1)
ADR-0980 Markdown-lint full-ruleset discharge — content fixes + per-file scoped disables
ADR-0986 Add PR trigger to docs.yml CI workflow
ADR-0987 AVX-512 path for float_moment feature extractor
ADR-0991 Second-Opinion Batch Materializer — Smoke-Run Scaffold and Test Fix
ADR-0992 MOS-label batch-run manifests for KonViD and CHUG
ADR-0993 KoNViD / UGC / BVI-DVC Saliency Batch Manifests and Run Scaffolding
ADR-0999 Guard <stdatomic.h> includes in C++ translation units (GCC 14 + Clang-18 fix)
ADR-1001 SYCL parity round 5 — CAMBI CPU vs. SYCL parity gate
ADR-1003 Bump project-wide C++ standard from c++11 to c++23
ADR-1004 HIP kernel parity-test coverage round 5
ADR-1040 Promote integer_ssim_moments_t to shared header (macOS / Windows arm64 build fix)
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
ADR-1073 Fix vmaf_score_at_index EAGAIN-guard misapplication for model output slots
ADR-1075 MCP HTTP transport POST /v1/score body-validation edge cases
ADR-1083 y4m_input_fetch_frame signed-integer overflow + fread(NULL) UB fixes
ADR-1089 Block non-standard ONNX operator domains in the DNN wire scanner
ADR-1092 framesync producer-death deadlock — abort flag + shutdown broadcast
ADR-1093 Disable two recurring-failure tests via should_fail while root cause is under investigation
ADR-1094 Helm chart rolling-update correctness — node strategy, PDB default, probe fix, grace period
ADR-1100 Skip GPU-flagged extractors when flags == 0 in vmaf_get_feature_extractor_by_feature_name
ADR-1102 Container-only canonical artifact publishing (Phase 4b.9)
ADR-1103 1103-hip-vif-mirror2-boundary.md
ADR-1106 HIP motion_v2 mirror is reflect-101 (-2), correcting ADR-0377's -1 parity claim
ADR-1107 Per-extractor prev_ref in the threaded batch path (multi-PREV_REF starvation fix)
ADR-1109 vmafx-node Serve() registers the VmafxScoring gRPC service
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
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)
ADR-1117 MCP vmaf_score tiny-AI / feature / CTC parameter coverage
ADR-1118 Pelorus perceptual side-data weights VMAF spatial pooling, golden-isolated and opt-in
ADR-1119 Adopt the golusoris fx framework across all vmafx Go binaries
ADR-1120 Re-pin the vendored Pelorus interop ABI to minor-3 and consume PEL_SEC_COMPLEXITY in perceptual weighting
ADR-1123 Raise the Required-Checks-Aggregator deadline to 240 minutes and batch Docker digest updates
ADR-1125 Reconciling seven independent vmafx-tune Go ports into one tree
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-1140 Route required CI work by measured impact instead of pre-declared path filters
ADR-1153 Resolution of Dead .c/.cpp Twin Sides (model.cpp, test_dict.c, test_feature.c)
ADR-1176 Metal motion_v2 mirror closeout and reflect-101 parity contract
ADR-1178 Dev container image publication and release artifact container enforcement
ADR-1225 Migrate the HIP backend to ROCm 10.0.0, installed from digest-pinned container images
ADR-1226 Size the CUDA AIM CM launch by SM count, not by a fixed rows-per-thread
ADR-1227 Workflow display names are short labels; the axis list lives in the file
ADR-1228 A recurring "faster than upstream, and still exact" 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-1243 Allow measured scoped tightening of the lint baseline
ADR-1244 Guard merge-train ownership and exact-head validation
ADR-1251 Renovate opens automerge-eligible and security bumps ready for review
ADR-1252 Declare the single maintainer's bypass actor
ADR-1256 Dispatch CAMBI's spatial-mask row SIMD kernels only where they measurably beat scalar
ADR-1258 Keep the fork 64-bit only; retire the resurrected i686 lane
ADR-1259 Record the CI build matrix as it actually runs
ADR-1260 Windows on ARM64 CPU build-and-test lane
ADR-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
ADR-1263 __HIP_PLATFORM_AMD__ is declared once by the build, not by each source
ADR-1264 The HIP scaffold posture reports -ENOSYS, and its tests check both sites
ADR-1265 The clang-tidy header filter matches absolute paths, so headers count
ADR-1270 Bound repository subprocess execution behind one validated API
ADR-1271 Pass NEO GitHub credentials through optional BuildKit secrets
ADR-1273 Select language standards through warning-clean Meson preference lists
ADR-1276 Re-pin the Pelorus mirror for released parser safety fixes
ADR-1282 mypy's python_version follows requires-python
ADR-1283 The whole-tree clang-tidy ratchet gets an arm64 cross lane
ADR-1285 CUDA is a coordinated pin — group it in Renovate, gate the rest
ADR-1301 A non-finite SpEED score fails the frame instead of being published
ADR-1302 A non-finite feature score fails the frame, everywhere
ADR-1319 Admit self-hosted GPU jobs through a live fail-closed probe
ADR-1321 Pre-RC1 CI flake remediation and contract alignment
ADR-1322 Restore enable_chroma option parity on integer_psnr_metal
ADR-1335 Bind research-digest debt to the trusted merge base
ADR-1337 C++ Placement New Visibility — Hide Inline Run-time Symbols
ADR-1346 Build native release artifacts on a hosted runner inside the build-deps container stage
ADR-1354 Build the native Linux bundle on the Debian 13 release track
ADR-1356 Release provenance from GitHub build-provenance attestations, not slsa-github-generator
ADR-1357 Run the SYCL CAMBI extractor entirely on the device
ADR-1358 The SYCL SpEED twins are device-resident, with the 25x25 linear algebra on the device and exact fp32 arithmetic
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
ADR-1361 Scale the psnr_hvs cross-backend tolerance with the CPU's float-sum length
ADR-1362 The SYCL integer ADM twin computes AIM on the device and finalises every ADM output in the CPU's float arithmetic
ADR-1363 The SYCL ssimulacra2 twin is device-resident, and float_ms_ssim_sycl waits once per frame
ADR-1364 Register the SYCL device images of a Windows MSVC build through one explicit device link
ADR-1365 SYCL PSNR, SSIM and float-motion twins take the CPU option tables
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
ADR-1368 Build and run the oneAPI release image on Debian 13 with pinned Intel packages
ADR-1369 SYCL twins read the planes the state uploads once per frame; opt-in shared chroma planes and a device-side slot fence
ADR-1370 float_ssim_sycl decimates on the device, bit-identical to the CPU
ADR-1371 SYCL motion differences the frames before the blur, in one shared kernel
ADR-1372 CUDA motion differences the frames before the blur, in the kernel motion_v2 already had
ADR-1373 CUDA PSNR, SSIM and motion twins take the CPU option tables and the CPU's arithmetic
ADR-1374 CUDA integer ADM and VIF guard tiny frames like their SYCL twins
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
ADR-1379 Run the CUDA CAMBI extractor entirely on the device
ADR-1380 The CUDA SpEED twins are device-resident, with the 25x25 linear algebra on the device and CPU-exact fp32 arithmetic
ADR-1381 HIP tile loads and the ADM vertical DWT clamp their rows; vif_hip hands frames below 16 pixels to the CPU
ADR-1382 HIP PSNR, SSIM and float-motion twins take the CPU option tables
ADR-1383 Resolve docs/state.md rebase conflicts three-way, keyed by bug id
ADR-1384 Run the HIP SpEED twins entirely on the device, in the CPU's fp32 arithmetic
ADR-1386 One script runs the home GPU box's RC3 verify commands, row by row, under per-device locks
ADR-1388 Exempt PAT-mode release PRs from authoring-discipline gates via verified release-only diff
ADR-1389 Run CodeQL (Actions) unconditionally on every pull request for universal SAST coverage
ADR-1390 The HIP ssimulacra2 twin is device-resident with tiled row-pass Gaussian blur
ADR-1391 The CUDA ssimulacra2 twin is 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
ADR-1393 CAMBI's c-values walks clip the window to the frame at every edge
ADR-1395 SYCL kernels use no scratch memory on Intel GPUs
ADR-1396 vmaf_init() treats its handle as output-only again
ADR-1397 GPU psnr_hvs twins reproduce the CPU's running float sum bit for bit
ADR-1399 float_ssim_cuda decimates and convolves on the device with the CPU's arithmetic
ADR-1400 integer_ssim_hip sums small frames in the CPU's raster order
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
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
ADR-1404 float_motion_hip emits motion3 and implements every CPU float_motion option on the device
ADR-1405 float_ssim_hip decimates on the device, bit-identical to the CPU
ADR-1407 Every HIP kernel compiles with contraction off and correctly rounded fp32 division and square root
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
ADR-1410 SYCL CLI picture pool allocates pinned host USM to bypass staging upload
ADR-1411 float_motion_sycl adds its SAD in the CPU's order and returns the CPU's scores bit for bit
ADR-1412 float_vif_cuda computes the CPU's arithmetic, adds in the CPU's order and returns its scores bit for bit
ADR-1413 Every integer ADM implementation bounds the enhancement gain with the scalar's truncated double product
ADR-1414 float_ms_ssim_sycl computes the CPU's arithmetic and returns its per-scale means bit for bit
ADR-1415 every x86 SIMD library is built without FP contraction
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
ADR-1417 Integer AIM stays the unclipped ratio upstream defines; float AIM stays clipped at 1
ADR-1419 float_motion_hip stores its differences transposed and adds each row in the CPU's order
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
ADR-1422 float_vif_sycl computes the CPU's arithmetic without an fp64 type and returns its scores bit for bit
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
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
ADR-1430 speed_chroma_cuda keeps its correctly rounded log2; the gate bounds what glibc's log2f adds
ADR-1431 vmaf_read_pictures() owns the pictures it is given 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
ADR-1433 ssimulacra2_cuda returns the sums of the CPU's loops, formed on the device from integer increments per binade
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
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
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
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
ADR-1442 float ADM divides; the processor's reciprocal estimate leaves the reference and the CUDA twin
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
ADR-1445 ssimulacra2_hip evaluates the CPU's fp64 terms and returns the sums of the CPU's loops
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
ADR-1447 float_moment_hip adds the float squares the CPU adds, and is bit-identical while the CPU's own sum is exact
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
ADR-1450 float_psnr_sycl adds its squared differences as integers, and is bit-identical to the CPU
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
ADR-1452 the gate bounds speed_chroma_hip against the CPU by what glibc's log2f adds, as it does for the CUDA twin
ADR-1453 float_moment_cuda adds the float squares the CPU adds, and is bit-identical while the CPU's own sum is exact
ADR-1454 A large subtree AGENTS.md is a generated index over one page per topic
ADR-1455 float_psnr_cuda adds its squared differences as integers, and is bit-identical to the CPU
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
ADR-1457 motion_cuda, motion_v2_cuda, psnr_cuda, float_ssim_cuda, float_ms_ssim_cuda and cambi_cuda are declared exact twins
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
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
ADR-1461 no C or C++ translation unit is built with floating-point contraction; the strict policy is a project argument
ADR-1462 vif_cuda reads the CPU's log2 table instead of evaluating log2f() on the device
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
ADR-1464 float_ssim_cuda adds its frame sums in the CPU's raster order, on the host
ADR-1465 float_ms_ssim_cuda adds the terms of every scale in the CPU's raster order, on the host
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
ADR-1467 ciede.c writes its squares as products, so ciede2000 no longer depends on the compiler or on the C library's powf for them; a GCC build moves by up to 2e-11
ADR-1468 A SYCL kernel requires only a sub-group size every default AOT target accepts (16 or 32); the six kernels that required 8 move to 16
ADR-1469 the psnr_hvs SIMD butterfly is two functions, cut at the same statement in the AVX2 and the NEON twin
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
ADR-1471 The clang-tidy lanes are measured in the dev container, with the device toolchains
ADR-1472 The integer ADM weight limits follow from the contrast-masking cube and the largest wavelet coefficient of a scale
ADR-1473 The x86 float ADM wavelet and CSF kernels return the scalar bits and are dispatched; the two reduction kernels are removed
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
ADR-1475 The quantisation step of integer ADM is Netflix's expression again, so vmaf_v0.6.1 returns Netflix master's bits
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
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
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
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
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
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
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
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
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
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
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
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
ADR-1489 The CSF weights of float ADM are Netflix's float arithmetic again, so float_adm differs from Netflix by the division alone
ADR-1492 Tester image with one report command, hardware reports as tracked files
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
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
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
ADR-1498 Metal twins take the exact designs of their CUDA, HIP and SYCL twins, on a strict FP kernel policy
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
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
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
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
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
ADR-1504 Decline praetor's branch ruleset; the policy file is the only declaration
ADR-1505 An Intel GPU tester image with a backend-neutral GPU section in the report
ADR-1507 The bundled BRISQUE model is used and redistributed under the LIVE release notice as written, not as a research-only exception
ADR-1508 Documentation site generator, charts, diagrams and typography for the redesign
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
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
ADR-1513 The production images, release assets and Python packages follow the tester licensing rules, checked by the same tool
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
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
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
ADR-1520 Feature-vector tiny models request their inputs, score at flush, and fail on a missing input
ADR-1521 vmafx-mcp names the Go server; the Python wheel's script of that name is a one-release alias
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
ADR-1523 HIP twins run on the device of the imported state
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
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
ADR-1527 TransNet V2 runs upstream's 100-frame windows on 0..255 thumbnails and binds its output by position
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
ADR-1546 The registry validator holds tiny-model metadata to the shipped 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
ADR-1559 the node's eBPF program stays EUPL-1.2 and declares "GPL" to the kernel under EUPL-1.2's compatibility clause
ADR-1560 A Python package declares the licences of every file its sdist and wheel carry, its compiled extension included
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
ADR-1562 Every vmaf-tune command returns the lowest-bitrate encode that meets the target
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
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
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
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
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
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-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
ADR-1673 A push to master never cancels the runs of an earlier master commit; the concurrency group carries the SHA there
ADR-1679 The Metal IOSurface import reads NV12 and P010 surfaces itself, and the FFmpeg filter imports whole frames
ADR-1686 a Scorecard master run whose master moved on to a descendant ends cancelled
ADR-1688 The SYCL zero-copy path admits only extractors that compute from the shared luma, and names every other one
ADR-1699 The root licence files state ADR-1250's terms, and every package manifest declares the licences of the files it ships
ADR-1707 Cut v1.0.0-rc.3 without waiting for outside-hardware reports
ADR-1755 The feature collector owns the models it mounts
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
ADR-1762 Every translation unit is read by a clang-tidy lane or excepted by name
ADR-1768 The FFmpeg libvmaf and libvmaf_cuda filters print no pooled score after a mid-run error
ADR-1794 Bilinear column tables without a width limit
ADR-1806 Run Metal kernel files on the host through a Metal Shading Language shim in tests
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
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
ADR-1874 The vmaf CLI reports its usable backends; the score-backend selectors read that report
ADR-1886 torch only where training runs
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
ADR-1917 The integer ADM scale-0 horizontal and vertical weight limit is 43900, set by the CSF stage's 16-bit magnitude
ADR-1918 Samples above 2^bpc - 1 are invalid input; an opt-in check refuses them
ADR-1930 sycl_device_asan puts the device sanitizer on every SYCL compile and the link
ADR-2093 HDR-VMAF groundwork from upstream, with the input colorimetry on the context
ADR-2349 One metric definition drives the services, the generated dashboards and the observability package
ADR-2383 macOS and Windows package channels are fed by the verified native release pipelines
ADR-2399 SLO objectives, burn-rate windows and alert thresholds are chart values, rendered from one rule builder
ADR-2647 the operator records events in every namespace through a write-only ClusterRole
ADR-2673 the Helm chart declares EUPL-1.2 AND Apache-2.0 because its values schema embeds Kubernetes type schemas
ADR-2689 sponsorship is recognition only, in four monthly tiers, with one source file for the list
ADR-2705 formulas are TeX rendered by self-hosted KaTeX, checked at build time
ADR-2817 Re-pin the Pelorus mirror to v0.3.0, its EUPL-1.2 release, and check the licence on every sync
ADR-2949 vmaf_picture_wrap ships with upstream's signature, on vmafx_frame_wrap_host, with the fork's plane rules