Repository navigation
chore(console): move the objectui pin cf153eb2e535 → 56cf4d8e89b7, past objectui#13316's CSV import door, so PR #25130 can land - #25160
Conversation
fix(plugin-grid,app-shell): a CSV file reaches the import door as CSV text (#13316) objectui@56cf4d8e89b71586e4d9bb9921433d44b03addf3 Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3 Co-authored-by: Claude <noreply@anthropic.com>
node scripts/gen-sdui-manifest-node.mjs over the built tree .cache/objectui-56cf4d8e89b7/apps/console: 107 components, sha256 d1fde278ffd6 (sdui.manifest.json byte-identical, so only the record moves). Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3 Co-authored-by: Claude <noreply@anthropic.com>
pnpm gen:sdui-lockstep against a checkout of objectui at the pin: only rev, revDate and recordedAgainstPin move. The grammar region blob (0131f27cf86d), the 25 diagnostic codes and the containment predicate blob (76c18fb95d1f) are unchanged; objectui's packages/sdui-parser/src has no diff over cf153eb2e535..56cf4d8e89b7. Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3 Co-authored-by: Claude <noreply@anthropic.com>
📓 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): |
席位核对 · ACCEPT (landing on green)
Generated by Claude Code |
Fixes #25151
Clause-②: no
This PR moves the console pin from
cf153eb2e535to56cf4d8e89b7: objectuimainat56cf4d8e89b71586e4d9bb9921433d44b03addf3. That commit is the merge of objectstack-ai/objectui#13316 (objectui#13315), objectui's half of #25078's two-repo fix: objectui's Import Wizard and identity import send a.csv/.tsv/.txtfile to the import door as CSV text. It is also objectuimain's tip. With this pin onmain, #25078's PR #25130 can mergemainover it and land.This PR is not a release act. It does not touch the Version Packages PR and dispatches no release workflow. No objectui source changed, nothing was written to objectui, and no product code,
.github/workflows/**orscripts/build-console.shis in the diff.Tier: not governed.
node scripts/pm/check-governed-merges.mjs --branch claude/issue-25151-objectui-pin-13316atc331b2c9e: "0 of 4 path(s) hit the register (7 surfaces govern objectstack) ... NOT governed", exit 0. Size: 4 files, +40 / -8.Choosing the pin
The pin is judged on objectui's push and merge-group CI for this commit, as earlier pin moves were. That is the seat's ruling in claim amendment
6330756861on #25151. There is no newer objectuimaincommit to consider:56cf4d8e89b7is the tip.CIrun 39702726461, eventpush, branchmain, head56cf4d8e89b7, attempt 1: all 31 jobssuccess, coverage shards included. The other push runs on the commit are alsosuccess: Lint 39702726493, Repo Gates 39702726453, Changeset Release 39702726466, Changeset Guard 39702726440 and Bundle Analysis 39702726467.gh-readonly-queue/main/pr-13316-…: CI 39701528761, Lint, Repo Gates, Changeset Presence and Governed Surface Guard.CIrun 39703234572 (eventschedule, created 01:01:32Z) on the same commit concludedfailureon two jobs.Test (coverage shard 5/8)failed onapps/console/src/pages/settings/__tests__/SettingsView.leaveGuard-13163.test.tsx, case "after a successful save the page is clean again: no prompt" (AssertionError: expected true to be false). Its aggregatorTest (coverage)then reported "Coverage gate did NOT run | shards=failure". Tally ofcommits/56cf4d8e89b7/check-runsat 2026-10-22T01:38:21Z: 99 check-runs, 94success, 3skipped, 2failure(these two), 0 in progress.cf153eb2e535..56cf4d8e89b7does not touch that test file. In a full clone, it last changed in7a5f26715(fix(console): a settings page asks before leaving with unsaved edits (objectui#13163) objectui#13204), an ancestor of the old pin (merge-base --is-ancestorexit 0). The component it tests,SettingsView.tsx, last changed in0093b2c82(fix(console): a settings value that misses its declared format blocks Save (objectui#13287) objectui#13298), which is in this range.7e9708e632. I read 11 scheduledCIruns on that commit (13:34Z to 23:32Z on 2026-10-21): 9 passed, and the 2 that failed did so on infrastructure (a test shard with no conclusion, aType Checktimeout), not on this test.56cf4d8e89b7, from the root of the objectui tree thatbuild-console.shbuilt, underscripts/pm/os-verify-lock.sh:pnpm exec vitest run --maxWorkers=2 apps/console/src/pages/settings/__tests__/SettingsView.leaveGuard-13163.test.tsx. Each run exited 0 with "Test Files 1 passed (1)" and "Tests 12 passed (12)"; lock VERDICTcommand-exit 0.--is-shallow-repositoryfalse):cf153eb2e535is an ancestor of56cf4d8e89b7: exit 0;56cf4d8e89b7an ancestor ofcf153eb2e535): exit 1;56cf4d8e89b7isorigin/main's tip, andbump-objectui.shreports it "(on origin/main)".What the move carries: 19 commits
git log cf153eb2e535..56cf4d8e89b7in the full clone: 19 non-merge commits, 0 merges. One line each, newest first. FLAG marks a commit that changes a contract the console build or a pinned record in this repo reads.56cf4d8e8plugin-grid, app-shell: a CSV file reaches the import door as CSV text (fix(plugin-grid,app-shell): a CSV file reaches the import door as CSV text objectui#13316). FLAG, by design: the import-door contract, objectui's half of rest: one record export format may not neutralize a stored value for the context its consumer reads it in (reach not measured; detail withheld under the disclosure ruling) #25078. The CSV import now sendsformat: 'csv'with CSV text to this repo's import door.7e9708e63app-shell: register the console home blocks under the app-shell namespace (fix(app-shell): register the console home blocks under the app-shell namespace objectui#13314). FLAG, SDUI registry:hero,stat,usage-bar,checklistandtile-gridregister under namespaceapp-shell, and objectui's ownknown-schema-typeslist gains fiveapp-shell:keys. Measured effect here: none. The regeneratedsdui.manifest.jsonis byte-identical (107 components, sha256d1fde278ffd6…), so it is not in this diff.78bd6d732app-shell: the /data filter bar offers single-value relation fields (feat(app-shell): the /data filter bar offers single-value relation fields, so Members View all filters by User objectui#13313)f5e42cad4types: stop authoring the retired addRecord.mode / formView in two spec-alignment tests (test(types): stop authoring the retired addRecord.mode / formView in two spec-alignment tests objectui#13312). Tests only.13c92e78ddata-objectstack: the batch-6 DroppedFieldsEvent reason pin with stored_expression subtracted (test(data-objectstack): state the batch-6 DroppedFieldsEvent reason pin with stored_expression subtracted (objectui#13309) objectui#13311). Tests only.279425409app-shell: the Position preview lists the permission sets a position declares (fix(app-shell): Position preview lists the permission sets a position declares objectui#13307). It reads the spec keyposition.permissionSets, which this tree declares (packages/spec/src/identity/position.zod.ts). The console'stscbuild passed against this tree's spec.601c406ddreact: the withholding console line names an element, not a navigation entry (fix(react): the withholding console line names an element, not a navigation entry objectui#13306)3aafc0d53react: a page node whose visibility predicate faults is withheld (fix(react): a page node whose visibility predicate faults is withheld (objectui#13299) objectui#13302)813c3d973fields: password inputs carry an autocomplete token (fix(fields): password inputs carry an autocomplete token (objectui#13295) objectui#13300)0093b2c82console: a settings value that misses its declared format blocks Save (fix(console): a settings value that misses its declared format blocks Save (objectui#13287) objectui#13298). This is the last change toSettingsView.tsx, the component under the scheduled run's red test above.7c405b73acomponents: a page:tabs item whose visibleWhen faults withholds its tab (fix(components): a page:tabs item visibleWhen that faults withholds its tab (objectui#13286) objectui#13297)f66973232plugin-detail: show an object-level rule refusal without the _record label (fix(plugin-detail): show an object-level rule refusal without the _record label objectui#13296)c8f8b10adcomponents: select-all, the row checkboxes and the row numbers share one centre line (fix(components): select-all, the row checkboxes and the row numbers share one centre line (objectui#13293) objectui#13294)fbb4b23bfcomponents, plugin-grid: selecting a cell's text neither opens the record nor starts an edit (fix(components,plugin-grid): selecting a cell's text neither opens the record nor starts an edit (objectui#13188) objectui#13192)8701f1e76components, fields: head a widget-hinted nameField through its face (fix(components,fields): head a widget-hinted nameField through its face (objectui#13216) objectui#13291). This is the range's oneminorchangeset.a91f6bbb1console: the approvals inbox opens a request on its served page (feat(console): the approvals inbox opens a request on its served page, and the side sheet is deleted (objectui#12484) objectui#13290). FLAG, served-page contract: the console now navigates to the standard record route, which mounts this repo's pagesys_approval_request_detail(present here:packages/plugins/plugin-approvals/src/sys-approval-request.page.ts).3aa2f5261release packages (chore: release packages objectui#11600). FLAG, versions:@object-ui/*moves from 17.7.0 to 18.0.0, and so doesobjectuiWorkspaceVersioninscripts/sdui-manifest.record.json.check-sdui-manifest's version oracle agrees: 18.0.0. This commit carries no objectui changeset.53dea27afapp-shell: give the package dialog's Dependencies row a key/value editor (fix(app-shell): give the package dialog's Dependencies row a key/value editor objectui#13284)9e1bff63aapp-shell: the app report index lists the reports its navigation ships (fix(app-shell): the app report index lists the reports its navigation ships, module contributions included objectui#13283)Unchanged over the range:
.objectstack-sha:06cab4849a8aat both ends.pnpm-lock.yaml, the rootpackage.json,pnpm-workspace.yamlandapps/console/vite.config.ts: no diff.packages/sdui-parser/src: 0 diff lines, so the lockstep blobs stay as they are and no parser port is owed.packages/types/src: only two test files change.The procedure, as written
No shared objectui checkout was written to.
/home/user/objectuiis shallow and shared, so every objectui read came from a full scratch clone thatOBJECTUI_ROOTnames, andbuild-console.sh's build worktree registration landed in that clone. Exit codes were captured before any pipe, and the heavy steps ran underscripts/pm/os-verify-lock.sh.OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh 56cf4d8e89b71586e4d9bb9921433d44b03addf3 --no-commit: "cf153eb2e535..56cf4d8e89b7 walks completely", "16 releasing changeset(s), 0 breaking (0 declared major, 0 annotated), 2 release-nothing, 1 commit(s) without a changeset — objectui declaredminor, recorded aspatch", "objectui pin: cf153eb2e535 → 56cf4d8e89b7 (on origin/main)", "wrote changeset console-56cf4d8e89b7.md (@objectstack/console: patch)".--no-commitis used only so the commit carries this repo's trailer pair; the files are the script's own@objectstack/*packages objectui installs by commit (client, core, formula, lint, sdui-parser, spec, types), with their closure:turbo run build ... --concurrency=2, 37 packages. ThenOBJECTUI_ROOT=SCRATCH_CLONE OBJECTUI_DEPS_BUILD_CMD='pnpm exec turbo run build --filter=@object-ui/console^... --concurrency=2' bash scripts/build-console.sh(=pnpm objectui:build). Lock VERDICTcommand-exit 0, held 689 snode scripts/gen-sdui-manifest-node.mjs: "wrote sdui.manifest.json (107 components, 185019 bytes, sha256 d1fde278ffd6…)", "re-recorded scripts/sdui-manifest.record.json at pin 56cf4d8e89b7 — built-tree .cache/objectui-56cf4d8e89b7/apps/console, @object-ui/core workspace version 18.0.0"node scripts/check-sdui-manifest.mjs: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8e89b7"pnpm check:sdui-lockstep:[pin-moved]OBJECTUI_ROOT=SCRATCH_CHECKOUT_AT_PIN pnpm gen:sdui-lockstep(a second full scratch clone, checked out detached at56cf4d8e89b7): "recorded objectui@56cf4d8e89b7 (2026-10-22T00:44:27+00:00) — 214 region line(s), blob 0131f27cf86d, 25 diagnostic code(s), containment predicate 76c18fb95d1f"pnpm check:sdui-lockstep: "byte-identical to objectui@56cf4d8e89b7 ... over 214 grammar line(s) [blob 0131f27cf86d], agrees on all 25 diagnostic code(s) and on thenot-a-containerpredicate [blob 76c18fb95d1f], across 7 non-test source(s)"pnpm check:objectui-bump: "bump-objectui self-test PASSED — 20 assertions across 5 cases"The console build's closing checks, at
aabbc29a3, the bump commit. The later commits add the manifest record, the lockstep record and the merge ofmain2aaee3b24. That merge brings #25145 and #25147, which touchpackages/runtime,service-automation,plugin-auth,plugin-emailandverify, none of them one of the seven packages the console bundle packs (git diff --name-onlyover those seven: empty).assets/*.jsfiles.pnpm check:console-sha: "Console dist matches the objectui pin (objectui@56cf4d8e89b7)".The Console Pin Gate does not run on a PR or in the merge queue (
ci.yml'sconsole-pinjob excludespull_requestandmerge_group). So this local build is the pre-merge reading.main's first full-battery run after the merge rebuilds the console fresh at56cf4d8e89b7, because this PR changes.objectui-shaand so misses the console-dist cache key.The regenerated files
.objectui-sha:cf153eb2e535…→56cf4d8e89b71586e4d9bb9921433d44b03addf3(bump-objectui.sh)..changeset/console-56cf4d8e89b7.md(bump-objectui.sh, untouched):@objectstack/consolepatch. Counts: 16 releasing of 18 changesets over 19 non-merge commits, 0 breaking, 2 release-nothing, and 1 commit without a changeset, which the changeset lists by subject. There is no breaking entry, so the generator wrote no ADR-0087 placeholder and no line of the changeset is hand-written.scripts/sdui-manifest.record.json(gen-sdui-manifest-node.mjs):objectuiSha,modulesRoot,objectuiWorkspaceVersion(17.7.0 → 18.0.0) andgeneratedAtmove.packages/sdui-parser/objectui-lockstep.json(gen:sdui-lockstep): onlyrev,revDateandrecordedAgainstPinmove. Both blobs (0131f27cf86d,76c18fb95d1f) and the 25 codes are unchanged. The file is not in@objectstack/sdui-parser'sfiles, so it publishes nothing.sdui.manifest.jsonis not in the diff: the generator rewrote it byte-identical.Gates
Every gate below ran at this PR's head
c331b2c9e, after the merge oforigin/main2aaee3b24and a fresh install. A workspace build came first, withpackages/runtime/.objectstackremoved:turbo run build --filter='!@objectstack/docs' --concurrency=2, 76/76 tasks (22 cached), lock VERDICTcommand-exit 0. Each exit code was captured before any pipe.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, with no paths, derived 73 commands from 4 paths against merge base2aaee3b24(three-dot). All 73 exited 0.--ranover theCOMMAND :: exit Nrecord: "Run reconciliation — 73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", then "73 derived famil(ies) accounted for". Exit 0.check-sdui-manifest.mjs: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8e89b7"; its--self-testtoo.pnpm check:sdui-lockstep: "byte-identical to objectui@56cf4d8e89b7".check-adr-0087-registration --base origin/main: "this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)".check-empty-changeset --base origin/main: "1 declaring changeset(s) added".pnpm check:dts-closure: "76 built package(s) swept - 179/179 declared declaration file(s) present".pnpm check:published-files,pnpm check:objectui-changesetandpnpm check:merge-driver.pnpm check:nul-bytes: "scanned 11736 text file(s) ... no raw ASCII control bytes".pnpm check:console-shaandpnpm check:console-injectionexit 0 at this head, but only by skipping: there is nopackages/console/distin this worktree. Their real readings were taken at7ab800f7d, with the dist built at the pin, and are quoted in the procedure section above.pnpm check:objectui-bump, exit 0.@objectstack/sdui-parser(its directory holds the lockstep record):testgave "Test Files 14 passed (14)", "Tests 225 passed (225)", andtypecheck(tsc --noEmit) exited 0, both under the lock. No package source changed, so nothing else is owed locally.test:repois CI's (Test Core).Acceptance notes
mainover it, and its new head owes a new review of record. Nothing in this PR touches fix(rest)!: the CSV export writes a text cell in a form its consumer reads as text, and the CSV import reverses it (#25078) #25130's files.Generated by Claude Code