From ab5316899b329a27feb89e908998f4717d5032b4 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 12 Aug 2026 01:43:50 +0000 Subject: [PATCH] docs(tests): qualify the last two present-tense paths-ignore twins (#4384) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The last unqualified present-tense `paths-ignore` texts in the repo, graded and deliberately left as a pair by PR #4382's exceptions list. They move together: qualifying either alone would recreate, between two near-verbatim comments, the two-shapes split the #3857 / #4369 / #4381 family existed to end. Both premises are now scoped to the `push` trigger — since objectui#3523 step 2 the only trigger that still carries the filter, and the only thing each assertion below can see, since both slice the `on:` block. Each conclusion is kept standing on the reason that holds today: no `paths-ignore` survives on `pull_request` at all, so such a PR starts the workflow a fortiori, and the in-job `Decide whether this change needs a full run` step's exclusion list is that same `push` filter unchanged. Comment-only: every changed line is a `//` line, and both files are byte-identical to origin/main once `//` lines are stripped. Assertions untouched. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_017Qqyix2QcnpUC9XeYVDzx3 --- .../check-action-forward-parity.test.ts | 18 ++++++++++++- scripts/__tests__/check-i18n-en-drift.test.ts | 27 +++++++++++++++---- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/scripts/__tests__/check-action-forward-parity.test.ts b/scripts/__tests__/check-action-forward-parity.test.ts index a7b4abac9..dc8f83a97 100644 --- a/scripts/__tests__/check-action-forward-parity.test.ts +++ b/scripts/__tests__/check-action-forward-parity.test.ts @@ -710,8 +710,24 @@ describe('the gate is wired to run', () => { it('is not hidden from the renderers by ci.yml path filters', () => { // ci.yml `paths-ignore`s markdown, content/, docs/, apps/site/ and - // .changeset/. None can match `packages/components/src/renderers/**`, so a PR + // .changeset/ on its `push` trigger — since objectui#3523 step 2 the only + // trigger that still carries the filter (ci.yml:6; lint.yml:32 is the twin), + // and the only thing the assertion below can see, since it slices the `on:` + // block. None can match `packages/components/src/renderers/**`, so a push // that edits a forward whitelist always starts this workflow. + // + // For a PULL REQUEST the conclusion holds for a second and stronger reason. + // This lead-in used to state it in a bare present tense that read as if the + // filter still applied there; objectui#4384 qualified it, together with its + // near-verbatim twin in `check-i18n-en-drift.test.ts`, closing the #3857 / + // #4369 / #4381 family (PRs #4371 / #4380 / #4382). No `paths-ignore` + // survives on `pull_request` at all, so such a PR starts this workflow a + // fortiori — measured there: PR #3856, one markdown file, 16 checks. What + // decides a pull request now is the in-job `Decide whether this change needs + // a full run` step, whose exclusion list is that `push` filter unchanged, + // held identical to it by `scripts/__tests__/merge-queue-reporting.test.ts` + // — so the patterns pinned below are also what keeps the expensive steps + // running on a renderer PR. const ignored = (ci.slice(0, ci.indexOf('jobs:')).match(/^\s+- '.*'$/gm) ?? []).map((line) => line.trim().replace(/^- '/, '').replace(/'$/, ''), ); diff --git a/scripts/__tests__/check-i18n-en-drift.test.ts b/scripts/__tests__/check-i18n-en-drift.test.ts index 807836f7b..2b6ca320d 100644 --- a/scripts/__tests__/check-i18n-en-drift.test.ts +++ b/scripts/__tests__/check-i18n-en-drift.test.ts @@ -745,11 +745,28 @@ describe('the gate is wired to run', () => { it('is not hidden from the locale packs by ci.yml path filters', () => { // ci.yml `paths-ignore`s markdown, content/, docs/, apps/site/ and - // .changeset/. None of them can match `packages/i18n/src/locales/*.ts` or the - // ledger, so a PR that edits an en string always starts this workflow. A new - // entry that DID cover them would make the gate unreachable for exactly the - // PRs it judges — the objectui#3547 / control-bytes.yml lesson, one workflow - // over. + // .changeset/ on its `push` trigger — since objectui#3523 step 2 the only + // trigger that still carries the filter (ci.yml:6; lint.yml:32 is the twin), + // and the only thing the assertion below can see, since it slices the `on:` + // block. None of them can match `packages/i18n/src/locales/*.ts` or the + // ledger, so a push that edits an en string always starts this workflow. + // + // For a PULL REQUEST the conclusion holds for a second and stronger reason. + // This lead-in used to state it in a bare present tense that read as if the + // filter still applied there; objectui#4384 qualified it, together with its + // near-verbatim twin in `check-action-forward-parity.test.ts`, closing the + // #3857 / #4369 / #4381 family (PRs #4371 / #4380 / #4382). No + // `paths-ignore` survives on `pull_request` at all, so such a PR starts this + // workflow a fortiori — measured there: PR #3856, one markdown file, 16 + // checks. What decides a pull request now is the in-job `Decide whether this + // change needs a full run` step, whose exclusion list is that `push` filter + // unchanged, held identical to it by + // `scripts/__tests__/merge-queue-reporting.test.ts` — so the patterns pinned + // below are also what keeps the expensive steps running on a locale-pack PR. + // + // A new entry that DID cover them would make the gate unreachable for + // exactly the PRs it judges, on both lanes at once — the objectui#3547 / + // control-bytes.yml lesson, one workflow over. const ignored = ci.slice(0, ci.indexOf('jobs:')).match(/^\s+- '.*'$/gm) ?? []; for (const pattern of ignored) { expect(pattern).not.toMatch(/packages|scripts|locales/);