Skip to content

Commit 06900c9

Browse files
chore(console): move the objectui pin cf153eb → 56cf4d8, past objectui#13316's CSV import door, so PR #25130 can land (#25160)
Fixes #25151 Clause-②: no This PR moves the console pin from `cf153eb2e535` to `56cf4d8e89b7`: objectui `main` at `56cf4d8e89b71586e4d9bb9921433d44b03addf3`. 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` / `.txt` file to the import door as CSV text. It is also objectui `main`'s tip. With this pin on `main`, #25078's PR #25130 can merge `main` over 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/**` or `scripts/build-console.sh` is in the diff. **Tier:** not governed. `node scripts/pm/check-governed-merges.mjs --branch claude/issue-25151-objectui-pin-13316` at `c331b2c9e`: "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 `6330756861` on #25151. There is no newer objectui `main` commit to consider: `56cf4d8e89b7` is the tip. - **Push CI, all success.** objectui `CI` run **39702726461**, event `push`, branch `main`, head `56cf4d8e89b7`, attempt 1: all 31 jobs `success`, coverage shards included. The other push runs on the commit are also `success`: Lint 39702726493, Repo Gates 39702726453, Changeset Release 39702726466, Changeset Guard 39702726440 and Bundle Analysis 39702726467. - **Merge-group CI, all success.** On `gh-readonly-queue/main/pr-13316-…`: CI 39701528761, Lint, Repo Gates, Changeset Presence and Governed Surface Guard. - **The one red is a scheduled run, recorded here, not hidden.** The scheduled `CI` run **39703234572** (event `schedule`, created 01:01:32Z) on the same commit concluded `failure` on two jobs. `Test (coverage shard 5/8)` failed on `apps/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 aggregator `Test (coverage)` then reported "Coverage gate did NOT run | shards=failure". Tally of `commits/56cf4d8e89b7/check-runs` at 2026-10-22T01:38:21Z: 99 check-runs, 94 `success`, 3 `skipped`, 2 `failure` (these two), 0 in progress. - **Why this is not taken as a red pin:** - The range `cf153eb2e535..56cf4d8` does not touch that test file. In a full clone, it last changed in `7a5f26715` (objectstack-ai/objectui#13204), an ancestor of the old pin (`merge-base --is-ancestor` exit 0). The component it tests, `SettingsView.tsx`, last changed in `0093b2c82` (objectstack-ai/objectui#13298), which is in this range. - The same file passed in the push run on this same commit. - Both of those changes are in `7e9708e632`. I read 11 scheduled `CI` runs 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, a `Type Check` timeout), not on this test. - Rerun locally 5 times at `56cf4d8e89b7`, from the root of the objectui tree that `build-console.sh` built, under `scripts/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 VERDICT `command-exit 0`. - The seat files the flake in objectui, for objectui's own lane. - **Ancestry,** in a full (non-shallow) scratch clone of objectui (`--is-shallow-repository` false): - the old pin `cf153eb2e535` is an ancestor of `56cf4d8e89b7`: exit 0; - control, the reverse (`56cf4d8e89b7` an ancestor of `cf153eb2e535`): exit 1; - `56cf4d8e89b7` is `origin/main`'s tip, and `bump-objectui.sh` reports it "(on origin/main)". ## What the move carries: 19 commits `git log cf153eb..56cf4d8` in 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. - `56cf4d8e8` plugin-grid, app-shell: a CSV file reaches the import door as CSV text (objectstack-ai/objectui#13316). **FLAG, by design:** the import-door contract, objectui's half of #25078. The CSV import now sends `format: 'csv'` with CSV text to this repo's import door. - `7e9708e63` app-shell: register the console home blocks under the app-shell namespace (objectstack-ai/objectui#13314). **FLAG, SDUI registry:** `hero`, `stat`, `usage-bar`, `checklist` and `tile-grid` register under namespace `app-shell`, and objectui's own `known-schema-types` list gains five `app-shell:` keys. Measured effect here: none. The regenerated `sdui.manifest.json` is byte-identical (107 components, sha256 `d1fde278ffd6…`), so it is not in this diff. - `78bd6d732` app-shell: the /data filter bar offers single-value relation fields (objectstack-ai/objectui#13313) - `f5e42cad4` types: stop authoring the retired addRecord.mode / formView in two spec-alignment tests (objectstack-ai/objectui#13312). Tests only. - `13c92e78d` data-objectstack: the batch-6 DroppedFieldsEvent reason pin with stored_expression subtracted (objectstack-ai/objectui#13311). Tests only. - `279425409` app-shell: the Position preview lists the permission sets a position declares (objectstack-ai/objectui#13307). It reads the spec key `position.permissionSets`, which this tree declares (`packages/spec/src/identity/position.zod.ts`). The console's `tsc` build passed against this tree's spec. - `601c406dd` react: the withholding console line names an element, not a navigation entry (objectstack-ai/objectui#13306) - `3aafc0d53` react: a page node whose visibility predicate faults is withheld (objectstack-ai/objectui#13302) - `813c3d973` fields: password inputs carry an autocomplete token (objectstack-ai/objectui#13300) - `0093b2c82` console: a settings value that misses its declared format blocks Save (objectstack-ai/objectui#13298). This is the last change to `SettingsView.tsx`, the component under the scheduled run's red test above. - `7c405b73a` components: a page:tabs item whose visibleWhen faults withholds its tab (objectstack-ai/objectui#13297) - `f66973232` plugin-detail: show an object-level rule refusal without the _record label (objectstack-ai/objectui#13296) - `c8f8b10ad` components: select-all, the row checkboxes and the row numbers share one centre line (objectstack-ai/objectui#13294) - `fbb4b23bf` components, plugin-grid: selecting a cell's text neither opens the record nor starts an edit (objectstack-ai/objectui#13192) - `8701f1e76` components, fields: head a widget-hinted nameField through its face (objectstack-ai/objectui#13291). This is the range's one `minor` changeset. - `a91f6bbb1` console: the approvals inbox opens a request on its served page (objectstack-ai/objectui#13290). **FLAG, served-page contract:** the console now navigates to the standard record route, which mounts this repo's page `sys_approval_request_detail` (present here: `packages/plugins/plugin-approvals/src/sys-approval-request.page.ts`). - `3aa2f5261` release packages (objectstack-ai/objectui#11600). **FLAG, versions:** `@object-ui/*` moves from 17.7.0 to 18.0.0, and so does `objectuiWorkspaceVersion` in `scripts/sdui-manifest.record.json`. `check-sdui-manifest`'s version oracle agrees: 18.0.0. This commit carries no objectui changeset. - `53dea27af` app-shell: give the package dialog's Dependencies row a key/value editor (objectstack-ai/objectui#13284) - `9e1bff63a` app-shell: the app report index lists the reports its navigation ships (objectstack-ai/objectui#13283) **Unchanged over the range:** - objectui's `.objectstack-sha`: `06cab4849a8a` at both ends. - `pnpm-lock.yaml`, the root `package.json`, `pnpm-workspace.yaml` and `apps/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/objectui` is shallow and shared, so every objectui read came from a full scratch clone that `OBJECTUI_ROOT` names, and `build-console.sh`'s build worktree registration landed in that clone. Exit codes were captured before any pipe, and the heavy steps ran under `scripts/pm/os-verify-lock.sh`. | step | command and reading | exit | | --- | --- | --- | | bump | `OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh 56cf4d8 --no-commit`: "cf153eb2e535..56cf4d8 walks completely", "16 releasing changeset(s), 0 breaking (0 declared major, 0 annotated), 2 release-nothing, 1 commit(s) without a changeset — objectui declared `minor`, recorded as `patch`", "objectui pin: cf153eb → 56cf4d8 (on origin/main)", "wrote changeset console-56cf4d8e89b7.md (@objectstack/console: patch)". `--no-commit` is used only so the commit carries this repo's trailer pair; the files are the script's own | 0 | | build | The seven `@objectstack/*` packages objectui installs by commit (client, core, formula, lint, sdui-parser, spec, types), with their closure: `turbo run build ... --concurrency=2`, 37 packages. Then `OBJECTUI_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 VERDICT `command-exit 0`, held 689 s | 0 | | manifest | `node 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 56cf4d8 — built-tree .cache/objectui-56cf4d8e89b7/apps/console, @object-ui/core workspace version 18.0.0" | 0 | | manifest check | `node scripts/check-sdui-manifest.mjs`: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8" | 0 | | lockstep, before | `pnpm check:sdui-lockstep`: `[pin-moved]` | 1 | | lockstep record | `OBJECTUI_ROOT=SCRATCH_CHECKOUT_AT_PIN pnpm gen:sdui-lockstep` (a second full scratch clone, checked out detached at `56cf4d8e89b7`): "recorded objectui@56cf4d8e89b7 (2026-10-22T00:44:27+00:00) — 214 region line(s), blob 0131f27cf86d, 25 diagnostic code(s), containment predicate 76c18fb95d1f" | 0 | | lockstep, after | `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 the `not-a-container` predicate [blob 76c18fb95d1f], across 7 non-test source(s)" | 0 | | bump self-test | `pnpm check:objectui-bump`: "bump-objectui self-test PASSED — 20 assertions across 5 cases" | 0 | **The console build's closing checks,** at `aabbc29a3`, the bump commit. The later commits add the manifest record, the lockstep record and the merge of `main` `2aaee3b24`. That merge brings #25145 and #25147, which touch `packages/runtime`, `service-automation`, `plugin-auth`, `plugin-email` and `verify`, none of them one of the seven packages the console bundle packs (`git diff --name-only` over those seven: empty). - "Bundle canary 'import/jobs' present". - "Single-zod canary: exactly one zod version literal {major:4,minor:6,patch:7}", over 2261 `assets/*.js` files. - "Console bundle carries THIS tree's @objectstack/spec, and only it". All 26 injected-only descriptions are present, and all 5 pin-only descriptions are absent. - "@objectstack/console dist ready (65708 KB) from objectui@56cf4d8e89b7". - `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`'s `console-pin` job excludes `pull_request` and `merge_group`). So this local build is the pre-merge reading. `main`'s first full-battery run after the merge rebuilds the console fresh at `56cf4d8e89b7`, because this PR changes `.objectui-sha` and 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/console` **patch**. 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) and `generatedAt` move. - `packages/sdui-parser/objectui-lockstep.json` (`gen:sdui-lockstep`): only `rev`, `revDate` and `recordedAgainstPin` move. Both blobs (`0131f27cf86d`, `76c18fb95d1f`) and the 25 codes are unchanged. The file is not in `@objectstack/sdui-parser`'s `files`, so it publishes nothing. - `sdui.manifest.json` is **not** in the diff: the generator rewrote it byte-identical. ## Gates Every gate below ran at this PR's head `c331b2c9e`, after the merge of `origin/main` `2aaee3b24` and a fresh install. A workspace build came first, with `packages/runtime/.objectstack` removed: `turbo run build --filter='!@objectstack/docs' --concurrency=2`, 76/76 tasks (22 cached), lock VERDICT `command-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 base `2aaee3b24` (three-dot). **All 73 exited 0.** - `--ran` over the `COMMAND :: exit N` record: "Run reconciliation — 73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", then "73 derived famil(ies) accounted for". Exit 0. - Some of the 73, each exit 0: - `check-sdui-manifest.mjs`: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8"; its `--self-test` too. - `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-changeset` and `pnpm check:merge-driver`. - `pnpm check:nul-bytes`: "scanned 11736 text file(s) ... no raw ASCII control bytes". - `pnpm check:console-sha` and `pnpm check:console-injection` exit 0 at this head, but only by skipping: there is no `packages/console/dist` in this worktree. Their real readings were taken at `7ab800f7d`, with the dist built at the pin, and are quoted in the procedure section above. - Added outside the derivation: `pnpm check:objectui-bump`, exit 0. - `@objectstack/sdui-parser` (its directory holds the lockstep record): `test` gave "Test Files 14 passed (14)", "Tests 225 passed (225)", and `typecheck` (`tsc --noEmit`) exited 0, both under the lock. No package source changed, so nothing else is owed locally. `test:repo` is CI's (`Test Core`). ## Acceptance notes - **The scheduled-run red above is objectui's.** No test in this repo runs it, and objectui's push CI on the same commit passed it. The seat files it in objectui. - **#25130 still owes its own landing steps.** After this lands, PR #25130 merges `main` over it, and its new head owes a new review of record. Nothing in this PR touches #25130's files. --- _Generated by [Claude Code](https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6b44efa commit 06900c9

