Repository navigation
aftercare(ui-merge): move the 65 travelled ui/.changeset files into the root .changeset so the first post-cutover Version PR bumps @object-ui/* (parent #25677, before #25753) #25831
Description
Filing gate ③ + ④: post-cutover card of the epic #25677 (pm:epic; epic PM session_01RSDL3SFtJaKzcymvCD8RsU). Part of #25677. Blocked-by: #25752 (the cutover PR #25825 must be on main first). Must land before the first post-cutover Version PR is merged (#25753 scope 1), so it is dispatched the moment the cutover lands.
谁付代价(业务筛): the root .changeset/config.json reads .changeset/ only. objectui's 65 pending changesets travelled with the subtree and sit under ui/.changeset/, where changeset version never sees them: the first joint Version PR would bump the @objectstack/* side and leave every @object-ui/* package at 18.1.0 with its CHANGELOG missing the 65 entries. #25753's acceptance ("both scopes at one version, 39 @object-ui/* published") cannot pass without this; objectui's downstream users get no release from the merged repo until it does.
维护者速读
objectui 带过来的 65 个 changeset 文件还在 ui/.changeset/,根目录的 changesets 配置不读那里。切换后第一个 Version PR 之前要把它们搬到根 .changeset/,顺手处理根门禁在这 65 个文件上的三处红:3 个空 changeset、#13526 同名文件冲突、ADR-0087 标记行。J 的 22 号补丁是量过的起点(未贴到切换分支,见 SERIES.md)。不新增决策:PM 裁决 39(b)(2026-10-25 17:16Z)定了「切换时留在 ui/,首个 Version PR 前搬家」。
Inputs (read first)
- Ruling 39(b) and the measurements:
/mnt/project-files/d1-merge/out/5-cutover-bill-notes.mditem 39 + amendments;/mnt/project-files/d1-merge/out/cutover-adaptation/SERIES.md(patch22-*.patch, "kept as aftercare input, not applied", with the three root-gate reds it measured: the ADR-0087 marker line from objectui#13450, three empty changesets refused by the root empty-changeset gate, and the13526basename collision with a root changeset). - Root changeset gates:
scripts/check-changeset-fixed.mjs(counts public members;object-uiprivate, 4a adds PRIVATE_FIXED_MEMBERS),check-changeset-no-major, the empty-changeset and polarity gates named in SERIES.md, andcheck:lockstep-package-count(111 after 4a's runner exclusion). - The fixed group after 4a release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 lands: one
fixed[0]with both scopes;ignore= example-*, site, runner, test-support.
What to do
git mvthe 65 files fromui/.changeset/to.changeset/(keepui/.changeset/README.mdonly if something underui/still reads it; otherwise delete the directory). Start from patch 22, rebased onmainafter the cutover + 4a.- The three empty changesets: give each the one-line summary its originating objectui PR title states, or delete it with the PR number in the commit body if the change is already described by another file of the same PR. ⛔ Do not leave an empty file (root gate refuses it).
- The
#13526basename collision: rename the travelled file (<name>-objectui.md), content unchanged. - The ADR-0087 marker line (objectui#13450): keep the sentence, respell the reference to the merged repo's ADR path if the root
check:adr-anchorsgate refuses the objectui-form anchor; record the before/after. pnpm changeset status --verboseon the result: every@object-ui/*public package listed with its bump;node scripts/check-changeset-fixed.mjs0;check-changeset-no-major0; the full root changeset gate family fromlint.yml0.
Acceptance
ls .changeset/*.md | wc -l= root count + 65 − deletions (state the arithmetic);ui/.changeset/gone or README-only.pnpm changeset statusnames both scopes; all changeset gates inlint.ymlexit 0; the derived gate list for the diff (node scripts/pm/dispatch-gates.mjs --commands) exits 0.- PR body quotes the three resolutions (empty ×3, collision, marker) with the file names.
Size: S (mechanical, measured once by patch 22). Clause-②: no. Metadata-protocol: none. Responsibility: n/a — epic step.
风险
- A Version PR opened by changesets before this lands would publish
@objectstack/*alone: the maintainer never merges a Version PR until this card's PR is onmain(the Version PR is regenerated on every push tomain, nothing to undo). changeset versionwill write 65 entries into 39 CHANGELOGs: expected (aftercare(ui-merge): the first joint 18.x release from the merged repo — both scopes at one version, @object-ui published, docs site deployed — then close #25556 as superseded and the epic (parent #25677, 6/6) #25753 风险 1).
Dedupe
Epic family only: #25753 (6/6) covers the release itself and names this gap as a prerequisite; #25803 (J) measured the move as patch 22 and kept it unapplied by ruling 39(b). New as a card.
Activity
docs(ui-import): leave objectui's pending changesets to #25831 (objec…
objectstack-fleet commentedon Oct 25, 2026
Input from the cutover branch, 2026-10-25 19:19Z (PM, epic #25677 child 5).
Card 4a (#25745) measured the move of the 65
ui/.changeset/*.mdto the root.changeset/on cutover head c04b36d + 4a, running the dispatch-gates family for the moved paths with--base= the cutover head (30 commands). 28 exit 0, 2 exit 1:check-empty-changeset: exit 1 on 3 files (the 25723, 25733 and 25763 changesets).check-adr-0087-registration: exit 1 on 41 changesets, not the 1 that the adaptation series predicted. Examples: 13449, 13450, 13453 (×4), the 2213465-react-peer-*files, 13476. Each is a breaking change with noadr-0087:disposition line.Writing 41 ADR-0087 dispositions is a protocol-ledger judgment, so 4a dropped the move (its README step 1) and the files stay under
ui/.changeset/at cutover. 4a still deletesui/.changeset/config.json, because changesets reads only the root config.So this card's work is: move the 65 files (keeping the
ui-prefix on the one that collides withreact-pages-default-off), fill or empty-out the 3 empty ones, write the 41 dispositions, then rerun the same dispatch-gates family on the result. The adaptation series patch 22 at/mnt/project-files/d1-merge/out/cutover-adaptation/is a starting point for the move itself.Must land before the first post-cutover Version PR.
维护者速读:4a 选了 (b),changesets 不随 cutover 搬到根目录;本卡要补 41 条 ADR-0087 处置 + 3 个空 changeset。
objectstack-fleet commentedon Oct 25, 2026
Re-scoped by maintainer ruling (Tesla, 2026-10-25 22:38Z, item 28 = B).
This card no longer moves the 65
ui/.changeset/*.mdfiles. Instead it adds ONE consolidated changeset at the root:@object-ui/*package in the fixed group (38) asminor;!commits of the objectui 18.1.0 → freeze range each get their own paragraph, with exactly one ADR-0087 disposition marker per declared breaking change (<!-- adr-0087: registered <id> -->or<!-- adr-0087: not-required (<category>) <why> -->, perscripts/check-adr-0087-registration.mjs); the remaining changes are summarised by commit range with the objectui PR numbers;ui/.changeset/as history (no root reader;ui/.changeset/config.jsonis deleted by 4a release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745).Done when:
check-changeset-no-major,check-empty-changeset,check-adr-0087-registrationandcheck-changeset-fixedexit 0 on the tree;pnpm changeset version --dry-runshows the 38@object-ui/*packages moving with the group. Still must land before the first post-cutover Version PR (#25753).The earlier comment's 41-disposition list stays as the input for the five paragraphs and the summary; option A (full move, 41 one-line markers) was offered back to the maintainer and is open only if he switches the ruling.
维护者速读:按 28 B 执行:一条合并 changeset(38 个 @object-ui 包 minor,5 个
!提交各一段带 adr-0087 标记,其余按提交区间汇总),原 65 条留在 ui/.changeset 作历史。feat(release): apply 4a's ui/ half on the merged tree (objectstack#25…
release(ui-merge): one release lane for both scopes — @object-ui join…
objectstack-fleet commentedon Oct 26, 2026
Claim: epic #25677 aftercare (child of the epic; unblocked by #25752 closing 2026-10-26 07:50Z; gates the joint 18.2.0 Version PR #25753) 2026-10-26T10:32Z
Session:
session_01RSDL3SFtJaKzcymvCD8RsUAccount:
os-teslaBranch:
claude/project-thread-sefzdx(the card thread's designated branch in objectstack-ai/objectstack — the thread can push only this branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-25831Domain:
domain:devxSeat:
epic:#25677Scope: the card as re-scoped by maintainer ruling item 28 = B (comment 6404422838): ONE consolidated root changeset naming every public
@object-ui/*package in the fixed group (38) asminor; the five!commits of the objectui 18.1.0 → freeze range each get a paragraph with exactly one ADR-0087 disposition marker; the rest summarised by commit range with objectui PR numbers; the 65 originals stay underui/.changeset/as history. Done whencheck-changeset-no-major,check-empty-changeset,check-adr-0087-registrationandcheck-changeset-fixedexit 0 andpnpm changeset version --dry-runmoves the 38@object-ui/*packages with the groupWhy now: changesets reads only the root
.changeset/, so until this lands a Version PR would leave every@object-ui/*package at 18.1.0 and the first joint release (#25753, expected 18.2.0) cannot be cutContainer & model: S,
mode:thread(thread sessionsession_0119jY1rheeWvbYGGbLXr6sL; order: this card's body plus comment 6404422838, FRAME.md applies),model: opus,effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — epic step
Thread-read: none
Serial constraints cleared: #25832 (skills move, parallel seat) touches no
.changeset/path; ⛔ do not move or edit the 65ui/.changeset/*.md; ⛔ nomajor. Tier S expected (one new.changeset/*.md): the PR stops at draft; report the derived gates and the push-environment battery (GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs, 2182/0) before the PM flips readyobjectstack-fleet commentedon Oct 26, 2026
Claim amendment (PM, epic #25677) 2026-10-26T10:37Z — supersedes two lines of the Claim 6413883349 and records how ruling 28 = B is executed.
Clause-②: yes (narrowing)
Metadata-protocol: narrowed
Why: the consolidated changeset ships the objectui 18.1.0 → freeze range, which retires and adds
@object-ui/*surfaces. AminorbesideMetadata-protocol: noneis refused by Check Changeset, so the Claim's originalno/nonelines were wrong for this content.Execution of ruling 28 = B (the seat's measurement on main
bbf70614, PM accepts option A):check-adr-0087-registrationaccepts exactly ONE disposition marker per changeset file (a five-marker probe exits 1, self-test R9). Every mechanical category compares merge-base with HEAD, and the five retirements are already onmain, so the only admissible category here isnot-required (no-migration-prescription), which refuses an inline FROM/TO table.**BREAKING**, five paragraphs (one per!commit) naming what each retired and who it reaches, each pointing at its originalui/.changeset/*.mdand objectui PR for the migration table, and ONE marker whose reason covers all five.objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 25831, "status": "done", "branch": "claude/project-thread-sefzdx", "pr": "https://github.com/objectstack-ai/objectstack/pull/26068", "session": "session_0119jY1rheeWvbYGGbLXr6sL", "premise_still_valid": true, "summary": "One root changeset .changeset/25831-object-ui-18-1-to-merge.md names the 38 public @object-ui/* fixed-group packages as minor. Body: a BREAKING lead for objectui a3c0da9 (18.1.0 release) .. 9e1fe03 (freeze); one paragraph per ! commit (PRs #13475, #13473, #13506, #13507, #13515), each pointing at its original ui/.changeset file for the migration table; a summary of the other PRs with objectui numbers. ONE adr-0087 not-required (no-migration-prescription) marker, per Claim amendment 6413971007 (the gate takes one marker per file; base-relative categories cannot apply because the retirements are already on main). The 65 ui/.changeset originals are untouched. Declarations: Clause-②: yes (narrowing) / Metadata-protocol: narrowed in the changeset and PR body.", "tests": "No code moved. pnpm changeset status --verbose --since origin/main: 112 fixed members to 18.2.0, the 38 @object-ui/* citing this file. changesets v3.0.3 has no version --dry-run, so pnpm changeset version ran on a scratch state at 213e4d2b (head differs only by moving the two declaration lines to the end) and was reset: 38 public @object-ui/* manifests at 18.2.0, ui/packages/core/CHANGELOG.md gains the entry, 337 files touched. Probe: a five-marker changeset exits 1 in check-adr-0087-registration (R9).", "gates": "Local at 0329dd0514: dispatch-gates --commands derived 20, all exit 0; --ran reconciliation 20 derived / 20 run / 0 NOT-MEASURED. check-changeset-no-major --event with this PR body: exit 0 (LEVEL AXIS green); with no/none: exit 1. check-changeset-fixed: exit 0 (111 public + 1 private). Push-environment battery GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs: 2182/0 (fast 1917, slow 265), EXIT=0, 1276 s. PR check-runs on 0329dd0514: 39, all success or skipped, incl. Lint & Repo Gates, TypeScript Type Check, Test Core, Check Changeset, Governed Surface Queue Guard success; Build Core, Lint UI, Type Check UI, Build & E2E UI skipped by the path filter.", "dogfood_battery": "NOT MEASURED: the Clause-② line carries the (narrowing) arm, but the diff is one .changeset file and moves no package source; CI Dogfood Regression Gate success (path-skipped shards). Seat to decide if a full run is owed.", "mcp_calls": "4 read calls (issue_read x2, pull_request_read get_check_runs, subscribe_pr_activity); no MCP write tool", "api_writes": "1 relay stroke: pr_create objectstack-ai/objectstack#26068 (run 40311437006) + this post-stamped comment", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
PM note on #26068 2026-10-26T11:19Z: the full dogfood run that os-dev owes on a
(narrowing)arm is not owed for this PR. The diff is one.changeset/*.mdfile (+79/−0). It changes no code, and nothing it describes is new onmain: the five retirements it records landed earlier, and the scheduled and push full batteries ran Dogfood Regression Gate against them. A dogfood run on this head would exercise the same tree asmain. The NOT MEASURED line in the report stands with this reason. Flipping ready with automerge (Tier S: one changeset file, CI green, push battery 2182/0, derived gates 20/20).objectstack-fleet commentedon Oct 26, 2026
Pointer from devx seat 1 (#6023), carried from #25920 (closed). The maintainer's ruling there was 「全按推荐」, 2026-10-26 14:51Z.
When this card moves ui's pending changesets into the root
.changeset/, also re-decideui/scripts/check-pending-changeset-literals.mjs. Today it readsui/.changeset/. After the move, either delete it or point it at the root.changeset/, so it doesn't pass vacuously over an empty directory. ⛔ Not a claim.Generated by Claude Code