Skip to content

Commit f4c2eef

Browse files
os-steveclaude
andauthored
docs(lint): record that the "Template version-time rewriter" comment's scheduling gap closed (#10052)
The comment above lint.yml's `Template version-time rewriter self-test` step is a second, near-verbatim carrier of the claim `scripts/sync-template-versions.mjs`'s GAP 1 header makes: that a diff confined to that rewriter yields `core=false`, so `Test Core` is skipped entirely and the vitest never runs. The `test` job now ORs a second paths-filter output (`scripts`) into its `if:`, so that half is retired. It is recorded here rather than deleted, with the mechanism attached. Also corrects the picomatch version: the comment cited 4.0.5 as "the matcher dorny/paths-filter uses". The action's own package-lock.json resolves picomatch 2.3.1 as a runtime, non-dev dependency; 4.0.5 is this repo's tree copy. Both agree on these globs, so no downstream verdict was wrong. Comment prose only. Both versions parsed with the `yaml` package and compared on job ids, job names, step counts, and every `run:`/`uses:` line: the parsed shapes are identical (sha256/16 2d5048dd42a4bc45 both sides), so the required context `Lint & Repo Gates` is untouched. Claude-Session: https://claude.ai/code/session_01XqDQYVU5smx29ts9pAErja Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2a6ebaf commit f4c2eef

1 file changed

Lines changed: 46 additions & 23 deletions

File tree

.github/workflows/lint.yml

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -533,29 +533,52 @@ jobs:
533533
- name: Docs image-tag version-time rewriter self-test
534534
run: pnpm check:docs-image-tag-sync
535535

536-
# #9348 — the same treatment for the OTHER version-time rewriter, and the
537-
# scheduling gap that made it necessary after #9648 already added a vitest
538-
# file which runs the CLI. `create-objectstack#test` is reachable only from
539-
# ci.yml's `test` job, which is gated on the `core` paths-filter; `core` is
540-
# `packages/**`, `examples/**`, `apps/!(docs)/**`, `package.json`,
541-
# `pnpm-lock.yaml`, `tsconfig.json`, `.github/workflows/ci.yml` and matches
542-
# no path under `scripts/`. Measured with picomatch 4.0.5 (the matcher
543-
# dorny/paths-filter uses): a diff confined to
544-
# scripts/sync-template-versions.mjs yields core=false, so Test Core is
545-
# skipped ENTIRELY on the PR that changes the rewriter, and with it the
546-
# vitest. The two layers that look like they cover it do not: `turbo ls
547-
# --affected` returns ZERO packages for that diff (a package-local edit
548-
# returns 1, so the probe is live) — turbo.json's `$TURBO_ROOT$` entry
549-
# moves the task HASH, which is what stops a cached green on the merge
550-
# queue, not what schedules the job — and the `--union-into` step that DOES
551-
# pull create-objectstack back in is a step inside the skipped job. The
552-
# queue build catches it, one merge late, as batch collateral; that is the
553-
# failure shape check-cross-package-test-inputs.mjs's own ledger records
554-
# twice.
555-
#
556-
# This workflow carries no paths filter and no filter job, so this step
557-
# runs on every pull request, push and merge-queue build. That is the whole
558-
# reason the flag exists rather than more cases in the vitest file.
536+
# #9348 — the same treatment for the OTHER version-time rewriter, argued
537+
# there from two measured gaps after #9648 had already added a vitest file
538+
# which runs the CLI. GAP 1 has since closed; it is recorded here rather
539+
# than deleted, so the next reader does not re-derive a conclusion the
540+
# workflow no longer supports.
541+
#
542+
# GAP 1 — SCHEDULING. CLOSED by #9829 / #10014. The original claim:
543+
# `create-objectstack#test` is reachable, at PR time, only from ci.yml's
544+
# `test` job; that job was gated on the `core` paths-filter ALONE; and
545+
# `core` — `packages/**`, `examples/**`, `apps/!(docs)/**`,
546+
# `package.json`, `pnpm-lock.yaml`, `tsconfig.json`,
547+
# `.github/workflows/ci.yml` — matches no path under `scripts/`, so a diff
548+
# confined to scripts/sync-template-versions.mjs skipped Test Core
549+
# ENTIRELY, and the vitest with it. `core` is still false on that diff — it
550+
# was never widened — but the `test` job now ORs in a SECOND filter output,
551+
# `scripts: ['scripts/**']`, which matches, so
552+
# `if: ... (core != 'false' || scripts != 'false')` resolves to RUN.
553+
# Re-measured against the merged filter with picomatch 2.3.1 — the version
554+
# dorny/paths-filter@v4's own package-lock.json resolves, NOT this repo's
555+
# 4.0.5, which is what the old text cited; the two agree on these globs, so
556+
# the wrong figure never produced a wrong verdict — `core=false`,
557+
# `scripts=true`. With the job running the rest of the chain follows:
558+
# `--union-into` is a step inside it, so it runs and unions
559+
# create-objectstack back in off its declared globs; `create-objectstack#test`
560+
# declares
561+
# `$TURBO_ROOT$/scripts/sync-template-versions.mjs` in turbo.json, so the
562+
# task hash moves and no cached green is replayed. PR CI is the first
563+
# signal now, not the queue build one merge later.
564+
#
565+
# Two halves of that argument are UNCHANGED, and they are why `--union-into`
566+
# has to exist at all: `turbo ls --affected` returns ZERO packages for that
567+
# diff (a package-local edit returns 1, so the probe is live), and the
568+
# `$TURBO_ROOT$` entry moves the task HASH, which is what stops a cached
569+
# green — a different thing from scheduling the job. Unchanged too is the
570+
# failure SHAPE the retired sentence pointed at — the merge queue as first
571+
# signal, one merge late, as batch collateral — which
572+
# check-cross-package-test-inputs.mjs's own ledger records twice. It is
573+
# simply no longer what happens to a diff confined to this rewriter.
574+
#
575+
# GAP 2 — THE RED PATHS. Open, and it carries this step alone now. This
576+
# workflow still carries no paths filter and no filter job, so the step
577+
# runs on every pull request, push and merge-queue build, unconditionally,
578+
# where the vitest's scheduling now rides a chain (filter output, then the
579+
# union's declaration, then the task hash). That is robustness; it is no
580+
# longer the reason the flag exists. The reason is that the cases below are
581+
# executed nowhere else.
559582
#
560583
# Only the --self-test runs here, for the same reason as the step above:
561584
# the rewriter has nothing to do on a green corpus. The cases are scoped to

0 commit comments

Comments
 (0)