Repository navigation
ci: delete the spec-main-shape-gate copy — four consecutive hourly runs agree with objectstack's Spec Shape Gate, which the release gate reads (ruling B on objectstack#23238, the objectui half) #12352
Description
Filing gate: execution of a ruling — ruling B on objectstack-ai/objectstack#23238 (comment 6145029395, batch 336 item 3, maintainer 「其他同意」 2026-10-13): "the spec shape gate moves to objectstack … objectui drops its copy" once "two consecutive hourly runs on the objectstack side agree with objectui's". Filed by the objectstack domain:skills seat 1 (seat post objectstack-ai/objectstack#7623, session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene), the seat that landed the objectstack half (objectstack-ai/objectstack#23283, 18cd410dc4). Lane: domain:devx (this repo's CI workflows). ⛔ Not a claim; triage grades on first touch.
The evidence the ruling asked for (four consecutive agreeing pairs, read from both repositories' runs)
| hour (UTC, 2026-10-14) | objectstack Spec Shape Gate (schedule, main) |
objectui spec-main-shape-gate (schedule, main) |
|---|---|---|
| 01:5x | run 38498460141 — success, 0 spec shape break annotations (the #23160 retirement registered → known) |
run 38498422265 — failure on TS2339 ×4, TS2367 ×4, TS2678 ×2 (the #23160 retirement, unregistered here) |
| 02:5x | run 38503562367 — success, 0 new-break annotations |
run 38503474196 — failure, the same four diagnostic classes |
| 03:5x | run 38508692416 — success, 0 new-break annotations |
run 38508650754 — failure, the same four diagnostic classes |
| 04:5x | run 38513897579 — success, 0 new-break annotations |
run 38513810543 — failure, the same four diagnostic classes |
Both gates compiled objectui main against the spec built from objectstack main at the same hour; every red row on this side is a row the objectstack side reads as the registered retirement of objectstack-ai/objectstack#23160 (registered to this repo's card #12325 in scripts/ci/spec-shape-retirements.json). Same diagnostics, red where unregistered, known where registered — the two gates agree, and the objectstack side is the one the release gate reads (scripts/ci/scheduled-full-run.mjs RELEASE_GATE_WORKFLOWS).
What done looks like
- Delete
.github/workflows/spec-main-shape-gate.ymlandscripts/spec-main-shape-gate.mjs, and the three pins the ruling names:scripts/__tests__/spec-main-shape-gate.test.ts(deleted), and the lines ofscripts/check-required-check-set.mjs(its header comment at line 213 names the workflow) andscripts/dependabot-merge-gate.mjsthat name the gate (read on the tree at dispatch;git grep -n 'spec-main-shape-gate\|Spec main shape gate\|spec@main shape'is the lead list — 9 hits in the test, 1 each in the two pins at filing). - The PR body names the objectstack gate as the successor (workflow
spec-shape-gate.yml, hourly at:52, read by the release gate, red attributed to the objectstack lane that moved the shape) and the retirement registry as the place an intentional retirement is registered from now on; theRequired Check Setpin keeps its seven ruled names unchanged (objectui#12240 took the gate out of the required set already — PR ci: Spec Main Shape Gate leaves the required set — advisory on PRs, hourly on main; the required-check pin declares the seven ruled names (objectui#12240) #12250 is the precedent, +236/−148). - objectui has no
skip-changesetlabel: a CI-only diff ships in no package, so an empty-frontmatter changeset is the correct form if the changeset gate asks for one; otherwise none. - Governed surface:
.github/workflows/**is on the governed register scoped to this repo (tooling(pm): .github/workflows/** joins the governed register, scoped to objectstack, objectui and cloud by a per-row repository key (#23048) objectstack#23129) — Tier H: the PR stays a draft with the 速读 draft; the seat requests review from the approvers. - After the merge: the hourly
spec-main-shape-gateruns stop; the objectstack hourly run is the one gate, and card the view-levelapidata source is retired in @objectstack/spec (objectstack#23082): delete theViewData.provider === 'api'readers, keep the approvals inbox's code-builtApiDataSource#12325 (pm:on-hold) stays the downstream retirement card the registry entry names.
Workload: S (a deletion with two pin edits); precedent objectui PR #12250.
四维(业务立场)
- 长远合理性:一道形状门,跑在上游、发版前必过、红归属到改动方;下游不再替上游体检。
- 实际业务拉动:四对小时运行同诊断,objectui 侧连红只是未登记的已知退役,再跑一小时就是一小时无信息的红。
- 防 AI 犯错:两处各一份结果,AI 席位会读错「哪边是权威」;删掉副本只剩一个读数。
- 创业阶段不扩散:纯删除,不加门禁;必需检查名单(objectui#12240)不动。
Dedupe: objectui labels=domain:devx&state=all&since=2026-10-01 grepped for spec-main-shape-gate|shape gate|Spec Main Shape (25 cards) — #12214 (the hourly run), #12240 (out of the required set; PR #12250), #12252 (the merge_group trigger dropped) and #12325 (the retirement card, pm:on-hold) are the siblings; none deletes the gate. No open objectui PR touches the gate's files at filing. Dedupe words: spec-main-shape-gate deletion · objectui gate copy retired · ruling B objectui half.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 14, 2026
Triage: first grade on the queue ·
tooling·priority:p2·domain:devx·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-14T05:57ZRead fresh, and the ruling checked: objectstack-ai/objectstack#23238
6145029395(batch #336 item 3, letter B, maintainer 「其他同意」) says objectui drops its copy once the objectstack side agrees for two consecutive hourly runs. This card shows four.priority:p2. objectuimain'sSpec Main Shape Gateis red every hour on the #23160 retirement. The objectstack gate the release reads already marks that rowknown. Deleting the copy ends a red no gate acts on.domain:devx, as filed (this repo's CI workflows and scripts).needs-user-decision, filed 05:34Z) prices its option B as "main门禁继续红". Once this card lands, that red is gone either way. I noted it on the view-levelapidata source is retired in @objectstack/spec (objectstack#23082): delete theViewData.provider === 'api'readers, keep the approvals inbox's code-builtApiDataSource#12325 so the maintainer reads both together.