4 files changed

Lines changed: 40 additions & 8 deletions

File tree

‎.changeset/console-56cf4d8e89b7.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
"@objectstack/console": patch
3+
---
4+
5+
Console (objectui) refreshed to `56cf4d8e89b7`. Frontend changes in this range:
6+
7+
Derived from the changesets objectui declared over the range — 16 releasing of 18 changesets added across 19 non-merge commits; omitted: 2 release-nothing changesets, 1 commit carrying no changeset (they ship no package code).
8+
9+
- **minor** — The record page heading draws a `nameField` that declares a widget with a read face of its own through that face, the one the field's list column draws (objectui#13216). A record… (objectui `8701f1e76`)
10+
- **patch** — The Import Wizard sends a CSV file to the import door as CSV text (objectui#13315). When you import a `.csv`, `.tsv` or `.txt` file, the request is now `format: 'csv'` with the ro… (objectui `56cf4d8e8`)
11+
- **patch** — The console home blocks `hero`, `stat`, `usage-bar`, `checklist` and `tile-grid` register under the `app-shell` namespace, so the console no longer logs a "without a namespace is… (objectui `7e9708e63`)
12+
- **patch** — The `/data` page's generated filter bar now offers single-value relation fields (`lookup`, `master_detail` and `user`) beside the picklist fields (objectui#13310). A relation chip… (objectui `78bd6d732`)
13+
- **patch** — The Position preview lists the permission sets a position declares in `permissionSets` (ADR-0131 D4), by machine name in declared order. The "positions don't grant data access on… (objectui `279425409`)
14+
- **patch** — The console line for a visibility predicate that cannot be evaluated, on a gate that withholds what it gates, no longer says "a navigation entry" was withheld. The same line is pr… (objectui `601c406dd`)
15+
- **patch** — A page node whose declared `visibleWhen` / `visible` / `visibleOn` predicate cannot be evaluated (over the CEL bounds, a type error, an unbound root, a missing function) is no lon… (objectui `3aafc0d53`)
16+
- **patch** — A password or secret input now tells the browser what it is for (objectui#13295). (objectui `813c3d973`)
17+
- **patch** — Settings pages: a `url`, `email`, `phone` or `color` value that misses the format its type declares now blocks Save (objectui#13287). No request goes out, the row is marked inline… (objectui `0093b2c82`)
18+
- **patch** — A `page:tabs` item whose `visibleWhen` faults on evaluation is no longer drawn (objectui#13286). (objectui `7c405b73a`)
19+
- **patch** — The inline-edit save bar shows an object-level rule's refusal as the rule's own message, without a field label (objectui#13292). (objectui `f66973232`)
20+
- **patch** — data-table: with row numbers on, the header's select-all checkbox, each row's checkbox and the row number now share one centre line in the leading column (objectui#13293). (objectui `c8f8b10ad`)
21+
- **patch** — data-table / VirtualGrid: selecting a cell's text no longer opens the record or starts an inline edit, and Ctrl/Cmd+C copies the selected text instead of the whole cell value. A p… (objectui `fbb4b23bf`)
22+
- **patch** — The Approvals Inbox opens a request on the page the platform serves for it, and its side sheet is gone (objectui#12484). (objectui `a91f6bbb1`)
23+
- **patch** — The package dialog's Dependencies row is now an author-facing editor (objectui#13278). It used to be the spec form's raw JSON box under the developer hint "widget object-fields —… (objectui `53dea27af`)
24+
- **patch** — The app's report index (`/apps/APP/reports`) and the ⌘K palette's report list now include the reports a module contributes to the app's navigation (`navigationContributions`), not… (objectui `9e1bff63a`)
25+
26+
**In this console build, declared nowhere** — objectui merged 1 commit in this range with no `.changeset/*.md`. The code is inside the pin above and ships here, but nothing upstream declared it, so it appears in no objectui CHANGELOG and in no entry above. Listed by subject rather than counted, because a count cannot tell a dependency bump from a form-behaviour change (objectstack#6174); the upstream gate that would prevent this is objectui#3387.
27+
28+
- _(no changeset)_ chore: release packages (#11600) (objectui `3aa2f5261`)
29+
30+
Metadata-protocol: none (the console refresh changes no key, value or type a metadata author writes)
31+
32+
objectui range: `cf153eb2e535...56cf4d8e89b7`

‎.objectui-sha‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cf153eb2e5351505abf3b82fb76bfdc9a841bbde
1+
56cf4d8e89b71586e4d9bb9921433d44b03addf3

‎packages/sdui-parser/objectui-lockstep.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
],
77
"objectui": {
88
"repo": "https://github.com/objectstack-ai/objectui.git",
9-
"rev": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
10-
"revDate": "2026-10-20T19:13:54+00:00",
9+
"rev": "56cf4d8e89b71586e4d9bb9921433d44b03addf3",
10+
"revDate": "2026-10-22T00:44:27+00:00",
1111
"source": "packages/sdui-parser/src",
1212
"files": [
1313
"packages/sdui-parser/src/body-dialect.ts",
@@ -21,7 +21,7 @@
2121
"packages/sdui-parser/src/validate.ts"
2222
]
2323
},
24-
"recordedAgainstPin": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
24+
"recordedAgainstPin": "56cf4d8e89b71586e4d9bb9921433d44b03addf3",
2525
"grammarRegion": {
2626
"file": "packages/sdui-parser/src/parse.ts",
2727
"delimiter": "/* ---------------------- the JS literal subset (#6614) ---------------------- */",

‎scripts/sdui-manifest.record.json‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
"a pin bump without regeneration goes RED there — that is the anti-rot half of the freshness gate.",
1212
"Regenerate + re-record: pnpm objectui:build && node scripts/gen-sdui-manifest-node.mjs"
1313
],
14-
"objectuiSha": "cf153eb2e5351505abf3b82fb76bfdc9a841bbde",
14+
"objectuiSha": "56cf4d8e89b71586e4d9bb9921433d44b03addf3",
1515
"source": "built-tree",
16-
"modulesRoot": ".cache/objectui-cf153eb2e535/apps/console",
17-
"objectuiWorkspaceVersion": "17.7.0",
16+
"modulesRoot": ".cache/objectui-56cf4d8e89b7/apps/console",
17+
"objectuiWorkspaceVersion": "18.0.0",
1818
"generator": "scripts/gen-sdui-manifest-node.mjs",
19-
"generatedAt": "2026-10-20",
19+
"generatedAt": "2026-10-22",
2020
"sha256": "d1fde278ffd643900aba9e8fcf834d35a9c345246709f1667ae71618eaad109c",
2121
"components": 107
2222
}

0 commit comments

Comments
 (0)