Repository navigation
ci(ui-merge): retire the two-repo pin gates — Spec Shape Gate, Console Pin Gate, prerelease-pin-watch - #25827
Conversation
…watch (#25697) Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi Co-Authored-By: Claude <noreply@anthropic.com>
… Console Pin Gate expected-skip row Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi Co-Authored-By: Claude <noreply@anthropic.com>
… prose tense for retired jobs Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi Co-Authored-By: Claude <noreply@anthropic.com>
… docs and comments AGENTS.md drops Console Pin Gate from the full-battery list and re-points the sibling-removal rule at Type Check UI; docs/releases-maintenance.md moves the pin-check paragraph to the past tense and reads the release gate roster as CI + Lint; workflow and script comments that named the retired gates as live now say they retired (#25697). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H835wAyqCCeF7jiYq7XSxi
|
PR B sitting verification · 2026-10-25T23:57Z · head
Local verdict: clean.
CI at this head, read once: Generated by Claude Code |
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
Part of #25697 (item 6, PR B). PR A (#25710) carried items 1 to 5 and is merged; the card stays open for the epic PM, who hands this PR to the cutover.
Blocked-by: #25752 (cutover PR first)
Part of objectstack#25677
Clause-②: no
Metadata-protocol: none
What this retires
Once
ui/lives in this repository, the gates that proved the objectui pin from the outside have nothing left to prove. This PR deletes them:.github/workflows/spec-shape-gate.yml(Spec Shape Gate), withscripts/ci/spec-shape-gate.mjsandscripts/ci/spec-shape-retirements.json.console-pinjob (Console Pin Gate) inci.yml, and theconsolelist and output of itsfilterjob..github/workflows/prerelease-pin-watch.yml(Stable release watch).Spec Shape Gaterow ofRELEASE_GATE_WORKFLOWSinscripts/ci/scheduled-full-run.mjs. The release gate now readsCIandLint & Type Check.release.ymlandcut-rc.ymlhave no read of their own (measured); both reach the roster only throughscheduled-full-run.mjs --release-gate.What replaces them is already on
mainfrom PR A:Type Check UIandBuild & E2E UIcompile and build the Console fromui/in the PR that changes one of the seven packages objectui installs (ui_consumersfilter).The console scripts (
build-console.sh,check-console-sha.mjs,check-console-injection.mjs,console-spec-probes.mjs,assert-console-spec-injection.mjs) stay, as the order says. 4a #25745 deletes them with the pin.Hit-class table
Census:
git grep -n -E 'spec-shape-gate|Spec Shape Gate|spec-shape-retirements|prerelease-pin-watch|Console Pin Gate|console-pin'at the base52f3f518e1gives 169 hits in 33 files. Also posted on the card: #25697 (comment)spec-shape-gate.yml(15),scripts/ci/spec-shape-gate.mjs(21),scripts/ci/spec-shape-retirements.json(1),prerelease-pin-watch.yml(6)ci.ymljob and filterci.yml(7)console-pinjob,consolefilter list and output deleted; the comments that pointed at them re-wordedscripts/ci/scheduled-full-run.mjs(19)check-ci-filter-parity.mjs(5),check-expected-skips.mjs(5),dispatch-gates.self-test.mjs(20),dispatch-gates.mjs(7)consolesubject retired with its battery (floor 10 to 9); theConsole Pin Gateexpected-skip row removed and its recorded runs re-spelled to the live roster; the live-tree job-filter cases re-pointed atBuild Core; synthetic specimens kept; tense fixesscripts/check-prerelease-pin-watch.mjs(15),package.json(2)check:spec-shape-gateandcheck:prerelease-pinsaliases (deviation 1)AGENTS.md(2),docs/releases-maintenance.md(2)cut-rc.yml:358,docs-deploy.yml,lint.yml(2),release-coverage-patrol.yml,release.yml:1510,check-release-section-coverage.mjs(2),check-self-test-workflow-commands.mjs,check-vendor-version-stamps.mjs(2),check-required-contexts.mjsrelease.yml:1874and:1917,cut-rc.yml:383,packages/console/README.md:54,check-console-injection.mjs(6)docs/audits/*(5),scripts/docs-audit/README.md,scripts/fixtures/merge-queue-triage/*.json(2), thefleet-write/validate.mjsfixture,packages/spec/liveness/dashboard.json:146,pnpm-workspace.yaml:184, the #9533 tombstone incheck-required-contexts.mjsTier H prose touched
AGENTS.mdline 533: dropsConsole Pin Gatefrom the list of full-battery jobs.AGENTS.mdlines 1103 to 1104: the sibling-removal rule named the full battery'sConsole Pin Gateas what reds a breaking removal onmain. It now namesType Check UI, which compiles the Console underui/in the PR that makes the removal. Line count unchanged (1117, the ratchet ceiling).docs/releases-maintenance.md: the "What still checks the pin" paragraph is now "What used to check the pin", and the release-gate roster readsCI,Lint & Type Check.No ADR is touched.
Required contexts that vanish
None. Read at the time of this PR: the
mainruleset requiresTypeScript Type Check,Test Core,Build Core,Lint & Repo Gates,Governed Surface Queue Guard, and classic branch protection requiresTypeScript Type Check,Build Core,Test Core,Dogfood Regression Gate. NeitherSpec Shape GatenorConsole Pin Gateis in either list, so the sitting needs no ruleset change for this PR.node scripts/check-required-contexts.mjs --verify-required-setexits 0: the registry and the live set agree in both directions.Landing with 4a #25745
This PR and 4a are two halves of one change and land as a batch, 4a first:
mainalone this PR is red in one place. The order keepscheck-console-injection.mjsandconsole-spec-probes.mjsuntil 4a and deletesConsole Pin Gate, their only PR-time runner. Two live-tree cases of the dispatch-gates fast tier then red: the silent load-break paircheck:console-injectionfromconsole-spec-probes.mjs, and thepull_request-only narrowing of the scheduled-only zero. That step belongs toLint & Repo Gates. With 4a merged first, the same tier passes 1917 of 1917 (verification record below). Neither case was weakened.package.json(both PRs delete thecheck:prerelease-pinsalias) and one comment inscripts/pm/dispatch-gates.self-test.mjsnear line 1006. Take themainside (4a) in both; checked on the local merge below.Deviations from the order
scripts/check-prerelease-pin-watch.mjsand itscheck:prerelease-pinsalias are deleted here as well. Once the workflow is gone the script has no CI caller andcheck-self-test-wiredreds the orphan. 4a deletes the same file, so the two deletions agree.prerelease-pin-watch.ymldoes not watch the objectui pin. It watched better-auth prerelease overrides inpnpm-workspace.yaml, and its watch list was already empty. It is deleted as ordered.check-ci-filter-parity.mjs,check-expected-skips.mjs,dispatch-gates.self-test.mjs. Each keeps its assertion shape; nothing is skipped or loosened.Verification record
Head
1776dbd798a4ebde5abc974e5b8d01c6db3fd3ef, base52f3f518e1.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack): 86 derived, 82 run. 81 exit 0.pnpm check:pm-dispatch-gatesexits 1 (the two cases above, 2 of 1917). 4 exit 3, prerequisite not met, because they need every workspace dist built:check:dts-closure,check:dual-build-cjs-loads,check:lean-entry-closure,check:sourcemap-no-sources-content.Build Coreruns them on this PR.dispatch-gates.mjs --ran: 86 accounted, 0 unrun.node scripts/ci/scheduled-full-run.mjs --self-test0,pnpm check:shard-attestation0,pnpm --filter @objectstack/spec check:liveness0,check-required-contexts.mjs --verify-required-set0.mainabebc4e14d+ 4a4ac569dc00+ this PR, local, conflicts resolved to themainside):pnpm check:pm-dispatch-gatesexit 0 (fast tier 1917 of 1917). The same 86-command sweep on the merged tree: 80 exit 0, 6 exit 3 (prerequisite not met: the throwaway worktree has no package dists or package-level installs, socheck:doc-formula-expressionsandcheck:type-check-debtjoin the four above; both exit 0 on this branch), no finding.维护者速读(草稿)
改了什么:删掉三个只为「跨仓库钉版本」存在的门禁:Spec Shape Gate(每小时拉 objectui main 编译一遍)、Console Pin Gate(按
.objectui-sha克隆 objectui 构建控制台)、prerelease-pin-watch(盯 better-auth 预发布版本,清单早已为空)。发布前的全量电池名单从三个工作流减为CI与Lint & Type Check。AGENTS.md 两处、发布维护文档一处把它们改为过去时。为什么改:objectui 合入
ui/之后,控制台在同一个 PR 里由Type Check UI、Build & E2E UI编译构建,规格一改就当场验证,不再需要隔一小时去克隆另一个仓库。留着旧门禁只会对着已不存在的钉版本报错。风险与代价(含回滚):不影响必需检查(这三个都不在必需集合里)。必须在 4a #25745 之后合入:单独合入时
Lint & Repo Gates会因控制台脚本失去 PR 期运行者而红两条,4a 删除这些脚本后即消失。回滚就是还原此 PR,三个工作流与脚本原样恢复。席位意见:
你要做的:切换当天在 4a 之后合入本 PR(Tier H,需你批准)。规则集无需改动。
Generated by Claude Code