Skip to content

ci(lint): Lint & Repo Gates is the merge-group critical path after #16453; run each gate family only on the paths it reads (PM dispatch-gates self-test 518 s first) #16496

Description

@claude

Filed by the skills lane seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve), 2026-09-07T04:3xZ, from the live reading of #16453's own merge-group run, under the maintainer's direction to dispatch every feasible queue-speed optimisation. Surface owner stays domain:devx.

Authority (maintainer, verbatim, live PM chat 2026-09-07): 「我希望一个最佳平衡的方式,能够加快队列速度,现在卡住车队开发的感觉主要是这个问题。」 → 「同意你的建议,你负责执行派发所有可行的优化」.

What

Lint & Repo Gates runs, on a merge group, only the gate families whose files the group touches, so that a group which does not touch scripts/pm/ does not pay the PM dispatch-gates self-test. After #16453 this job is the merge queue's critical path.

Measured (the merge group of PR #16471, queue branch gh-readonly-queue/main/pr-16471-98c7ab62…, 2026-09-07)

  • Enqueued 03:37:21Z, merged 04:04:38Z: 27.3 minutes in the queue.
  • CI run 34080270477: 03:37:25Z to 03:48:00Z (10.6 minutes). Test Core under the affected set: shards 4/6, 5/6 and 6/6 at 52 to 53 s, 3/6 at 88 s, 2/6 at 253 s, 1/6 at 304 s; the aggregate green at 03:43:26Z. Before ci: the merge queue runs the affected package set, not the full list (maintainer-directed, part A of the test-cost programme) #16453 the same shards 5/6 measured 25 to 30 minutes on the full list.
  • Lint & Type Check run 34080270423: 03:37:25Z to 04:00:43Z (23.3 minutes), the group's critical path. Its Lint & Repo Gates job ran 1394 s: PM dispatch-gates self-test 518 s, Engine query-options erasure ratchet 112 s, Verify-lock entry-point self-test 100 s, ESLint 69 s, and roughly 595 s spread over steps under 60 s each. Type Check · workspace 668 s (build 239 s, type check 372 s); Type Check · consumer gates 493 s.
  • None of these steps reads the group's file surface: a docs-only or tooling-only group pays the full battery. The PM dispatch-gates self-test exercises scripts/pm/** and .claude/** only.

Ruling

  1. On merge_group and pull_request, each gate family in Lint & Repo Gates runs only when the changed paths touch the files it reads. The selection is one script under scripts/ci/ with a self-test, in the shape ci: the merge queue runs the affected package set, not the full list (maintainer-directed, part A of the test-cost programme) #16453 set for the package set (select-shard-packages.sh), and the job prints the families it ran and the families it skipped. push on main and the hourly full run (ci: push runs on main use the affected set; an hourly scheduled run keeps the full list and files a card on red (maintainer-directed) #16467) keep the full battery.
  2. First family: PM dispatch-gates self-test (518 s), keyed to scripts/pm/**, .claude/**, AGENTS.md, CLAUDE.md, .github/workflows/**, package.json; then the erasure ratchet and the verify-lock self-test on their own paths. ESLint is not scoped.
  3. Measure first: list every step of the job with its median over the last ten merge-group runs and the paths it reads, before writing the selector. A step whose reads cannot be named is not scoped.
  4. Clause-②: yes. The required check verifies fewer families at merge time. Contract tier; the family list is part of the PR body.

Acceptance

Refs #16453, #16467.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions