The windows job of agent-check.yml fails on every branch of this fork, in the
Set up R dependencies step, before a single line is compiled. ubuntu-arm64 passes.
! error in pak subprocess
Caused by error:
! Could not solve package dependencies:
* deps::.: Can't install dependency MaxMin
* MaxMin: Can't find package called MaxMin.
* any::sessioninfo: dependency conflict
Cause — corrected 2026-08-04
The first version of this issue said the cause was a missing Remotes:/repository field. That
was wrong: DESCRIPTION:78 already carries
Additional_repositories: https://ms609.github.io/packages. The real cause is one level up.
MaxMin is not published in that repository. It currently serves ten packages — and MaxMin
is not one of them:
BigTreeDist BigTreeTools moments palec TBRDist
Ternary TreeDist TreeDistData TreeSearch TreeTools
Verified with available.packages(repos = "https://ms609.github.io/packages/", type = "source")
→ 10 rows, "MaxMin" %in% rownames(.) → FALSE. The trailing slash makes no difference (both
forms resolve to the same 10). So no edit to DESCRIPTION or to the workflow can fix this
while MaxMin is absent from the index — the index is what pak resolves against.
MaxMin is a genuine dependency, not vestigial: used in R/WideSample.R,
tests/testthat/test-WideSample.R and inst/Parsimony/global.R. And ms609/MaxMin exists and
is public (pushed 2026-07-08), so nothing here needs a secret.
Secondary point, relevant only after publishing: Additional_repositories is a CRAN-check
convention — it tells R CMD check where a non-CRAN Suggests lives. It is not reliably a pak
resolution source, and pak resolves against getOption("repos"). agent-check.yml calls
r-lib/actions/setup-r-dependencies@v2 at lines 56 and 115 and passes no extra-repositories:
input, so the drat repo never enters repos on either leg. The field being present and the
job still failing is consistent with that.
For completeness on why the two legs differ: ubuntu-arm64 passes, so it is resolving
Suggests differently (or tolerating an unresolvable one) rather than proving the repo is
reachable from Linux.
Fix
- Publish
MaxMin to https://ms609.github.io/packages. Required under any approach, and it
is an action in the MaxMin/drat repo, not here. The repository already serves Windows binaries
for R 4.4/4.5/4.6 (4.7 absent), so once MaxMin is there the Windows leg gets a binary rather
than a source build — which is the reason to prefer this route.
- Add
extra-repositories: https://ms609.github.io/packages to both
setup-r-dependencies steps in agent-check.yml, so pak actually looks there instead of
relying on Additional_repositories. Cheap, and it removes the ambiguity above. Worth
auditing the other workflows for the same omission.
- Interim, if CI needs unblocking before (1):
Remotes: ms609/MaxMin resolves today from
the public GitHub repo, as a source build. The cost is a field CRAN reviewers ask to be
removed — presumably why the sibling CRAN packages (Consensus:43, TreeDist:42) use
Additional_repositories and only the non-CRAN StratoBayes uses Remotes:.
Also unresolved: the same error reports any::sessioninfo: dependency conflict, which may be a
second independent problem rather than fallout from the first.
Evidence that it is branch-independent
Two unrelated branches, minutes apart, same step, byte-identical error:
| Run |
Branch |
ubuntu-arm64 |
windows |
| 30908977215 |
feature/redteam-area12 (docs + one C++ comment) |
success |
failure |
| 30908703022 |
claude/treesearch-issue-38-8103cc |
— |
failure |
Why this matters more than one red job
AGENTS.md names GHA dispatch the primary validation path, and the feature-branch lifecycle
says to open a PR "on GHA success". As things stand no branch can reach that state, so either
every agent blocks forever or every agent learns to merge past a red check — and the second is
how a real Windows regression gets waved through later. Windows is the platform this project has
historically been bitten on (MinGW emutls teardown, DLL locking, the nm | sed .def
truncation that src/TreeSearch-win.def exists to prevent), so it is the wrong job to leave
broken.
Found by the 2026-08-04 area-12 red-team round, which hit it dispatching its own validation.
Unrelated to that round's diff — filed separately so it is not buried in a docs PR.
The
windowsjob ofagent-check.ymlfails on every branch of this fork, in theSet up R dependenciesstep, before a single line is compiled.ubuntu-arm64passes.Cause — corrected 2026-08-04
The first version of this issue said the cause was a missing
Remotes:/repository field. Thatwas wrong:
DESCRIPTION:78already carriesAdditional_repositories: https://ms609.github.io/packages. The real cause is one level up.MaxMinis not published in that repository. It currently serves ten packages — and MaxMinis not one of them:
Verified with
available.packages(repos = "https://ms609.github.io/packages/", type = "source")→ 10 rows,
"MaxMin" %in% rownames(.)→FALSE. The trailing slash makes no difference (bothforms resolve to the same 10). So no edit to
DESCRIPTIONor to the workflow can fix thiswhile MaxMin is absent from the index — the index is what
pakresolves against.MaxMinis a genuine dependency, not vestigial: used inR/WideSample.R,tests/testthat/test-WideSample.Randinst/Parsimony/global.R. Andms609/MaxMinexists andis public (pushed 2026-07-08), so nothing here needs a secret.
Secondary point, relevant only after publishing:
Additional_repositoriesis a CRAN-checkconvention — it tells
R CMD checkwhere a non-CRANSuggestslives. It is not reliably apakresolution source, and
pakresolves againstgetOption("repos").agent-check.ymlcallsr-lib/actions/setup-r-dependencies@v2at lines 56 and 115 and passes noextra-repositories:input, so the drat repo never enters
reposon either leg. The field being present and thejob still failing is consistent with that.
For completeness on why the two legs differ:
ubuntu-arm64passes, so it is resolvingSuggestsdifferently (or tolerating an unresolvable one) rather than proving the repo isreachable from Linux.
Fix
MaxMinto https://ms609.github.io/packages. Required under any approach, and itis an action in the MaxMin/drat repo, not here. The repository already serves Windows binaries
for R 4.4/4.5/4.6 (4.7 absent), so once MaxMin is there the Windows leg gets a binary rather
than a source build — which is the reason to prefer this route.
extra-repositories: https://ms609.github.io/packagesto bothsetup-r-dependenciessteps inagent-check.yml, sopakactually looks there instead ofrelying on
Additional_repositories. Cheap, and it removes the ambiguity above. Worthauditing the other workflows for the same omission.
Remotes: ms609/MaxMinresolves today fromthe public GitHub repo, as a source build. The cost is a field CRAN reviewers ask to be
removed — presumably why the sibling CRAN packages (
Consensus:43,TreeDist:42) useAdditional_repositoriesand only the non-CRANStratoBayesusesRemotes:.Also unresolved: the same error reports
any::sessioninfo: dependency conflict, which may be asecond independent problem rather than fallout from the first.
Evidence that it is branch-independent
Two unrelated branches, minutes apart, same step, byte-identical error:
ubuntu-arm64windowsfeature/redteam-area12(docs + one C++ comment)claude/treesearch-issue-38-8103ccWhy this matters more than one red job
AGENTS.mdnames GHA dispatch the primary validation path, and the feature-branch lifecyclesays to open a PR "on GHA success". As things stand no branch can reach that state, so either
every agent blocks forever or every agent learns to merge past a red check — and the second is
how a real Windows regression gets waved through later. Windows is the platform this project has
historically been bitten on (MinGW
emutlsteardown, DLL locking, thenm | sed.deftruncation that
src/TreeSearch-win.defexists to prevent), so it is the wrong job to leavebroken.
Found by the 2026-08-04 area-12 red-team round, which hit it dispatching its own validation.
Unrelated to that round's diff — filed separately so it is not buried in a docs PR.