Skip to content

feat!: sunset legacy native build modes (BREAKING, ADR-0728) - #52

Merged
lusoris merged 1 commit into
masterfrom
feat/native-build-sunset-20260528
May 28, 2026
Merged

lusoris merged 1 commit into
masterfrom
feat/native-build-sunset-20260528

Conversation

@lusoris

@lusoris lusoris commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Removes MinGW64, i686, standalone DNN, Vulkan, MoltenVK, HIP, Metal, Static CPU/CUDA, SYCL, SYCL+CUDA, and MSVC+SYCL CI legs from libvmaf-build-matrix.yml per ADR-0691 + ADR-0710
  • Updates required-aggregator.yml: drops 10 legacy check names, adds 3 canonical build.yml names (Build — Linux (GCC, all backends), Build — macOS (Clang, CPU + Metal), Build — Windows (MSVC + CUDA)) and the Sanitizers — ASan + UBSan (PR gate) from sanitizers.yml; removes Cppcheck (Whole Project) (clang-tidy superset)
  • Also fixes pre-existing broken core/test/meson.build reference to deleted test_ansnr_simd.c (left behind by PR feat(core): drop legacy ansnr feature (pre-VMAF, never Netflix-adopted) #38)

Test plan

  • meson setup core core/build-sunset -Denable_cuda=false -Denable_sycl=false && ninja -C core/build-sunset — builds clean
  • meson test -C core/build-sunset --suite=fast — 50/50 pass
  • All pre-commit hooks pass (ADR collision, copyright, yaml, conventional-commit)
  • No matrix.moltenvk / matrix.i686 / matrix.dnn / matrix.vulkan stale guards remain in the workflow

Deep-dive deliverables (ADR-0108)

  • Research digest: no digest needed: executes ADR-0691 + ADR-0710 per handoff direction
  • Decision matrix: in ADR-0728 ## Alternatives considered
  • AGENTS.md invariant: core/AGENTS.md — narrow build matrix, container-first sanity rule
  • Reproducer: meson setup core core/build-sunset -Denable_cuda=false -Denable_sycl=false && ninja -C core/build-sunset && meson test -C core/build-sunset --suite=fast — 50/50 pass
  • Changelog fragment: changelog.d/removed/native-build-sunset.md (BREAKING)
  • Rebase notes: entry added in docs/rebase-notes.md

Checklist

  • ADR-0728 filed and indexed in docs/adr/README.md
  • docs/state.md updated — T-NATIVE-BUILD-SUNSET-ADR-0728-2026-05-28 in Recently closed
  • docs/development/ci.md updated — build.yml added to workflow table
  • docs/development/deprecations.md created — deprecation rows for all removed modes
  • No Netflix golden assertions modified
  • No force-push to master
  • ffmpeg-patches not affected (CI-only change, no public C API or meson_options.txt touches)
  • PR fix(ci): post-rename path refs (unblocks merge train) #46 conflict note: only libvmaf-build-matrix.yml and required-aggregator.yml touched; edits are surgical removals of matrix entries only

🤖 Generated with Claude Code

@lusoris
lusoris marked this pull request as ready for review May 28, 2026 16:27
@lusoris
lusoris enabled auto-merge (squash) May 28, 2026 16:27
@lusoris
lusoris force-pushed the feat/native-build-sunset-20260528 branch 2 times, most recently from 0750fd1 to 6affe2e Compare May 28, 2026 19:35
Implements ADR-0691 (drop legacy build paths) and ADR-0710 (CI slim-down v2).
Drops the following CI configurations from libvmaf-build-matrix.yml:

- Build — Windows MinGW64 (CPU): MSYS2/MinGW-w64 job removed; MinGW64 is not
  a VMAFX production target; Windows coverage via MSVC in build.yml
- Build — Ubuntu i686 gcc (CPU, no-asm): fork is 64-bit only (ADR-0151)
- Build — Ubuntu gcc/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) + Build — Ubuntu CUDA Static: covered by full-build
- Build — Ubuntu SYCL / SYCL+CUDA: folded into Linux full-build
- Build — Windows MSVC + oneAPI SYCL (build only): SYCL in Linux full-build

