Skip to content

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

0004-auto-push-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

0008-readme-fork-rebrand

ADR-0009: MCP server exposes four core tools

0009-mcp-server-tool-surface

ADR-0010: Sign release artifacts keyless via Sigstore

0010-sigstore-keyless-signing

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

0013-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

0017-claude-skills-scope

ADR-0018: Claude hooks scope includes safety and auto-format

0018-claude-hooks-scope

ADR-0019: .workingdir2 is the full planning dossier

0019-workingdir2-full-dossier

ADR-0020: Tiny-AI scope covers all four capabilities

0020-tinyai-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

0022-inference-runtime-onnx

ADR-0023: Tiny-AI user surfaces span CLI, C API, ffmpeg, and training

0023-tinyai-user-surfaces

ADR-0024: Preserve Netflix source-of-truth tests verbatim

0024-netflix-golden-preserved

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

0028-adr-maintenance-rule

ADR-0029: Relocate resource tree under python/vmaf/

0029-resource-tree-relocated

ADR-0030: Relocate MATLAB sources under python/vmaf/

0030-matlab-sources-relocated

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/

0034-single-patches-directory

ADR-0035: Migrate .claude/settings.json hooks to current schema

0035-claude-hooks-schema-fix

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

0037-master-branch-protection

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

0041-lpips-sq-extractor

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

0101-sycl-usm-picture-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

0104-picture-pool-always-on

0105-copyright-handling-dual-notice

ADR-0106: Every non-trivial decision gets its own ADR file before the commit

0106-adr-maintenance-rule

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)

0125-ms-ssim-decimate-simd

ADR-0126: SSIMULACRA 2 perceptual metric as a fork-local feature extractor

0126-ssimulacra2-extractor

ADR-0127: Vulkan compute backend — vendor-neutral GPU path alongside CUDA/SYCL/HIP

0127-vulkan-compute-backend

ADR-0128: Embedded MCP server in libvmaf — SSE + UDS + stdio transports, build-flag-gated

0128-embedded-mcp-in-libvmaf

ADR-0129: Tiny-AI post-training int8 quantisation — static + dynamic + QAT per model

0129-tinyai-ptq-quantization

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

0133-ci-clang-tidy-push-delta

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

0140-simd-dx-framework

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

0145-motion-v2-neon-bitexact

ADR-0146: Sweep readability-function-size NOLINTs from libvmaf

0146-nolint-sweep-function-size

ADR-0147: Thread-pool job-object recycling + inline data buffer

0147-thread-pool-job-pool

ADR-0148: IQA reserved-identifier rename + touched-file lint cascade

0148-iqa-rename-and-cleanup

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

0151-i686-ci-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)

0159-psnr-hvs-avx2-bitexact

ADR-0160: psnr_hvs NEON port — bit-exact DCT vectorization (T3-5-neon)

0160-psnr-hvs-neon-bitexact

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)

0163-ssimulacra2-ptlr-simd

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)

0165-state-md-bug-tracking

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)

0167-doc-drift-enforcement

ADR-0168: Tiny-AI Wave 1 baselines C2 + C3 — KoNViD-1k training (T6-1)

0168-tinyai-konvid-baselines

ADR-0169: ONNX op-allowlist — admit Loop + If with recursive subgraph scan (T6-5)

0169-onnx-allowlist-loop-if

ADR-0170: vmaf_pre extended to 10/12-bit and optional chroma (T6-4)

0170-vmaf-pre-10bit-chroma

ADR-0171: Bounded Loop.M trip-count guard (T6-5b)

0171-bounded-loop-trip-count

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)

0173-ptq-int8-audit-impl

ADR-0174: First per-model PTQ — learned_filter_v1 dynamic int8 (T5-3b)

0174-first-model-quantisation

ADR-0175: Vulkan compute backend — scaffold-only audit-first PR (T5-1)

0175-vulkan-backend-scaffold

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

0177-vulkan-motion-kernel

ADR-0178: Vulkan ADM kernel (T5-1c-adm)

0178-vulkan-adm-kernel

