Skip to content

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

Description

@ms609

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

  1. 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.
  2. 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.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreInfrastructure / process work, not a red-team findingin-progressBeing fixed; claiming comment names the branch

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions