Skip to content

fix(ci): un-overcorrect meson setup in working-directory: core steps - #60

Merged
lusoris merged 1 commit into
masterfrom
fix/ci-meson-cd-core-overcorrect-20260528
May 28, 2026
Merged

lusoris merged 1 commit into
masterfrom
fix/ci-meson-cd-core-overcorrect-20260528

Conversation

@lusoris

@lusoris lusoris commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • PR fix(ci): post-rename path refs (unblocks merge train) #46 supplement's global sed added a core source-dir positional to every meson setup build invocation. Steps that already set working-directory: core then looked for core/core/ — which does not exist — causing "Neither source directory 'build' nor build directory 'core' exist." on Netflix CPU Golden Tests (D24) and several other jobs.
  • This PR removes the spurious core positional from every step that carries working-directory: core; steps that run from repo root (no working-directory) correctly retain it.

Steps reverted (13 occurrences across 3 files)

tests-and-quality-gates.yml (10 steps):

  1. netflix-golden — Build (CPU, release) [line 71]
  2. cross-backend — Build CPU [line 137]
  3. vulkan-vif-cross-backend — Build CPU + Vulkan [line 172]
  4. vulkan-parity-matrix-gate — Build CPU + Vulkan [line 367]
  5. vulkan-vif-arc-nightly — Build CPU + Vulkan [line 440]
  6. sanitizer-matrix — Build (sanitizer) [line 516]
  7. dnn-onnx — Build libvmaf (dnn enabled) [line 647]
  8. mcp-transport — Build libvmaf (full MCP transport matrix) [line 723]
  9. coverage-cpu — Build with gcov instrumentation [line 866]
  10. coverage-gpu — Build with gcov + CUDA + SYCL + AVX-512 [line 1003]

sanitizers.yml (2 steps):
11. ASan+UBSan — Build [line 76]
12. TSan — Build [line 130]

security-scans.yml (1 step):
13. CodeQL C++ — Build [line 115]

Steps intentionally left with core positional (run from repo root)

  • lint-and-format.yml: clang-tidy (build core) + SYCL lint (build-sycl core) + cppcheck (build core)
  • supply-chain.yml: release build (build core)
  • rust-ci.yml: libvmaf install (build-ci core)
  • fuzz.yml + sanitizers.yml build-fuzz: fuzzer configure (build-fuzz core)

Test plan

  • Netflix CPU Golden Tests (D24) — previously failing with meson source-dir error
  • sanitizer-matrix (ASan/UBSan/TSan) jobs
  • security-scans CodeQL C++ build
  • vulkan-vif-cross-backend (lavapipe)
  • coverage-cpu gate
  • lint-and-format clang-tidy + cppcheck (these should still pass — untouched)

no rebase impact: CI-only workflow YAML, no C/build system changes.

🤖 Generated with Claude Code

PR #46 supplement's sed replaced `meson setup build -` with
`meson setup build core -` globally. Steps that already set
`working-directory: core` (or equivalent) treat `.` as their
source tree, so the appended `core` positional directed meson
to `core/core/` which does not exist — producing "Neither source
directory 'build' nor build directory 'core' exist."

Revert the extra `core` positional in every step that carries
`working-directory: core`:
- tests-and-quality-gates.yml: netflix-golden build, cross-backend
  build, vulkan-vif-cross-backend build (lavapipe + Arc nightly),
  vulkan-parity-matrix-gate build, sanitizer-matrix build,
  dnn-onnx build, build-mcp step, build-coverage step,
  build-coverage-gpu step (10 occurrences).
- sanitizers.yml: ASan+UBSan build, TSan build (2 occurrences).
- security-scans.yml: CodeQL C++ build (1 occurrence).

Steps without working-directory (lint-and-format.yml clang-tidy +
cppcheck, supply-chain.yml release build, rust-ci.yml libvmaf
install, fuzz.yml, sanitizers.yml build-fuzz) run from repo root
and correctly retain the `core` source-dir positional.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lusoris
lusoris enabled auto-merge (squash) May 28, 2026 18:07
@lusoris
lusoris merged commit cbc0055 into master May 28, 2026
38 of 58 checks passed
@lusoris
lusoris deleted the fix/ci-meson-cd-core-overcorrect-20260528 branch May 28, 2026 19:14
lusoris added a commit that referenced this pull request May 28, 2026
…0735)

Fixes 8 pre-existing required-aggregator failures that blocked every PR
post-#60. All classified as workflow config bugs, post-rename path drift,
or code bugs from the float_ansnr drop in PR #38.

1. Windows MSVC CUDA + SYCL build: ninja -C libvmaf\build -> core\build
   (stale ADR-0700 rename leftover in libvmaf-build-matrix.yml)