ADR-0179: float_moment SIMD parity (AVX2 + NEON)

0179-float-moment-simd

ADR-0180: CPU coverage matrix audit — close 5 stale gaps

0180-cpu-coverage-audit

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

0182-gpu-long-tail-batch-1

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

0185-vulkan-hide-volk-symbols

ADR-0186: Vulkan VkImage import + filter (T7-29 parts 2 + 3)

0186-vulkan-image-import-impl

ADR-0187: ciede2000 Vulkan kernel — float-precision per-pixel ΔE

0187-ciede-vulkan

ADR-0188: GPU long-tail batch 2 — psnr_hvs / ssim / ms_ssim across CUDA / SYCL / Vulkan

0188-gpu-long-tail-batch-2

ADR-0189: float_ssim Vulkan kernel — host decimation, 2-dispatch GPU

0189-ssim-vulkan

ADR-0190: float_ms_ssim Vulkan kernel — 5-level pyramid + Wang product on host

0190-ms-ssim-vulkan

ADR-0191: float_psnr_hvs Vulkan kernel — overlapping 8×8 DCT blocks + per-plane log transform

0191-psnr-hvs-vulkan

ADR-0192: GPU long-tail batch 3 — closing every remaining metric gap (motion_v2 / float_ansnr / ssimulacra2 / cambi + float twins)

0192-gpu-long-tail-batch-3

ADR-0193: motion_v2 Vulkan kernel — single-dispatch SAD via convolution linearity

0193-motion-v2-vulkan

ADR-0194: float_ansnr GPU kernels — single-dispatch 3x3 + 5x5 filters with per-WG float partials

0194-float-ansnr-gpu

ADR-0195: float_psnr GPU kernels — single-dispatch diff² with float partials, bit-exact vs CPU

0195-float-psnr-gpu

ADR-0196: float_motion GPU kernels — float twin of integer_motion blur+SAD

0196-float-motion-gpu

ADR-0197: float_vif GPU kernels — 4-scale pyramid with mirror-asymmetry fix

0197-float-vif-gpu

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

0199-float-adm-vulkan

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

0202-float-adm-cuda-sycl

ADR-0203: Tiny-AI training prep — implementation decisions

0203-tiny-ai-training-prep-impl

ADR-0205: cambi GPU feasibility spike

0205-cambi-gpu-feasibility

ADR-0206: ssimulacra2 CUDA + SYCL twins

0206-ssimulacra2-cuda-sycl

ADR-0207: Tiny-AI Quantization-Aware Training (QAT) — design

0207-tinyai-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)

0209-mcp-embedded-scaffold

ADR-0210: cambi Vulkan integration (Strategy II hybrid)

0210-cambi-vulkan-integration

ADR-0211: Tiny-model registry schema + Sigstore --tiny-model-verify

0211-model-registry-sigstore

ADR-0212: HIP (AMD ROCm) compute backend — scaffold-only audit-first PR (T7-10)

0212-hip-backend-scaffold

ADR-0213: SSIMULACRA 2 SVE2 SIMD parity

0213-ssimulacra2-sve2

ADR-0214: GPU-parity CI gate (T6-8) — cross-device variance matrix

0214-gpu-parity-ci-gate

ADR-0215: FastDVDnet temporal pre-filter — 5-frame window, placeholder weights

0215-fastdvdnet-pre-filter

ADR-0216: Vulkan PSNR — chroma extension (psnr_cb / psnr_cr)

0216-vulkan-chroma-psnr

ADR-0217: SYCL toolchain cleanup — multi-version recipe + icpx-aware clang-tidy wrapper

0217-sycl-toolchain-cleanup

ADR-0218: MobileSal saliency feature extractor (T6-2a)

0218-mobilesal-saliency-extractor

ADR-0219: motion3 GPU coverage on Vulkan + CUDA + SYCL (3-frame window)

0219-motion3-gpu-coverage

ADR-0220: SYCL feature kernels are unconditionally fp64-free

0220-sycl-fp64-fallback

ADR-0221: CHANGELOG + ADR-index fragment-file pattern

