You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
chore(release): exit Changesets pre mode (next), so the next chore: release packages PR renders objectui's 18.0.0 GA #13108
Filing gate ③: a task the maintainer directed. The order came in objectui domain:devx seat 1's chat (session_01FM29ZqLTrnPNXxijioZwMp), 2026-10-20, verbatim: 「objectui 退出预发布模式」. It answers the seat's open question, asked after objectstack exited pre mode for its 18.0.0 GA (objectstack-ai/objectstack#24528, PR objectstack-ai/objectstack#24555). Filed and claimed by that seat (os-warren). The lane is domain:devx, which owns objectui's build and release pipeline (pm-dispatch references/lanes/devx.md).
Every publishable package sits in one fixed group (.changeset/config.json) at 17.7.0. .changeset/12334-objectstack-18-sync-major.md is the sync major that scripts/check-changeset-no-major.mjs admits, because it carries the group onto @objectstack/spec's major.
The open release PR chore: release packages #11600 ("chore: release packages (next)", head f3b458d3, refreshed 2026-10-20T00:32:49Z) renders the group at 18.0.0-next.0. objectui has published no 18.x version yet.
One PR that leaves objectui out of pre mode: .changeset/pre.json written by pnpm changeset pre exit, in the shape this repo keeps.
A dry-run of the release workflow's version step (pnpm changeset:version, including sync-quick-reference-release.mjs), in a scratch clone with that change. It shows that the fixed group renders 18.0.0, not a prerelease, and that every gate the version step and its validation run stays green. Name each one.
objectui's packages depend on @objectstack/* at ^18.0.0-next.N ranges, which 18.0.0 satisfies. changeset:publish runs scripts/objectstack-floor.mjs and check-spec-range-floors.mjs first. The dev measures what those require of the @objectstack versions on npm when objectui 18.0.0 publishes, and says whether objectstack 18.0.0 must be on latest first.
Dedupe
Searched objectui issues for "exit pre mode", "pre.json exit" and "18.0.0 GA release packages": none open on this. objectui#12334, closed, entered pre mode.
Claim: PM loop round 14 (objectui seat) · on the maintainer's 「objectui 退出预发布模式」 (this session's chat, 2026-10-20). Dispatched as soon as a 「并发2」 slot frees (both slots hold #24579 rounds 7 and 8, which touch no objectui file)
Session: session_01FM29ZqLTrnPNXxijioZwMp
Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-13108-changesets-pre-exit
Worktree: objectui-issue-13108
Domain: domain:devx
Seat: domain:devx#1 (objectui, seat post #5748)
File surface: .changeset/pre.json (pnpm changeset pre exit). Also any of PR #12401's two pre-mode gate edits that exist only for pre mode, with their pins, and any objectui release text that states a prerelease status, so that the version render is green. Stop if the fix needs more, and explain why in the report. ⛔ .github/workflows/** is Tier H governed and not in this claim. ⛔ No release act: no merge or queueing of PR #11600, no publish. The PR stays draft for the maintainer's merge.
Container & model: S (pre-mode exit plus a version-step dry-run), mode:subagent, model: TIER_DEFAULT
Clause-②: no
Responsibility: objectui's changesets stay in pre mode on next, so its release PR renders 18.0.0-next.0, not the GA | none: no objectui 18.x version is published yet; the GA waits on this | every objectui consumer of the 18.0 line, at objectui's GA release
Thread-read: none
Serial constraints cleared: no open objectui PR touches .changeset/pre.json, .changeset/config.json or the changeset / floor scripts (read at 2026-10-20T01:43Z). Release PR #11600 is the subject, not a sibling.
os-dev-report
{
"issue": 13108,
"status": "done",
"branch": "claude/issue-13108-changesets-pre-exit",
"pr": "#13111",
"session": "session_01FM29ZqLTrnPNXxijioZwMp — subagent run; the parent seat's harness-stamped id (claim 6281363328, the newest Claim: on the card, names branch claude/issue-13108-changesets-pre-exit; verified before any edit)",
"premise_still_valid": true,
"summary": "Draft PR #13111 (head 9e3c1a1 = BASE df943a2 + 2 commits; origin/main still df943a2 at open; assignee os-warren; label tests set by labeler.yml, not by me) exits Changesets pre mode. Commit fda18fc: .changeset/pre.json written by pnpm changeset pre exit (@changesets/cli 3.0.1), before {"mode":"pre","tag":"next"}, after {"mode":"exit","tag":"next"}, the same 2-space JSON with a trailing newline (objectui's shape is CLI 3's two keys, as objectstack's). Commit 9e3c1a1: the first verbatim dry-run of the release lane on the exited tree went red on exactly ONE test, scripts/tests/sync-quick-reference-release.test.ts 'rewrites the Version row when the fixed group moves'. Its not.toContain(anchors.version) is a raw-substring check, and with the group at 18.0.0 that string is a prefix of the QUICK_REFERENCE Spec/Client rows' ^18.0.0-next.1. It now compares whole literals with the script's own exported VERSION_LITERAL + normalize, the rule the 4143 gate's header states ('Equality on extracted tokens, never toContain over the raw row'). An in-process probe shows it is still RED on an un-rewritten Version row at 17.7.0, 18.0.0 and 18.0.0-next.0, while the old assertion false-REDs only at 18.0.0. objectui has no release text stating a prerelease or no-GA status (no release pages; grep finds none), so the one red was a test, not prose. Neither of PR #12401's two gate edits is keyed on pre mode; both are kept, nothing reversed, no gate weakened or added. Files changed: 2, +8/-2 (.changeset/pre.json 1/1; scripts/tests/sync-quick-reference-release.test.ts 7/1, file 227 -> 233 lines). No changeset (check-changeset-presence: none owed). Deviations: (1) the test file is outside the claim's declared file surface. The claim said stop if more is needed; the dispatch said fix at the real producer and name it. I followed the dispatch, named it in the PR body's Acceptance notes, and the seat should extend the claim's surface. (2) The workflow's Build packages step was not replayed before Validate. (3) The live check:spec-floors was not run. (4) Commit trailers use AGENTS.md's model-free pair, not the harness reminder's model-named Co-Authored-By. (5) A git fetch in the scratch clone auto-started a background git gc; it had exited (no gc.pid) before the clone was deleted. Cleanup: scratch clone deleted; worktree node_modules removed and git worktree remove exited 0 without --force; no process of mine is left running.",
"tests": "DRY-RUN (scratch blobless full-history clone from GitHub, not shallow, 12164 commits; push URL /nonexistent; pnpm run setup = pin copied from the machine store + frozen install, real node_modules). The three steps 'Render the post-version tree' / 'Validate the post-version tree' / 'Restore the pre-version tree' were extracted VERBATIM from .github/workflows/changeset-release.yml with the clone's yaml parser. The workflow blob is 533cf01fe5 on both clone and main, and the extracted bodies are byte-identical (cmp) across all legs. They ran under bash --noprofile --norc -eo pipefail with GITHUB_OUTPUT/GITHUB_STEP_SUMMARY/GITHUB_SHA set to scratch files, and Render/Validate under os-verify-lock.sh. LEG head 9e3c1a1: Render EXIT 0 ('Version: 17.7.0 → 18.0.0', pending_before=857, 'paths the version step moved: 939', 'Rewrote QUICK_REFERENCE.md's "Current Release" block'; lock VERDICT command-exit 0). Validate EXIT 0: quick-reference:check '✅ ... already states every anchor', check:control-bytes '✅ OK', pnpm test scripts/__tests__ 'Test Files 190 passed | 2 skipped (192) / Tests 5708 passed | 2 skipped (5710)'; lock VERDICT command-exit 0. Restore EXIT 0: 'Pre-version tree restored: 857 pending changeset(s), working tree clean.', then porcelain 0 and git diff HEAD 0 bytes. Rendered tree: fixed group 40/40 members at 18.0.0 (1 private: object-ui, so 39 publishable; read from the manifests, publish-plan not run); 857 changesets consumed (every .changeset/*.md but README.md); .changeset/pre.json DELETED by the pass; .changeset/ left holding README.md + config.json; 939 paths = 858 deleted (857 + pre.json) + 40 package.json (only the "version" line, 40-/40+) + 40 CHANGELOG.md (+22,251 lines in all) + QUICK_REFERENCE.md (Version row 17.7.0 -> 18.0.0); 0 @objectstack lines move in the package.json diff. On that tree check-changeset-no-major EXIT 0 ('No changeset declares a major bump.'), check-changeset-fixed EXIT 0, and a probe \"@object-ui/core\": major gives EXIT 1 ('carries the group from 18 to 19, but its @objectstack/spec range names 18'); the probe was removed before Restore. LEG first commit fda18fc (exit only): Render EXIT 0 (17.7.0 → 18.0.0, 857, 939); Validate EXIT 1 ('Test Files 1 failed | 189 passed | 2 skipped (192)'; the one failure is sync-quick-reference-release.test.ts 'rewrites the Version row when the fixed group moves': "expected '# Quick Reference…' not to contain '18.0.0'"; quick-reference:check and control-bytes both ✅); Restore EXIT 0 (857, clean). CONTROL LEG BASE df943a2 (mode pre): Render EXIT 0 'Version: 17.7.0 → 18.0.0-next.0', 40/40 at 18.0.0-next.0, pre.json PRESENT (mode pre), 857 moved to .changeset/pre/, pending_before=857, 939 paths; Validate EXIT 0 ('190 passed | 2 skipped (192)'); Restore EXIT 0 (857, clean). UNIT, worktree at 9e3c1a1 under the lock: pnpm exec vitest run on sync-quick-reference-release, quick-reference-current-release-4143, check-changeset-no-major, check-spec-range-floors, check-changeset-presence and doc-version-claims gave EXIT 0, 'Test Files 6 passed (6) / Tests 169 passed (169)'. Assertion teeth: an in-process probe of the script's exports over QUICK_REFERENCE.md. Correct rewrite: new/old assertion green/green at 17.7.0, green/RED at 18.0.0, green/green at 18.0.0-next.0. Version row left un-rewritten: RED/RED at all three. No permanent test was added; no ablation file mutation, since the diff changes an assertion, not a tested behaviour.",
"gates": "Local, at 9e3c1a1 (git rev-parse --short HEAD), each exit captured before any pipe: pnpm changeset:check 0 (check-changeset-fixed ✅ + no-major '✅ Every major is the synchronized one'); pnpm check:changeset-claims 0; pnpm check:pending-changeset-literals 0; node scripts/check-changeset-presence.mjs 0 ('no changeset is owed'); node scripts/check-changeset-overwrite.mjs 0; pnpm check:new-line-citations 0 ('VERDICT ... 0 new citation(s)'); pnpm check:control-bytes 0; pnpm check:test-path-roots 0; pnpm check:pre-install-import-graph 0; pnpm quick-reference:check 0; node scripts/check-governed-queue-guard.mjs --test on both paths 0 ('NOT GOVERNED'); pnpm run type-check:scripts 0 (lock VERDICT command-exit 0; tsc --listFilesOnly lists the changed test, count 1); eslint on the changed test file 0. dispatch-gates.mjs not used (objectstack-only, per dispatch). PR #12401's TWO GATE EDITS: (1) check-changeset-no-major.mjs computed sync-major admission: NOT keyed on pre mode. The script reads no pre.json and no mode; its only pre clause, not reading .changeset/pre/, was its behaviour before #12401 too. KEPT: it is the maintainer's GA version-alignment rule (objectui#12030 ruling) and is needed again at the next major; it admits the sync major on the exited tree (changeset:check 0) and re-arms on the 18.0.0 tree (probe major EXIT 1, 18 to 19). (2) check-spec-range-floors.mjs prerelease-floor reader: NOT keyed on pre mode; it reads no changeset state, pre.json or mode, and its input is the ^18.0.0-next.N@objectstack ranges, which objectstack's prerelease line sets (its header says so), unchanged by the exit and by the GA render (0 range lines move). KEPT: also needed at publish whenever objectstack-floor computes a prerelease floor. Its pins pass on the exited tree and inside the post-version scripts/tests run. The live gate was NOT MEASURED: it needs a build of the floored packages, and its input is byte-identical across exit and render. HYPOTHESES: H1 holds with the count corrected: 857 consumed (the card's 860 = every entry under .changeset/ incl. README.md, config.json, pre.json); pre.json deleted. H2 falsified for both edits. H3 holds: Version row -> 18.0.0; the Spec/Client rows keep ^18.0.0-next.1 because they are the manifest-derived @objectstack ranges (correct); no objectui doc states objectui's own prerelease status. ORDER NOTE: node scripts/objectstack-floor.mjs --dry-run at pin f4755a68a7 EXIT 2: 'No published @objectstack/spec release contains the pin … the newest published release is 18.0.0-next.5' (npm dist-tags: latest 17.7.0, next 18.0.0-next.5). Git two legs in the full-history /home/user/objectstack (is-shallow false): merge-base --is-ancestor pin 820fd5aef0 (the next.5 tag commit) EXIT 1; control --is-ancestor 2c9bf9430a 820fd5aef0 (the next.3 tag commit, older than the pin) EXIT 0; next.5 commit is an ancestor of the pin, EXIT 0. So objectui 18.0.0 CANNOT publish before objectstack publishes a spec release whose tag contains the pin (in practice objectstack 18.0.0, objectstack#24524). The steps read npm versions + tags, not the latest dist-tag, so latest itself is not required. The floor is the EARLIEST such version by semver precedence: if 18.0.0 is the first, objectui ships ^18.0.0; if a containing 18.0.0-next.6 were published first, it would ship ^18.0.0-next.6 even after GA. Merging this PR publishes nothing (@object-ui/core@17.7.0 is on npm, the lane guard's predicate). CI on PR #13111 head 9e3c1a1 at report time: 34 check-runs, 10 success (Build Docs, Changeset Bump Policy, Changeset Claim Re-read, Changeset Declaration, Changeset Fixed Group Check, Changeset Overwrite Report, Governed Surface Queue Guard, Line Citation Gate, Test (dist pins), label), 3 skipped (Test (coverage), Test (coverage shard N/8), dependabot), 21 in_progress (Build & E2E, Lint, Live E2E (informational), Repo Gates, Type Check, Test (shard 1..16/16)). No CI wait, per contract. NOT MEASURED: the full pnpm test (CI's), changesets/action itself (a GitHub Action), the workflow's Build packages step before Validate, live check:spec-floors.",
"mcp_calls": "0 — no MCP GitHub tool called",
"api_writes": "2 relay strokes, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create, request fw-20261020T023059Z-308481, run 39359341760 conclusion success, sending POST /repos/objectstack-ai/objectui/pulls (draft #13111) and POST /repos//issues/13111/assignees [os-warren]; body read back 16341 bytes sent = 16341 stored, identical; assignees listed os-warren. (2) this os-dev-report comment via scripts/pm/post-stamped.mjs --repo=objectstack-ai/objectui, i.e. POST /repos//issues/13108/comments. Plus 3 git pushes (not REST): the empty-branch probe, fda18fc and 9e3c1a1. No label write, no card assignee write, no review request, no ready flip.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: 承接者:无 · noted, not filed — objectstack-floor.mjs floors at the EARLIEST published @objectstack/spec version whose tag contains the pin, by semver precedence, prereleases counted (by design, per its header 'Prereleases count'). A published 18.0.0-next.6 that contains the pin would floor objectui 18.0.0's published ranges at ^18.0.0-next.6 even after objectstack 18.0.0 GA. Recorded in PR #13111's order note as the maintainer's release-time call; not a defect.",
"carrier: PR #13111 Acceptance notes · noted, not filed — release PR #11600 still renders 18.0.0-next.0 from a pre-mode tree. It must be refreshed (refresh_version_pr dispatch or the 6-hourly run) after #13111 merges, not merged as it stands. Merged stale after the exit, it would publish next.0 to next (getReleaseTag returns preState.tag while pre.json mode exit exists; reading of @changesets/cli 3.0.1 getPublishPlan.mjs, not measured), and the floor step would refuse that publish today anyway."
]
}
The dev's dry-run found that the one producer of the exited tree's red is a test: scripts/__tests__/sync-quick-reference-release.test.ts ('rewrites the Version row when the fixed group moves'). Its raw-substring not.toContain(anchors.version) false-reds once the group is at 18.0.0, because 18.0.0 is a prefix of the QUICK_REFERENCE Spec/Client rows' ^18.0.0-next.1. The dispatch said to fix the real producer and name it, and the dev did.
This seat adds that test file to the claim's file surface:
The change compares whole literals with the script's own exported VERSION_LITERAL + normalize. That is the rule the 4143 gate's header states.
It is +7 / −1.
An in-process probe keeps it RED on an un-rewritten Version row at 17.7.0, 18.0.0 and 18.0.0-next.0.
PR #13111 merged at 2026-10-20T14:01Z as cbc312d78b (not governed), on this seat's ACCEPT 6292366569, under the maintainer's ruling 6292098274
objectui main, by content
.changeset/pre.json (421211bc43, "mode": "exit") and scripts/__tests__/sync-quick-reference-release.test.ts (419277b54c) are byte-identical to the PR head 9e3c1a1408
main checks at cbc312d78b
the merge-group runs (CI, Lint, Repo Gates, Changeset Presence, Governed Surface Guard) are success. The push runs of CI, Lint and Repo Gates are in progress at this write. Changeset Release on push is success, and it neither publishes nor refreshes the version PR
State change: PR #13111 closed this card through Fixes #13108 (completed). pm:dispatched comes off in this act.
What is next, and whose it is. Release PR #11600 still reads "chore: release packages (next)" from its last render (2026-10-20T12:24Z). changeset-release.yml refreshes it on its 6-hourly schedule, or at once on a dispatch with refresh_version_pr. After the refresh it should render the fixed group at 18.0.0, not 18.0.0-next.0. The dispatch, the merge of #11600 and the npm publish are the maintainer's acts; this seat takes none of them. The pin move to 06cab4849a is #13261.
Activity
objectstack-fleet commentedon Oct 20, 2026
Claim: PM loop round 14 (objectui seat) · on the maintainer's 「objectui 退出预发布模式」 (this session's chat, 2026-10-20). Dispatched as soon as a 「并发2」 slot frees (both slots hold #24579 rounds 7 and 8, which touch no objectui file)
Session:
session_01FM29ZqLTrnPNXxijioZwMpAccount:
os-warren(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-13108-changesets-pre-exitWorktree:
objectui-issue-13108Domain:
domain:devxSeat:
domain:devx#1(objectui, seat post #5748)File surface:
.changeset/pre.json(pnpm changeset pre exit). Also any of PR #12401's two pre-mode gate edits that exist only for pre mode, with their pins, and any objectui release text that states a prerelease status, so that the version render is green. Stop if the fix needs more, and explain why in the report. ⛔.github/workflows/**is Tier H governed and not in this claim. ⛔ No release act: no merge or queueing of PR #11600, no publish. The PR stays draft for the maintainer's merge.Container & model:
S (pre-mode exit plus a version-step dry-run),mode:subagent,model: TIER_DEFAULTClause-②: no
Responsibility:
objectui's changesets stay in pre mode on next, so its release PR renders 18.0.0-next.0, not the GA|none: no objectui 18.x version is published yet; the GA waits on this|every objectui consumer of the 18.0 line, at objectui's GA releaseThread-read: none
Serial constraints cleared: no open objectui PR touches
.changeset/pre.json,.changeset/config.jsonor the changeset / floor scripts (read at 2026-10-20T01:43Z). Release PR #11600 is the subject, not a sibling.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
os-dev-report
{
"issue": 13108,
"status": "done",
"branch": "claude/issue-13108-changesets-pre-exit",
"pr": "#13111",
"session": "session_01FM29ZqLTrnPNXxijioZwMp — subagent run; the parent seat's harness-stamped id (claim 6281363328, the newest Claim: on the card, names branch claude/issue-13108-changesets-pre-exit; verified before any edit)",
"premise_still_valid": true,
"summary": "Draft PR #13111 (head 9e3c1a1 = BASE df943a2 + 2 commits; origin/main still df943a2 at open; assignee os-warren; label
testsset by labeler.yml, not by me) exits Changesets pre mode. Commit fda18fc: .changeset/pre.json written bypnpm changeset pre exit(@changesets/cli 3.0.1), before {"mode":"pre","tag":"next"}, after {"mode":"exit","tag":"next"}, the same 2-space JSON with a trailing newline (objectui's shape is CLI 3's two keys, as objectstack's). Commit 9e3c1a1: the first verbatim dry-run of the release lane on the exited tree went red on exactly ONE test, scripts/tests/sync-quick-reference-release.test.ts 'rewrites the Version row when the fixed group moves'. Itsnot.toContain(anchors.version)is a raw-substring check, and with the group at 18.0.0 that string is a prefix of the QUICK_REFERENCE Spec/Client rows'^18.0.0-next.1. It now compares whole literals with the script's own exported VERSION_LITERAL + normalize, the rule the 4143 gate's header states ('Equality on extracted tokens, nevertoContainover the raw row'). An in-process probe shows it is still RED on an un-rewritten Version row at 17.7.0, 18.0.0 and 18.0.0-next.0, while the old assertion false-REDs only at 18.0.0. objectui has no release text stating a prerelease or no-GA status (no release pages; grep finds none), so the one red was a test, not prose. Neither of PR #12401's two gate edits is keyed on pre mode; both are kept, nothing reversed, no gate weakened or added. Files changed: 2, +8/-2 (.changeset/pre.json 1/1; scripts/tests/sync-quick-reference-release.test.ts 7/1, file 227 -> 233 lines). No changeset (check-changeset-presence: none owed). Deviations: (1) the test file is outside the claim's declared file surface. The claim said stop if more is needed; the dispatch said fix at the real producer and name it. I followed the dispatch, named it in the PR body's Acceptance notes, and the seat should extend the claim's surface. (2) The workflow'sBuild packagesstep was not replayed before Validate. (3) The livecheck:spec-floorswas not run. (4) Commit trailers use AGENTS.md's model-free pair, not the harness reminder's model-named Co-Authored-By. (5) Agit fetchin the scratch clone auto-started a backgroundgit gc; it had exited (no gc.pid) before the clone was deleted. Cleanup: scratch clone deleted; worktree node_modules removed andgit worktree removeexited 0 without --force; no process of mine is left running.","tests": "DRY-RUN (scratch blobless full-history clone from GitHub, not shallow, 12164 commits; push URL /nonexistent;
pnpm run setup= pin copied from the machine store + frozen install, real node_modules). The three steps 'Render the post-version tree' / 'Validate the post-version tree' / 'Restore the pre-version tree' were extracted VERBATIM from .github/workflows/changeset-release.yml with the clone'syamlparser. The workflow blob is 533cf01fe5 on both clone and main, and the extracted bodies are byte-identical (cmp) across all legs. They ran underbash --noprofile --norc -eo pipefailwith GITHUB_OUTPUT/GITHUB_STEP_SUMMARY/GITHUB_SHA set to scratch files, and Render/Validate under os-verify-lock.sh. LEG head 9e3c1a1: Render EXIT 0 ('Version: 17.7.0 → 18.0.0', pending_before=857, 'paths the version step moved: 939', 'Rewrote QUICK_REFERENCE.md's "Current Release" block'; lock VERDICT command-exit 0). Validate EXIT 0: quick-reference:check '✅ ... already states every anchor', check:control-bytes '✅ OK',pnpm test scripts/__tests__'Test Files 190 passed | 2 skipped (192) / Tests 5708 passed | 2 skipped (5710)'; lock VERDICT command-exit 0. Restore EXIT 0: 'Pre-version tree restored: 857 pending changeset(s), working tree clean.', then porcelain 0 andgit diff HEAD0 bytes. Rendered tree: fixed group 40/40 members at 18.0.0 (1 private: object-ui, so 39 publishable; read from the manifests, publish-plan not run); 857 changesets consumed (every .changeset/*.md but README.md); .changeset/pre.json DELETED by the pass; .changeset/ left holding README.md + config.json; 939 paths = 858 deleted (857 + pre.json) + 40 package.json (only the "version" line, 40-/40+) + 40 CHANGELOG.md (+22,251 lines in all) + QUICK_REFERENCE.md (Version row 17.7.0 -> 18.0.0); 0 @objectstack lines move in the package.json diff. On that tree check-changeset-no-major EXIT 0 ('No changeset declares amajorbump.'), check-changeset-fixed EXIT 0, and a probe\"@object-ui/core\": majorgives EXIT 1 ('carries the group from 18 to 19, but its @objectstack/spec range names 18'); the probe was removed before Restore. LEG first commit fda18fc (exit only): Render EXIT 0 (17.7.0 → 18.0.0, 857, 939); Validate EXIT 1 ('Test Files 1 failed | 189 passed | 2 skipped (192)'; the one failure is sync-quick-reference-release.test.ts 'rewrites the Version row when the fixed group moves': "expected '# Quick Reference…' not to contain '18.0.0'"; quick-reference:check and control-bytes both ✅); Restore EXIT 0 (857, clean). CONTROL LEG BASE df943a2 (mode pre): Render EXIT 0 'Version: 17.7.0 → 18.0.0-next.0', 40/40 at 18.0.0-next.0, pre.json PRESENT (mode pre), 857 moved to .changeset/pre/, pending_before=857, 939 paths; Validate EXIT 0 ('190 passed | 2 skipped (192)'); Restore EXIT 0 (857, clean). UNIT, worktree at 9e3c1a1 under the lock:pnpm exec vitest runon sync-quick-reference-release, quick-reference-current-release-4143, check-changeset-no-major, check-spec-range-floors, check-changeset-presence and doc-version-claims gave EXIT 0, 'Test Files 6 passed (6) / Tests 169 passed (169)'. Assertion teeth: an in-process probe of the script's exports over QUICK_REFERENCE.md. Correct rewrite: new/old assertion green/green at 17.7.0, green/RED at 18.0.0, green/green at 18.0.0-next.0. Version row left un-rewritten: RED/RED at all three. No permanent test was added; no ablation file mutation, since the diff changes an assertion, not a tested behaviour.","gates": "Local, at 9e3c1a1 (
git rev-parse --short HEAD), each exit captured before any pipe:pnpm changeset:check0 (check-changeset-fixed ✅ + no-major '✅ Everymajoris the synchronized one');pnpm check:changeset-claims0;pnpm check:pending-changeset-literals0;node scripts/check-changeset-presence.mjs0 ('no changeset is owed');node scripts/check-changeset-overwrite.mjs0;pnpm check:new-line-citations0 ('VERDICT ... 0 new citation(s)');pnpm check:control-bytes0;pnpm check:test-path-roots0;pnpm check:pre-install-import-graph0;pnpm quick-reference:check0;node scripts/check-governed-queue-guard.mjs --teston both paths 0 ('NOT GOVERNED');pnpm run type-check:scripts0 (lock VERDICT command-exit 0;tsc --listFilesOnlylists the changed test, count 1); eslint on the changed test file 0. dispatch-gates.mjs not used (objectstack-only, per dispatch). PR #12401's TWO GATE EDITS: (1) check-changeset-no-major.mjs computed sync-major admission: NOT keyed on pre mode. The script reads no pre.json and no mode; its only pre clause, not reading .changeset/pre/, was its behaviour before #12401 too. KEPT: it is the maintainer's GA version-alignment rule (objectui#12030 ruling) and is needed again at the next major; it admits the sync major on the exited tree (changeset:check 0) and re-arms on the 18.0.0 tree (probe major EXIT 1, 18 to 19). (2) check-spec-range-floors.mjs prerelease-floor reader: NOT keyed on pre mode; it reads no changeset state, pre.json or mode, and its input is the^18.0.0-next.N@objectstack ranges, which objectstack's prerelease line sets (its header says so), unchanged by the exit and by the GA render (0 range lines move). KEPT: also needed at publish whenever objectstack-floor computes a prerelease floor. Its pins pass on the exited tree and inside the post-version scripts/tests run. The live gate was NOT MEASURED: it needs a build of the floored packages, and its input is byte-identical across exit and render. HYPOTHESES: H1 holds with the count corrected: 857 consumed (the card's 860 = every entry under .changeset/ incl. README.md, config.json, pre.json); pre.json deleted. H2 falsified for both edits. H3 holds: Version row -> 18.0.0; the Spec/Client rows keep ^18.0.0-next.1 because they are the manifest-derived @objectstack ranges (correct); no objectui doc states objectui's own prerelease status. ORDER NOTE:node scripts/objectstack-floor.mjs --dry-runat pin f4755a68a7 EXIT 2: 'No published @objectstack/spec release contains the pin … the newest published release is 18.0.0-next.5' (npm dist-tags: latest 17.7.0, next 18.0.0-next.5). Git two legs in the full-history /home/user/objectstack (is-shallow false):merge-base --is-ancestor pin 820fd5aef0(the next.5 tag commit) EXIT 1; control--is-ancestor 2c9bf9430a 820fd5aef0(the next.3 tag commit, older than the pin) EXIT 0; next.5 commit is an ancestor of the pin, EXIT 0. So objectui 18.0.0 CANNOT publish before objectstack publishes a spec release whose tag contains the pin (in practice objectstack 18.0.0, objectstack#24524). The steps read npm versions + tags, not thelatestdist-tag, solatestitself is not required. The floor is the EARLIEST such version by semver precedence: if 18.0.0 is the first, objectui ships ^18.0.0; if a containing 18.0.0-next.6 were published first, it would ship ^18.0.0-next.6 even after GA. Merging this PR publishes nothing (@object-ui/core@17.7.0 is on npm, the lane guard's predicate). CI on PR #13111 head 9e3c1a1 at report time: 34 check-runs, 10 success (Build Docs, Changeset Bump Policy, Changeset Claim Re-read, Changeset Declaration, Changeset Fixed Group Check, Changeset Overwrite Report, Governed Surface Queue Guard, Line Citation Gate, Test (dist pins), label), 3 skipped (Test (coverage), Test (coverage shard N/8), dependabot), 21 in_progress (Build & E2E, Lint, Live E2E (informational), Repo Gates, Type Check, Test (shard 1..16/16)). No CI wait, per contract. NOT MEASURED: the fullpnpm test(CI's), changesets/action itself (a GitHub Action), the workflow's Build packages step before Validate, live check:spec-floors.","mcp_calls": "0 — no MCP GitHub tool called",
"api_writes": "2 relay strokes, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create, request fw-20261020T023059Z-308481, run 39359341760 conclusion success, sending POST /repos/objectstack-ai/objectui/pulls (draft #13111) and POST /repos//issues/13111/assignees [os-warren]; body read back 16341 bytes sent = 16341 stored, identical; assignees listed os-warren. (2) this os-dev-report comment via scripts/pm/post-stamped.mjs --repo=objectstack-ai/objectui, i.e. POST /repos//issues/13108/comments. Plus 3 git pushes (not REST): the empty-branch probe, fda18fc and 9e3c1a1. No label write, no card assignee write, no review request, no ready flip.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: 承接者:无 · noted, not filed — objectstack-floor.mjs floors at the EARLIEST published @objectstack/spec version whose tag contains the pin, by semver precedence, prereleases counted (by design, per its header 'Prereleases count'). A published 18.0.0-next.6 that contains the pin would floor objectui 18.0.0's published ranges at ^18.0.0-next.6 even after objectstack 18.0.0 GA. Recorded in PR #13111's order note as the maintainer's release-time call; not a defect.",
"carrier: PR #13111 Acceptance notes · noted, not filed — release PR #11600 still renders 18.0.0-next.0 from a pre-mode tree. It must be refreshed (refresh_version_pr dispatch or the 6-hourly run) after #13111 merges, not merged as it stands. Merged stale after the exit, it would publish next.0 to
next(getReleaseTag returns preState.tag while pre.json mode exit exists; reading of @changesets/cli 3.0.1 getPublishPlan.mjs, not measured), and the floor step would refuse that publish today anyway."]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
File-surface addendum to claim
6281363328· objectuidomain:devxseat 1 ·session_01FM29ZqLTrnPNXxijioZwMp· 2026-10-20T02:39ZThe dev's dry-run found that the one producer of the exited tree's red is a test:
scripts/__tests__/sync-quick-reference-release.test.ts('rewrites the Version row when the fixed group moves'). Its raw-substringnot.toContain(anchors.version)false-reds once the group is at18.0.0, because18.0.0is a prefix of the QUICK_REFERENCE Spec/Client rows'^18.0.0-next.1. The dispatch said to fix the real producer and name it, and the dev did.This seat adds that test file to the claim's file surface:
VERSION_LITERAL+normalize. That is the rule the 4143 gate's header states.17.7.0,18.0.0and18.0.0-next.0.Nothing else widens.
Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Landed · objectui
domain:devxseat 1 ·session_01FM29ZqLTrnPNXxijioZwMp· 2026-10-20T14:02Zcbc312d78b(not governed), on this seat's ACCEPT6292366569, under the maintainer's ruling6292098274main, by content.changeset/pre.json(421211bc43,"mode": "exit") andscripts/__tests__/sync-quick-reference-release.test.ts(419277b54c) are byte-identical to the PR head9e3c1a1408mainchecks atcbc312d78bChangeset Releaseon push is success, and it neither publishes nor refreshes the version PRState change: PR #13111 closed this card through
Fixes #13108(completed).pm:dispatchedcomes off in this act.What is next, and whose it is. Release PR #11600 still reads "chore: release packages (next)" from its last render (2026-10-20T12:24Z).
changeset-release.ymlrefreshes it on its 6-hourly schedule, or at once on a dispatch withrefresh_version_pr. After the refresh it should render the fixed group at18.0.0, not18.0.0-next.0. The dispatch, the merge of #11600 and the npm publish are the maintainer's acts; this seat takes none of them. The pin move to06cab4849ais #13261.Generated by Claude Code