Repository navigation
ci: simplify workflows and drop the broken Codecov upload - #105
Draft
davidbudzynski wants to merge 1 commit into
Draft
davidbudzynski wants to merge 1 commit into
davidbudzynski wants to merge 1 commit into
Conversation
) The coverage upload has never reached master: every push returns "Token required because branch is protected" and fail_ci_if_error: false kept the job green. Replace it with a covr threshold enforced in R, which needs no token and reports the number to the job summary. - test-coverage: enforce the 90% floor in R, report to GITHUB_STEP_SUMMARY, delete codecov.yml and the README badge - R-CMD-check: 9 -> 5 jobs (r-lib check-standard set), drop the obsolete knitr-from-source workaround (PPM's macOS 4.6 binary is gzip again), drop the testthat-only upload-snapshots input (tests are tinytest) - delete claude-code-review.yml: its prompt reads github.event.pull_request.number under a workflow_dispatch-only trigger - claude.yml: drop the issues trigger (anyone could spend tokens by mentioning @claude in a new issue), add a timeout - bump actions to node24-era releases, pin JamesIves to v4.9.0 SHA - add concurrency, timeouts and a Dependabot config for github-actions
davidbudzynski
commented
Oct 30, 2026
davidbudzynski
left a comment
Collaborator
Author
There was a problem hiding this comment.
Reviewing the CI simplification. Goal is right (Codecov never worked, the matrix was oversized), but two things should change before this merges.
Should fix
1. Every R < 4.5 job is gone, so the old-R compile path is never built — .github/workflows/R-CMD-check.yaml:27-32, src/kit.h:29
- What this is: The matrix drops
ubuntu-latest oldrel-2/3/4andwindows-latest oldrel-4, keeping macOS/Windows release plus Ubuntu devel/release/oldrel-1. - Problem: Release is 4.6 and
oldrel-1is 4.5, so no surviving job compiles with R < 4.5 — exactly the branch guarded by#if R_VERSION < R_Version(4, 5, 0) #define isDataFrame(x) Rf_isFrame(x)(src/kit.h:29), used indup.c,dupLen.c,fpos.c,utils.c. TheR_VERSION < 3.5.0block (kit.h:19-22) is likewise never built, and the declared floorDepends: R (>= 3.5.0)(which #103 raises to 4.2) is untested. The PR description's “tested nothing the remaining jobs don't” is not accurate — the remaining jobs never see those preprocessor paths. - Fix: Keep one old job,
- {os: ubuntu-latest, r: 'oldrel-4'}, and drop only the Windows old-R job and oldrel-2/3 (no version-specific code there). - If we skip it: A break in the R 4.2–4.4 fallback installs fine in CI and fails for users on those versions.
2. NEWS still says the coverage floor is “via Codecov” — NEWS.md:50
- What this is: The PR description says “No remaining references to
codecovanywhere in the repo”, but the development-section entry for #63 ends with “Coverage now requires > 90% via Codecov.” - Problem: This PR replaces that mechanism with
covrintest-coverage.yaml, so the changelog for the next release names a service the repo no longer uses, and the verification claim in the description is false. - Fix: “Coverage now requires 90% in the
test-coverageworkflow.” - If we skip it: Release notes describe a mechanism removed in the same release.
Nice to have
3. Dead .Rbuildignore entry after the rebase — .Rbuildignore:3
- What this is: #102 (merged after this branch was cut) added
^codecov\.yml$; this PR deletes the file. - Problem: The pattern matches nothing;
R CMD buildis unaffected, but the line now documents something that no longer exists. - Fix: Delete the line while rebasing.
- If we skip it: One misleading line, no functional effect.
What checked out
- No remaining
codecovaction/secret references outsideNEWS.md:50. - Pinned deploy action
fa24774553152dd7873cd16ebd8d959b010c5445exists and is the commit taggedv4.9.0. - The repo ruleset is disabled and there is no branch protection, so removing matrix jobs cannot block merges.
- PR runs are green, which directly demonstrates that dropping the macOS knitr workaround and moving to
checkout@v6is safe. - The
covrfloor step is correct (package_coverage(quiet=),percent_coverage,GITHUB_STEP_SUMMARY) and passed at 96.68%.
Verdict: Requesting changes for findings 1 and 2 (both one-liners), plus the one-line cleanup in 3. Rebase first — the branch is one merge behind master and the merge is clean (git merge-tree).
davidbudzynski
marked this pull request as draft
October 30, 2026 20:01
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #104.
What changed
covrthreshold in RCoverage. The upload has never reached
master: every run ended inHTTP 400 {"message":"Token required because branch is protected"}because noCODECOV_TOKENexists, andfail_ci_if_error: falsekept the job green. It is now a 90% floor enforced in R, printed to the job summary:Measured locally on this branch.
codecov.ymland the README badge are gone; nothing external is involved.R-CMD-check. Matrix cut to the r-lib
check-standardset (macOS, Windows, Ubuntu devel/release/oldrel-1).windows-latest oldrel-4was the only old-R Windows job, andoldrel-4is ~R 4.2 againstDepends: R (>= 3.5.0), so the extra spread tested nothing the remaining jobs don't.--as-cranis unchanged (it comes from the action'sargsdefault, notbuild_args).knitr workaround removed. Verified rather than assumed:
macos-latestis nowmacos-26-arm64, PPM servesknitr 1.52for R 4.6 atbin/macosx/sonoma-arm64/contrib/4.6, and that tarball is plain gzip again (1f 8b) — the zstd/unreadable-binary condition the comment described is gone.upload-snapshots: trueremoved. Tests are tinytest (inst/tinytest), so there are no testthat snapshots to upload.Claude.
claude-code-review.ymldeleted: its only trigger isworkflow_dispatchwith apr_numberinput, but the prompt interpolatesgithub.event.pull_request.number, which is empty on a manual run — thepull_requesttrigger is commented out.@claude review this PRinclaude.ymldoes the same job.claude.ymlalso drops theissues: [opened, assigned]trigger (assignedwas dead without anassignee_trigger, andopenedlet anyone spend tokens by mentioning@claudein a new issue) and gains a timeout.Housekeeping.
checkout@v6,JamesIves@v4.9.0pinned to SHA (v4.5.0 was on node20),concurrency: cancel-in-progressandtimeout-minuteseverywhere,GITHUB_PATremoved (r-lib template leftover), and a weeklygithub-actionsDependabot group so this drift doesn't recur.Verification
actionlint1.7.12 clean on all four workflows.### Coverage: 96.68%written toGITHUB_STEP_SUMMARY; with the percentage forced below 90 it exits 1 with the expected message.codecovanywhere in the repo.Not in this PR
kitruleset so the coverage floor blocks merges, and moving Pages to native deploy: both need admin rights.oldrel-2/3/4coverage: deliberately deferred.