0221-changelog-adr-fragment-pattern

ADR-0222: vmaf-perShot per-shot CRF predictor sidecar

0222-vmaf-per-shot-tool

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

0234-gpu-gen-ulp-calibration

ADR-0235: Codec-aware FR regressor (fr_regressor_v2)

0235-codec-aware-fr-regressor

ADR-0236 — DISTS extractor as LPIPS companion

0236-dists-extractor

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})

0239-gpu-picture-pool-dedup

ADR-0240: GPU backend public-header pattern doc (PR3 of GPU dedup, doc-only)

0240-gpu-backend-pattern-doc

ADR-0241: HIP first-consumer kernel — integer_psnr_hip via mirrored kernel-template

0241-hip-first-consumer-psnr

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

0243-enable-lcs-gpu

ADR-0244: vmaf_tiny_v2 — canonical-6 + StandardScaler tiny VMAF MLP

0244-vmaf-tiny-v2

ADR-0245: SIMD bit-exact test harness shared header

0245-simd-bitexact-test-harness

ADR-0246: Per-backend GPU kernel scaffolding templates (CUDA + Vulkan)

0246-gpu-kernel-template

ADR-0247: vmaf-roi sidecar binary for per-CTU QP offsets

0247-vmaf-roi-tool

ADR-0248: nr_metric_v1 joins dynamic-PTQ family (T5-3d)

0248-nr-metric-v1-ptq

ADR-0249: Tiny-AI Wave 1 baseline C1 — fr_regressor_v1 on Netflix Public

0249-fr-regressor-v1

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

0253-speed-qa-extractor

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

0256-vulkan-submit-opt-batch

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)

0258-onnx-allowlist-resize

ADR-0259: HIP third-consumer kernel — ciede_hip via mirrored kernel-template

0259-hip-third-consumer-ciede

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)

0261-transnet-v2-real-weights

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

0263-ossf-scorecard-policy

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

0269-vif-ciede-precise-step-a

ADR-0270: libFuzzer scaffold for parser surfaces (OSSF Scorecard remediation)

0270-fuzzing-scaffold

ADR-0271: Wire integer_ms_ssim_cuda through the CUDA fence-batching helper

0271-cuda-drain-batch-ms-ssim

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)

0275-vmaf-tiny-v3-v4-ptq

ADR-0276: vmaf-tune fast — proxy-based recommend (Phase A.5)

0276-vmaf-tune-fast-path

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

0278-t7-5-nolint-sweep

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)

0281-vmaf-tune-qsv-adapters

ADR-0282: vmaf-tune AMD AMF codec adapters (h264 / hevc / av1)

0282-vmaf-tune-amf-adapters

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

0285-vmaf-tune-vvenc-nnvc

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)

0290-vmaf-tune-nvenc-adapters

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)

0293-vmaf-tune-saliency-aware

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

0298-vmaf-tune-cache

ADR-0299: GPU scoring backend for vmaf-tune (--score-backend)

0299-vmaf-tune-gpu-score

ADR-0300: vmaf-tune HDR-aware encoding + scoring

0300-vmaf-tune-hdr-aware

ADR-0301: vmaf-tune --sample-clip-seconds (sample-clip mode)

0301-vmaf-tune-sample-clip

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

0306-vmaf-tune-coarse-to-fine

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

0310-bvi-dvc-corpus-ingestion

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

0317-ci-doc-only-pr-flake-fix

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

0324-ensemble-training-kit

ADR-0325: KonViD-150k corpus ingestion

0325-konvid-150k-corpus-ingestion

ADR-0326: vmaf-tune Phase B — target-VMAF bisect

0326-vmaf-tune-phase-b-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

0331-skip-ci-on-draft-prs

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)

0336-konvid-mos-head-v1

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

0340-multi-corpus-aggregation

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

0345-cambi-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))

0350-psnr-hvs-avx512-ceiling

ADR-0351: CUDA PSNR — chroma extension (psnr_cb / psnr_cr)

0351-cuda-chroma-psnr

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

0359-arc-runners-pilot

