Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions changelog.d/removed/native-build-sunset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# BREAKING: Sunset legacy native build modes (ADR-0728)

The following CI build configurations have been removed from
`.github/workflows/libvmaf-build-matrix.yml` and the required-checks list:

**Removed from CI matrix:**
- `Build — Windows MinGW64 (CPU)` — MinGW64 is not a VMAFX production target
- `Build — Ubuntu i686 gcc (CPU, no-asm)` — fork is 64-bit only
- `Build — Ubuntu gcc (CPU) + DNN` — superseded by Linux full-build in build.yml
- `Build — Ubuntu clang (CPU) + DNN` — superseded by Linux full-build in build.yml
- `Build — macOS clang (CPU) + DNN` — superseded by macOS leg in build.yml
- `Build — Ubuntu Vulkan (T5-1b runtime)` — folded into Linux full-build
- `Build — macOS Vulkan via MoltenVK (advisory)` — too fragile; no required gate
- `Build — Ubuntu HIP (T7-10b runtime)` — folded into Linux full-build
- `Build — macOS Metal (T8-1 scaffold)` — folded into macOS leg in build.yml
- `Build — Ubuntu gcc Static (CPU)` — pkgconfig verified within Linux full-build
- `Build — Ubuntu CUDA Static` — NVCC-static covered by Linux full-build
- `Build — Ubuntu SYCL` — folded into Linux full-build
- `Build — Ubuntu SYCL + CUDA` — folded into Linux full-build
- `Build — Windows MSVC + oneAPI SYCL (build only)` — SYCL in Linux full-build

**New canonical build matrix** (`build.yml`, ADR-0710):
- `Build — Linux (GCC, all backends)` — full stack: CUDA + SYCL + Vulkan + HIP + DNN + CPU
- `Build — macOS (Clang, CPU + Metal)` — Apple Clang + CPU + Metal scaffold
- `Build — Windows (MSVC + CUDA)` — MSVC + CPU + CUDA (build-only)

**Required-checks aggregator updated** to use new check names from `build.yml`
and `sanitizers.yml`. `Cppcheck (Whole Project)` removed (clang-tidy superset).

Implements ADR-0691 + ADR-0710. No functional change to the C library or CLI.
88 changes: 88 additions & 0 deletions docs/adr/0728-native-build-sunset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# ADR-0728: Sunset Legacy Native Build Modes — Phase 4b.9 Follow-On

- **Status**: Accepted
- **Date**: 2026-05-28
- **Deciders**: lusoris
- **Tags**: `ci`, `build`, `vmafx`, `breaking`

## Context

ADR-0691 (VMAFX Phase 1C — Drop Legacy Build Paths) and ADR-0710 (VMAFX CI
Slim-Down v2) decided to sunset several CI build configurations as part of the
container-first, production-Docker-image posture established by ADR-0686 and
ADR-0701. Both ADRs reached Accepted status before the implementing PR landed;
this PR is the mechanical execution of what those ADRs decided.

The build modes being dropped are:

