Skip to content

e2e: scheduled flake gap-filler (default-off)#3968

Draft
nikw9944 wants to merge 3 commits into
mainfrom
e2e-flake-gap-filler
Draft

e2e: scheduled flake gap-filler (default-off)#3968
nikw9944 wants to merge 3 commits into
mainfrom
e2e-flake-gap-filler

Conversation

@nikw9944

@nikw9944 nikw9944 commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Summary of Changes

Adds an hourly schedule: trigger to the e2e workflow, guarded by a new
GitHub-hosted schedule-gate job. The gate returns proceed=true only when the
gap-filler is enabled (repo variable E2E_GAP_FILLER_ENABLED='true'), main has had
no e2e run in 6h (stale), and no e2e run is in flight on any branch (idle).
When it proceeds, the normal setup + 4-shard matrix runs on main HEAD; the
resulting run is ingested by the flake-detect system with no changes on its side.

Rationale: the e2e flake-detection corpus is starved for samples (main fails ~20%
of runs, but main runs are infrequent). This tops up samples during genuine lulls
only — the idle condition makes it yield entirely during heavy merge activity, so
it never competes for the constrained concurrent-e2e capacity.

Merges inert: the repo variable is unset by default, so scheduled ticks only run
the lightweight gate and never trigger the matrix. Enable later by setting the
variable. Design + rollout: malbeclabs/infra
docs/plans/2026-07-02-e2e-flake-gap-filler-*.md (tracker malbeclabs/infra#1615).

Only setup needed changes (a needs/if guard); the e2e matrix job already
gates on needs.setup.outputs.run-e2e, so a skipped setup skips the matrix.

Testing Verification

  • actionlint .github/workflows/e2e.yml passes clean.
  • node --check passes on the gate script's JS constructs.
  • Non-schedule paths unchanged: setup.if evaluates true whenever
    github.event_name != 'schedule' (push/PR/dispatch run exactly as before).
  • Confirmed the e2e job gates on needs.setup.outputs.run-e2e without always(),
    so proceed=false (skipped setup) cleanly skips the matrix.
  • Runtime gate behavior is validated post-merge with the toggle off (GitHub runs
    schedule only on the default branch); scheduled ticks will run only
    schedule-gate and log proceed=false until enabled.

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