ADR-0360: CAMBI CUDA port (Strategy II hybrid, T3-15a)

0360-cambi-cuda

ADR-0361: Metal compute backend — scaffold-only audit-first PR (T8-1)

0361-metal-compute-backend

ADR-0362 — K150K-A corpus integration: FR-from-NR extraction of FULL_FEATURES

0362-k150k-corpus-integration

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

0365-coreml-ep-wiring

ADR-0366: vmaf-tune corpus schema v3 — canonical-6 per-feature aggregates

0366-corpus-schema-v3

ADR-0367: LSVQ corpus ingestion for nr_metric_v1

0367-lsvq-corpus-ingestion

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

0371-corpus-ingest-base-class

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

0373-hip-batch2-float-motion

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

0388-bristol-bvi-cc-ingest

ADR-0389: vmaf_tiny_v3 — wider/deeper mlp_medium tiny VMAF MLP

0389-vmaf-tiny-v3-mlp-medium

ADR-0390: vmaf_tiny_v4 — mlp_large arch (opt-in only; arch ladder stops here)

0390-vmaf-tiny-v4-mlp-large

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

0394-local-sidecar-training

ADR-0395: predictor stub-models policy

0395-predictor-stub-models-policy

ADR-0396: Video-temporal saliency extension to saliency_student_v1

0396-video-saliency-extension

ADR-0397: vmaf-tune Phase F — auto adaptive recipe-aware tuning

0397-vmaf-tune-phase-f-auto

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

0401-libvmaf-wasm-target

ADR-0402: MCP runtime v2 — UDS transport + real compute_vmaf binding

0402-mcp-runtime-v2

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

0405-openvino-npu-ep-wiring

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

0415-cambi-sycl-port

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

0419-sve2-probe-darwin-gate

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

0447-motion-hfr-under-report

ADR-0448: Active upstream monitoring (no silent "wait" deferrals)

0448-active-upstream-monitoring-discipline

ADR-0451: Local dev-MCP container for live probing

0451-local-dev-mcp-container

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

0454-vif-cuda-smem-staging

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

0464-cambi-cuda-smem-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

0470-vulkan-pipeline-cache

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

0482-vmaf-pre-device-parity

ADR-0483: Extract shared vmaf_gpu_dispatch_parse_env tokenizer

0483-gpu-dispatch-parse-dedup

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

0486-context-api-contract-doc

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)

0489-cambi-sycl-event-chain

ADR-0490: float_ms_ssim Metal port

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)

0495-mcp-probe-bug-fixes

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

0517-mcp-run-benchmark-repair

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

0520-cli-no-reference-wiring

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

0525-aiutils-subprocess-dedup

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

0535-adr-atomic-allocator

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

0539-hip-adm-kernels-real

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

0547-ai-script-env-vars

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

0549-audit-cleanup-bundle-2

ADR-0550: Auto-resize input plane to NR tiny-model dims + --tiny-resize flag

0550-tiny-model-auto-resize

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)

0559-feature-coverage-audit

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

0562-local-explainer-hang-fix

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

0584-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

0587-metal-cambi-real-kernel

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

0589-metal-ssim-lcs-db-parity

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

0596-hip-cuda-dead-tu-cleanup

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

0604-rocm-renovate-manager

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

0613-dynamic-optimizer

ADR-0614: Per-Shot ABR Rendition Selection

0614-per-shot-abr-rendition

ADR-0615: Fast NR Pre-Scoring for CRF Bisect Acceleration

0615-fast-nr-prescoring

ADR-0616: VMAF NEG Integration into vmaf-tune

0616-vmaf-neg-integration

ADR-0617: Cross-Shot Complexity Weighting and Title-Level Quality Constraints

0617-cross-shot-complexity-weighting

ADR-0618: Content-Aware Classifier for Encoder Routing

0618-content-aware-classifier

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)

0624-fast-nr-prescoring-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

0637-ci-test-failures-omnibus

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

0645-integer-adm-pnorm-simd

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

0650-signal-mix-audit

ADR-0651: Preserve CHUG HDR Metadata On Feature Rows

0651-chug-hdr-row-metadata

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

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

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

0678-ai-run-manifest-helper

ADR-0679: CI Draft Auto-Merge Gate

0679-ci-draft-automerge-gate

ADR-0680: Shared AI CLI Helper Pattern

0680-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

0689-vmafx-ci-matrix-dedupe

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)

0692-vmafx-c23-bump

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

0696-vmafx-netflix-compat

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

0699-vmafx-helm-chart-k8s

ADR-0700: VMAFX Repo Layout

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

0703-vmafx-server-go-grpc

ADR-0704: vmafx-mcp Go port (JSON-RPC, stdio transport)

0704-vmafx-mcp-go-port

ADR-0705: vmafx-tune Go port — Stage 1 (compare subcommand)

0705-vmafx-tune-go-stage1

ADR-0706: Rust vmafx-sys FFI bindings crate

0706-vmafx-rust-sys-bindings

ADR-0707: TAD — Temporal Absolute Difference Feature Extractor Implemented in Rust (cbindgen Pilot)

0707-vmafx-rust-pilot-feature

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

0710-vmafx-ci-slim-down-v2

ADR-0711: vmafx-controller Phase 4b.1 — Job Queue, Node Registry, and Scheduler

0711-vmafx-controller-impl

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

0713-vmafx-node-impl

ADR-0714: vmafx-operator kubebuilder skeleton + CRDs

0714-vmafx-operator-skeleton

ADR-0717: vmafx-node — ffmpeg latest-tag pinning + ffmpeg-patches bundled into Dockerfile

0717-vmafx-node-ffmpeg-latest

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

0720-cpp23-pilot-mem

ADR-0721: C++23 Pilot Wave 1 — opt.c conversion

0721-cpp23-pilot-opt

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)

0725-cpp23-pilot-log-v2

ADR-0726: Drop Vulkan backend

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

0728-native-build-sunset

ADR-0729: C++23 Wave 3 — feature_name, picture_copy, model

0729-cpp23-wave3-bundle

ADR-0730: vmafx-tune Go port — Stage 2 (ladder subcommand)

0730-vmafx-tune-go-stage2

ADR-0731: C++23 Wave 3 Part B — psnr_tools, luminance_tools, mkdirp

0731-cpp23-wave3-part-b

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

0735-cpp23-wave5-bundle

ADR-0738: Bump local CUDA toolkit pin to 13.3 + R610 minimum driver (partial — CI deferred)

0738-bump-cuda-133-r610-local

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

0747-cuda-extern-c-sweep

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

0755-cpp23-wave7-single-file

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)

0762-cuda-ciede-ldg

ADR-0763 — CUDA adm_decouple kernels: __ldg() F3 fix

0763-cuda-adm-decouple-ldg

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

0768-cpp23-wave9-pool-env

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

0771-simd-twin-inventory

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

0774-mcp-server-audit

ADR-0775: DNN ORT Backend Audit Findings

0775-dnn-ort-audit

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

0779-ebpf-fuse-bypass

ADR-0780: NOLINT Cluster Refactor — Slab Allocator, SYCL Stride, ADM Band-Size

0780-nolint-cluster-refactor

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

0782-otel-tracing

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

0784-integer-ssim-avx2

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

0793-nightly-workflow-audit

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

0795-prev-ref-thread-safety

ADR-0797: vmafx-server OpenAPI REST contract

0797-openapi-rest-schema

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

0804-vmaf-context-get-backend

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)

0809-cli-cpp23-conversion

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

0811-security-codeql-go-pvr

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

0819-dev-container-ci-gate

ADR-0839: C++23 wave — shadow-identifier and implicit-cast cleanup

0839-cpp23-shadow-const-fixes

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

0841-env-var-consolidation

ADR-0844: float_adm AVX2/AVX-512 F2+F3 — double-precision and FP-contraction

0844-float-adm-avx2-512-f2-f3

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

0858-cpp23-gpu-dispatch-env

ADR-0860 — Re-include Vulkan FFmpeg patches as no-op shims for chain coherence

0860-ffmpeg-patch-chain-no-op-vulkan-shim

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

