codecov.yml in the repository root is retained policy, not a live pipeline.
No workflow uploads coverage to Codecov, no README badge points at it, and the
blocking coverage gates are repository-owned. This page says what the tracked
config is for today and what reintroducing external reporting would take.
Audience: repository maintainer deciding whether to reintroduce external coverage reporting
Prerequisites: GitHub access as the repository owner; only a reintroduction additionally needs a Codecov account that can enable the repository
Upload status: no workflow uploads coverage to Codecov (audit F-06 removed it).
On 2026-07-30, CI run
30575838038
completed every test and every local coverage gate. The Codecov OIDC token
exchange and the upload queueing also succeeded — and then Codecov returned
Repository not found while processing the report, because the repository had
never been enabled in the external service.
Audit F-06 removed the upload step and the README badge rather than keep a step
that could not work. .github/workflows/ci.yml records the decision on the
test-unit job, which also gave up the id-token: write permission it held
only for that upload. Release readiness states the
same, and tests/unit/test_repository_coverage_artifact.py fails if a Codecov
action reappears in any job.
These run inside CI with no external service involved, and they block:
- a 60% line+branch floor across
src/agentflow_runtimeandsdkon the full unit and property suites; diff-coverat 80% on changed code, from.artifacts/coverage/coverage.xml;- separate 90% floors for security-critical modules (validators, freshness monitor, event producer, SQL guard, rate limiter, auth manager).
Codecov was only ever reporting on top of these.
scripts/validate_project_claims.py reads it and fails the required lint job
when coverage.status.patch.default.target disagrees with the changed-code
floor in config/project_claims.toml. The
file is therefore the machine-checked record of the patch-coverage policy, and
it is the configuration a reintroduced upload would consume unchanged. Deleting
it breaks lint.
Its policy:
- project coverage must not drop by more than 2 percentage points
(
project.default.threshold: 2%); - new code in a pull request must be at least 80% covered
(
patch.default.target: 80%) — the value the claims validator pins; tests/,scripts/,examples/,sdk-ts/, andnotebooks/are ignored, because they are not the production surface.
Validate the file against the service without uploading anything:
curl --data-binary @codecov.yml https://codecov.io/validateExpected response: Valid!.
- Sign in to https://codecov.io with the GitHub account that owns the
repository and enable the repository. Until this is done, any upload
repeats the 2026-07-30
Repository not foundresult. - Publish the coverage report as an artifact first: the
test-unitjob writes.artifacts/coverage/coverage.xmlbut does not upload it, and onlycoverage-control-plane.xmlfromtest-integrationis published today. - Add the Codecov step in a separate job that consumes that artifact. F-06
removed it from
test-unitso that the job executing repository-owned test code does not carry a token-exchange capability; putting it back there reverses that decision. - Grant
id-token: writeon that new job alone for a tokenless OIDC upload (use_oidc: true). If policy forbids tokenless uploads, store a project upload token as theCODECOV_TOKENsecret and passtoken:instead. - Keep
fail_ci_if_error: falseso an unreachable service cannot fail a build whose blocking gates already passed. - Update the Upload status line above and the Codecov sentence in
PROJECT_CLOSURE.md.
tests/unit/test_codecov_reporting_docs.pyfails while the pages and the workflows disagree.