Repository navigation
Accept .codecov.yml as an Alternative to codecov.yml - #3105
Conversation
A baseline entry in spec/files.json may now declare `alternatives`, other paths the tool reading the file accepts it at. The audit reads the declared path first and each alternative only while nothing has been found, so a repo holding only `.codecov.yml` passes the file-presence check and one holding neither still fails it. The intent staleness advisory and the fidelity-honesty pass read the file where it was found. spec/validate.py refuses an alternative outside the repository, one repeating a path, and one on any unit other than a whole-file presence or intent unit, since every other check reads the declared path alone. WORKFLOW.md D1.6 names `.codecov.yml` beside `codecov.yml`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The validator now checks alternatives across the whole baseline: a path declaring them must be named by no other entry, since a second entry could add a section, contract, or carry that reads the declared path. The audit and the fidelity-honesty pass share one map of declared alternatives, and the read, the absence finding, and the intent staleness advisory move into one helper the self-test drives at the alternative path. The repo-relative and repeat checks are dropped, since an alternative only names a contents API path. The type model and the Python coverage check name `.codecov.yml` too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
D1.6 names where Codecov reads .codecov.yml, the fidelity model scopes which checks follow an alternative to the audit, and the audit self-test pins only the codecov.yml key of the live alternatives map. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🟡 Changes recommended
Validator gaps remain for malformed alternative lists and alternative-path collisions.
4 open findings
What changed in this PR
Adds support for .codecov.yml as an alternative to codecov.yml across validation, auditing, fidelity checks, documentation, and generated skill copies.
Changes:
- Adds schema and validator support for alternative paths.
- Updates audit and fidelity resolution behavior.
- Adds tests and documentation for alternative-file handling.
| File | Description |
|---|---|
WORKFLOW.md |
Documents .codecov.yml support. |
tests/test_spec_validate.py |
Tests alternative validation. |
spec/validate.py |
Validates alternative declarations. |
spec/type-model.md |
Updates coverage requirements. |
spec/project-types.json |
Updates Python coverage wording. |
spec/files.schema.json |
Defines the alternatives schema. |
spec/files.json |
Declares .codecov.yml as an alternative. |
spec/fidelity-model.md |
Documents alternative semantics. |
spec/fidelity_honesty.py |
Reads alternative paths for fidelity checks. |
spec/audit.py |
Audits declared and alternative paths. |
.github/skills/workflow-ci-contract/references/d-guarantees.md |
Updates generated workflow guidance. |
.claude-plugin/fleet-skills/skills/workflow-ci-contract/references/d-guarantees.md |
Updates generated skill guidance. |
.claude-plugin/fleet-skills/.source-digests/workflow-ci-contract |
Updates the source digest. |
.agents/skills/workflow-ci-contract/references/d-guarantees.md |
Updates authored skill guidance. |
🧠 Review effort: Lite
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #3105 +/- ##
==========================================
Coverage ? 60.88%
==========================================
Files ? 17
Lines ? 9148
Branches ? 0
==========================================
Hits ? 5570
Misses ? 3578
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The validator holds an alternatives list to the shape files.schema.json states, since CI runs no schema validation, and refuses an alternative that is itself a declared baseline path, which the audit would read as a second unit. A shared contents_text decoder replaces the decode copies in the files this change touches, and the check_units docstring names where fetch reads a copy that sits at an alternative. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
… Fixes to Main (#3146) - #3135 makes `gh-write-guard` read a gh write's subcommand and target the way gh parses them: the subcommand is found past flags before the command and before the subcommand, an `R` inside a short-option cluster is read as a target, `GH_REPO` is read as a target, a run-time repository owner on a write fails closed, and a run-time word where `pr` or `merge` goes fails closed beside `--admin` or where word splitting may split it - #3139 releases the bootstrap lock when a `bootstrap.ps1` run ends rather than when its process does, so a second run typed at the same pwsh prompt is no longer refused the lock - #3130 matches tool names and the `all` keyword by case in the Windows agents loaders, as the Linux loaders already do - #3128 reads CodeRabbit's rate limit on a reply to an explicit review command in `pr_review.py` - #3126 reconciles VSCode-Server-DotNetCore in the hub after its resync - #3124 logs the Docker task's build-base leg in to Docker Hub - #3122 names the carried skill and the skipped review correctly - #3120 states the subprocess encoding rule in `CODESTYLE.md`, where carriers read Python style - #3118 and #3111 move the release-guard tests' workflow-command checks onto `runner_commands`, and test the alternatives wiring at the `audit_repo` and `fidelity_pass` call sites - #3116 stops the doc gates' printed names forging workflow commands - #3113 adds a catalog snippet for the release-with-smoke caller - #3109 moves the `workflow_reuse` fetch onto `audit.contents_text` - #3105 accepts `.codecov.yml` as an alternative to `codecov.yml` - #3103 adds a pip ecosystem to the carried Dependabot snippet - #3100 prefers the venv's ruff and pyright for a declared pip directory - #3098 tracks composite action pins in Dependabot - #3096 reads an uppercase Markdown suffix as Markdown at every prose gate branch After this merges, the host-safety installer payload changes, so the maintainer runs the installer after promotion. Closes #1416 Closes #1425 Closes #1578 Closes #1874 Closes #1892 Closes #1899 Closes #2804 Closes #2850 Closes #2852 Closes #2854 Closes #2996 Closes #3065 Closes #3067 Closes #3069 Closes #3079 Closes #3080 Closes #3089 Closes #3093 Closes #3101 Closes #3106 Closes #3107 Closes #3137 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a pull-request smoke build that runs when relevant release files change and reports the combined validation and build status. * Repository audits now recognize `.codecov.yml` as an alternative to `codecov.yml`. * **Improvements** * Python linting and type checks use tools from declared project environments when available, with fallbacks for missing tools. * Workflow and lint reports safely display unusual filenames and command-like text. * GitHub write-target checks now account for additional command forms and fail closed when targets cannot be verified. * Rate-limit detection now recognizes another CodeRabbit response format. <!-- end of auto-generated comment: release notes by coderabbit.ai -->


Summary
spec/files.jsonbaseline entry may declarealternatives, other paths the tool reading the file accepts it at. Thecodecov.ymlentry names.codecov.yml, which Codecov also reads at the repository root.spec/audit.pyreads the declared path first and each alternative only while nothing is found (read_baseline_file). A repo holding only.codecov.ymlpasses the file-presence check, one holding neither gets one LETTER naming both paths, and the intent staleness advisory is read at the path the file was found at (baseline_file_findings).spec/validate.py(alternatives_errors) refuses a list off the schema's shape, alternatives on anything but a whole-file presence or intent entry, alternatives on a path a second baseline entry also names, and an alternative that is itself a declared path.spec/fidelity_honesty.pyreads a downstream copy at the same paths through the shared helpers, andcontents_textis now the one contents decoder in the files this touches.spec/fidelity-model.md,spec/type-model.md, and the Python coverage check inspec/project-types.jsonname.codecov.yml. The skill copies of WORKFLOW.md section 4 are regenerated.Verification
spec/audit.py --selftest: new cases cover the declared path only, the alternative only (present, staleness read at the alternative), both (declared wins), and neither (one LETTER naming both). Revertingfoundtopathinbaseline_file_findingsfails the alternative case.tests/test_spec_validate.pyBaselineAlternativesCasecovers the validator, including the live codecov entry.spec/validate.py, the full unittest suite, ruff, mypy,build_dist.py --check,prose_lint.py --diff, markdownlint, cspell, and editorconfig-checker pass locally.Local review findings
Each finding a local pass left open after its push's edit budget, with its outcome:
introduced: thecheck_unitsdocstring saiddownstream_pathis always the entry'spath. Fixed in 2b7f211.introduced:fidelity_honesty.fetchandbaseline_file_findingseach decoded the contents response. Fixed in 2b7f211 with the sharedcontents_text. The untouchedspec/workflow_reuse.pycopy is Move workflow_reuse.py fetch onto audit.contents_text #3106.introduced: thealternatives_errorsdocstring gave an inaccurate rationale, a broken wrap, and two long sentences. Fixed in 59e4057 by cutting it to the rules it enforces.introduced: theaudit_repoandfidelity_passcall sites that pass alternatives are not tested, only the helpers they call. Deferred to Test the alternatives wiring at the audit_repo and fidelity_pass call sites #3107, since it needs a fixture drivingaudit_repo's baseline loop.alternatives_errorsread as over-hardening to one pass.spec/validate.pystates CI runs no schema validation, so it enforcesfiles.schema.json's shape itself, which the PR review asked for.Closes on promotion: #2996
🤖 Generated with Claude Code