Updates required-aggregator.yml: removes 10 dropped check names; adds 3 new
build.yml names (Linux/macOS/Windows) and the sanitizers.yml ASan+UBSan gate.
Removes Cppcheck (clang-tidy superset, per ADR-0710).

Also fixes pre-existing broken meson.build reference: test_ansnr_simd.c was
deleted in feat/drop-ansnr-20260528 (PR #38) but the meson.build entry was
not cleaned up, causing configure failures on fresh worktrees.

Six deliverables: (1) no digest needed: executes ADR-0691 + ADR-0710 per
handoff direction; (2) decision matrix in ADR-0728; (3) core/AGENTS.md
invariant note (narrow build matrix, container-first); (4) reproducer:
meson setup core core/build-sunset -Denable_cuda=false -Denable_sycl=false
&& ninja -C core/build-sunset && meson test -C core/build-sunset --suite=fast
— 50/50 pass; (5) changelog.d/removed/native-build-sunset.md; (6) rebase-notes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lusoris
lusoris force-pushed the feat/native-build-sunset-20260528 branch from 6affe2e to 1fd5c56 Compare May 28, 2026 22:00
@lusoris
lusoris merged commit bfd4c43 into master May 28, 2026
16 of 20 checks passed
@lusoris
lusoris deleted the feat/native-build-sunset-20260528 branch May 28, 2026 22:35
lusoris added a commit that referenced this pull request May 29, 2026
The next release-please tag is projected as 4.0.0-lusoris.0 (MAJOR) because
five commits carry '!' breaking markers since 3.0.0-lusoris.0. Three of those
markers are incorrect:

  PR #52  feat!: sunset legacy native build modes
          CI-matrix pruning; no public API, CLI flag, or header removed.
          '!' unwarranted.

  PR #80  fix(cuda)!: wrap __global__ kernels in extern "C"
          Internal CUDA kernel mangling fix (P0 silent-corruption bug).
          No public API change. '!' unwarranted.

  PR #108 fix(cuda)!: remove committed conflict marker
          Three-line literal-marker deletion. Not a breaking change.
          '!' unwarranted.

Two '!' commits ARE correctly marked:

  PR #47  feat(core)!: drop Vulkan backend
          Removed libvmaf_vulkan.h (public header), CLI flags
          --backend vulkan / --vulkan_device / --vulkan-require-fp64,
          and public enum values. Genuine public API removal.

  PR #87  feat!: sunset VmafLegacyQualityRunner
          Removed importable Python class VmafLegacyQualityRunner.
          Genuine public surface removal.

Net assessment: 2/5 breaking markers warrant a MAJOR bump; the other 3
are bug-fix or CI-maintenance commits mislabelled with '!'. The fork
tracks Netflix upstream v3.x; jumping to 4.0.0 prematurely would
misrepresent the version relative to upstream and surprise downstream
users.

Safest mitigation without rewriting history: set "draft": true in
release-please-config.json so the next release PR opens as DRAFT. The
maintainer reviews the proposed version, adjusts if needed, then
un-drafts to merge. This adds one manual gate without masking future
real majors.

The version chosen on review should be 3.1.0-lusoris.0: the two genuine
breaking changes (Vulkan + LegacyRunner) are fork-local extensions with
no upstream counterpart, and the fork has not bumped its
upstream-tracking MAJOR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request May 29, 2026
Set `"draft": true` in `release-please-config.json` root package so the
next release PR opens as a draft, requiring manual review before merge.
Prevents an unintended `4.0.0` major bump caused by three incorrectly
marked breaking commits (PR #52, #80, #108).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request May 29, 2026
Set `"draft": true` in `release-please-config.json` root package so the
next release PR opens as a draft, requiring manual review before merge.
Prevents an unintended `4.0.0` major bump caused by three incorrectly
marked breaking commits (PR #52, #80, #108).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request Jun 2, 2026
Set `"draft": true` in `release-please-config.json` root package so the
next release PR opens as a draft, requiring manual review before merge.
Prevents an unintended `4.0.0` major bump caused by three incorrectly
marked breaking commits (PR #52, #80, #108).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request Jun 2, 2026
…-24.04 pin + #173 Renovate grouping + #183 release-please draft) (#520)

* chore(ci): nightly workflow audit — remove redundant TSan, fix retention + Python ver (ADR-0793)

Three targeted fixes surfaced by a periodic nightly-CI audit:

1. Remove the `tsan` job from nightly.yml. sanitizers.yml already fires
   TSan on every push to master (ADR-0710); the daily cron duplicate burned
   ~45 runner-minutes/night for zero additional signal.

2. Add explicit `retention-days` to both nightly artifacts: 14 d for the
   clang-tidy-full-report (diagnostic value expires quickly) and 30 d for
   nightly-benchmark-results (one month of period-over-period comparisons).
   Both previously defaulted to GitHub's 90-day retention.

3. Fix `python-version: "3.14.5"` → `"3.12"` in nightly-bisect.yml.
   Python 3.14 is a pre-release alpha series with no stable release; the
   step name ("Set up Python 3.12") was correct and the version string was
   wrong. This would cause the job to fail trying to download a non-existent
   release.

No functional changes to test coverage. All nightly signal is preserved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(ci): pin ubuntu-latest to ubuntu-24.04 across all non-Docker runners (ADR-0802)

Replace floating `ubuntu-latest` runner alias with `ubuntu-24.04` across 15
workflow files to prevent silent toolchain drift when GitHub promotes the alias
to Ubuntu 26.04 (expected H2 2026). Add ADR-0802 documenting the pin policy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): Renovate — Go/Cargo grouping, off-hours schedule, PR-cap (ADR-0812)

- Global schedule: "at any time" → "before 6am on weekdays" (Europe/Vienna);
  vulnerability alerts retain their existing "at any time" override.
- Add gomod packageRule: minor+patch grouped, auto-merged Monday mornings;
  major individual, manual review.
- Add cargo packageRule: same group-and-automerge pattern; major manual.
- prConcurrentLimit: 12 → 10 (Go grouping reduces PR count per cycle).
- ADR-0812 documents the decision and alternatives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(release): set release-please draft mode for manual version review

Set `"draft": true` in `release-please-config.json` root package so the
next release PR opens as a draft, requiring manual review before merge.
Prevents an unintended `4.0.0` major bump caused by three incorrectly
marked breaking commits (PR #52, #80, #108).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(ci): add bundle CHANGELOG fragment for CI workflow hygiene PRs #141 #165 #173 #183

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Lusoris <lusoris@pm.me>
@lusoris lusoris added this to the 1.0.0 — First release milestone Sep 4, 2026
lusoris added a commit that referenced this pull request Sep 19, 2026
9aa008e (#1564), the commit that removed the i686 lane, implemented
ADR-0691. ADR-0728 (bfd4c43, #52) landed after the rename merge had
already restored the lane and changed only its own ADR, a changelog
fragment and deprecations.md. ADR-1258, its index row, the state row, the
changelog fragment and the rebase note now say so, and the preflight page,
preflight.sh and the ADM page cite ADR-1258 for the 64-bit-only rule.

ADR-0151 is marked superseded by ADR-1258 instead of ADR-0728: ADR-0691's
removal was undone the same day, so the lane ADR-0151 added ran until
ADR-1258 removed it, and ADR-1258 is the record that is in force.
lusoris added a commit that referenced this pull request Sep 19, 2026
9aa008e (#1564), the commit that removed the i686 lane, implemented
ADR-0691. ADR-0728 (bfd4c43, #52) landed after the rename merge had
already restored the lane and changed only its own ADR, a changelog
fragment and deprecations.md. ADR-1258, its index row, the state row, the
changelog fragment and the rebase note now say so, and the preflight page,
preflight.sh and the ADM page cite ADR-1258 for the 64-bit-only rule.

ADR-0151 is marked superseded by ADR-1258 instead of ADR-0728: ADR-0691's
removal was undone the same day, so the lane ADR-0151 added ran until
ADR-1258 removed it, and ADR-1258 is the record that is in force.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant