Skip to content

ci(spec-shape-gate): register the retirement of a page action row's own patch - #24485

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-24394-spec-shape-retirement
Oct 19, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-24394-spec-shape-retirement

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #24394
Clause-②: no

Aftercare for #24394. This PR adds one entry to the Spec Shape Gate's retirement registry, so the gate reads the retirement of a page action row's own patch (PR #24442, merge commit 69f342b92470e0b66aa9b17ccd2fc7db04e4e568) as known (registered: objectstack-ai/objectui#13022) instead of red. #24394 keeps its completed state, and this PR is only its registry half. objectstack-ai/objectui#13022 is the consumer card and is not addressed here.

What changed

scripts/ci/spec-shape-retirements.json gets one entry, in the grammar parseRegistry reads (scripts/ci/spec-shape-gate.mjs, THE REGISTRY):

  • retired: what retired (a page action row's own patch on action:button, action:icon and the action:group / action:menu member), and what objectui still authors (its action-button undo test sets patch on an action:button node).
  • objectstack_pr 24442, objectstack_commit 69f342b92470e0b66aa9b17ccd2fc7db04e4e568, downstream_card objectstack-ai/objectui#13022, registered_at 2026-10-19.
  • matches: one pattern. It names the objectui file, the TS code and the diagnostic's full first-line message, so it covers only the diagnostic it was measured from (the precedent is PR ci(spec-shape-gate): register the retirement of the page component's visibility and the view form's visibleOn #23920).
objectui file at code message
packages/components/src/renderers/action/__tests__/action-button-undoable-11168.test.tsx 64:14 TS2353 the block below
Object literal may only specify known properties, and 'status' does not exist in type '{ "[REMOVED] Key retired: run `os validate` for its migration.": never; }'.

The entry was written by a script from the annotation's own message bytes, not retyped. A JSON round-trip of the file is byte-identical, so the two existing entries are untouched. The diff is +14 / -0.

There is no change to the reader, its grammar, the workflow, or any objectui file.

Where the diagnostic was read

  • Source: PR ci(spec-shape-gate): install objectui through its pinned-build directories, packed from this commit #24469's own pull_request run, 39206747055, job 117911140691. Its head is eb080715a5. The objectstack commit under test is the merge ref faa8cd2403a0, whose parents are ff4840756d (main) and eb080715a5. That run reports exactly ONE new diagnostic, the one above. It was read from the job's check-run annotations through REST. The job log itself could not be downloaded here: its blob host refuses this container's proxy (CONNECT 403).
  • Attribution to 69f342b924: the compare API says faa8cd2403a0 is 8 ahead of and 0 behind 69f342b924, so it contains the retirement. Line 64 of that test is patch: { status: 'done' }, inside an action:button node's properties, and column 14 is status. The type it fails against is the retiredKey() tombstone that 69f342b924 put on the row patch (rowPatchRetired, packages/spec/src/ui/component.zod.ts). The test file read is from objectui main 4484a11041.
  • Nothing is hidden behind it. @object-ui/components runs type-check as tsc --noEmit && tsc -p tsconfig.test.json. Its tsconfig.json excludes **/__tests__/**, so only the second half compiles this file. That means the first half passed, and the second half reported its whole program, which is this one row. The annotations name no other package.
  • No scheduled run exists yet. No scheduled Spec Shape Gate run on main after 5eb5400309 existed when this PR was opened. The newest is 39207019385, on 31ce45c071, created 05:55Z. GitHub's scheduler is lagging across the repo: the newest scheduled run of any workflow was created at 06:25Z. This PR's own pull_request run compiles objectui main against this registry, and it is the first reading of the entry itself.
  • A correction to the request comment 6260806564: that comment quotes the message as starting 'status' does not exist in type. Its full first line starts Object literal may only specify known properties, and. The shorter quote would still have matched as a substring, but the full first line is what is registered here.

How it was proved locally (at dd4359bf47)

The gate's full objectui compile was not run here. Per the dispatch, objectui was not built. The reader was exercised offline through the CI step itself: node scripts/ci/spec-shape-gate.mjs report --log LOG --sha 69f342b92470e0b66aa9b17ccd2fc7db04e4e568 --status 2 --downstream DS --registry REG. Here DS is a synthetic objectui workspace mapping @object-ui/components to packages/components. LOG is one turbo-prefixed line rebuilt from the annotation's bytes: @object-ui/components:type-check: src/renderers/action/__tests__/action-button-undoable-11168.test.tsx(64,14): error TS2353: ....

leg registry log exit verdict line
the entry this branch the measured diagnostic 0 spec-shape-gate: 1 diagnostic(s), all registered retirements -- known, not red.
control: before e11ae4b6b0 (BASE) the measured diagnostic 1 1 NEW diagnostic(s) in 1 objectui file(s)
precision: another key this branch the same line with 'title' for 'status' 1 1 NEW diagnostic(s), and this entry is listed as matching nothing
precision: another file this branch the same message in action-icon-undoable.test.tsx 1 1 NEW diagnostic(s), and this entry is listed as matching nothing
  • node scripts/ci/spec-shape-gate.mjs --self-test: exit 0, spec-shape-gate --self-test: 60/60 passed across 7 batteries. The self-test runs on its own fixture, not on this file, so the table above is the proof for the entry.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 22 commands from this diff (1 path). All 22 exit 0, each code captured before any pipe. Among them, pnpm check:spec-shape-gate reports 60/60, pnpm check:nul-bytes reports OK (scanned 12305 text file(s) ...), and pnpm check:cross-package-test-inputs reports OK. --ran then reports 22 derived, 22 run, 0 NOT-MEASURED, 0 UNRUN.

Changeset

No changeset. scripts/ci/ sits under the private root package (@objectstack/spec-monorepo, private: true). No package.json under scripts/ ships it, and only the gate's script and workflow read the registry. skip-changeset applies.

Acceptance notes

  • The two existing entries (objectui#12654, objectui#12711) are listed as matching nothing in the offline legs above. That follows from the synthetic log, which holds one row. It says nothing about the real run, and this PR does not judge them.

Generated by Claude Code

…wn patch

One entry in scripts/ci/spec-shape-retirements.json so the Spec Shape
Gate reads objectui's action-button undo test, which still authors
`patch` on an `action:button` node, as a known retirement instead of a
new break. The pattern names the objectui file, TS2353 and the
diagnostic's full first-line message, read from the check-run
annotation of job 117911140691.

Claude-Session: https://claude.ai/code/session_01WnW7HvfnfHbLg1fpkHX3Mu
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 19, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:spec seat 1 · os-warren · session session_01WnW7HvfnfHbLg1fpkHX3Mu · 2026-10-19T07:21Z · head dd4359bf47 · card #24394 (aftercare claim 6261315131; asked by domain:devx seat 1, 6260806564).


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

2 participants