2. Ubuntu HIP smoke: remove test_float_ansnr_hip_extractor_registered
   (float_ansnr_hip dropped by PR #38 / ADR-0720; test not updated)
3. Netflix CPU Golden (D24): remove float_ansnr from
   VmafIntegerFeatureExtractor._generate_result() and its
   ATOM_FEATURES_TO_VMAFEXEC_KEY_DICT — the CLI exited 255 on the
   removed extractor before any score was computed; the CI gate tests
   already expect ansnr to be absent (assertRaises KeyError)
4. CodeQL Python: update codeql-config.yml paths libvmaf/ -> core/;
   add explicit no-op build step to suppress C++ autobuild
5. Gitleaks: add go.sum, Cargo.lock, gen/go/*.pb.go, h1: regex, and
   stopwords to .gitleaks.toml allowlist (package-manager hash FPs)
6. Semgrep: add compat/python-vmaf/matlab/ and
   compat/python-vmaf/resource/ to .semgrepignore (post-ADR-0700
   rename; python/vmaf/matlab/ no longer matched the file);
   verified locally: 0 findings
7. Tiny AI: implement missing dumps_jsonl_row (aiutils.jsonl_utils)
   and dumps_registry_json + write_registry_json (vmaf_train.registry)
   which tests imported but were never implemented
8. core/AGENTS.md + docs/state.md: document the ansnr-removal invariant
   and track T-LEGACY-RUNNER-ANSNR-BROKEN as an open bug

Residual: VmafFeatureExtractor (legacy float path) still requests
float_ansnr; legacy runner tests fail locally. The CI golden gate only
runs test_run_vmaf_runner + checkerboard (integer path), now fixed.
Netflix golden assertion values are unchanged (GLOBAL PROJECT RULES #1).

Research-0735: docs/research/0735-ci-required-failures-round-3-2026-05-28.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request May 28, 2026
…0735) (#86)

Fixes 8 pre-existing required-aggregator failures that blocked every PR
post-#60. All classified as workflow config bugs, post-rename path drift,
or code bugs from the float_ansnr drop in PR #38.

1. Windows MSVC CUDA + SYCL build: ninja -C libvmaf\build -> core\build
   (stale ADR-0700 rename leftover in libvmaf-build-matrix.yml)
2. Ubuntu HIP smoke: remove test_float_ansnr_hip_extractor_registered
   (float_ansnr_hip dropped by PR #38 / ADR-0720; test not updated)
3. Netflix CPU Golden (D24): remove float_ansnr from
   VmafIntegerFeatureExtractor._generate_result() and its
   ATOM_FEATURES_TO_VMAFEXEC_KEY_DICT — the CLI exited 255 on the
   removed extractor before any score was computed; the CI gate tests
   already expect ansnr to be absent (assertRaises KeyError)
4. CodeQL Python: update codeql-config.yml paths libvmaf/ -> core/;
   add explicit no-op build step to suppress C++ autobuild
5. Gitleaks: add go.sum, Cargo.lock, gen/go/*.pb.go, h1: regex, and
   stopwords to .gitleaks.toml allowlist (package-manager hash FPs)
6. Semgrep: add compat/python-vmaf/matlab/ and
   compat/python-vmaf/resource/ to .semgrepignore (post-ADR-0700
   rename; python/vmaf/matlab/ no longer matched the file);
   verified locally: 0 findings
7. Tiny AI: implement missing dumps_jsonl_row (aiutils.jsonl_utils)
   and dumps_registry_json + write_registry_json (vmaf_train.registry)
   which tests imported but were never implemented
8. core/AGENTS.md + docs/state.md: document the ansnr-removal invariant
   and track T-LEGACY-RUNNER-ANSNR-BROKEN as an open bug

Residual: VmafFeatureExtractor (legacy float path) still requests
float_ansnr; legacy runner tests fail locally. The CI golden gate only
runs test_run_vmaf_runner + checkerboard (integer path), now fixed.
Netflix golden assertion values are unchanged (GLOBAL PROJECT RULES #1).

Research-0735: docs/research/0735-ci-required-failures-round-3-2026-05-28.md

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@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 23, 2026
#1524 left 30 citation sites as plain text on the finding that the cited
ADR "was never written under any number". That finding was reached from
the two halves of the filename -- a slug naming no ADR, a number naming
an unrelated one -- and from a text match against the ADR that carries
the number today. Both are too shallow, and 12 of the 30 were wrong.

Searching the git history of the CITING commit settles what the filename
cannot. ADR-0122 is the sharpest case and it was in this branch's own
"never written" list: the citing sentence reads "fork PR #60 CUDA
framesync hardening", and `d3b6fad62` is both PR #60 and the commit that
created `0122-cuda-gencode-coverage-and-init-hardening.md`. The number
was never reallocated. The slug had been minted from a docs/state.md
bug-row label ("CUDA framesync segfault on null cubin"), and the ADR
itself never uses the word "framesync" -- which is exactly why grepping
the target for the slug's words dismissed it.

Relinked, each from evidence rather than from either half of the name:

  * ADR-0122 x3 -> 0122-cuda-gencode-coverage-and-init-hardening.md
    (0156 x2, 0157). Number right, slug minted from a bug-row label.
  * ADR-0287 x2 -> 0293-vmaf-tune-saliency-aware.md (0326). The ADR is
    titled "vmaf-tune saliency-aware ROI tuning"; the citation calls it
    "saliency-aware encoding".
  * ADR-0568 -> 0569-sdk-version-bumps-2026-05-18.md (0603). The minted
    slug was `sdk-audit-2026-05-18` and the ADR's own title carries that
    date; it names ORT 1.26.0, vvenc and AMF seven times, which is what
    the citing sentence says it introduced.
  * ADR-0509 x2 -> 0514-dev-container-full-backend-exposure.md (0541,
    0542). It is the only ADR that discusses unsetting VK_ICD_FILENAMES
    in the entrypoint, with 13 mentions. 0542 now cites 0514 twice, for
    two different aspects; that is redundant but true, which beats a
    dangling reference.
  * ADR-0125 -> 0127-vulkan-compute-backend.md (0216). The citation
    reads "<X> / ADR-0175 -- Vulkan backend framework"; ADR-0175 opens
    by naming ADR-0127 as the decision it implements, and ADR-0127 is
    the sole owner of Research-0004, the digest the sentence says
    already covers these patterns.
  * ADR-0125 -> 0125-ms-ssim-decimate-simd.md (0219). Same list shape as
    ADR-0918's, where the same number is used correctly for the same
    ADR. Number right, slug fabricated.
  * ADR-0138 -> 0138-iqa-convolve-avx2-bitexact-double.md (0584).
  * ADR-0138 -> 0159-psnr-hvs-avx2-bitexact.md (0918), keeping the
    descriptive label. 0160 is the NEON sibling and the citation does
    not disambiguate, but that harness is x86 by 4 mentions to 1.

Nine citations stay plain text on purpose: their decision exists only in
a commit message, a PR title or a docs/state.md row, and there is no ADR
to point at -- linking them would invent an authority. ADR-0864 stays
plain for a different reason: ADR-0980 explicitly distinguishes it from
ADR-0866, so repointing there would erase the distinction the citing ADR
is drawing.

Found on the way and NOT fixed, because it is prose rather than a link:
0156-cuda-graceful-error-propagation-netflix-1420.md:215 credits the
`is_cudastate_empty()` null-guards to ADR-0122 / ADR-0123, but those
guards are upstream (b9309779f, 3071d7e) and are in no fork PR.
lusoris added a commit that referenced this pull request Sep 23, 2026
)

The gate shipped in #1522 matched only `adr/NNNN-slug.md`, so the bare
`(NNNN-slug.md)` form ADRs use to cite each other was invisible to it: 237
broken sibling links under docs/adr/ while it reported the tree clean. Bare
links now count, but only for files under docs/adr/, since docs/research/ names
its digests the same way.

Repairing them by number would have been worse than leaving them dead. 196 of
the 237 carry a slug naming no ADR at all, and for 56 the number had been
reallocated by the collision sweeps -- [ADR-0033](0033-hip-applicability.md),
cited as the precedent for fork-side GPU ports, would have become a link to
codeql-config-moved-to-github. A by-number repair now has to be corroborated by
the target own title and abstract, weighing the words that identify a decision
over the words a family shares: [ADR-0138 -- PSNR-HVS SIMD bit-exactness] cited
0138-psnr-hvs-simd-bitexact, and 0138-iqa-convolve-avx2-bitexact-double does
say "simd" and "bitexact" -- it is a sibling in that family, not the same
decision.

181 links repaired mechanically, 56 by hand. Of those, 38 were repaired against
evidence and 18 de-linked. The last twelve needed the git history of the citing
commit rather than either half of the filename: the citation reading "fork PR
#60 CUDA framesync hardening" resolves because d3b6fad is both PR #60 and the
commit that created 0122-cuda-gencode-coverage-and-init-hardening.md. The
number was right all along; the slug had been minted from a docs/state.md
bug-row label, and the ADR never uses the word "framesync", which is why a
text-match check dismissed it.

Nine citations stay plain text on purpose: their decision exists only in a
commit message, a PR title or a state.md row, and linking them would invent an
authority that does not exist.

Tests go 16 -> 24.
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