From b6cb2728928206ce5081a86d42c21d29a30bc91f Mon Sep 17 00:00:00 2001 From: Byron Williams Date: Tue, 26 May 2026 18:13:12 -0700 Subject: [PATCH] fix(python-ci): include hidden files in coverage-artifact upload `actions/upload-artifact@v7` uses `@actions/glob` internally, which defaults to `excludeHiddenFiles: true`. When a caller repo's name starts with a dot (e.g. `.claude`), the runner workspace lives at `/home/runner/work/./.` and `basename()` of the search root matches `/^\./`. The globber then skips the entire workspace before examining any file, the upload step logs `No files were found with the provided path`, and exits success with zero artifacts created. Result: `ByronWilliamsCPA/.claude`'s downstream `Coverage (Qlty)` workflow has been failing every run because `coverage-reports` never exists. The diagnostic chain ended with confirming `gh api repos/ByronWilliamsCPA/.claude/actions/runs/.../artifacts` returns `total_count: 0` despite the upload step concluding success. Setting `include-hidden-files: true` flips `excludeHiddenFiles -> false`, so the globber walks into the dot-prefix workspace path and finds `coverage.xml`, `htmlcov/`, etc. The flag is a no-op for all non-dot-prefix caller repos (current fleet: 13 of 14 callers), so blast radius is bounded to fixing `.claude` without changing behavior anywhere else. Refs: - actions/upload-artifact@v7.0.1 `src/shared/search.ts:25` - actions/toolkit `@actions/glob` internal-globber (excludeHiddenFiles + basename match on `/^\\./`) --- .github/workflows/python-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index e5ebf9e..d122e54 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -435,6 +435,7 @@ jobs: uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: coverage-reports + include-hidden-files: true path: | coverage.xml coverage-*.xml