Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4468,9 +4468,32 @@ jobs:
# backend through DEV_PROXY_TARGET. ⛔ No retry wrapper and no
# `continue-on-error` anywhere in this job: a red run is a red check.
#
# Gated as Build & E2E UI is. Not behind Build UI Deps: this job builds a
# larger closure (the CLI and the showcase app's) than the seven packages that
# job hands on, so it restores Build Core's turbo seed instead.
# Gated as Build & E2E UI is, OR'd with `core` (#27550). Build & E2E UI
# builds the Console against the seven packages it compiles from, so a diff
# that reaches none of them cannot move its answer. This job runs the Console
# against a REAL server, and a server-only diff (objectql, runtime, rest, a
# plugin, the showcase app) breaks the Console there with no ui path touched:
# the access, record-save, Studio-save and screen-flow defects that reached
# main before #27550 were all of that kind. `core` (packages/**, examples/**,
# apps/!(docs)/** and the root build inputs) is the widening, not a narrower
# list of the backend's closure: over the last 60 completed pull_request
# runs before #27550 (59 graded, one `action_required`), today's gate ran 35;
# `|| core` runs 55; a filter naming only the CLI's and the showcase app's
# 67-package dependency closure would run 50. The five runs between the two
# were skills-only diffs, and that closure would be a second hand-kept
# recognizer of the backend's dependency graph, the drift THE FILTER CONTRACT
# fails open against. On merge_group `core` is always 'true', so every queue
# entry runs this job too.
#
# Not behind Build UI Deps: this job builds a larger closure (the CLI and the
# showcase app's) than the seven packages that job hands on, so it restores
# Build Core's turbo seed instead.
#
# BUDGET: the "Run the live e2e specs" step stays under 2 minutes (14-24 s,
# median 21 s, over the 35 runs above). The widened gate puts this step on
# most pull requests and on every queue entry, so a spec that would push it
# over stays in `test:e2e:live:nightly` instead of joining the `:ci`
# allowlist.
#
# Ceiling: there is no CI population yet, so it is derived from one cold
# local run on 4 shared cores (#27154, 2026-10-28), by the rule above Lint UI:
Expand All @@ -4480,7 +4503,7 @@ jobs:
live-e2e-ui:
name: Live E2E UI
needs: filter
if: ${{ !cancelled() && needs.filter.outputs.ui_tree != 'false' && (needs.filter.outputs.ui != 'false' || needs.filter.outputs.ui_consumers != 'false') }}
if: ${{ !cancelled() && needs.filter.outputs.ui_tree != 'false' && (needs.filter.outputs.ui != 'false' || needs.filter.outputs.ui_consumers != 'false' || needs.filter.outputs.core != 'false') }}
runs-on: ubuntu-latest
timeout-minutes: 40
permissions:
Expand Down
Loading