Skip to content

Commit 17a2fc4

Browse files
Merge pull request #3364 from microsoft/danielmeppiel-intel-release-budget
fix(ci): budget focused Intel release qualification
2 parents 69124dc + 0d13f5f commit 17a2fc4

3 files changed

Lines changed: 30 additions & 5 deletions

File tree

‎.github/workflows/build-release.yml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,10 @@ jobs:
253253
run: |
254254
chmod +x scripts/test-integration.sh
255255
uv run ./scripts/test-integration.sh
256-
timeout-minutes: 30
256+
# Run 39834866538 timed out at 30m with workers still passing at 91%.
257+
# 30 / 0.91 projects roughly 33m; 60m adds setup/tail headroom,
258+
# not a completion guarantee. Keep selection and failure gates intact.
259+
timeout-minutes: 60
257260

258261
# PHASE 3: RELEASE VALIDATION (tag/schedule/dispatch only)
259262
- name: Prepare isolated release-validation environment

‎docs/src/content/docs/contributing/integration-testing.md‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -521,9 +521,13 @@ The Linux x64 and macOS Apple Silicon full integration steps have 120-minute
521521
limits and keep `not live` selection with `-n 4 --dist loadgroup` for HOME-mutating
522522
test grouping. Previous 60-minute limits stopped progressing workers at 78% and
523523
77%, respectively; the budgets allow setup and tail headroom without excluding
524-
tests. Linux ARM keeps 60 minutes, Windows 20, and the focused Intel step 30.
525-
Failures and timeouts still block release publication; a larger budget is not
526-
evidence that a failed assertion is fixed.
524+
tests. Linux ARM keeps 60 minutes and Windows 20. The focused Intel step has
525+
60 minutes: its prior 30-minute limit stopped passing workers at 91%.
526+
The rough `30 / 0.91` projection is 33 minutes; 60 adds setup/tail headroom,
527+
not a completion guarantee.
528+
Its `lifecycle_smoke and not live` selection and four `loadgroup` workers are
529+
unchanged. Failures and timeouts still block release publication; a larger
530+
budget is not evidence that a failed assertion is fixed.
527531

528532
The existing unprivileged `PR Binary Smoke (Linux)` job also runs
529533
`tests/integration/test_audit_workspace_identity_lifecycle.py` against its built

‎tests/unit/test_platform_contract_workflow.py‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def _assert_intel_focused_integration(workflow: dict) -> None:
160160
)
161161
assert step["env"].get("PYTEST_MARK_EXPR") == INTEL_FOCUSED_MARK_EXPRESSION
162162
assert step["env"].get("PYTEST_EXTRA_ARGS") == NON_LIVE_UNIX_PYTEST_ARGS
163-
assert step.get("timeout-minutes") == 30
163+
assert step.get("timeout-minutes") == 60
164164
assert_exact_command(
165165
shell_commands(step),
166166
["uv", "run", "./scripts/test-integration.sh"],
@@ -293,6 +293,24 @@ def test_intel_non_live_corpus_mutation_is_rejected() -> None:
293293
_assert_intel_focused_integration(workflow)
294294

295295

296+
@pytest.mark.parametrize("timeout_minutes", (None, 30, 61))
297+
def test_intel_missing_old_or_oversized_timeout_mutation_is_rejected(
298+
timeout_minutes: int | None,
299+
) -> None:
300+
"""Intel cannot lose its bound or regress to the exhausted 30-minute limit."""
301+
workflow = deepcopy(_workflow())
302+
step = workflow_step(
303+
workflow_job(workflow, "build-and-validate-macos-intel"),
304+
INTEL_FOCUSED_INTEGRATION_STEP,
305+
)
306+
del step["timeout-minutes"]
307+
if timeout_minutes is not None:
308+
step["timeout-minutes"] = timeout_minutes
309+
310+
with pytest.raises(AssertionError):
311+
_assert_intel_focused_integration(workflow)
312+
313+
296314
def test_arm_focused_subset_mutation_is_rejected() -> None:
297315
"""ARM remains the broad non-live macOS release authority."""
298316
workflow = deepcopy(_workflow())

0 commit comments

Comments
 (0)