Repository navigation
chore(objectui): move the console pin to f96f771140f1, carrying objectstack-ai/objectui#12453 and objectstack-ai/objectui#12519 - #23738
Merged
Conversation
scripts/bump-objectui.sh --no-commit f96f771140f1: the pin file and the derived @objectstack/console changeset (31 releasing objectui changesets, 0 breaking, level minor). The SDUI manifest and lockstep re-records follow. Claude-Session: https://claude.ai/code/session_016PVjjuVPte5XEJvaQx1E4t Co-authored-by: Claude <noreply@anthropic.com>
…step at f96f771140f1 node scripts/gen-sdui-manifest-node.mjs over .cache/objectui-f96f771140f1: 107 components, sdui.manifest.json byte-identical (sha256 370153544e9b), so only its provenance record moves. pnpm gen:sdui-lockstep with OBJECTUI_ROOT at the pin's build worktree: objectui's packages/sdui-parser is unchanged across the hop (grammar blob 0131f27cf86d, predicate blob 76c18fb95d1f), so only the revision fields move. Claude-Session: https://claude.ai/code/session_016PVjjuVPte5XEJvaQx1E4t Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift Check
What this run could not see
Coarse fallback — 3 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Contributor
Author
席位核对 · ACCEPT · PR #23738 (draft, head
|
This was referenced Oct 15, 2026
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #23720
Clause-②: no
This PR moves the console pin from
1f23d5b070fatof96f771140f1, objectuimainatf96f771140f1ba488245e0d0d3e7420d720bff9a. That commit carries2a69285(objectstack-ai/objectui#12453, the Studio read-only posture, the epic's last design child) and73a3eb2(objectstack-ai/objectui#12519, navigation edit mode keeps the 240 px rail), and every other commit the card lists as not in the old pin.It is one bump, through
scripts/bump-objectui.sh, and not a rider on another PR.Tier: no governed surface.
node scripts/pm/check-governed-merges.mjs --branch claude/issue-23720-console-pin-hopreads 0 of 4 paths on the register (exit 0). Size: 4 files, +47 / −6 (53 changed lines, under the 3000 human-merge line).The hop: 31 objectui commits, 267 paths, all on objectui
maincompare1f23d5b070fa...f96f771140f1:ahead_by31,behind_by0,total_commits31, 267 files.git rev-parse --is-shallow-repositoryanswersfalse),git merge-base --is-ancestor X f96f771140f1exits 0 for2a69285and for73a3eb2. It also exits 0 for each of the other seven commits the card lists as missing (a27c1cf,b541694,a3d14e7,5249c24,eea0993,baab2d6,d17952c), for the old pin, and forf96f771140f1against objectuiorigin/main.2a69285is 13 commits behind the new pin and73a3eb2is 14 behind.1f23d5b070fa~50against1f23d5b070faexits 0.Why
f96f771140f1f96f771140f1was objectuimain's tip, the commit the dispatch read.completed: success, 41 of 41 across its merge-queue and push runs:Lint2,Type Check2,Test (shard N/16)32,Build & E2E2,Build Docs2,Changeset Declaration1. objectui'smainruleset (GET /repos/objectstack-ai/objectui/rules/branches/main) also requiresTestandGoverned Surface Queue Guard, and both read success. The only run still going wasTest (coverage shard 2/8), which is not in the required set.mainhad moved 4 commits, to3e09c1e8d, whose required set was still running (32 success, 11 in progress). The 4 are7066dae53(a docs move),830eb1f2d(Page designer: a readable source editor, a Properties tab with the page's metadata, a Run mode that differs objectui#12522),f23eb01cb(Studio empty states carry the primary action (Validations, Hooks, Actions, Automations, Access) objectui#12514) and3e09c1e8d(Studio: controls without an accessible name (records toolbar, flow nodes, sheets, landing cards) objectui#12510). The card's "Not this card's" section names those cards as riding a later hop and says this one does not wait for them, so this PR keeps the pin read at dispatch time and does not chase the tip.Acceptance readings, at the new pin
(a) The built console bundle carries the read-only link, and not the retired key
Source, at objectui
f96f771140f1.packages/app-shell/src/views/metadata-admin/i18n.tsdeclares'engine.studio.pkg.readonlyLink': 'Read-only · Customize with an overlay'(line 3034, and the zh-CN entry at line 6318).StudioDesignSurface.tsx:526renders it.git grep engine.studio.designer.hintReadOnlyfinds nothing underpackagesorappsat the new pin. At the old pin it finds 5 hits: the two i18n entries, theObjectFormDesigner.tsx:806call site and two test lines.Built bundle.
scripts/build-console.shbuilt objectui at the pin into.cache/objectui-f96f771140f1/, and its dist was copied topackages/console/dist/(3449 files, 3434 underassets/). A literal-string grep (grep -rlF) over every file:engine.studio.pkg.readonlyLink: 2 assets. Inassets/studioBuilder-BUpNsRQw.jsit is the link's call site,Z(`engine.studio.pkg.readonlyLink`,n), right after itsLayersicon. Inassets/i18n-Ba_I5RJO.jsit is the table entry, 2 occurrences (en and zh-CN).Read-only · Customize with an overlay: 1 asset,assets/i18n-Ba_I5RJO.js.engine.studio.designer.hintReadOnlyappears in 0 of the 3449 files.engine.studio.designer.toolbarHintis the sibling key the retired one was rendered beside (ObjectFormDesigner.tsx, same i18n table). It appears in the same two assets,studioBuilder-BUpNsRQw.jsandi18n-Ba_I5RJO.js, so the grep can see that table and that component.On the smoke boot below, the served
/_console/assets/i18n-Ba_I5RJO.jsand/_console/assets/studioBuilder-BUpNsRQw.jsare byte-identical to the dist copies (cmpexit 0 each). They give the same readings: 1 English string, 1 key at the call site, 0 retired keys.(b) A smoke boot serves
/_console/.objectui-shaat the new pinpnpm dev -- --fresh -p 47321from this worktree, with thepnpmPID recorded:GET /api/v1/healthanswered 200 (status: ok, version18.0.0-next.1).GET /_console/answered 200 (18552 bytes), and its entryassets/index-CYwFWDSL.jsanswered 200 (283056 bytes)./_console/.objectui-shareadsf96f771140f1ba488245e0d0d3e7420d720bff9a(200).I stopped the server by its listening PID (3900) and the recorded
pnpmPID (3798). Every PID in its process tree was gone afterwards, andlsof -ti tcp:47321found nothing.No live browser run. (a) is a source and bundle reading. A browser pass on a read-only package was not part of the card's acceptance and was not done.
Artefacts that travel with the pin
.changeset/console-f96f771140f1.md, fromscripts/bump-objectui.sh --no-commit f96f771140f1….@objectstack/consoleminor, the level the script derived: the highest level objectui declared over the range.major, 0 annotated), 0 release-nothing, 0 commits without a changeset.check-adr-0087-registration --base origin/mainreads "this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)". This differs from the previous hop, whose range carried five declared-breaking entries.node scripts/gen-sdui-manifest-node.mjsover.cache/objectui-f96f771140f1/apps/consolewrote 107 components.sdui.manifest.jsonis byte-identical (sha256370153544e9b…, unchanged), so no component, input or accept set moved. Only its provenance recordscripts/sdui-manifest.record.jsonmoves (objectuiShaandmodulesRoot). The unchanged manifest is also whyClause-②: noholds on the one shipped file this repository adds to the console dist.pnpm gen:sdui-lockstepre-recordspackages/sdui-parser/objectui-lockstep.jsonatf96f771140f1. It ran withOBJECTUI_ROOTset to the pin's build worktree, so the shared objectui checkout's HEAD was never moved. Across the hop, objectui'spackages/sdui-parserdid not change at all (git diff --statis empty). The grammar blob0131f27cf86dand the predicate blob76c18fb95d1fare unchanged, andcheck:sdui-locksteppasses (214 grammar lines, 25 codes, the predicate). No parser port is owed.Console Pin Gate steps, run locally
The
Console Pin Gateis amainfull-battery job that is skipped on PRs. This is its local equivalent:Client closure:
turbo run build --concurrency=2 --filter=@objectstack/client --filter=@objectstack/sdui-parser --filter=@objectstack/spec(34 tasks, 34 successful).scripts/build-console.shat the new pin, under the verify lock. It reported:import/jobspresent;{major:4,minor:6,patch:5}, 2252assets/*.jsread);That run came before the manifest regeneration, but the regenerated manifest is byte-identical, so the dist ships the same bytes either way.
pnpm check:console-sha("Console dist matches the objectui pin (objectui@f96f771140f1)") andpnpm check:console-injection(self-test 67 assertions, then the injected-spec reading): both exit 0, inside the gate run below.Verification, at
b1a8a6bcfnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(no paths, from merge base9bb93706f) derived 69 commands. Each was run with its exit code recorded before any pipe.--ranreports "69 derived, 69 run, 0 NOT-MEASURED, 0 UNRUN".check:dual-build-cjs-loadsneeded a fullturbo run build --concurrency=2 --filter=!@objectstack/docs(75 tasks, 75 successful). It then read 110 entry points across 68 packages.check-sdui-manifest(sha256370153544e9b…, 107 components, recorded at the live pin) and its self-test (13 cases),check:sdui-lockstep,check:objectui-changeset,check-adr-0087-registration --base origin/main,check-changeset-no-major --base origin/main("This diff introduces nomajorbump"),check-empty-changeset --base origin/main,check:console-shaandcheck:console-injection.pnpm --filter @objectstack/sdui-parser exec vitest run --maxWorkers=2: 14 files, 225 passed.pnpm --filter @objectstack/sdui-parser typecheck(tsc --noEmit): exit 0. The lockstep record is not in that package'sfiles[]and no test of it reads the file. These ran as a regression check, not as owed coverage.mainbefore opening.mainmoved 4 commits (9bb93706ftod0c09e47c) while this ran. None of them touches any of this PR's 4 paths. 29 of the 45 paths they touch are underpackages/spec/src, so a merge would make the locally built console dist's spec-injection reading stale and would need a second console build to re-read it. CI reads this PR at its merge ref, and the queue rebuilds it ontomain.pnpm lint, theType Checklanes and the full test farm. Reason: they are CI-owned runs, and this diff adds no TypeScript.Acceptance notes
liverows inpackages/spec/liveness/*.json, grepped as a word over the range's 3610 added lines of non-test objectui source underpackagesandapps. The only hits werepageName, a local route variable, andbordered, in a comment. Neither reads the ledger'sview.listkeys.page.print,translation.flows.successMessageanderrorMessage) are stillplanned, and the open family card spec liveness: the console pin hop to objectui 1f23d5b070fa makespage.printandtranslation.flows.successMessage/errorMessagereadplannedwhile the shipped console applies them (family card; theparentDataSourceleg is #23585) #23710 carries them. This PR does not change them.domain:specseat 2), which plans a later pin move, touches none of.objectui-sha, the manifest pair, the lockstep record or a console changeset: 29 files read at 23:05Z.Generated by Claude Code