0869-sanitizer-pass-cleanup

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

0872-io-error-and-eintr-audit

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

0888-pyright-strict-audit

ADR-0889: Vendored libsvm 3.24 audit — close header-row-ordering oob, document upstream-version policy

0889-libsvm-vendored-audit

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

0899-bash-strict-mode-sweep

ADR-0901: Governance file audit — add GOVERNANCE + MAINTAINERS, expand CODEOWNERS, document ADR-0108 in CONTRIBUTING

0901-governance-audit

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

0903-wire-codecov-upload

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

0910-codespell-sweep-config

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

0918-llvm-ir-diff-harness

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

0923-buildkit-cache-mounts

ADR-0924: Native bash pre-commit hook as opt-in alternative to the pre-commit framework

0924-native-pre-commit-hooks

ADR-0925: Generic in-memory registry for vmafx-controller subsystems

0925-go-generic-registry

ADR-0926: Parquet schema v2 — canonical column order, zstd-3, schema metadata

0926-parquet-schema-v2

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

0930-helm-networkpolicy-pss

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

0932-iter-seq-adapter

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

0936-pathlib-sweep-final

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

0939-skills-library-expansion

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

0953-doxygen-public-api-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)

0965-cuda-speed-tu-repair

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

0978-vmafx-server-bug-audit

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

0983-gosec-findings-fix-sweep

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

0986-ci-docs-pr-trigger

ADR-0987: AVX-512 path for float_moment feature extractor

0987-avx512-float-moment

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

0989-sycl-motion-add-uv

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

0992-mos-label-batch-runs

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

0996-ebpf-fuse-bypass-rclone

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

1001-sycl-cambi-parity

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

1003-cpp-std-c23-bump

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

1008-c-lifecycle-test-bugs

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

1010-mcp-json-parse-guards

ADR-1011: Add static to TU-internal CUDA helper functions — VIF, ADM, motion

1011-cuda-symbol-visibility

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

1014-r5-prometheus-registry

ADR-1017: Go operator controller resource-allocation fixes

1017-r5-go-timer-ctx-cancel

ADR-1018: MCP exec.CommandContext + controller gRPC panic recovery

1018-r5-grpc-hardening

ADR-1020: acq_rel memory ordering on ref-count decrement + mutex-destroy-after-unlock + picture-pool unlock ordering

1020-r5-memory-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

1023-mcp-asyncio-correctness

ADR-1024: R6 per-metric scoring guards — PSNR/ADM correctness fixes

1024-r6-metric-scoring-guards

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

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

1041-ci-fix-go-rust-red

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)

1047-helm-schema-bug-fixes

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

1049-grpc-feedback-backoff

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

1053-dev-cuda-passthrough

ADR-1056: Use /std:c++latest on MSVC instead of cpp_std=c++23

1056-msvc-cpp-std

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

1060-r10-cpp23-error-paths

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

1064-ffmpeg-patches-score-fmt

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

1074-helm-values-completeness

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

1078-ms-ssim-option-parity

ADR-1079: TSan-eligible thread-safety test for threaded_extract_batch_func

1079-tsan-batch-thread-safety

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

1081-bench-correctness

ADR-1083: y4m_input_fetch_frame signed-integer overflow + fread(NULL) UB fixes

1083-yuv-input-edge-cases

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

1087-coverage-pkg-storage

ADR-1088: CLI flag-parsing hardening — parse_unsigned overflow/negative guards and --help in cli_parse.cpp

1088-r14-cli-flag-parsing

ADR-1089: Block non-standard ONNX operator domains in the DNN wire scanner

1089-dnn-onnx-domain-bypass

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

1095-otel-grpc-trace-context

ADR-1096: Doxygen @brief/@param coverage for core internal headers

1096-doxygen-private-headers

ADR-1097: Atomic file writes for AI-script cache and output files

1097-ai-script-atomic-writes

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

1103-hip-vif-mirror2-boundary

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

1110-delta-e-itp-metric

ADR-1111: Add PU21 HDR perceptual metric (PU-PSNR + PU-SSIM, PQ input only)

