Repository: github.com/evkir/CyberAI (public, free tier, GitHub Actions)
What is expected
codecov/project posted as a status on pull request head commits, alongside codecov/patch.
What happens
codecov/patch arrives and succeeds. codecov/project has never arrived on any commit since the repository was connected. Separately, every commit is recorded with branch: main, including pull request heads, although --branch is sent.
Latest example, merge commit 6280d8a7e7a70bbf9dfda9a97962f323308dc1fb: nine GitHub check-runs all successful, combined status carries exactly one entry, codecov/patch success. No codecov/project in either list.
This is not a regression. Across the head commits of pull requests 258 to 267, patch appears from 261 onwards and project appears on none of the ten.
What has been ruled out, and how
-
Configuration. The effective Repository YAML shown in the Codecov UI contains coverage.status.project.default with target: auto, threshold: 0.5, if_ci_failed: error. codecov.yml in the repository validates against the validation endpoint.
-
Delivery channel. codecov/patch is delivered on the same channel and arrives, so notifications reach GitHub.
-
What the client sends. The uploader log shows --pr and --branch with the correct values. override_pr and override_branch are set from the event payload.
-
A base to compare against. The pull request object carries both base_totals and head_totals. The base branch main has a report.
-
Checkout depth. Raised to fetch-depth: 0 and the next commit still had patch and no project.
-
Authentication method. This was run as a separating experiment. The upload ran under a repository CODECOV_TOKEN for one day, and under OIDC (use_oidc: true) before and after. Under the token, on head 36d6f0a2ea75fbd83669b4c8d9d450c4ad391497: patch success, commit still recorded on branch: main, project absent. Under OIDC, on 6280d8a: identical outcome. The authentication method changes neither the recorded branch nor the missing status.
-
Uploads arriving at all. GET /api/v2/github/evkir/repos/CyberAI/commits/{sha}/uploads/ returns count: 4 with four results on each of 36d6f0a, 4157df8 and 6280d8a, every one named CyberAI CI - test, provider github-actions, state merged, flags empty. The version matrix has four entries, so every upload sent is stored.
Questions
- Why is a pull request head commit recorded on
branch: main when --branch names the head branch?
- What causes
codecov/project to be withheld while codecov/patch is computed and posted from the same commit?
- Are the two the same cause?
Environment
codecov/codecov-action@v7, GitHub Actions, Python matrix 3.11-3.14, one upload step with no condition, coverage produced by pytest --cov --cov-report=xml. Workflow: https://github.com/evkir/CyberAI/blob/main/.github/workflows/ci.yml
Repository: github.com/evkir/CyberAI (public, free tier, GitHub Actions)
What is expected
codecov/projectposted as a status on pull request head commits, alongsidecodecov/patch.What happens
codecov/patcharrives and succeeds.codecov/projecthas never arrived on any commit since the repository was connected. Separately, every commit is recorded withbranch: main, including pull request heads, although--branchis sent.Latest example, merge commit
6280d8a7e7a70bbf9dfda9a97962f323308dc1fb: nine GitHub check-runs all successful, combined status carries exactly one entry,codecov/patchsuccess. Nocodecov/projectin either list.This is not a regression. Across the head commits of pull requests 258 to 267,
patchappears from 261 onwards andprojectappears on none of the ten.What has been ruled out, and how
Configuration. The effective Repository YAML shown in the Codecov UI contains
coverage.status.project.defaultwithtarget: auto,threshold: 0.5,if_ci_failed: error.codecov.ymlin the repository validates against the validation endpoint.Delivery channel.
codecov/patchis delivered on the same channel and arrives, so notifications reach GitHub.What the client sends. The uploader log shows
--prand--branchwith the correct values.override_prandoverride_branchare set from the event payload.A base to compare against. The pull request object carries both
base_totalsandhead_totals. The base branchmainhas a report.Checkout depth. Raised to
fetch-depth: 0and the next commit still hadpatchand noproject.Authentication method. This was run as a separating experiment. The upload ran under a repository
CODECOV_TOKENfor one day, and under OIDC (use_oidc: true) before and after. Under the token, on head36d6f0a2ea75fbd83669b4c8d9d450c4ad391497:patchsuccess, commit still recorded onbranch: main,projectabsent. Under OIDC, on6280d8a: identical outcome. The authentication method changes neither the recorded branch nor the missing status.Uploads arriving at all.
GET /api/v2/github/evkir/repos/CyberAI/commits/{sha}/uploads/returnscount: 4with four results on each of36d6f0a,4157df8and6280d8a, every one namedCyberAI CI - test, providergithub-actions, statemerged, flags empty. The version matrix has four entries, so every upload sent is stored.Questions
branch: mainwhen--branchnames the head branch?codecov/projectto be withheld whilecodecov/patchis computed and posted from the same commit?Environment
codecov/codecov-action@v7, GitHub Actions, Python matrix 3.11-3.14, one upload step with no condition, coverage produced bypytest --cov --cov-report=xml. Workflow: https://github.com/evkir/CyberAI/blob/main/.github/workflows/ci.yml