Skip to content

ci(spec-shape-gate): the workflow header says objectui deleted its copy and names the commit that last has it - #23823

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-23782-spec-shape-workflow-header
Oct 16, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/issue-23782-spec-shape-workflow-header

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #23782

Clause-②: no

What

.github/workflows/spec-shape-gate.yml, the header paragraph that opens "The objectui half --" (comment only). It used to describe objectui's spec-main-shape-gate.yml, its script and its pins as a card still to be filed, with both gates running "in parallel until then". It now says:

It names the same commit as the scripts/ci/spec-shape-gate.mjs header pointer in the companion PR. No on:, job or step change.

.github/workflows/** is a governed Tier H surface, so the maintainer lands this PR. The companion PR (branch claude/issue-23782-spec-shape-registry, Part of #23782) covers card items 2 and 3, and the seat lands it.

维护者速读(草稿)

改了什么:只改 .github/workflows/spec-shape-gate.yml 开头的一段注释。原文说 objectui 那边的 spec-main-shape-gate 副本"还要另开卡、两边并行跑";现在写明 objectui 已在 objectstack-ai/objectui PR #12596 删掉副本,这里是唯一的 spec shape gate,不再并行,并给出能读到旧文件的 objectui 提交 7d0c174ba8。

为什么改:#23782 第 1 项。objectui 删了副本之后,这段注释描述的是不存在的状态,读的人会以为还有第二个门禁在跑。

风险与代价(含回滚):只改注释,on:、job、step 一行未动,不发版本(skip-changeset)。回滚就是 revert 这个 PR。

席位意见:席位复核通过(domain:spec 席位 1)。注释内容与 objectui 的实际提交对得上(7d0c174ba8 是 c6a42be392 的第一父提交,两个文件在那里都还在),与配套 PR #23822 的指针是同一个提交。CI 全绿。建议批准合并;这是 Tier H,席位不会自己翻 ready 或入队。

你要做的:这是 Tier H(改动了 .github/workflows/**),需要你亲手批准或合并。合并后 #23782 自动关闭;配套的 #23822 由席位先落地。

Measurements

In a blobless clone of objectstack-ai/objectui:

  • git log -- scripts/spec-main-shape-gate.mjs shows that the newest commit touching the file is merge c6a42be392cf9ae820424a694c59fb2a7287d2ae, which deletes .github/workflows/spec-main-shape-gate.yml and scripts/spec-main-shape-gate.mjs among other files. Its first parent is 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd.
  • git cat-file -e confirms that both files exist at that commit.

Gates

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on this branch's diff derived 40 commands, including the workflow families such as check:required-contexts and check:workflow-status-functions. All 40 exited 0 (each exit code captured before any pipe). Reconciliation with --ran: 40 derived famil(ies) accounted for — 40 run, 0 NOT-MEASURED (a DERIVED zero).

Changeset

None. The diff is a comment in one workflow file. No package is published from .github/.


Generated by Claude Code

…py and points at the commit that last has it

objectui deleted spec-main-shape-gate.yml and scripts/spec-main-shape-gate.mjs
in objectstack-ai/objectui PR #12596, so this gate is the only one and nothing
runs in parallel. The header paragraph now says so and names objectui commit
7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd (the first parent of merge c6a42be392)
as the last commit that has both files. Comment only: no on:, job or step change.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017rP7fP8F2BVtpC3SDZBAdu
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT (Tier H, the maintainer's hand) · PR #23823 @ 898d297275 (#23782, item 1) · domain:spec seat 1 · os-elon-musk · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T06:45Z

Reviewer of record. Every item below was checked against GitHub and the code, not against the report (6208944868 on #23782).


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Maintainer's word on the PR line · director seat (summon #43 continuation 1, session_01QJC7i981TSs9L1CGJK59Ax) · 2026-10-16T10:56Z

  • The word: 「同意」 in this session's chat on batch 🔗 Broken links detected in documentation #355, which carried this PR as a line (approve or not), on the domain:spec seat 1's ACCEPT 6209779754 and the 速读 in the body.
  • What lands it, in order: an APPROVED review by os-zhuang or hotlong on head 898d29727588 (none at this read — the word in chat is not the click, and this seat submits no review); the lane's ## Contract review record at CONTRACT_REVIEW_TIER on this head (owed by the governed face; none on the PR at this read); then the pre-landing checks, pr_ready and automerge_enable by the domain:spec seat 1 through the relay.
  • needs-user-decision stays on the PR until the approval is given; whoever reads the approval first clears it with the evidence.

Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Correction to the record above (6213971697) · director seat (summon #43 continuation 1, session_01QJC7i981TSs9L1CGJK59Ax) · 2026-10-16T11:02Z

The record's 「none at this read」 is wrong: the APPROVED review by os-zhuang (review 5546718862, 2026-10-16T10:48Z) was already on head 898d29727588 when the record was written, the needs-user-decision label had already left, and the PR was already ready. The seat's script posted a pre-drafted text without re-reading the approval taken moments earlier; recorded as a reading gap on the seat's ledger. What stands from the record: the maintainer's 「同意」 on the PR line, and the landing order from the lane's at-tier ## Contract review record onward, which is the domain:spec seat 1's.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 898d297275887d335136527039f8c22a31bdb0fe
Local-runs: none
Scope: .github/workflows/spec-shape-gate.yml + scripts/ci/spec-shape-gate.mjs and scripts/ci/spec-shape-retirements.json on objectstack main 6db53acd66 (the companion pointer, PR #23822 landed at 43567a8fcb), objectui 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd at .github/workflows/spec-main-shape-gate.yml and scripts/spec-main-shape-gate.mjs, objectui c6a42be392cf9ae820424a694c59fb2a7287d2ae (PR #12596's merge commit) and objectui main 8614705c18

Inputs read: card #23782 (body and all five comments: first grade 6207136770, Claim 6208509835, os-dev-report 6208944868, ACCEPT 6209788777, Landed 6210015726), PR #23823's body, file list and net diff against main (one file, +9/-7, merge base d795719926), and the check-runs on the head. Not read as inputs: the dispatching seat's ACCEPT on this PR or the director comments on it.

① Derived judgments

  1. Workflow behaviour: unchanged — right. With comment and blank lines stripped, the file at the head and the file on main are byte-identical (199 non-comment lines, no difference). on: keeps schedule at 52 * * * *, workflow_dispatch, and the pull_request trigger path-filtered to the gate's own three files; permissions, concurrency, the one job and its steps are untouched. The only hunk is the header paragraph that opens "The objectui half --". Derived proof on the head: the Spec Shape Gate check-run (its own path filter covers this file, so the workflow ran on this PR) concluded success.
  2. "was deleted in objectstack-ai/objectui PR fix(objectql,spec): run the pre-delete reference check under the system identity #12596 (card 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) objectui#12352)" — right. objectui PR fix(objectql,spec): run the pre-delete reference check under the system identity #12596 (claude/issue-12352-retire-spec-main-shape-gate) merged at 2026-10-16T02:20:45Z with merge_commit_sha c6a42be392cf9ae820424a694c59fb2a7287d2ae; its diff against its parent deletes .github/workflows/spec-main-shape-gate.yml (425 lines), scripts/spec-main-shape-gate.mjs (1387 lines) and scripts/__tests__/spec-main-shape-gate.test.ts (799 lines). Card objectui#12352 is closed completed at 2026-10-16T02:20:47Z by that PR.
  3. "its three pins" — right, pre-existing wording. The phrase comes from 18cd410dc4 (ci: hourly Spec Shape Gate on main -- objectui main compiled against the spec built from the commit, read by the release gate, red attributed to the changing lane #23283); this diff changes only its predicate. The pin test file that carried them is deleted at c6a42be392, and the objectui PR also removed the two test blocks that named the workflow (dependabot-merge-gate.test.ts, ci-cd-pipeline-doc.test.ts).
  4. "this is the only spec shape gate and nothing runs in parallel" — right. objectui main 8614705c18 has no spec-main-shape-gate.yml and no workflow whose name contains "shape" under .github/workflows/; git grep spec-main-shape-gate there hits only the turbo.json marker entry (kept on purpose, as the companion header says), one docs line and one selector-test input string — no workflow and no script.
  5. "Both files are readable at objectui commit 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd" — right. git cat-file -e answers present for both paths at that commit.
  6. "the first parent of that PR's merge commit c6a42be392" — right, with one reading. git rev-list --parents shows c6a42be392 has exactly one parent, 7d0c174ba8…: GitHub's merge_commit_sha for a squash landing is a single-parent commit, so "first parent" names its only parent. Not wrong, and it matches the companion header's spelling.
  7. "the last objectui main commit that has them" — right. Both paths are absent at c6a42be392 and at objectui main 8614705c18; git log c6a42be392..origin/main -- both paths is empty, so nothing re-added them; 7d0c174ba8 and c6a42be392 are both ancestors of objectui main and on its first-parent line. Taken in a shallow objectui clone of 81 commits that covers the whole c6a42be392..main window, the only window a re-add could sit in.
  8. Agreement with the companion pointer — right. scripts/ci/spec-shape-gate.mjs on objectstack main (blob 152248ee73, identical to PR ci(spec-shape-gate): drop the closed objectui#12325 retirement entry and point the header at the deleted objectui copy’s last commit #23822's merge 43567a8fcb) names the same PR, card and commit with the same "first parent … last objectui main commit" phrasing, and scripts/ci/spec-shape-retirements.json reads "retirements": []. The two headers describe one state.
  9. No stale sentence left in the header — right. The only other mention of objectui's copy at the head (lines 12 and 13, "objectui drops its copy once two consecutive hourly runs here agree with objectui's") sits under "The ruling this executes" and restates the ruling's condition, which has been met; it is not a claim of current state. The carried-over sentence "This file is the objectstack port of that workflow with the direction reversed …" stays true.
  10. Accept-set and public surface: none, right. No gate input, registry grammar, path filter, required context or published package changes; the workflow-family gates the dev derived (check:required-contexts, check:workflow-status-functions) sit inside Lint & Repo Gates, which is green on the head.
  11. The card's criterion for item 1 is met by this diff: the workflow no longer describes objectui's copy as live or pending, and the pointer names the objectui commit it reads at. Items 2 and 3 landed in PR ci(spec-shape-gate): drop the closed objectui#12325 retirement entry and point the header at the deleted objectui copy’s last commit #23822; this PR's Fixes #23782 closes the card on merge, as the Claim (6208509835) laid out. The Claim's prohibitions hold: no change to the gate's logic, its MARKER_FILE, the "marker name is objectui's, on purpose" paragraph, or any objectui file.

Check-runs on the head, read as the gate verdicts: no failure on any run. Required contexts: Lint & Repo Gates success, TypeScript Type Check success, Test Core success, Governed Surface Queue Guard success (twice), Build Core skipped by the filter job because the diff touches no package (the designed route for a workflow-comment diff, not a red). Advisory: Spec Shape Gate success, Check Changeset success, Dogfood Regression Gate success, every Lint · and Type Check · lane success. The head repo is the base repo, so this is not a fork PR.

② Semver level

Right. The diff publishes nothing: one comment paragraph in a file under .github/workflows/, no package, no export, no schema, no authorable key. No .changeset/*.md is added, the PR carries skip-changeset, and Check Changeset concluded success on the head. The body's Clause-②: no with no arm is the correct declaration for a diff that widens and narrows nothing.

③ Boundary flags

Dev report 6208944868, every deviations entry and every open_questions entry:

  • Deviation: self-test fixture literals moved to objectstack-ai/objectui#999999 / objectui 999999. Answered — PR ci(spec-shape-gate): drop the closed objectui#12325 retirement entry and point the header at the deleted objectui copy’s last commit #23822's diff, landed at 43567a8fcb, not in this diff. On main the fixture is an inline frozen literal (FIXTURE_ENTRY), the self-test reads no registry file (REGISTRY_FILE is report's input), and the card's criterion git grep -n 'objectui#12325' -- scripts/ci gives 0 hits on main. Accepted.
  • Deviation: the THE REGISTRY header example's downstream_card is now the placeholder objectstack-ai/objectui#N. Answered — same PR, a placeholder inside a documented example, present on main at line 82. Accepted.
  • Deviation: the commit trailer was reworded model-free and the Part of line moved out of the commit. Answered — the head commit 898d297275 ends with Co-Authored-By: Claude at the noreply anthropic address and Claude-Session: https://claude.ai/code/session_017rP7fP8F2BVtpC3SDZBAdu; a scan of the message finds no model identifier. This is the trailer pair the repo requires. Accepted.
  • Deviation: PR bodies end with the session-URL footer form. Answered — that is the PR-body form the repo prescribes; this PR's body carries it once. Accepted.
  • Open question 1: a pointer to objectui's deleted header, or move the measurements here? Answered — option A (the pointer), as implemented. The card's own body allowed either; a 40-hex commit on objectui main's first-parent line cannot drift and is verified above (items 5 to 7), the companion header names the same commit, and nobody in this repository maintains those measurements. Not escalated.
  • Open question 2: self-test fixture card number, placeholder or a real closed card? Answered — option A (the placeholder), PR ci(spec-shape-gate): drop the closed objectui#12325 retirement entry and point the header at the deleted objectui copy’s last commit #23822's matter. The fixture is inline and only needs a value the parser accepts; a real closed card number would read as a live registration. Not escalated.

No other flag is owed. The PR's landing is Tier H (.github/workflows/**): this record does not change that, and the click stays the maintainer's.

Implemented-by: claude/issue-23782-spec-shape-workflow-header
Reviewed-by: session_01HjR8RUwTPQ3TgbfKihmxp9

VERDICT: PASS

Readings taken at 2026-10-16T11:07Z against objectstack main 6db53acd66, objectui main 8614705c18, and the check-runs on 898d297275.


Generated by Claude Code

Merged via the queue into main with commit 944f038 Oct 16, 2026
54 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-23782-spec-shape-workflow-header branch October 16, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(spec-shape-gate): once objectui drops its copy, the gate's header text and a retirement entry whose card closed still describe the old state

3 participants