| Mode | Where | Rationale |
|---|---|---|
| `Build — Windows MinGW64 (CPU)` | `libvmaf-build-matrix.yml` `windows:` job | MinGW64 is not a VMAFX production target; Windows coverage via MSVC (ADR-0691) |
| `Build — Ubuntu i686 gcc (CPU, no-asm)` | `libvmaf-build-matrix.yml` matrix entry | Fork is 64-bit only; ADR-0151 contract documented for historical record (ADR-0691) |
| `Build — Ubuntu gcc (CPU) + DNN` | `libvmaf-build-matrix.yml` matrix entry | Superseded by `build.yml` Linux full-build with `-Denable_dnn=enabled` (ADR-0710) |
| `Build — Ubuntu clang (CPU) + DNN` | `libvmaf-build-matrix.yml` matrix entry | Same; clang DNN redundant against gcc full-build (ADR-0710) |
| `Build — macOS clang (CPU) + DNN` | `libvmaf-build-matrix.yml` matrix entry | Superseded by `Build — macOS (Clang, CPU + Metal)` in build.yml (ADR-0710) |
| `Build — Ubuntu Vulkan (T5-1b runtime)` | `libvmaf-build-matrix.yml` matrix entry | Folded into Linux full-build (ADR-0710) |
| `Build — macOS Vulkan via MoltenVK (advisory)` | `libvmaf-build-matrix.yml` matrix entry | Too fragile; no required gate; dropped entirely (ADR-0710) |
| `Build — Ubuntu HIP (T7-10b runtime)` | `libvmaf-build-matrix.yml` matrix entry | Folded into Linux full-build (ADR-0710) |
| `Build — macOS Metal (T8-1 scaffold)` | `libvmaf-build-matrix.yml` matrix entry | Folded into macOS leg of build.yml (ADR-0710) |
| `Build — Ubuntu gcc Static (CPU)` | `libvmaf-build-matrix.yml` matrix entry | Static pkgconfig verified within Linux full-build (ADR-0710) |
| `Build — Ubuntu CUDA Static` | `libvmaf-build-matrix.yml` matrix entry | NVCC-static interaction covered by Linux full-build (ADR-0710) |
| `Build — Ubuntu SYCL` | `libvmaf-build-matrix.yml` matrix entry | Folded into Linux full-build (ADR-0710) |
| `Build — Ubuntu SYCL + CUDA` | `libvmaf-build-matrix.yml` matrix entry | Folded into Linux full-build (ADR-0710) |
| `Build — Windows MSVC + oneAPI SYCL (build only)` | `libvmaf-build-matrix.yml` `windows-gpu-build:` | SYCL folded into Linux full-build; MSVC+oneAPI edge case deprioritised (ADR-0710) |
| `Cppcheck (Whole Project)` | `required-aggregator.yml` | Clang-tidy superset; removed per ADR-0710 |
| `Sanitizers — ASan + UBSan + MSan (address/thread/undefined)` | `required-aggregator.yml` | Replaced by combined `Sanitizers — ASan + UBSan (PR gate)` from sanitizers.yml (ADR-0710) |
| `python/vmaf/` standalone wheel publishing | N/A | No wheel-publication job existed at audit time; no-op per ADR-0691 |
| `Static + DNN` combo | N/A | No such combo existed at audit time; no-op per ADR-0691 |

The `required-aggregator.yml` is updated to reflect the new canonical check names
from `build.yml` and `sanitizers.yml`.

The user authorized this work as handoff state for Phase 4b.9 with the direction:
"container-internal only. No external .so/.deb/.rpm publishing. Docker images +
Helm chart are the user-facing artifacts."

## Decision

Execute the mechanical changes described in ADR-0691 and ADR-0710:

1. Remove the `windows:` MinGW64 job from `libvmaf-build-matrix.yml`.
2. Remove the i686, DNN, Vulkan, MoltenVK, HIP, Metal, Static CPU, CUDA Static,
SYCL, and SYCL+CUDA matrix entries from `libvmaf-build-matrix.yml`.
3. Remove the `backend: sycl` entry from the `windows-gpu-build:` matrix.
4. Update `required-aggregator.yml`: remove the 10 dropped check names; add the
3 new build.yml names and the sanitizers.yml ASan+UBSan PR gate name.
5. Update documentation in `docs/development/build.md` and `docs/development/release.md`.
6. Add a deprecations row in `docs/development/deprecations.md`.

## Alternatives considered

| Option | Pros | Cons | Why not chosen |
|---|---|---|---|
| Keep all legacy build modes | Zero breakage risk | Per-PR CI wall time stays high; maintenance cost accumulates; not aligned with container-first posture | Already decided against in ADR-0691 + ADR-0710 |
| Drop only one mode at a time | Smaller PRs | Multiple PRs required; state described in ADR-0691/0710 stays diverged from reality longer | Single coordinated removal is cleaner; all modes were decided in prior ADRs |
| Keep MinGW64 as an optional (non-required) lane | GCC Windows coverage without blocking PRs | Added noise without signal; MinGW accumulates platform-specific workarounds | Not a shipping target |

## Consequences

