You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filed by the skills lane seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:1xZ, and dispatched by the same seat on that direction. Surface owner stays domain:devx.
Authority (maintainer, verbatim, live PM chat 2026-09-07): the question 「我想的是测试会不会太多,是否都是必要的,是不是应该砍,每次修改都要完整的测试吗」, then on the seat's three-part answer (A queue runs the affected set · B tiers + slowest-files report · C contract obligations narrowed): 「同意,这几个都处理,你现在就负责派发」. This card is part A.
What
merge_group runs of the CI workflow compute the Test Core package set with turbo's --affected against the merge group's base, unioned with the same cross-package scans the pull_request branch already applies, instead of the full package list. push runs on main keep the full list: they gate nobody and they are the ground truth the shard-timings refresh reads.
Measured
.github/workflows/ci.yml, step "Compute this shard's package set": the --affected branch is reachable only on pull_request; push and merge_group take the full-list else path by design (the step's own comment says so). Cross-package scans are unioned only on the pull_request branch.
Cost: a full Test Core run is ~85–90 minutes of test compute (six shards on main at 23:22Z / 00:15Z / 00:45Z: 12.1 / 7.5 / 10.8 / 9.8 / 27.7 / 22.1 min and similar). The four governed PRs merged at 01:18Z touched only .claude/** and still ran 15–20-minute shards in their queue builds. At ~120 merges a day the queue spends on the order of 150 machine-hours a day verifying packages the merge did not touch.
The affected-set machinery on PRs is measured to work: docs-only PRs run six ~1-minute shards.
Ruling
On merge_group, TURBO_SCM_BASE is the group's base (github.event.merge_group.base_sha), and the changed-file list for the cross-package scan union is git diff --name-only BASE_SHA HEAD. Any failure to resolve the base or to run the scans falls back to the full list, loudly, exactly as the PR branch does.
Clause-②: yes — the required Test Core check verifies a narrower set at merge time. Contract tier.
Acceptance
The workflow file's own gates (check:workflow-* families derived by dispatch-gates --commands) green; any script touched carries its self-test.
Because a merge_group branch cannot run before the PR enters the queue, the PR body must carry a local dry-run of the step's shell with the event fields exported for three synthetic groups: a leaf package change (selects itself + consumers), a packages/spec change (selects the consumer closure), a docs-only group (selects nothing, aggregator verdict green). The PR's own first merge-group run is the live proof; the seat reads its selected set and the Test Core verdict before the card closes.
Filed by the skills lane seat (session
session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:1xZ, and dispatched by the same seat on that direction. Surface owner staysdomain:devx.Authority (maintainer, verbatim, live PM chat 2026-09-07): the question 「我想的是测试会不会太多,是否都是必要的,是不是应该砍,每次修改都要完整的测试吗」, then on the seat's three-part answer (A queue runs the affected set · B tiers + slowest-files report · C contract obligations narrowed): 「同意,这几个都处理,你现在就负责派发」. This card is part A.
What
merge_groupruns of the CI workflow compute the Test Core package set with turbo's--affectedagainst the merge group's base, unioned with the same cross-package scans thepull_requestbranch already applies, instead of the full package list.pushruns onmainkeep the full list: they gate nobody and they are the ground truth the shard-timings refresh reads.Measured
.github/workflows/ci.yml, step "Compute this shard's package set": the--affectedbranch is reachable only onpull_request;pushandmerge_grouptake the full-listelsepath by design (the step's own comment says so). Cross-package scans are unioned only on thepull_requestbranch.mainat 23:22Z / 00:15Z / 00:45Z: 12.1 / 7.5 / 10.8 / 9.8 / 27.7 / 22.1 min and similar). The four governed PRs merged at 01:18Z touched only.claude/**and still ran 15–20-minute shards in their queue builds. At ~120 merges a day the queue spends on the order of 150 machine-hours a day verifying packages the merge did not touch.Ruling
merge_group,TURBO_SCM_BASEis the group's base (github.event.merge_group.base_sha), and the changed-file list for the cross-package scan union isgit diff --name-only BASE_SHA HEAD. Any failure to resolve the base or to run the scans falls back to the full list, loudly, exactly as the PR branch does.merge_groupis legitimate (a docs-only group has nothing to test) and must produce an honest green through the existing "no packages on this shard" path and the attestation roster; it is not the [finding] Nothing distinguishes "zero packages affected" from "the affected-set computation silently produced nothing" — an emptychanged-files.txtis never checked #10057 case, which is PR-only. State this in the step's comment and prove it (see acceptance).pushonmain: unchanged, full list.Test Corecheck verifies a narrower set at merge time. Contract tier.Acceptance
check:workflow-*families derived bydispatch-gates --commands) green; any script touched carries its self-test.merge_groupbranch cannot run before the PR enters the queue, the PR body must carry a local dry-run of the step's shell with the event fields exported for three synthetic groups: a leaf package change (selects itself + consumers), apackages/specchange (selects the consumer closure), a docs-only group (selects nothing, aggregator verdict green). The PR's own first merge-group run is the live proof; the seat reads its selected set and theTest Coreverdict before the card closes.Test Core (N/6)timeout-minutes 30 → 45 while #16173's shard balance is unfixed — and un-censor the readings that #16173 needs #16445 own those).Refs #16173.
Generated by Claude Code