1111-pu21-hdr-metric

ADR-1112: NIQE no-reference CPU feature extractor (fork-pkl parity)

1112-niqe-nr-metric

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)

1114-y-funque-plus-atoms

ADR-1115: BRISQUE no-reference CPU feature extractor (bundled LIVE model)

1115-brisque-nr-metric

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)

1122-vmaf-v1-model-port

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

1126-retire-isort-for-ruff

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

1134-vmafx-ort-runner-in-tree

ADR-1135: CI twin-drift + stale-source-reference gate

1135-ci-twin-drift-gate

ADR-1137: One implementation per shared Go package — folding the vmafx-tune shadow packages

1137-go-dedup-tune-shadow

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

1140-ci-impact-planner

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

1142-whole-codebase-standards

ADR-1143: CUDA and Intel SYCL Backend Gap Closure

1143-cuda-intel-backend-gaps

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

1154-hip-backend-gaps

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

1166-upstream-issue-harvest

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

1169-default-model-v1-0-16

ADR-1171: release-please credential gate warns on push, errors on dispatch

1171-release-please-credential-gate-warning

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

1179-sycl-v1-model-crash-fix

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

1184-mcp-grpc-bridge-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

1193-psnr-uncapped-option

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

1221-gpu-ms-ssim-db-ceiling

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

1224-cuda-tile-not-adopted

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

1229-mcp-go-runtime

ADR-1230: The CI gcc moves forward with clang and meson, and the ratchet records it

1230-modern-gcc-toolchain

ADR-1231: Container bases and toolchain versions come from one config file

1231-base-image-single-source

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

1234-local-preflight-gate

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

1237-perf-pass-1245

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

1241-worktree-hook-dispatch

ADR-1242: Require source-owned ADR metadata freshness

1242-generated-adr-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

1250-eupl-fork-relicense

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

1260-windows-arm64-cpu-lane

ADR-1261: The local type-check hook fails on findings a branch introduces, not on ones it inherits

1261-mypy-pre-push-delta-gate

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

1274-hiss-21-replay-gate

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

1280-worktree-state-sync

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

1292-compat-shim-spawn-safe

ADR-1293: Move tiny-AI QAT onto torchao's pt2e API

1293-tinyai-qat-torchao-pt2e

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

1306-drop-nvidia-cuda-base

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

1310-mypy-ci-fail-closed

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

1312-gpu-option-alias-parity

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

1318-pershot-frames-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

1338-go-fix-clean-tree-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

1351-praetor-engine-pin-move

ADR-1352: Shift the first-release candidate mapping by one

1352-rc-phase-shift-plus-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

1359-cli-feature-backend-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

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

1366-cli-frame-readahead

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

1377-hip-motion-diff-first

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

1386-rc3-home-gpu-retest-kit

ADR-1387: Migrate Windows MinGW CI leg from deprecated MINGW64 to UCRT64

1387-mingw-ucrt64-migration

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

1395-sycl-kernels-no-scratch

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

1402-adm-cm-centre-tap-int32

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

1408-hip-shared-frame-planes

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

1421-rc3-rc8-candidate-map

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

1423-hip-adm-cpu-row-rounding

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

1424-cuda-ssim-cpu-frame-sum

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

1427-hip-clear-after-upload

ADR-1428: Exact GPU twins are declared by one fragment file each, not by a shared literal

1428-exact-twins-fragments

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

1435-hip-vif-cpu-log2-table

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

1437-hip-exact-twins-declared

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

1438-hip-ssim-cpu-frame-sum

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

1443-sycl-ssim-cpu-arithmetic

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

1448-hip-ciede-cpu-arithmetic

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

1459-speed-cov-kernel-exact

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

1493-macos-tester-bundle

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

1495-icx-system-libm

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

1505-intel-gpu-tester-image

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

1509-nvidia-gpu-tester-image

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

1511-amd-gpu-tester-image

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

1515-windows-tester-zip

ADR-1516: A Windows CUDA tester zip that ships no NVIDIA file and measures every CUDA twin on a tester's Windows PC