- **Positive**: Per-PR CI queue is shorter. Required-check list accurately reflects the
configurations the fork ships. No MinGW-specific workarounds accumulate. The
`required-aggregator.yml` no longer waits for 10 dropped jobs that will never fire.
- **Negative (breaking)**: The matrix shrinks — this is intentional and matches the
container-first posture (ADR-0686, ADR-0701). `CHANGELOG.d/removed/native-build-sunset.md`
marks this BREAKING.
- **Neutral**: `libvmaf-build-matrix.yml` remains in the repo; it still exercises the
CPU-only + ARM + CUDA + SYCL Ubuntu/macOS base legs as a secondary matrix alongside
the canonical `build.yml`. The Windows GPU build retains only the CUDA leg pending
a full consolidation pass.

## References

- Parent decisions: ADR-0691 (drop legacy build paths), ADR-0710 (CI slim-down v2)
- Container-first posture: ADR-0686, ADR-0701
- i686 historical context: ADR-0151
- Required Checks Aggregator: ADR-0313
- `req` (paraphrased): user authorized Phase 4b.9 handoff — container-internal only;
Docker images + Helm chart are the user-facing artifacts; drop MinGW64, i686,
Static+DNN combo, and python/vmaf wheel publishing
60 changes: 60 additions & 0 deletions docs/development/deprecations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# VMAFX Deprecations

This file tracks user-visible build configurations and CI modes that have been
deprecated or removed. Entries are ordered newest-first.

---

## 2026-05-28 — Legacy native build modes (ADR-0728)

**Status**: Removed

**What was removed**: The following CI build configurations no longer run as
required or advisory CI lanes:

| Removed configuration | Last active |
|---|---|
| `Build — Windows MinGW64 (CPU)` (MSYS2 / MinGW-w64) | pre-ADR-0728 |
| `Build — Ubuntu i686 gcc (CPU, no-asm)` (32-bit x86 cross-build) | pre-ADR-0728 |
| `Build — Ubuntu gcc (CPU) + DNN` | pre-ADR-0728 |
| `Build — Ubuntu clang (CPU) + DNN` | pre-ADR-0728 |
| `Build — macOS clang (CPU) + DNN` | pre-ADR-0728 |
| `Build — Ubuntu Vulkan (T5-1b runtime)` | pre-ADR-0728 |
| `Build — macOS Vulkan via MoltenVK (advisory)` | pre-ADR-0728 |
| `Build — Ubuntu HIP (T7-10b runtime)` | pre-ADR-0728 |
| `Build — macOS Metal (T8-1 scaffold)` | pre-ADR-0728 |
| `Build — Ubuntu gcc Static (CPU)` | pre-ADR-0728 |
| `Build — Ubuntu CUDA Static` | pre-ADR-0728 |
| `Build — Ubuntu SYCL` | pre-ADR-0728 |
| `Build — Ubuntu SYCL + CUDA` | pre-ADR-0728 |
| `Build — Windows MSVC + oneAPI SYCL (build only)` | pre-ADR-0728 |
| `Cppcheck (Whole Project)` (required-check) | pre-ADR-0728 |
| `Sanitizers — ASan + UBSan + MSan (address/thread/undefined)` (3 separate required-checks) | pre-ADR-0728 |

**Why**: Container-first VMAFX posture (ADR-0686, ADR-0701). Docker images and
the Helm chart are the user-facing artifacts; per-backend host binaries are no
longer published. The canonical build matrix is now `build.yml` (ADR-0710):
one job per OS (Linux GCC all-backends, macOS Clang, Windows MSVC+CUDA).

**Migration**: No migration needed for end users — the C library API and CLI
flags are unchanged. Contributors who previously tested against MinGW64 should
use the Windows MSVC + CUDA path or the `vmafx-dev-mcp` Docker container.
32-bit x86 is unsupported; the fork is 64-bit only.

**References**: ADR-0691, ADR-0710, ADR-0728

---

## 2026-05-28 — `python/vmaf/` standalone wheel publishing

**Status**: Confirmed never existed; no-op

The `python/vmaf/` shim package (re-exporting from `compat/python-vmaf/`) was
never published as a standalone wheel to PyPI. No CI job performed wheel
publication for this package at the time of audit. ADR-0691 §4 records this
as a no-op for traceability.

The Netflix Python harness (`python/test/`) continues to run via `tox` in the
Linux full-build leg.

---
Loading