Skip to content

ci: fix the Windows/macOS MaxMin resolution failure that reddened every branch - #45

Merged
ms609 merged 3 commits into
cpp-searchfrom
feature/ci-maxmin-windows
Aug 4, 2026
Merged

ci: fix the Windows/macOS MaxMin resolution failure that reddened every branch#45
ms609 merged 3 commits into
cpp-searchfrom
feature/ci-maxmin-windows

Conversation

@ms609

@ms609 ms609 commented Aug 4, 2026

Copy link
Copy Markdown

Fixes #43

The Windows leg of agent-check.yml — and R-CMD-check.yml's windows-latest (release) job —
failed on every branch of this fork, in Set up R dependencies, before compiling anything:

* deps::.: Can't install dependency MaxMin
* MaxMin: Can't find package called MaxMin.

Two mechanisms, and the first fix alone was not enough.

1. The url:: reference — for the lockfile solve

Not a publishing problem, and not a missing field. MaxMin is published, and DESCRIPTION:78
already carries Additional_repositories. But pak does not read that field — which
ms609/packages' tools/publish-maxmin.R had already established from a direct test on
2026-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, which
is what these legs request.

2. Pinning install-pandoc — for the second solve

With (1) alone the step got further and still failed, on 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()))

— a fresh solve that sees neither the lockfile just built nor extra-packages, so it looks
MaxMin up by name and dies, despite MaxMin having installed successfully seconds earlier
(✔ Installed MaxMin 0.0.0.9004 is in the log). That branch only runs when
Sys.which("pandoc") == "". Linux runners ship pandoc and return early; Windows and macOS
runners 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-pandoc skips the auto-detect. Values are per-leg, not uniform: true where
the job checks with vignettes, false for the shinytest2 job, which runs an app and no
vignettes. The quarto auto-detect needs no equivalent — it globs for *.qmd and never calls
pkg_deps.

What is verified, and what is not

Verified failing before, green nowrun 30916727681,
ubuntu-arm64 success + windows success, the first fully-green agent-check on this
fork:

  • agent-check.yml, windows leg (had no extra-packages block at all)
  • R-CMD-check.yml, Set up R dependencies (covr), runner.os == 'Windows' — this was the
    only 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 on detect app changes
  • R-CMD-check.yml, full matrix (macOS-latest arm64, macos-15-intel x86_64) — needs: core, so
    it 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_: false does not help there — it governs R CMD check, not
    pak's solve.

R-CMD-check.yml is not dispatched by gha-dispatch.sh, so its Windows and macOS legs are
covered by the same reasoning as the verified agent-check fix rather than by their own green
run. 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 in src/contrib at
all — 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 binaries
to a 4.7 runner. Not in scope for this PR; flagged so it is not a surprise.

🤖 Generated with Claude Code

claude added 2 commits August 4, 2026 14:41
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>
@ms609

ms609 commented Aug 4, 2026

Copy link
Copy Markdown
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 feature/shiny-debounce-wait, which is stacked on this branch, so it carries these commits):

Job Result
sense-check (ubuntu-24.04-arm, release) success
windows-latest (release) success
ubuntu-24.04 (4.1) success
ubuntu-24.04-arm (devel) success
macOS-latest (release) success
macos-15-intel (release) success
EasyTrees shinytest2 (windows-latest) failure — #46, fixed in #48

So both macOS legs — arm64 and x86_64, each with its own per-arch url:: line — resolve MaxMin and
check clean. They were skipped in the diagnosing run (needs: core, skipped because Windows was
red), which is why the description could only reason about them. The full matrix has now run.

The only red is the shinytest2 job, which is #46's stale-baseline race, unrelated to dependency
resolution and non-blocking (continue-on-error: true).

@ms609
ms609 merged commit f00478c into cpp-search Aug 4, 2026
3 checks passed
@ms609
ms609 deleted the feature/ci-maxmin-windows branch August 4, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

agent-check.yml windows job fails on every branch: MaxMin is not published in ms609.github.io/packages, so pak cannot resolve it

2 participants