Skip to content

fix(ci): drop relative-timing perf tests from the required PR/merge_group gate#6433

Merged
shipyard-local[bot] merged 1 commit into
mainfrom
fix/perf-tests-off-required-pr-gate
Jul 21, 2026
Merged

fix(ci): drop relative-timing perf tests from the required PR/merge_group gate#6433
shipyard-local[bot] merged 1 commit into
mainfrom
fix/perf-tests-off-required-pr-gate

Conversation

@shipyard-local

@shipyard-local shipyard-local Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Excludes performance|bench|quality-lab labels from the required PR/merge_group macos ctest (build.yml + .shipyard/config.toml). These relative-timing/CPU-budget/benchmark tests flake under the Studio's cap=2 concurrent-VM load variance and can't be a required gate on a cap=2 runner. Keystone for reliable PR builds → merge-queue entry. Self-bootstraps (its own build excludes them). Version-Bump: skip. See planning/org-flip-status.md §A.


🔎 Provenance

Agent claude
Machine m5
Tab Set up fleet v2 project with Orchestrate in new workspace
Directory ~/Code/pulp-option-b
Session 3239e1c5-c3ff-434a-ac47-7db21d930bce

Resume

claude --resume 3239e1c5-c3ff-434a-ac47-7db21d930bce

Jump to this tab

cmux surface focus 82BDD5A8-F7FA-441D-8D9D-B5763DF6E7FC

Relaunch (any agent)

cmux surface resume get --surface 82BDD5A8-F7FA-441D-8D9D-B5763DF6E7FC

Restore URLhttps://claude.ai/code/session_017CdzQZrrtCETcDYH9MABhR

stamped 2026-07-21 16:19 UTC

…roup gate

The required macos gate flakes intermittently because the Studio runs up to
`macos_vm_cap` (2, Apple's guest limit) concurrent build VMs, and the
relative-timing / CPU-budget / benchmark tests — labels `performance`,
`bench`, `quality-lab` (e.g. heritage-performance's "Representative chain
stays within the shipping CPU budget", asserting a ratio <= 2.0x1.05 vs an
in-run baseline) — tolerate steady load but NOT the load VARIANCE a sibling
VM's bursty compile creates. Whenever 2 gate builds run at once, the ratio
inflates past threshold and the test flakes; a different test fails each run.
Re-running makes it worse (adds Studio load).

A perf/ratio test cannot be a required gate on a runner that (correctly) runs
2 concurrent VMs. Exclude those labels from the PR + merge_group `label_exclude`
(both the non-Windows and Windows ctest invocations). They still run on `push`
(informational) and belong in a dedicated cap=1 nightly/perf lane (follow-up).
This makes both PR-head and merge_group builds reliable, which is the
prerequisite for PRs to enter and clear the merge queue.

Documents the failure mode + fix in the ci skill and the versioning guide's
CI-cadence section. Reversible DIAL: drop the labels from the exclude to re-gate.

Version-Bump: skip reason="ci workflow + skill/doc only; no versioned surface"
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CdzQZrrtCETcDYH9MABhR
@danielraffel
danielraffel force-pushed the fix/perf-tests-off-required-pr-gate branch from cd65287 to ee9c1a7 Compare July 21, 2026 16:31
@shipyard-local
shipyard-local Bot added this pull request to the merge queue Jul 21, 2026
Merged via the queue into main with commit cd46124 Jul 21, 2026
17 of 20 checks passed
danielraffel added a commit that referenced this pull request Jul 23, 2026
…required gate

The `heritage-performance::Representative chain stays within the shipping CPU
budget` ratio test has flaked the required macOS gate on unrelated PRs all along
— it is a CPU-budget ratio assertion that cannot be reliable on a shared runner,
which is exactly why #6433 added it to the label-excluded set
(`ctest -LE "…|performance|quality-lab"`). That exclusion never worked.

Root cause (verified against the generated *_tests.cmake): catch_discover_tests
serialises a multi-value LABELS list UNQUOTED into set_tests_properties —
`PROPERTIES LABELS a b c … RUN_SERIAL TRUE …` — so ctest parses it as name/value
PAIRS. Only the FIRST label survives (`LABELS=a`); the rest, and RUN_SERIAL /
TIMEOUT, are silently mis-bound. These tests led with `audio`, so `-LE
performance|quality-lab` matched nothing and the ratio test ran on every PR and
merge_group, flaking under load.

Minimal, forward-compatible fix: lead with `quality-lab` so the surviving label
is an exclusion label. The test now leaves the required PR/merge_group gate
(via `-LE quality-lab`) while still running on push (event-gated `label_exclude`).
If the underlying truncation is ever fixed, all labels are present and the test
is still excluded — so this is safe either way. Verified: after rebuild both
`heritage-performance::` tests surface LABEL `quality-lab` and are excluded.

This is a REPO-WIDE bug — dozens of tests carry a slow/bench/quality-lab label
that is not first and are therefore silently NOT excluded from the required gate
(slower, flakier than intended). The proper fix is a catch_discover_tests
label-serialisation change; it needs a full-build validation pass and is tracked
in the handoff. This commit only unblocks the one test that actively flakes.

Version-Bump: skip reason="test-registration label order; no runtime surface"

Skill-Update: skip skill=playback reason="test label-order fix; no workflow change"
Skill-Update: skip skill=timeline reason="test label-order fix; no workflow change"
danielraffel added a commit that referenced this pull request Jul 23, 2026
…required gate

The `heritage-performance::Representative chain stays within the shipping CPU
budget` ratio test has flaked the required macOS gate on unrelated PRs all along
— it is a CPU-budget ratio assertion that cannot be reliable on a shared runner,
which is exactly why #6433 added it to the label-excluded set
(`ctest -LE "…|performance|quality-lab"`). That exclusion never worked.

Root cause (verified against the generated *_tests.cmake): catch_discover_tests
serialises a multi-value LABELS list UNQUOTED into set_tests_properties —
`PROPERTIES LABELS a b c … RUN_SERIAL TRUE …` — so ctest parses it as name/value
PAIRS. Only the FIRST label survives (`LABELS=a`); the rest, and RUN_SERIAL /
TIMEOUT, are silently mis-bound. These tests led with `audio`, so `-LE
performance|quality-lab` matched nothing and the ratio test ran on every PR and
merge_group, flaking under load.

Minimal, forward-compatible fix: lead with `quality-lab` so the surviving label
is an exclusion label. The test now leaves the required PR/merge_group gate
(via `-LE quality-lab`) while still running on push (event-gated `label_exclude`).
If the underlying truncation is ever fixed, all labels are present and the test
is still excluded — so this is safe either way. Verified: after rebuild both
`heritage-performance::` tests surface LABEL `quality-lab` and are excluded.

This is a REPO-WIDE bug — dozens of tests carry a slow/bench/quality-lab label
that is not first and are therefore silently NOT excluded from the required gate
(slower, flakier than intended). The proper fix is a catch_discover_tests
label-serialisation change; it needs a full-build validation pass and is tracked
in the handoff. This commit only unblocks the one test that actively flakes.

Version-Bump: skip reason="test-registration label order; no runtime surface"

Skill-Update: skip skill=playback reason="test label-order fix; no workflow change"
Skill-Update: skip skill=timeline reason="test label-order fix; no workflow change"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant