Skip to content

chore: post-rename + post-vulkan-removal sweep (clang-rt-19, vmaf-tune choices, docs) - #511

Merged
lusoris merged 10 commits into
masterfrom
fix/post-rename-post-vulkan-sweep
Jun 2, 2026
Merged

lusoris merged 10 commits into
masterfrom
fix/post-rename-post-vulkan-sweep

Conversation

@lusoris

@lusoris lusoris commented May 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • dev/Containerfile: add libclang-rt-19-dev to the build-deps apt layer so b_sanitize=address,undefined meson builds link against the clang-19 ASan/UBSan runtime (cannot find libclang_rt.asan.a was failing)
  • vmaf-tune --score-backend: remove vulkan from ALL_BACKENDS, DEFAULT_FALLBACKS, and all argparse choices= tuples following ADR-0726 (Vulkan backend removal); requesting --score-backend vulkan now raises ValueError at startup
  • Tests: update test_score_backend.py, test_ladder_score_backend_0511.py, test_backend_precheck_0613.py to reflect the removal; replace vulkan-specific test bodies with hip equivalents
  • Docs: update docs/usage/vmaf-tune-score-backend.md (accepted-values table, fallback chain cuda→sycl→hip→cpu, see-also) and tools/vmaf-tune/AGENTS.md invariant note

Note: the Containerfile's load-bearing COPY/cd paths already use core/ (ADR-0700 was previously applied). The only remaining libvmaf/ reference is at line 459 — an intentional historical comment documenting the rename that should be preserved.

Reproducer / smoke-test

# Container build should now proceed past the clang-rt layer:
docker compose -f dev/docker-compose.yml build dev-mcp

# vmaf-tune --score-backend vulkan should now fail immediately:
python -c "from vmaftune.score_backend import select_backend; select_backend(prefer='vulkan', available=['cpu'])"
# Expected: ValueError: unknown backend 'vulkan'; expected one of: auto, cpu, cuda, sycl, hip

ADR-0108 deliverables checklist

  • Research digest: no digest needed: trivial
  • Decision matrix: no alternatives: only-one-way fix
  • AGENTS.md invariant note: updated tools/vmaf-tune/AGENTS.md to reflect cpu|cuda|sycl|hip enum and ADR-0726 note
  • Reproducer / smoke-test command: included above
  • Changelog fragment: changelog.d/fixed/containerfile-post-rename-sweep.md
  • Rebase notes: no rebase impact needed: post-rename cleanup only (see docs/rebase-notes.md)
  • State.md: no state delta: bug-find sweep with no open/closed/deferred change
  • ffmpeg-patches: no surface change: not applicable — no public C-API surface touched

no docs needed: SYCL integer extractor forward-decl is a pure compile fix (master regression from ADR-0784 partial-init cleanup paths) — no user-visible behavior change, no API delta. Per CLAUDE.md §12 r10: "Internal refactors, bug fixes with no user-visible delta, and test-only changes are excluded."

@lusoris
lusoris enabled auto-merge (squash) May 31, 2026 22:44
Copilot AI review requested due to automatic review settings June 1, 2026 10:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is a post-rename / post-Vulkan-removal cleanup sweep that (1) fixes dev-container sanitizer builds against clang-19, (2) removes the deprecated vulkan score backend option from vmaf-tune per ADR-0726, and (3) updates CI/docs/tests to match the current backend and path conventions.

Changes:

  • Add libclang-rt-19-dev to the dev container build deps so clang-19 ASan/UBSan Meson builds link correctly.
  • Remove vulkan from vmaf-tune score-backend selection (ALL_BACKENDS, fallback chain, probing) and update unit/regression tests accordingly.
  • Update user docs, agent invariants, and Go CI Meson invocation to reflect the new backend set and core/ source-dir layout.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tools/vmaf-tune/src/vmaftune/score_backend.py Removes Vulkan from backend enum/fallbacks and deletes Vulkan probing; updates selection semantics to reject vulkan.
tools/vmaf-tune/tests/test_score_backend.py Updates unit tests for backend parsing/selection/argv wiring after Vulkan removal; adds ValueError expectations.
tools/vmaf-tune/tests/test_ladder_score_backend_0511.py Updates ladder CLI regression expectations for --score-backend choices (adds hip, removes vulkan).
tools/vmaf-tune/tests/test_backend_precheck_0613.py Adjusts ADR-0613 precheck regression tests to use a non-Vulkan backend (sycl) for “known-but-unavailable” behavior.
tools/vmaf-tune/AGENTS.md Updates invariant notes documenting strict backend selection and the supported backend enum post-ADR-0726.
docs/usage/vmaf-tune-score-backend.md Updates accepted values, fallback chain, and ADR references; adds note that Vulkan is removed.
docs/rebase-notes.md Notes that the changes are post-rename cleanup with no upstream rebase impact.
dev/Containerfile Adds libclang-rt-19-dev to fix clang-19 sanitizer runtime linking in the container.
changelog.d/fixed/containerfile-post-rename-sweep.md Changelog entry capturing the container, backend, docs, and CI fixes.
.github/workflows/go-ci.yml Fixes Meson invocation to pass core as the source directory post-rename.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +5 to +7
`vmaf` exposes a unified ``--backend NAME`` selector
(values: ``auto|cpu|cuda|sycl|vulkan|hip``) per ADR-0127 / ADR-0175 /
ADR-0422.
(values: ``auto|cpu|cuda|sycl|hip``) per ADR-0127 / ADR-0175 /
ADR-0422. The Vulkan backend was removed in ADR-0726.
Comment on lines 60 to +62
#: Backends the vmaf CLI accepts via ``--backend NAME``.
ALL_BACKENDS: tuple[str, ...] = ("cpu", "cuda", "sycl", "hip", "vulkan")
#: Vulkan was removed in ADR-0726; the enum no longer includes it.
ALL_BACKENDS: tuple[str, ...] = ("cpu", "cuda", "sycl", "hip")
Comment on lines 257 to 259
- ``prefer="auto"`` walks ``fallbacks`` and returns the first
entry present in ``available``. ``cpu`` must be in the chain
(or in ``available``) to guarantee a result.
Comment on lines +34 to +38
| `auto` | (default) probe the host and pick the fastest available, in the order `cuda → sycl → hip → cpu`. |
| `cuda` | NVIDIA GPU score path. Errors out if the local `vmaf` was built without CUDA, or if `nvidia-smi` is missing / reports no devices. |
| `sycl` | Intel oneAPI SYCL path. Errors out if `vmaf` was built without SYCL or `sycl-ls` reports no devices. |
| `hip` | AMD ROCm score path. Errors out if the local `vmaf` was built without HIP, or if `rocminfo` / `rocm-smi` cannot see an AMD GPU. |
| `cpu` | Force CPU scoring. Always available; useful as a baseline reference when chasing a numeric divergence. |
lusoris and others added 10 commits June 2, 2026 17:05
…une choices, docs

Four post-rename / post-Vulkan-removal stragglers surfaced by the
2026-06-01 container audit:

1. dev/Containerfile: add libclang-rt-19-dev next to clang-19/clang++-19
   so that `b_sanitize=address,undefined` meson builds link against the
   clang-19 ASan/UBSan runtime (was failing: cannot find libclang_rt.asan.a).

2. vmaf-tune score_backend: remove vulkan from ALL_BACKENDS, DEFAULT_FALLBACKS,
   _probe_vulkan, and the detect_available_backends probes table (ADR-0726).
   Requesting --score-backend vulkan now raises ValueError at startup.

3. vmaf-tune tests: update test_score_backend.py, test_ladder_score_backend_0511.py,
   and test_backend_precheck_0613.py to reflect the removal; replace vulkan-specific
   test bodies with hip equivalents where appropriate.

4. docs: update docs/usage/vmaf-tune-score-backend.md (accepted-values table,
   fallback chain, see-also) and tools/vmaf-tune/AGENTS.md invariant note.

Note: dev/Containerfile COPY/cd paths already use core/ (ADR-0700 was
previously applied to the load-bearing lines); the only remaining
libvmaf/ reference at line 459 is an intentional historical comment
documenting the rename.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lusoris
lusoris force-pushed the fix/post-rename-post-vulkan-sweep branch from 4d11f27 to 4965510 Compare June 2, 2026 15:08
@lusoris
lusoris marked this pull request as ready for review June 2, 2026 15:08
@lusoris
lusoris merged commit f156c1a into master Jun 2, 2026
59 of 102 checks passed
@lusoris
lusoris deleted the fix/post-rename-post-vulkan-sweep branch June 2, 2026 15:08
@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 5, 2026
The first version of this gate anchored row ids on `^\| \*\*(T-[A-Z0-9-]+)\*\* \|`,
which only matches a row whose first cell is the bold id and nothing else. The
majority shape in docs/state.md is `| **T-ID** -- one-line description | ...`,
so 30 of 335 rows were invisible to the gate, and its character class excluded
`.`, hiding every dotted id.

Two real duplicate pairs survived the first sweep because of exactly those two
holes, and the gate reported OK over them:

  - T-SYCL-DMABUF-IMPORT-WIN32-ENOSYS was filed once under "Confirmed
    not-affected (by design)" and again under "Deferred (waiting on external
    trigger)" while its own text says "no action required". Kept the
    not-affected row, which is the accurate verdict, and folded in the
    ADR-0374 disabled-interface citation the deferred row carried.
  - T-VK-VIF-1.4-RESIDUAL was filed twice under "Recently closed". Kept the
    verified row citing PR #511 (merged 2026-05-09) and dropped the earlier
    one, whose provenance cell still read "this PR" -- a placeholder the
    ADR-0165 touch gate rejects.

The matcher now anchors on the bold token that opens the first cell and admits
`.` in ids. Two regression cases cover the shapes that slipped through; both
are detected by the new matcher and invisible to the old one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request Sep 5, 2026
…hat way (#1322)

* fix(docs): one row per bug id in state.md, and a gate that keeps it that way

Five bug ids appeared twice. T-CUDA-INIT-SUBMIT-LEAKS-2026-06-19 and
T-UPSTREAM-1564-ADM-CM-GPU-BORDER-AND-ROUNDING-2026-09-03 sat in BOTH "Open
bugs" (the stale present-tense row) and "Recently closed" (the past-tense row
the fixing PR added), so two bugs that are fixed on master read as open in
every audit and in every "what is left for 1.0.0" count. Three more rows were
duplicated inside "Recently closed".

The cause is the keep-both conflict resolution that the merge train and the
agent worktrees use for the append-only doc sections: it is correct when two
PRs each append a row, and wrong when one PR is MOVING a row between sections.
scripts/ci/check-state-md-rows.sh now rejects any id that appears more than
once, wired into pre-commit, `make lint-sh` and the Rules workflow, with a
hermetic self-test covering both shapes (same id in two sections, same id twice
in one section) and the clean/missing-file cases.

* fix(ci): match every state.md row shape, not just bare-id first cells

The first version of this gate anchored row ids on `^\| \*\*(T-[A-Z0-9-]+)\*\* \|`,
which only matches a row whose first cell is the bold id and nothing else. The
majority shape in docs/state.md is `| **T-ID** -- one-line description | ...`,
so 30 of 335 rows were invisible to the gate, and its character class excluded
`.`, hiding every dotted id.

Two real duplicate pairs survived the first sweep because of exactly those two
holes, and the gate reported OK over them:

  - T-SYCL-DMABUF-IMPORT-WIN32-ENOSYS was filed once under "Confirmed
    not-affected (by design)" and again under "Deferred (waiting on external
    trigger)" while its own text says "no action required". Kept the
    not-affected row, which is the accurate verdict, and folded in the
    ADR-0374 disabled-interface citation the deferred row carried.
  - T-VK-VIF-1.4-RESIDUAL was filed twice under "Recently closed". Kept the
    verified row citing PR #511 (merged 2026-05-09) and dropped the earlier
    one, whose provenance cell still read "this PR" -- a placeholder the
    ADR-0165 touch gate rejects.

The matcher now anchors on the bold token that opens the first cell and admits
`.` in ids. Two regression cases cover the shapes that slipped through; both
are detected by the new matcher and invisible to the old one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Lusoris <lusoris@pm.me>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

2 participants