ci: fix the Windows/macOS MaxMin resolution failure that reddened every branch - #45
Merged
Conversation
The Windows job of agent-check.yml, and R-CMD-check.yml's windows-latest
(release) leg, failed on every branch in "Set up R dependencies", before
compiling anything:
! Could not solve package dependencies:
* deps::.: Can't install dependency MaxMin
* MaxMin: Can't find package called MaxMin.
Not a publishing problem. MaxMin is published, and DESCRIPTION:78 already
carries Additional_repositories -- but pak does not read that field, as
ms609/packages' tools/publish-maxmin.R records from a direct 2026-08-03 test.
That is exactly why the publish script also emits flat, unversioned
MaxMin_latest.<ext> aliases for url:: consumers. The Linux legs already name
theirs; the Windows and macOS legs named nothing.
Fixed, per platform, using the alias so it never needs updating when MaxMin
moves. All three URLs verified live, and all three artifacts are Built: R 4.6.1
-- the current R release, which is what these legs request.
Verified failing, now fixed:
- agent-check.yml, windows leg (had no extra-packages block at all)
- R-CMD-check.yml, "Set up R dependencies (covr)", runner.os == 'Windows'
Fixed pre-emptively, NOT observed failing -- both were skipped in the
diagnosing run, and fixing the core Windows leg unskips the macOS matrix, which
would then fail identically:
- R-CMD-check.yml, EasyTrees shinytest2 (gated on detect app changes)
- R-CMD-check.yml, full matrix (macOS-latest arm64, macos-15-intel x86_64);
_R_CHECK_FORCE_SUGGESTS_: false does not help, it governs R CMD check
rather than pak's solve
Fixes #43
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…by name
The url:: reference alone was not enough. It worked -- the run logged
"Installed MaxMin 0.0.0.9004" -- and the step then failed anyway, a few seconds
later, with a DIFFERENT ref:
* local::.: Can't install dependency MaxMin
setup-r-dependencies' "Check whether pandoc needs to be installed" step runs
pak::pkg_deps(".", dependencies = list(direct = "all", indirect = character()))
which is a second, fresh solve. It sees neither the lockfile just built nor
extra-packages, so it looks MaxMin up by name in the configured repos -- where
it is not, since pak ignores Additional_repositories -- and dies, despite
MaxMin being installed moments earlier.
That branch only runs when `Sys.which("pandoc") == ""`. Linux runners ship
pandoc, so the Linux legs return early and never reach the solve; Windows and
macOS runners do not, which is the whole reason this was a non-Linux-only
failure. Setting install-pandoc explicitly skips the auto-detect entirely.
Values chosen per leg rather than uniformly: true where the job checks with
vignettes (agent-check windows, R-CMD-check core covr, macOS matrix), false for
the shinytest2 job, which runs an app and no vignettes.
The quarto auto-detect is safe by comparison -- it globs for *.qmd and never
calls pkg_deps -- so it needs no equivalent pin.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 4, 2026
Author
|
The pre-emptive legs are now observed passing, closing the "changed pre-emptively, NOT observed failing" gap in the description above. Run 30927024203 (on
So both macOS legs — arm64 and x86_64, each with its own per-arch The only red is the shinytest2 job, which is #46's stale-baseline race, unrelated to dependency |
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.
Fixes #43
The Windows leg of
agent-check.yml— andR-CMD-check.yml'swindows-latest (release)job —failed on every branch of this fork, in
Set up R dependencies, before compiling anything:Two mechanisms, and the first fix alone was not enough.
1. The
url::reference — for the lockfile solveNot a publishing problem, and not a missing field. MaxMin is published, and
DESCRIPTION:78already carries
Additional_repositories. But pak does not read that field — whichms609/packages'tools/publish-maxmin.Rhad already established from a direct test on2026-08-03, and is exactly why that script also emits flat, unversioned
MaxMin_latest.<ext>aliases for
url::consumers. The Linux legs name theirs; Windows and macOS named nothing.Added per platform, using the unversioned alias so it needs no edit when MaxMin moves. All three
URLs verified live, and all three artifacts are
Built: R 4.6.1— the current R release, whichis what these legs request.
2. Pinning
install-pandoc— for the second solveWith (1) alone the step got further and still failed, on a different ref:
setup-r-dependencies' "Check whether pandoc needs to be installed" step runs— a fresh solve that sees neither the lockfile just built nor
extra-packages, so it looksMaxMin up by name and dies, despite MaxMin having installed successfully seconds earlier
(
✔ Installed MaxMin 0.0.0.9004is in the log). That branch only runs whenSys.which("pandoc") == "". Linux runners ship pandoc and return early; Windows and macOSrunners do not — which is the entire reason this was a non-Linux-only failure, and why the
arm64 leg's
url::line has always been sufficient there.Pinning
install-pandocskips the auto-detect. Values are per-leg, not uniform:truewherethe job checks with vignettes,
falsefor the shinytest2 job, which runs an app and novignettes. The quarto auto-detect needs no equivalent — it globs for
*.qmdand never callspkg_deps.What is verified, and what is not
Verified failing before, green now — run 30916727681,
ubuntu-arm64success +windowssuccess, the first fully-greenagent-checkon thisfork:
agent-check.yml, windows leg (had noextra-packagesblock at all)R-CMD-check.yml,Set up R dependencies (covr),runner.os == 'Windows'— this was theonly failing job in run 30910132725
Changed pre-emptively, NOT observed failing. Both were skipped in the diagnosing run, so
they are reasoned-about rather than measured:
R-CMD-check.yml, EasyTrees shinytest2 — gated ondetect app changesR-CMD-check.yml, full matrix (macOS-latest arm64, macos-15-intel x86_64) —needs: core, soit was skipped because Windows was red. Fixing Windows unskips it, and it would then hit the
identical error; fixing only Windows would have converted a skipped job into a failing one.
Note
_R_CHECK_FORCE_SUGGESTS_: falsedoes not help there — it governsR CMD check, notpak's solve.
R-CMD-check.ymlis not dispatched bygha-dispatch.sh, so its Windows and macOS legs arecovered by the same reasoning as the verified
agent-checkfix rather than by their own greenrun. Worth a look when it next runs on a PR.
Unrelated fragility worth knowing
The drat has no
bin/windows/contrib/4.7, and MaxMin has no source tarball insrc/contribatall — it is published binary-only, for R 4.6. So when R 4.7 becomes release, the indexed layout
goes source-only for every package there and MaxMin becomes unavailable by name entirely. The
url::aliases used here are unaffected in form, but they would then serve 4.6-built binariesto a 4.7 runner. Not in scope for this PR; flagged so it is not a surprise.
🤖 Generated with Claude Code