fix(ci): Carry revdep2 run ids as strings, and make its summary self-contained - #2816
Merged
Conversation
…f-contained
GitHub run ids passed `.Machine$integer.max` in 2026,
so `as.integer("31048405399")` is a silent `NA`.
The plan job died on the next `if`
with `missing value where TRUE/FALSE needed`,
right after finding its baseline donor.
Run ids are strings everywhere now,
with `"0"` as the "no such run" sentinel,
and `run_id_chr()` / `has_run()` in `util.R` to handle them.
The job summary's only links pointed at `problems.md#pkg`,
which is right inside the report artifact
and 404s in a summary served from `/actions/runs/<id>`.
Package names now link to CRAN,
run ids to their run pages,
and the summary says once
that the report files live in the `revdep2-report` artifact.
Packages that could not be checked got a bare name and no reason:
revdepcheck's "Failed to check" table is fed a shim
that carries neither version nor detail.
That section is replaced by a table built from the manifest --
version, shard, the check counts of whichever phase ran,
and why it stopped:
the timeout and its duration,
the dependencies that would not install,
or whether installation failed under the dev version only or under both.
The shard records that last distinction now,
so an `i-` (broken by us) reads differently from an `i+` (broken anyway),
and the shard summary puts the reason in the `<details>` title
where the log tail cannot cut it off.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RLy6bf4Zo8YWgv5Qb53nmY
revdep2 run ids as strings, and make its summary self-contained
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.
The workflow was failing
Run 31084790490
died in
plan.Rwithmissing value where TRUE/FALSE needed,one line after finding its baseline donor:
baseline_run <- as.integer(donor).GitHub's run ids passed
.Machine$integer.maxin 2026,so
as.integer("31048405399")is a silentNAthat only surfaces at the next
if.This would have hit every run from now on
that finds a baseline to reuse.
Run ids are strings everywhere in these scripts now —
plan.json, the plan job's outputs, the summaries —with
"0"as the "no such run" sentineland
run_id_chr()/has_run()inutil.Rto handle them.Every link in the summary was broken
Checked against the report artifact of
run 31048405399.
Its summary contained exactly 23 links,
all of the form
[archeofrag](problems.md#archeofrag)—right inside the report artifact,
wrong in a job summary served from
/actions/runs/<id>,where they resolve to
github.com/igraph/rigraph/actions/runs/problems.md.Nothing else was linked at all:
the baseline run, the prebuilt donor runs, the retried run and the artifact
were bare numbers or prose.
Now package names link to their CRAN page,
run ids link to their run pages,
and the summary says once
that
problems.mdand friends live in therevdep2-reportartifact.A regenerated summary has no relative links left.
Packages that could not be checked said nothing useful
All 30 of them appeared as a bare name with version
?and no reason:revdepcheck's "Failed to check" table is fed a shim
that carries neither.
That section is dropped from the embedded report
and replaced by a table built from the manifest,
which had the detail all along:
That last row needed a change in
shard.R:an
i+/i-/t+/t-comparison recorded no message at all,so three packages had no reason to report.
The shard records it now,
which also makes an
i-(installs under CRAN igraph, fails under dev)readable as distinct from an
i+(broken either way).The shard summary puts the same reason in the
<details>title,where the log tail cannot cut it off.
I left the
failedclassification ofi-alone.Arguably that one is
newly_broken—installation regressing under the dev version is a real regression —
but that changes what the reports and the retry selection mean,
so it is worth deciding separately.
How it was verified
No revdep2 run is needed to see the fix work:
plan.Rrun against a stubbedghserving run 31048405399's real
revdep2-baselineandrevdep2-reportartifacts.Both the baseline-donor path and the
retry-runpath plan through;before this branch, both died on the
as.integer().collect.Rrun against that run's real 770-entry manifest,with and without unchecked packages.
The generated summary contains no relative links.
https://cran.r-project.org/package=<pkg>confirmed as the right link shape(200 for a real package, 404 for a bogus one).
By submitting this pull request, I assign the copyright of my contribution to The igraph development team.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RLy6bf4Zo8YWgv5Qb53nmY