Skip to content
Merged
Show file tree
Hide file tree
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
23 changes: 23 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,11 @@ jobs:
- '.nvmrc'
- '.github/actions/setup-workspace/**'
- '.github/actions/setup-pnpm/**'
# setup-pnpm materialises the pnpm the root manifest's
# `packageManager` field pins (#27717), so a diff confined to
# that field changes the pnpm Build Docs installs with. `core:`
# already carries this row for its own jobs.
- 'package.json'
core:
- 'packages/**'
- 'examples/**'
Expand Down Expand Up @@ -361,6 +366,19 @@ jobs:
- 'ui/scripts/check-dist-completeness.mjs'
- 'ui/scripts/invoked-as.mjs'
- 'ui/scripts/vitest-invocation-guard.mjs'
# TEST INPUTS outside every package (#27961): each `$TURBO_ROOT$/…`
# input of turbo.json's generic `test` task. That task runs for
# every package Test Core tests, so a diff confined to one moves
# every `#test` hash, and before these rows Test Core first ran on
# it in the merge queue. `vitest.preset.mts` above and the
# `vite-*.ts` / `vitest-invocation-guard.mjs` build rows cover the
# other three; check-ci-filter-parity derives the set from
# turbo.json and reds while one is uncovered here.
- 'ui/vitest.config.mts'
- 'ui/vitest.setup.*'
- 'ui/scripts/test-shard-*'
- 'ui/apps/console/vitest.config.ts'
- 'ui/apps/console/vite.config.ts'
# BUILD CORE'S GUARDS (#21341): every repository script the
# build-core job's own steps run (named by a `run:` step or
# reached through its `pnpm check:*` alias) and each one's
Expand Down Expand Up @@ -533,6 +551,11 @@ jobs:
# PR, nor in the queue, where these outputs read the same diff.
- '.nvmrc'
- '.github/actions/setup-pnpm/**'
# The root manifest, because setup-pnpm reads its `packageManager`
# field to pick the pnpm every ui job runs (#27717). A diff
# confined to a pnpm bump matched no list here, so the ui jobs
# skipped on the PR and in the queue alike.
- 'package.json'
# The seven packages objectui installs from this tree (the set its
# `.objectstack-pin` used to pack). A change here compiles and builds
# the Console in the same PR — the check the retired Spec Shape Gate
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -790,34 +790,41 @@ jobs:
# explicitly does not ask for. ⛔ It is also not a licence to sweep the
# rest of that remainder from here; that is a separate card.
#
# What runs here is the self-tests, not the modules' callers: for the first
# three the callers are the two routing gates named above, which already run on
# `ui/scripts/invoked-as.mjs`, the ui tree's twin of the entry predicate,
# joined beside it (#27283): `ci.yml`'s `core:` filter names it as a build
# input, so `check:self-test-wired` counts it as a script CI runs, and its
# `--self-test` ran nowhere else.
#
# What runs here is the self-tests, not the modules' callers: for the three
# #10608 modules the callers are the two routing gates named above, which already run on
# every PR; for `import-prerequisite` the callers are the 45 importing
# gates, whose ordinary runs take the branch where the dependency IS
# present and therefore observe none of what the self-test pins.
# Invoked as `node` rather than through `pnpm check:*`: see the GATE
# INVOCATION IDIOM note at the top of this file.
# `ts-parse` spawns ~20 real node children (~10 s measured, and the spawns
# are the point — they pin that a caller's try/catch cannot swallow the
# refusal); the other three are in-process fixtures, ~0.6 s combined.
# refusal); the others are in-process fixtures, ~0.9 s combined.
#
# ⭐ Collected rather than sequenced, for the reason spelled out at the
# `Shallow-history guard self-tests` step below (#10814): under `bash -e` a
# bare sequence stops at the first failure, so a red `ts-parse` would leave
# the entry-predicate, comment-mask and prerequisite-frame self-tests UNRUN
# while the log shows only the one failure. `ts-parse` is both the slowest
# of the four and the one that spawns real children, so it is the likeliest
# to be red — precisely the masking direction. The four modules are
# independent of one another, so collecting loses nothing.
# of them and the one that spawns real children, so it is the likeliest
# to be red — precisely the masking direction. The modules are
# independent of one another, so collecting loses nothing. This note, the
# step name and its last line name no member count: the list below is the
# one place that says how many run.
#
# ⭐ Collected is also why the fourth leg is HERE rather than in a step of
# its own: Actions skips a job's remaining steps once a step fails, so a
# standalone step further down this job would be masked by every gate above
# it — the same defect one level up, and the split `check-step-collectors`
# explicitly refuses as a remedy. Inside this block the frame's self-test
# prints its own verdict whatever the other three do, and it does so early
# prints its own verdict whatever the others do, and it does so early
# in the job.
- name: scripts/ shared-module self-tests (parse · entry predicate · comment mask · prerequisite frame)
- name: scripts/ shared-module self-tests (parse · entry predicate, root and ui · comment mask · prerequisite frame)
id: scripts-shared-module-self-tests-parse-entry
continue-on-error: true
run: |
Expand Down Expand Up @@ -850,7 +857,7 @@ jobs:
printf "%s" "$failed"
exit 1
fi
echo "scripts/ shared-module self-tests — all four ran and passed"
echo "scripts/ shared-module self-tests — every one ran and passed"

# Every `scripts/**` TypeScript parse goes through ONE module (#10133 /
# #10573), and this is the half that keeps it that way (#10574).
Expand Down
Loading
Loading