1516-windows-cuda-tester-zip

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

1517-gpu-image-licensing

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

1525-adm-hip-aim-device-pass

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

1528-test-suite-registry

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

1539-node-ebpf-tracker-wiring

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

1547-helm-gpu-resource-name

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

1563-controller-node-role

ADR-1564: The dev container is pushed only into a private package, checked before every push

1564-dev-image-private-guard

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

1566-windows-sycl-tester-zip

ADR-1567: a cancelled running job reaches its node through the heartbeat answer, and the node stops the vmaf process

1567-job-cancel-reaches-node

ADR-1568: A test runs once in CI

1568-tests-run-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

1569-operator-controller-auth

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

1577-scoring-paths-per-tenant

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

1589-helm-controller-workload

ADR-1590: Every build stores its GPU device code compressed at the toolchain's strongest setting, and the build refuses raw device code

1590-device-code-compression

ADR-1591: Publish every archive and image at the strongest compression its documented consumers open

1591-package-compression

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

1593-helm-node-fuse-and-ebpf

ADR-1594: zstd image layers with a Docker Engine 23.0 floor, and zopfli for the Windows zips

1594-zstd-images-zopfli-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

1601-vif-den-log-sum-unsigned

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

1699-root-licence-files-eupl

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

1822-additive-picture-convert

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

1829-rc4-zero-copy-import

ADR-1830: vif_sycl runs at SIMD-16 only; the SIMD-32 kernels and VMAF_SYCL_VIF_SUBGROUP_SIZE are removed

1830-sycl-vif-simd16-only

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)

1852-vmafx-api-redesign

ADR-1868: Fold the 2026-10-05 scope into the existing RC4 to RC9 candidates

1868-candidate-map-2026-10-05

ADR-1874: The vmaf CLI reports its usable backends; the score-backend selectors read that report

1874-vmaf-list-backends

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

1897-vmafx-abi-0x-numbering

ADR-1898: A resumable stage runner and a mini retrain that exercises the retrain tooling in CI

1898-mini-retrain-pipeline

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

1906-vmafx-core-api-semantics

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

1930-sycl-device-asan-option

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

2012-lefthook-windows-host

ADR-2023: VMAFx device frames on CUDA: one library stream per device, fences on it, release events recorded where the frame is released

2023-vmafx-cuda-device-frames

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

2062-matlab-mex-lint-stubs

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

2073-vmafx-provenance-record

ADR-2074: VMAFx window scores: a completion thread per context, one pooling implementation, the window clock and the in-flight bound

2074-vmafx-window-scores

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

2092-vmafx-hip-device-frames

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

2153-praetor-pin-04cc813

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

2169-ci-fewer-runs

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

2171-research-radar

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

2199-actionlint-bounded-run

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

2321-praetor-pin-afb739ed

ADR-2342: Record the scope decisions of 2026-10-06 and 2026-10-07 in the candidate map

2342-rc-map-amendment-2026-10

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

2349-observability-package

ADR-2350: The VMAFx platform keeps its state in PostgreSQL, scales on queue depth and generates its platform surfaces from a definition

2350-cloud-native-platform

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

2440-praetor-pin-7458a220

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

2462-dco-sign-off-required

ADR-2478: Rust replaces the host-side C and C++ through 3.0, behind the unchanged C ABI

2478-rust-core-migration

ADR-2485: VMAFx keeps its own credits page, generated from a curated list and held to the tree

2485-vmafx-credits-page

ADR-2646: POSIX-only build parts stay off Windows, and preflight refuses an unguarded POSIX header

2646-posix-only-build-options

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

2705-docs-math-katex

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

ADR-2783: The patched FFmpeg is built with MSVC against vmaf.lib in CI

2783-ffmpeg-msvc-consumer-leg

ADR-2784: Move the praetor pin to 3a766f2d56ad, take its REUSE workflow and declare the build-warnings lanes it cannot read

2784-praetor-pin-3a766f2d

ADR-2795: Integer ADM evaluates two viewing distances in one context

2795-adm-shared-viewing-distances