Repository navigation
ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) - #12262
Conversation
…t is out of the required set (objectui#12252) Executes the follow-up the maintainer's ruling B on objectui#12240 left open (ACCEPT 6125070195, answer B). The ruleset no longer lists the context, so a verdict on a queue build is read by nobody while every merge group pays a runner for it. pull_request (the advisory signal a human reads), the hourly schedule on main and workflow_dispatch stay. - spec-main-shape-gate.yml: `merge_group` leaves `on:`; the header's bullet on it, the artifact-trust sentence, and the concurrency and timeout-minutes comments that reasoned about queue builds follow. - spec-main-shape-gate.test.ts: the trigger pin becomes its inverse, "re-subscribe merge_group before re-enrolling". The derived floor in merge-queue-reporting.test.ts already refuses a required name whose workflow lacks the trigger. - ci-cd-pipeline.md: only the sentences that said the gate runs on the queue. Nothing the gate verifies changes. Claude-Session: https://claude.ai/code/session_01LqNgdPZB2Jnr5HpGbaqLeB Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqNgdPZB2Jnr5HpGbaqLeB Co-authored-by: Claude <noreply@anthropic.com>
维护者速读(终稿)· PR #12262 · 席位已对照 diff 校正,2026-10-12T14:50Z改了什么: 为什么改:你改 ruleset 后它已不在必需名单(dev 开工前读到七个名字,没有它);队列上跑出来的结论没人看,却每个合并组占一台 runner 13 分钟,一天约 440 runner 分钟(公共仓不计费,占的是并发容量)。这是 objectui#12240 裁决 B 的收尾一步,顺序是先合并、再改 ruleset、最后去触发。 风险与代价(含回滚):风险很小。唯一的坑是将来若要把它重新设为必需,必须先把 席位意见:建议批准。队列上少一个无人读的 13 分钟作业,两个方向的误操作都有测试拦着。 你要做的:Approve;席位随后入队(按两速制它排在 #12256 主红修复之后,除非你像 #12251 那样亲自入队)。合并后席位读三个合并组,确认没有 |
|
|
…setup program imports (objectui#12272) Since objectui#12222 a pull request or queue build type-checks only the affected set, `pnpm type-check --filter=...[BASE]`. A change outside every package selects zero packages, so nothing built and the root step `pnpm type-check:vitest-setup` failed to resolve the five workspace packages the root `vitest.setup.*` files import (four TS2882, one TS2307; PR #12262). A non-empty affected set can lack them too: a change to `packages/plugin-ai` alone leaves fields, plugin-dashboard and plugin-grid unbuilt. A new step between `Run type-check` and the root program, on the affected speed only, runs `turbo run build` for those packages (replayed from the restored cache when unchanged). Which packages is read on every run out of `tsconfig.vitest-setup.json`'s `paths` by `scripts/select-type-check-scope.mjs --root-builds`, never copied. Adding the names to the type-check filter instead was measured and does not work: that task waits on `^build` and builds no named package's own declarations. `push` and `schedule` are unchanged. Claude-Session: https://claude.ai/code/session_01LqNgdPZB2Jnr5HpGbaqLeB Co-authored-by: Claude <noreply@anthropic.com>
Fixes #12252
Drops the
merge_grouptrigger from.github/workflows/spec-main-shape-gate.ymlnow thatSpec Main Shape Gateis no longer a required context. The ruling is the maintainer's answer B on objectui#12240 (ACCEPT 6125070195); this is the one-trigger follow-up it left open, sequenced after the ruleset edit and after PR #12250 merged.What changed
.github/workflows/spec-main-shape-gate.yml:merge_groupleaveson:.pull_request(the advisory signal a human reads), the hourlyscheduleonmain(48 * * * *) andworkflow_dispatchstay. The comments that reasoned about queue builds follow: the header's bullet onmerge_group, theconcurrencycomment, thetimeout-minutescomment, and the one header sentence that listed a queue build beside a pull request as a run of its own branch's YAML.scripts/__tests__/spec-main-shape-gate.test.ts: the pin "subscribes merge_group, so a maintainer can enrol it without stalling the queue" becomes its inverse, "does not subscribe merge_group - re-subscribe merge_group before re-enrolling the context". Same one-line comment fix as the workflow on the artifact-trust assertion.content/docs/guide/ci-cd-pipeline.md: only the sentences that said the gate runs on the queue: the inventory row's trigger cell, the section's trigger line, the artifact-trust sentence, the sentence naming what the test file pins, and the last bullet of "How it became a required check, and how it left the set".Nothing the gate verifies changes. Not touched: the gate's steps, the anti-false-green marker, the schedule, the seven-name pin in
scripts/check-required-check-set.mjs,scripts/dependabot-merge-gate.mjs,ci.yml,AGENTS.md, the queue guard. No overlap with the in-flight PRs onci.ymlandturbo.json(objectui#12222) or onAGENTS.mdand the queue guard (objectui#12255);origin/mainwas merged at10aba37dbefore this PR was opened and none of its files touch this surface.The precondition, read live before the first commit
Ruleset 11776024, read at 2026-10-12T14:19:18Z with
gh api repos/objectstack-ai/objectui/rulesets/11776024 --jq '[.rules[] | select(.type=="required_status_checks") | .parameters.required_status_checks[].context]':Seven names;
Spec Main Shape Gateis not listed, so dropping the trigger cannot stall a queue build.node scripts/check-required-check-set.mjsrun bare could not take its own reading from this container (HTTP 401 through the agent proxy, exit 2, which the script says is not a pass). The same script fed the livegh api repos/objectstack-ai/objectui/rules/branches/mainanswer through--fixtureread:INTACT - 1 pinned and 6 watched context(s) all present (7 required context(s) read), exit 0.Verification (head
17033fd1)spec-main-shape-gate,merge-queue-reporting,ci-cd-pipeline-doc,check-required-check-set,dependabot-merge-gate,check-merge-queue-head): 6 files, 252 passed,VERDICT command-exit 0under the verify lock. The count equals the pre-change count, since one pin was rewritten in place.pnpm type-check:scripts:VERDICT command-exit 0;tsc -p tsconfig.scripts.json --listFilesOnlylists the edited test file.merge_group,pull_request,schedule,workflow_dispatch), head has three (pull_request,schedule,workflow_dispatch); the parsed file minuson:(jobs, permissions, concurrency, name) is identical to base's; the cron and thepull_requestbranches are unchanged.check-doc-links,check-control-bytes,check-new-cross-file-line-citations(0 new),check-action-ref-convention: exit 0 each. Control-bytegrep -Pover the three edited files: no match.check-governed-queue-guard --testover the three paths: NOT GOVERNED.check-changeset-presence: no changeset owed (no released package source moved). Targeted eslint over the edited test file: 0 errors, 0 warnings.pnpm lint(CI owns it; the targeted run above is the only local reading) andactionlint(not installed; the YAML parse above stands in).Ablation (each leg committed first, run through the ablation tool: anchor hit once, blob changed, restore proven by blob equal to HEAD and an empty
git diff HEAD; no build or dist involved, root scripts)REQUIRED_CONTEXTSwithout the trigger:merge-queue-reporting.test.ts1 failed, 17 passed. The failing assertion is "the merge_group floor derives itself from REQUIRED_CONTEXTS (finding(ci):MUST_SUBSCRIBE_MERGE_GROUPnames 6 workflows but 8 unfiltered blocking checks exist — the two doc gates subscribemerge_grouptoday with nothing asserting they keep doing so #6160) > requires merge_group of every workflow that produces a required context":These workflows produce a context REQUIRED_CONTEXTS declares blocking, but do not subscribe merge_group: - spec-main-shape-gate.yml (produces Spec Main Shape Gate), expected [ 'spec-main-shape-gate.yml' ] to deeply equal []. Direction observed: red, as predicted. The derived floor refuses the half-restored state on its own.spec-main-shape-gate.test.ts1 failed, 35 passed; the new pin reds with its message, expected true to be false.merge-queue-reporting.test.tspassed) and only the new pin reds (1 failed, 53 passed over the two files). So A's red is attributable to the missing trigger and nothing else.NOT MEASURED, owed after landing
The card's last acceptance item, "three merge groups after landing carry no Spec Main Shape Gate check run", can only be read once this lands. It is the seat's reading, not a local one. On this PR itself,
Spec Main Shape Gatekeepspull_requestand should still post its verdict here.维护者速读(草稿)
Spec Main Shape Gate这条 workflow 不再订阅合并队列(merge_group),只保留 PR 上的提示性运行、main上每小时一次的完整运行和手动触发。同时改了对应的测试钉子和 CI 文档里「在队列上运行」的几句话。merge_group订阅回来再改 ruleset,否则队列会卡在 60 分钟超时;测试钉子和merge-queue-reporting的派生下限都会在顺序错了时变红提醒。回滚就是把merge_group那两行加回on:,并把测试里的钉子翻回去。.github/workflows/**的约定等你批准后再由席位入队。合并后请席位读三个合并组,确认其中没有Spec Main Shape Gate的检查运行。Generated by Claude Code