Skip to content

ci: report full CI failures and gate release merge groups on external suites - #1105

Merged
tignear merged 4 commits into
masterfrom
feature/really-need-1future-1pr-and-test-everything
Oct 8, 2026
Merged

tignear merged 4 commits into
masterfrom
feature/really-need-1future-1pr-and-test-everything

Conversation

@tignear

@tignear tignear commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Full CI now runs daily and on demand, while PRs and merge groups run
change-based checks. This closes two gaps in that model:

  • Full CI failures reach someone. A new Report full validation job runs at
    the end of scheduled and dispatched full runs on master and develop. A
    failed or cancelled job opens "Full CI is failing on " (or comments on
    it while it stays open); the next passing full run closes it. The logic lives
    in scripts/report-full-ci.mjs.

  • A release cannot merge after only change-based checks. Only the release
    PR changes .release-please-manifest.json. ci-changes.mjs now emits
    release=true for a master merge group whose diff changes it (or whose
    diff cannot be determined). Syncing master into develop carries the same
    manifest change but tags nothing, so develop merge groups are never
    releases; the classifier receives MERGE_GROUP_BASE_REF for this. That enables every path, runs the external Verilator/Icarus
    comparisons, and makes the existing required Rust Test & NAPI Build check
    require them to pass. No ruleset change is needed.

  • The release PR stops re-running everything. ci-changes.mjs already
    had a Release Please skip, but ci.yml never set RELEASE_PLEASE_PR, and the
    release diff also bumps Cargo.toml/Cargo.lock. The release PR ran every
    job on each master push (71 runs, ~3,600 job-minutes in two weeks). The flag
    is now set for the repository's own release branch and the Cargo version
    files count as release files. This is safe because the release's master
    merge group runs full validation.

Daily and manual full runs do not gate on the external comparisons; their
failures go to the issue above. The release PR's own pull_request runs remain
change-based. CONTRIBUTING.md documents both.

Validation

  • node --test scripts/*.test.mjs: 130 pass, also with
    GITHUB_EVENT_NAME=merge_group and MERGE_GROUP_BASE_REF=refs/heads/master
    in the environment as in a master merge group job.
    New tests cover the issue reporter (open/comment/close/duplicates), release
    detection against a real release-manifest commit (a release on master, not on
    develop), unknown merge group diffs,
    the gate truth table with the release requirement, and that the report job
    waits on every other ci.yml job.
  • Running ci-changes.mjs with RELEASE_PLEASE_PR=true on the diff of the
    open release PR chore(master): release 0.11.0 #1007 selects no product jobs.
  • actionlint .github/workflows/ci.yml: no new findings (only the existing
    ubuntu-26.04-arm runner label warning).
  • Not run: the scheduled run, the issue job, and a release merge group on
    GitHub Actions. The first daily run after merge and the next weekly release
    will exercise them.
  • Repository setting (outside this diff): the merge queue's required check
    timeout on the master and develop rulesets was raised from 60 to 180
    minutes, since the external suites allow 90 minutes plus runner wait.

… suites

Daily and manual full runs are not merge gates, so their failures could go
unnoticed. Report full validation keeps one issue per long-lived branch open
while full CI fails and closes it once a full run passes.

Releases could also merge after only change-based checks. A merge group that
changes the release manifest now runs full validation, and Rust Test & NAPI
Build requires the external suite comparisons to pass for it.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T01:39:49.072609Z eb433da New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5475f30540

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/ci-changes.test.mjs Outdated
Comment on lines +200 to +201
const base = `${release}~1`;
const baseSha = execFileSync("git", ["rev-parse", base], {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid requiring Git history in the script test

The lint job checks out the repository without overriding actions/checkout's documented default fetch-depth: 1 (action definition), so ${release}~1 is unavailable there. Whenever repository script tests run—including for this commit and every full-validation run—this git rev-parse exits with status 128 and fails the entire Lint & Format job before the classifier behavior is tested. Construct the history in a temporary fixture or explicitly fetch sufficient history in that job.

Useful? React with 👍 / 👎.

Syncing master into develop carries the release manifest change too, which
made the develop merge group run and wait for the external comparisons
although it tags nothing. Pass the merge group base ref to the classifier and
only mark master merge groups as releases.
@codspeed

codspeed Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 4 untouched benchmarks


Comparing feature/really-need-1future-1pr-and-test-everything (eb433da) with master (c802d5b)

Open in CodSpeed

@tignear
tignear enabled auto-merge October 7, 2026 23:43
ci-changes.mjs could skip product validation for a Release Please pull
request, but ci.yml never set RELEASE_PLEASE_PR, and the release diff also
bumps Cargo.toml and Cargo.lock. The release PR therefore ran every job on
each master push (71 runs and about 3,600 job-minutes in two weeks).

Set the flag for the repository's own release branch and accept its Cargo
version bumps. The master merge group that cuts the release now runs full
validation, so nothing merges without it.
CI checks out a single commit, so the release test could not find the parent
of the latest release manifest change. Create the two commits it needs in a
temporary repository instead.
@tignear
tignear added this pull request to the merge queue Oct 8, 2026
Merged via the queue into master with commit 7cf0c72 Oct 8, 2026
36 checks passed
@tignear
tignear deleted the feature/really-need-1future-1pr-and-test-everything branch October 8, 2026 03:07
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.

1 participant