CNA-BUG-192: metal-macos-ci.yml's push path filter names three CMake files that no longer exist and omits the files that now register the Metal tests
Evidence basis: source-verified at the pinned commit. Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The Metal workflow's push filter lists three removed CMake files, while edits to modules/renderers/metal/CMakeLists.txt or its examples/CMakeLists.txt, where the Metal_* CTests are registered, do not trigger it.
- Identifier
CNA-BUG-192- Category
- Bug
- Subsystem
- Build & CI
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- None
- Affected contract
- .github/workflows/metal-macos-ci.yml, on.push.paths
Expected behaviour
A path-filtered workflow should run when the files that build and register its tests change. For the native Metal lane those are the Metal family's own CMake files and sources plus the shared selection and registry files.
Actual behaviour at TARGET
metal-macos-ci.yml lists cmake/BackendLibraries.cmake, cmake/Examples.cmake and cmake/Tests/MetalTests.cmake; none exists at TARGET (they are the only dead paths in any of the 20 workflow files). The filter lists the Metal src/**, include/**, tests/** and two example sources, but not modules/renderers/metal/CMakeLists.txt, modules/renderers/metal/examples/CMakeLists.txt (which registers Metal_PortableHelpers, Metal_Smoke and Metal_Capabilities), cmake/RendererIdentities.cmake or cmake/RendererRegistry.cmake. A push that changes only those files runs no Metal job. Pull requests are not filtered and still run it.
Source locations
.github/workflows/metal-macos-ci.yml— on.push.pathsmodules/renderers/metal/examples/CMakeLists.txt— Metal_* CTest registrationsmodules/renderers/metal/CMakeLists.txt— the Metal family target
Evidence
Checked by reading at 009d40f5: every repository path named in a workflow file was tested for existence. Not executed. The three names are the pre-modularization locations of the Metal build and test registration.
Independently observed as a separate finding (merged): A push that changes only modules/renderers/metal/CMakeLists.txt or its examples/CMakeLists.txt (where Metal_Smoke, Metal_Capabilities and Metal_PortableHelpers are registered) does not start the Metal workflow; pull requests are unfiltered.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
None; nothing validates workflow path filters.
Regression test
Replace the dead entries with modules/renderers/metal/** and the current selection/registry files, and add a small check (the existence test used for this entry) that fails when a workflow names a path that does not exist.
Blast radius
Push-triggered Metal CI on next/develop/main; pull requests and the other workflows are unaffected.
Workaround
Dispatch the workflow manually after changing Metal CMake files.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Platforms: CI coverage
- Architecture
- Test architecture: CI workflows
- Maintainer workflow
- Workflows: CI triggers
- Deep dives
- Native GPU evidence tiers
- Known issues
- Bug index