Skip to content

CI: PR cargo-test never executes crates/perry integration suites; main-push full run starves under merge trains (documented near-miss) #5960

Description

@proggeramlug

Documented near-miss from 2026-07-04: PR CI's change-scoped cargo-test (scripts/ci_test_scope.py) runs unit tests onlyRunning unittests src/lib.rs lines exclusively in the job log. The crates/perry/tests/*.rs integration/e2e suites are compiled (they appear in the changed-file scope listing) but never executed on the PR path. They only run on the full scope (push to main / --full).

Consequences observed today:

  • PR fix(hir): capture-snapshot P0 pair — resolved-name re-registration + assignment tracking #5938 landed with its own acceptance suite (capture_rereg_renamed_class.rs) failing — same_class_name_across_factories_keeps_snapshots_separate was red at the very commit that introduced it, through green required checks. (Fix in flight: the static-call/static-field lowering arms bypass class_renames.)
  • The intended safety net — the full run on main push — was cancelled repeatedly by the per-branch concurrency group during a rapid merge train (three squash-merges within ~20 minutes each superseding the previous run), so main went ~a workday with no completed full cargo-test.

This is a design trade (e2e suites compile binaries and take tens of minutes; scoping keeps PR latency sane), not a bug per se. Suggested cheap hardenings, any subset:

  1. Merge-train discipline (process, zero infra): after an admin merge, let the main-push full run complete before the next merge lands — or re-dispatch it after the last merge of a batch. (I'm adopting this immediately for my own merges.)
  2. Concurrency carve-out: give the main-branch full run cancel-in-progress: false (queue instead of cancel) so merge trains can't starve it.
  3. Scoped e2e tier: when the changed files include crates/perry/tests/<suite>.rs, run those suites (they're the PR's own acceptance tests — the exact class of miss that happened here).
  4. A nightly full run as a backstop (if not already present).

Refs: #5938 (the near-miss PR), the fix PR for the renamed-class static dispatch, run 28698034143 (an old-commit re-run that was the only completed "full" signal today, itself red on the known load-sensitive byob stall).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions