Skip to content

fix(ci): Stop reporting a check that never ran as ok - #2849

Open
krlmlr wants to merge 1 commit into
mainfrom
claude/revdep2-depmissing-8mj8p1
Open

fix(ci): Stop reporting a check that never ran as ok#2849
krlmlr wants to merge 1 commit into
mainfrom
claude/revdep2-depmissing-8mj8p1

Conversation

@krlmlr

@krlmlr krlmlr commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

R CMD check stops at checking package dependencies when something the package needs is not installed: one error, two or three seconds, nothing else looked at. It happens to both halves — the two libraries differ only in igraph — so the pair compares clean, compare_checks() returns +, and the verdict is ok.

55 of run 31930350338's 984 ok results were exactly that. Every one a package with Bioconductor dependencies that are not on CRAN and so were never installed. SEMgraph gives the game away:

SEMgraph: result "ok", status_old "1E 0W 0N", status_new "1E 0W 0N", t_old 3, t_new 3

and its new.rds:

checking package dependencies ... ERROR
Packages required but not available:
  'RBGL', 'Rgraphviz', 'graphite', 'AnnotationDbi'

Reported ok, while being genuinely broken by a dev change that nobody saw because the check never ran.

The change

Those results are now depmissing, with the packages R CMD check named written into the manifest message, so a reader can see what was missing without opening the artifact. needs_recheck() covers it without changing, so retry-run picks them up once those repositories are available.

Why not depfail or install_failure

depfail sits next to it in the summary and means something different: there the shard could not install the strong dependencies and never attempted a check. Here the check was attempted and refused to start. Keeping them apart is diagnostically useful — it says whether our installer fell short or whether the package needs something we never try to provide.

install_failure would be actively wrong: the package itself installs fine. It is the dependencies R CMD check cannot find.

Collector

keeps_committed() treats depmissing the way it treats missing and deferred — a run that learnt nothing about a package does not get to delete that package's report section. Without this, the SEMgraph, scistreer and MiscMetabar sections restored in #2834 would be deleted by the next run that reproduces the same abort.

Validation

The detector was run against run 31903576720's stored old.rds/new.rds for all 1011 packages: 55 hits, the same 55, with the right names — pwalign for AntibodyForests, Rgraphviz and graph for CePa, qvalue for cancerGI, bluster for Canek, limma for Cascade. No false positives among the 956 others.

All five scripts parse and are air-formatted.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D1xpHRV7yVfgtJg4vp9P7z


Generated by Claude Code

`R CMD check` stops at `checking package dependencies`
when something the package needs is not installed:
one error, two or three seconds, nothing else looked at.
It happens to both halves --
the two libraries differ only in igraph --
so the pair compares clean,
`compare_checks()` returns `+`,
and the verdict is `ok`.

55 of run 31930350338's 984 `ok` results were exactly that,
every one of them a package with Bioconductor dependencies
that are not on CRAN and so were never installed.
`SEMgraph` is the one that gives the game away:
`1E 0W 0N` on both sides in three seconds, reported `ok`,
while being genuinely broken by a dev change
that nobody saw because the check never ran.

Those results are now `depmissing`,
with the packages `R CMD check` named written into the message.
`needs_recheck()` covers it without changing,
so `retry-run` picks them up
once those repositories are available.

Not `depfail`, which is next to it in the summary
and means something different:
there the shard could not install the strong dependencies
and did not attempt a check.
Here the check was attempted and refused to start.
Not `install_failure` either --
the package itself installs; its dependencies are absent.

`keeps_committed()` in the collector treats `depmissing`
the way it treats `missing` and `deferred`:
a run that learnt nothing about a package
does not get to delete that package's report section.

Detector validated against run 31903576720's stored results:
55 packages, the same 55, with the right names --
`pwalign` for AntibodyForests, `Rgraphviz` and `graph` for CePa,
`qvalue`, `bluster`, `limma`, and so on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D1xpHRV7yVfgtJg4vp9P7z
@krlmlr krlmlr mentioned this pull request Aug 16, 2026
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.

2 participants