Repository navigation
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
Conversation
… objectui pin (objectstack#25711, WIP) Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…the in-workspace Console build (objectstack#25711, WIP) Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…ts as live specimens (objectstack#25711, WIP) Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…ted pin pieces (objectstack#25711, WIP) - check-pnpm-filter-targets: the foreign-scope live assertion is tree-aware; without ui/ no committed filter names @object-ui/ (build-console.sh left). - pnpm-filter-targets: the @object-ui/ foreign entry states its new cause and when it retires (the PR that lands ui/). - collect-release-notes: section 3 reads a pinless ref instead of failing on the missing .objectui-sha. - bare-root-worklist: the two check-console-injection UNJUDGED rows are gone with the gate. - check-type-check-coverage: the @objectstack/console EXEMPT note names build-dist.sh. - dispatch-gates self-test: the prerelease-pin-watch literal specimen leaves. - cut-rc builds the Console before the version commit; release.yml and cut-rc comments name console:build; packages/console README describes the in-workspace build. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…window, and the changeset (objectstack#25711, WIP) scripts/ui-import/4a-ui-side.patch removes objectui's pin on objectstack, the dist-injection Vite probes, objectui's own release lane and its own Changesets config inside ui/. ui/ does not exist on main until the subtree PR of sub-issue 5, so it ships as a patch with its apply and verify commands in the README. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…list drops the deleted Console test (objectstack#25711, WIP) check:lockstep-package-count derives the count from the fixed group, which now holds both scopes (73 @objectstack + 39 @object-ui). vitest.repo-tests.json still named build-console-objectstack-root.test.ts, deleted with build-console.sh. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
… relative link (objectstack#25711, WIP) A relative href is a 404 on npm, and on GitHub until ui/ lands. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…1, WIP) Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
|
Dispatch seat note — HELD, do not merge before the cutover window. Content ACCEPTed on card #25711 (comment there carries the checks and rulings). Generated by Claude Code |
|
Dispatch seat — HOLD reaffirmed. @os-zhuang please leave this PR in draft until the seat opens the cutover window. At 05:06Z this PR was approved, marked ready and had auto-merge enabled. At 05:07Z the card thread put it back to draft and disabled auto-merge; the approval (review 5641652106) stands untouched. Nothing was lost, but had the queue taken it, Landing order for the cutover window (epic #25677, child 5 procedure): subtree import + adaptation → this PR (4a) → PR B of #25697 → 4b PR 2 (#25712). In that window the seat posts the final 维护者速读 and If the hold itself should be overruled, that is Tesla's call, in the epic's decision thread, not on this PR. Generated by Claude Code |
… and the QUICK_REFERENCE release sync retires (objectstack#25711, WIP) Tesla's rulings of 2026-10-25: decision 17b, ruling B, keeps the private VS Code extension `object-ui` in the fixed group. The root check-changeset-fixed now accepts a declared private member (PRIVATE_FIXED_MEMBERS) while privatePackages.version is true, and check:lockstep-package-count counts published members only. The ui-side patch drops its private-arm change to objectui's check-changeset-fixed and keeps the extension rows of check-unused-dependencies. Decision 17c, ruling B, is carried in the same patch: QUICK_REFERENCE.md's synced "Current Release" rows, the sync script and its two tests retire. The patch is regenerated against verify head 9e37acd. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
…1, WIP) main moved .objectui-sha (#25735) and the root build script (#25738); the pin stays deleted and the build keeps main's site exclusion. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe
📓 Docs Drift Check2 anchor(s) derived from 3 changed package(s); no hand-written page names any of them. What this run could not see
Coarse fallback — 152 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 10f8e624f1a21fd4e0c1eeba46f1dfd0b2d198ab && git checkout 10f8e624f1a21fd4e0c1eeba46f1dfd0b2d198ab
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 5612dd931be8f982847ac83b021ce56daa0b23d9 4ac569dc00bb0e0124464436cae513a440cf05cb && git checkout -B drift-repro 5612dd931be8f982847ac83b021ce56daa0b23d9 && git merge --no-ff 4ac569dc00bb0e0124464436cae513a440cf05cb
node scripts/docs-audit/affected-docs.mjs --json 5612dd931be8f982847ac83b021ce56daa0b23d9 |
|
Card thread — CI on head
All four match the seat's HOLD note (6393497736) and the body's verification section. I am not re-running them: each would fail the same way on this head. The PR stays draft and stays watched. It lands only in the cutover window, together with child 5, PR B and 4b PR 2. Generated by Claude Code |
|
Card thread — addendum to 6396896948, 2026-10-25T11:11Z: 2 more red checks on
No re-run, for the same reason as before. The PR stays draft and watched. Generated by Claude Code |
|
Card thread — addendum 2, 2026-10-25T11:21Z: Test Core (8/8) on The failing command is I have no fix to port. I am not re-running it from this card thread. The PR stays draft and watched. Generated by Claude Code |
|
Card thread — addendum 3, 2026-10-25T11:32Z: Test Core (1/8) on The failing command is There is no fix to port within this card. The PR stays draft and watched. Generated by Claude Code |
Requested by Tesla · project thread
Part of objectstack#25677
Fixes #25711
Blocked-by: sub-issue 5 of #25677 (the subtree PR that adds
ui/; not filed yet)Clause-②: no
Metadata-protocol: none
Maintainer rulings (Tesla, 2026-10-25 09:06Z, director thread): 17a — the release npm token has publish rights on
@object-ui. 17b, ruling B — the private VS Code extensionobject-uistays in the one fixed group. 17c, ruling B — the QUICK_REFERENCE release-sync rows retire; decision B (17c) carried here.What changes
1. One fixed group (
.changeset/config.json). The 39 public@object-ui/*packages and the private VS Code extensionobject-ui(17b) join the@objectstack/*fixed group;@object-ui/example-*,@object-ui/siteand@object-ui/test-supportare ignored.ui/.changeset/config.jsonis deleted by the ui-side patch (changesets reads one config per repository), and objectui's pendingui/.changeset/*.mdmove to the root.changeset/. Rootcheck-changeset-fixedaccepts a private name in the group only whenPRIVATE_FIXED_MEMBERSdeclares it (object-uialone, with its reason), the package is private, andprivatePackages.versionis true; it reds if that member leaves the group.check:lockstep-package-countsubtracts the declared private members, so the published count stays 112.check-changeset-no-majornow readspackages/console/build-dist.shas the Console's packed-copy build script, andcheck-empty-changeset's frontmatter-parser family loses the deleted objectui digest.2.
@objectstack/consolebuilds in this workspace.packages/console/build-dist.shcopiesui/apps/console/dist(built by turbo through@object-ui/console#build) intopackages/console/dist, ships the trackedsdui.manifest.json(ADR-0080), and runs the single-zod canary over the bytes it ships. Root task@objectstack/console#build:dist(turbo.json) depends on@object-ui/console#build;pnpm console:buildruns it, andpnpm release/cut-rc.ymlrun it afterpnpm run build.filesandprepublishOnlyare unchanged.scripts/build-console.shis deleted. The CLI's remedy for a missing Console dist namespnpm console:build.3. The objectstack-side pin is deleted.
.objectui-sha,scripts/bump-objectui.sh(+ selftest),scripts/objectui-changeset-digest.mjs,scripts/objectui-range.mjs,scripts/check-prerelease-pin-watch.mjs,scripts/check-console-sha.mjs,scripts/check-console-injection.mjs,scripts/assert-console-spec-injection.mjs,scripts/console-spec-probes.mjs,packages/spec/scripts/build-console-objectstack-root.test.ts; the pin reads incut-rc.yml("THE objectui PIN IS AN INPUT HERE" andRead the committed objectui pin),release.yml,lint.yml,showcase-smoke.ymland the rootpackage.jsonscripts (objectui:*,check:console-sha,check:console-injection,check:objectui-*,check:prerelease-pins;pnpm dev*no longer runscheck:console-sha).scripts/check-console-intercept-disarm.mjsstays. Release notes (collect-release-notes.sh) say "no objectui pin" when the new ref has none. Gate self-tests and rosters that named the deleted scripts follow (dispatch-gates,pnpm-filter-targets,check-pnpm-filter-targets(tree-aware: foreign@object-ui/targets must be 0 withoutui/, >0 with it),bare-root-worklist,check-type-check-coverage). The lockstep count incontent/docs/protocol/backward-compatibility.mdxandscripts/publish-smoke-pack.mjsreads 112, both scopes (check:lockstep-package-count --fix), andpackages/spec/vitest.repo-tests.jsondrops the deleted test.4. The objectui-side pin is deleted, as a patch.
ui/does not exist onmain, so this half isscripts/ui-import/4a-ui-side.patchwith its apply and verify commands inscripts/ui-import/README.md, applied by sub-issue 5's adaptation commit. It deletes.objectstack-sha,.objectstack-pin/,bump-objectstack.sh,objectstack-pin.mjs,objectstack-floor.mjs,check-spec-range-floors.mjs,check-installed-spec-pin-claims.mjs, the dist-pin Vite probesvite-objectstack-spec-dist.ts/vite-objectstack-client-dist.ts,changeset-release.yml,spec-range-floors.yml,release-github-releases.mjsand their tests, plus (17c)sync-quick-reference-release.mjs, its test and thequick-reference-current-release-4143pin, withQUICK_REFERENCE.md's version rows. The single-zod guard moves toui/scripts/vite-single-zod.ts(it runs in every console build);apps/console/vite.config.tsdrops both injections. Every reader of the Changesets config goes through a newchangesetConfigPath()(own root standalone, monorepo root when nested); objectui'scheck-changeset-fixedandcheck-unused-dependenciesotherwise keep their extension rules (17b). The patch is written against verify head9e37acd126.5. One release lane. objectui's
changeset-release.ymlis gone; rootrelease.ymlpublishes both scopes in onepnpm -r publish, and the rootscripts/release-github-releases.mjscuts one GitHub Release per package tag across both scopes.The four deleted Console checks, and what proves the same thing now
assert-console-spec-injection.mjs@objectstack/spec, not the copy objectui's lockfile installed@objectstack/*dependency underui/isworkspace:^(33 spec, 2 client, 2 lint, 2 formula rows measured), which pnpm links and never resolves from the registry; the merged lockfile has 0 registry entries for@objectstack/specor@objectstack/clientand 37link:rows topackages/spec. The single-zod guard (Vite,ui/scripts/vite-single-zod.ts) and canary (build-dist.sh, on the shipped bytes) still run in every build.check-console-injection.mjs.objectui-shais gone; turbo's hash for@object-ui/console#buildincludes@objectstack/spec#build,@objectstack/client#buildand@objectstack/lint#build(measured withturbo run build:dist --filter=@objectstack/console --dry=json), so a spec change misses the cache.check-console-sha.mjspackages/console/distwas built from the pinned objectui commitui/after a pull;pnpm console:buildrebuilds it (a turbo cache hit when nothing changed). Nothing checks this onpnpm devany more: reported to the dispatcher.console-spec-probes.mjsVerification (merged tree at objectui@cd70b7818; the 17b/17c items re-measured on verify head
9e37acd126)pnpm changeset version(on verify head9e37acd126+ this PR + the ui patch): all 113 members move 18.1.0 → 18.2.0 in one bump: 112 public (73@objectstack/*, 39@object-ui/*) and the private extensionobject-ui. The other private@objectstack/*packages move as they do onmain.pnpm -r publishandrelease-verify-npmskipobject-ui(private), so nothing it owes the registry changes.pnpm -r publish --dry-runafter the version: 112 packages, 39@object-ui/*+ 72@objectstack/*+create-objectstack, all 18.2.0.pnpm packof@object-ui/core:@objectstack/specworkspace:^→^18.2.0,@object-ui/typesworkspace:*→18.2.0.pnpm console:build(CI=true): exit 0, single-zod canary green. The packed@objectstack/consolehas the same top-leveldist/entries as the published 18.1.0 tarball, minusdist/.objectstack-injection.jsonanddist/.objectui-sha; assets 2,268 → 2,381 (newer objectui), tarball 9,260K → 9,140K.ui/scripts/check-eager-closure-budget.mjs, ceiling 3,496.0 KB): this build 3,054.2 KB gzipped,vendor-objectstack1,605.2 KB; the published 18.1.0 dist measured by the same ceilings: 3,522.3 KB,vendor-objectstack1,851.5 KB. The membership half is red identically on both (packages/core: 1 of 89 modules invendor-objectstack), so it predates this PR.9e37acd126:git apply --checkpasses after README steps 1–2 and reproduces the editedui/tree byte for byte (60 files). With this PR's root half, install andpnpm run build:type-check:scripts,type-check:vitest-config,lint:rootexit 0; root and objectuicheck-changeset-fixedpass;vitest run scripts/__tests__17 failed / 5,573 passed, where 2 are 15 s load timeouts that pass alone, 2 fail the same way without the patch (check-lockfile-integrity;quick-reference-commands-4149on the root scripts the adaptation drops, cutover bill), and 14 read objectui's nestedui/.github/, which 4b PR 2 deletes.release.yml,cut-rc.yml,lint.yml,showcase-smoke.yml: exit 0. No step reads a pin file.Gates (this branch, no
ui/)dispatch-gates --commandsderives 166 families for this diff; all 166 ran, anddispatch-gates --ranreconciles: 164 run, 2 NOT-MEASURED. All were run on head4ac569dc00(after mergingmainatf0cf338330, which had moved.objectui-shaand the rootbuildscript), after a fullpnpm run build. 156 exit 0, includingcheck:required-contexts,check:workflow-status-functions,check:workflow-step-name-quoting,check-changeset-no-major,check-empty-changeset,check-adr-0087-registration,check:lockstep-package-count(112) andcheck:nul-bytes. One is red onmainitself and not this PR's:check:liveness(translation/flows.screenscitesservice-automation/src/engine.ts, which #25734 refactored; this PR touches neither). The other 9 are red or not measured becauseui/, PR B or 4b has not landed yet, as designed:check-changeset-fixed@object-ui/*names andobject-uiinfixedhave no package withoutui/(on the merged tree: exit 0, 112 public + 1 declared private)check-prerelease-pin-watch --self-test,--verboseprerelease-pin-watch.yml; this PR deletes the scriptcheck-self-test-wired --self-testci.ymlconsole-pinandprerelease-pin-watch.ymlstill invoke deleted scriptscheck:pm-dispatch-gatescheck:console-sha,check:console-injectionconsole-pinjob names themcheck-sdui-manifest,check:sdui-lockstep.objectui-shaDepends on, outside this PR
ui/; this PR merges right after it.ui/workspace — workspace globs, root turbo tasks, path-filtered ui test/typecheck/lint/E2E jobs, spec change compiles the Console; pin gates retire at cutover (parent #25677, 3/6) #25697 (retire the pin gates in the cutover window): removes theconsole-pinjob andconsolefilter inci.yml,prerelease-pin-watch.yml, and the live specimens in thedispatch-gatesself-test that still namecheck-prerelease-pin-watch.mjs. Until it lands,prerelease-pin-watch.ymlruns a script this PR deletes.objectui#,ui/AGENTS.mdnests, 18 governance workflows merged or retired (parent #25677, 4b/6) #25712):check-sdui-lockstep,check-sdui-manifestandgen-sdui-manifest-noderead.objectui-shaand go red without it; regeneratingsdui.manifest.jsonfromui/is theirs (the root copy lags the old pin, andbuild-dist.shships the tracked one). Also the nestedui/.github/and the tests that read it, and both AGENTS.md files.@object-uipublish rights (card risk 1) — confirmed by Tesla, ruling 17a.🤖 Generated with Claude Code
https://claude.ai/code/session_0149BHSXfCdQywGaLdpRAtWe