Skip to content

Commit 3b086e7

Browse files
chore(objectui): move the console pin from 0707b4a to 4016370, the newest green objectui main and the first pin past objectui#12957 (#24476)
Fixes #24457 Clause-②: no This PR moves the console pin from `0707b4ae3712` to `4016370af3c9`. That is objectui `main` at `4016370af3c9c9dafec2bc5299afd8e8079701b8` (objectui PR #13018), the newest objectui `main` commit that was green at the move. It is the first pin that carries objectui `749ed760` (objectstack-ai/objectui#12957's merge), so it is the first console build that takes `scripts/build-console.sh`'s `.objectstack-sha` branch (#24306, PR #24440). The maintainer's order, verbatim: 「你继续负责验证。.objectui-sha 可以升级到最新」. This PR is the end-to-end verification of ruling B on objectstack-ai/objectui#12955, so its evidence below is the deliverable. This PR is not a release act. The Version Packages PR is not touched, and no release workflow is dispatched. **Tier:** not governed. `node scripts/pm/check-governed-merges.mjs --test` on the five paths: "0 of 5 path(s) hit the register ... NOT governed". Size: 5 files, +80 / -10. ## Choosing the pin - **Green, read at the move.** REST `repos/objectstack-ai/objectui/commits/SHA/check-runs`, every page, read by this session: | objectui `main` commit | check-runs | verdict | |:--|:--|:--| | **`4016370af3c9`** (tip; read 2026-10-19T05:06:51Z) | **104 completed: 101 success, 3 skipped, 0 failure** | **newest green: the target** | | `46dbf32bf57f` | 69 completed: 64 success, 3 skipped, 2 cancelled (`Repo Gates`, `Bundle Analysis`) | not green: two checks never reached a verdict | | `09eadf4e1c14` | 99 completed: 96 success, 3 skipped | green (the card's filing-time tip) | | `d0934b919d64` | 101 completed: 97 success, 1 failure (`Snapshot the board to the archive branch`), 3 skipped | not green | At 04:48Z the tip still had 20 runs in progress. The session waited in the foreground until the last one (`Test (coverage)`) completed at 05:06:51Z, read `git ls-remote` (still `4016370af3c9`), and bumped at 05:06:59Z. - **The bump.** `OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh --no-commit 4016370`, exit 0: "objectui pin: 0707b4a → 4016370 (on origin/main)". The range walked completely in a full (non-shallow) scratch clone. ⛔ The shared `../objectui` checkout was never written: every objectui read and every build tree came from a scratch clone named by `OBJECTUI_ROOT`. - **Ancestry,** in that clone (`--is-shallow-repository` false): - `git merge-base --is-ancestor 749ed76 4016370…`: exit 0. objectui#12957's merge is in the pin; an exit 0 proves itself in any checkout. - the old pin `0707b4ae3712` is an ancestor: exit 0. - control, the reverse (`4016370af3c9` an ancestor of `749ed760`): exit 1. - range `0707b4ae3712..4016370`: 33 non-merge commits. - **objectui's own objectstack pin** at `4016370af3c9`: `.objectstack-sha` = `2c9bf9430a1198bfaa5c0de9ff4a811838c6869c`, unchanged since `749ed760`. ## The dispatch's mechanism assumptions, measured All four are measured at this PR's head `4289f447b1`: the branch merged with `origin/main` `ec951e29e4`, which carries #24427 (`26501ae24f`) and the spec retirement #24442 (`69f342b924`, `feat(spec)!`). 1. **The new branch runs, in the expected order.** From the `build-console.sh` log at `4289f447b1`, in order: - `→ objectui@4016370af3c9 installs @objectstack/client @objectstack/core @objectstack/formula @objectstack/lint @objectstack/sdui-parser @objectstack/spec @objectstack/types by commit — building them here...`, then the closure build (turbo, with declarations): 36/36 tasks; - `→ OBJECTSTACK_ROOT is set: packing @objectstack/* from /home/user/objectstack-issue-24457, standing in for the pin 2c9bf94.`, `pack 7 package(s): 15.8s`, and `✓ node_modules/.cache/objectstack now holds ... from /home/user/objectstack-issue-24457 (4289f44)`; - the frozen install: `Lockfile is up to date, resolution step is skipped`, `Done in 6.5s`; - objectui's `@object-ui/console^...` build: 34/34 tasks, 0 cached. 12 of those packages build with `tsc` first, and the console's own build is `tsc && vite build`, so objectui's sources type-check against this tree's packed declarations. Then the console bundle: `✓ 8956 modules transformed.` 2. **The dependency-name check passes.** objectui did not move its own pin (`.objectstack-sha` is still `2c9bf9430a`, as the PM measured). Re-measured anyway: the `dependencies`, `optionalDependencies` and `peerDependencies` NAMES of all seven packages are identical between objectstack `2c9bf9430a` and this tree (versions moved `18.0.0-next.3` → `18.0.0-next.4` with the Version Packages merge `725a5b1311`; names did not). The pin script's own lockfile check passed: it refuses on a difference, and it exited 0 before the install. 3. **Everything installed is this tree's.** Read off the build tree after the install, at `4289f447b1`: - `node_modules/.cache/objectstack/.stamp.json`: `source: external`, `root` = this worktree, `sha` = `4289f447b122…`, `dirty: false`. - `node_modules/.pnpm`: 7 `@objectstack` entries, all 7 in the `@objectstack+NAME@file+node_modules+.cache+objectstack+NAME…` form. - each installed package's `dist/` against `packages/NAME/dist/`: `diff -rq` exit 0 for all seven (spec, core, types, client, formula, sdui-parser, lint). Control: the installed spec's `dist` against `packages/core/dist`: exit 1. - the build tree's `pnpm-lock.yaml` (byte-identical to the one committed at `4016370af3c9`, `cmp` exit 0): 0 registry-resolved `@objectstack/*` keys, 14 `file:` keys. Control for the pattern: the same grep over objectui's lockfile at the old pin `0707b4ae3712` counts 14 registry-resolved keys (`'@objectstack/client@18.0.0-next.3'` and the rest). 4. **The usual move gates pass.** All in the tables below. Nothing turned red, so no contract difference between this tree (including #24442's retirement) and the new objectui pin was found. ## Console Pin Gate, local equivalent Run step by step as `ci.yml`'s `console-pin` job runs it. Each exit code was captured before any pipe; heavy steps ran under `scripts/pm/os-verify-lock.sh`. Shared 4-core box, so wall-clock figures are shared-box readings. Deviations from the CI job: `--concurrency=2` instead of 4 (the container's resource rule), and `OBJECTUI_ROOT` names a full scratch clone where CI shallow-clones (with no `OBJECTUI_ROOT`, this checkout's sibling `../objectui`, a shared checkout, would have been used). **Run 3, at this PR's head `4289f447b1`.** The build tree and the dist were deleted first, so the objectui worktree, the install and both builds were fresh. | step | command | exit | | --- | --- | --- | | install | `pnpm install --frozen-lockfile` | 0 | | closure | `pnpm exec turbo run build --filter=@objectstack/client... --concurrency=2` (36/36; lock VERDICT `command-exit 0`) | 0 | | build | `OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/build-console.sh` (lock VERDICT `command-exit 0`, held 481 s) | 0 | | assert | the job's "Assert a real Console dist is in place" script, verbatim, `CACHE_HIT` empty: `✓ Console dist present (65352 KB, via scripts/build-console.sh) from objectui@4016370af3c9` | 0 | | stamp | `pnpm check:console-sha`: `✓ Console dist matches the objectui pin (objectui@4016370af3c9).` | 0 | | injection | `pnpm check:console-injection --require-stamp` (self-test 67 assertions; the stamp records no observable skew) | 0 | | manifest | `node scripts/gen-sdui-manifest-node.mjs`: 107 components, sha256 `c6b03966dae9…`; byte-identical to the committed pair (`git status --porcelain`: 0 lines) | 0 | Inside the build: `✓ Bundle canary 'import/jobs' present`; `✓ Single-zod canary: exactly one zod version literal {major:4,minor:6,patch:7}` (2258 `assets/*.js` read); `✓ Injected and vendored @objectstack/spec declare the same descriptions — no observable skew` (the vendored spec IS this tree's packed spec now); `✓ Shipped the tracked sdui.manifest.json (recorded at objectui@4016370af3c9, this pin)`; `✓ @objectstack/console dist ready (65352 KB) from objectui@4016370af3c9`. **The bundled spec is this tree's, two ways:** - Two-sided, on a copy of the dist, against the npm `@objectstack/spec@18.0.0-next.3` tarball (the spec objectui's own pin was released as): `node scripts/assert-console-spec-injection.mjs --injected packages/spec --vendored NPM_NEXT3 --objectui BUILD_TREE --assets COPY/assets`, exit 0: "Console bundle carries THIS tree's @objectstack/spec, and only it", 16 of 16 injected-only descriptions present, the 1 published-only description absent. - Witnesses from the merged-in commits themselves, each in the bundle (1 asset each), each absent from the npm next.3 spec (0): - #24442 (`69f342b924`): the page action row's rewritten describes ("The row runs the declared action its ...", "the route writes them only where the acti..."); 0 in `packages/spec/src` at `26501ae24f`, the commit before it. - #24427 (`26501ae24f`): the navigation item's `visible` describe (`BaseNavItemSchema`, "no console renders ..."); 0 in `packages/spec/src` at the base `725a5b1311`. So the console bundles this tree as of the PR head, not an earlier build. **Two earlier runs of the same sequence**, each all exit 0, with the same item 1 to 3 readings (seven `diff -rq` exit 0, control exit 1, 0 registry-resolved keys) and the same two-sided probe (16/16 present, 1/1 absent): - Run 2 at `b0899060c5` (merged with `26501ae24f`), fresh tree: `build-console.sh` held the lock 478 s, `dist ready (65336 KB)`; the generator's re-run there was byte-identical too. - Run 1 at `4dd6c40d4d` (before any merge; base `725a5b1311`): `build-console.sh` held 472 s, `pack 7 package(s): 18.3s`, frozen install `Done in 8.4s`, `dist ready (65332 KB)`; this run produced the committed manifest pair. ## The second half: manifest and lockstep record - `node scripts/gen-sdui-manifest-node.mjs`, exit 0: 107 components, sha256 `c6b03966dae9…`, re-recorded `scripts/sdui-manifest.record.json` at the pin (`built-tree`, `@object-ui/core` 17.7.0). Re-run at `b0899060c5` and at `4289f447b1`: exit 0 and byte-identical both times. - `sdui.manifest.json` changes in two components, no component added or removed (107 → 107): - `record:related_list`'s `relationshipValueField` description no longer names `sys_user_position` / `sys_position` (objectui `78b07f468`, objectui#7611); - `record:quick_actions`'s `actionNames` description says the empty placeholder shows on a design / preview surface and nothing at runtime (objectui `1d3da6c1e`, objectui#12995). - `packages/sdui-parser/objectui-lockstep.json`: `node scripts/check-sdui-lockstep.mjs` exit 1 before (`[pin-moved]`), `OBJECTUI_ROOT=.cache/objectui-4016370af3c9 pnpm gen:sdui-lockstep` exit 0, then `pnpm check:sdui-lockstep` exit 0: byte-identical to objectui@4016370af3c9 over 214 grammar lines (blob `0131f27cf86d`), all 25 diagnostic codes, and the `not-a-container` predicate (blob `76c18fb95d1f`). Both blobs are unchanged, so no parser port is owed. - `OBJECTUI_ROOT=.cache/objectui-4016370af3c9 node scripts/check-sdui-manifest.mjs`, exit 0: present, intact, recorded at the live pin, and `@object-ui 17.7.0` is what the pin declares. ## The console changeset `.changeset/24457-console-pin-4016370af3c9.md` was written by `scripts/bump-objectui.sh --no-commit` and renamed to this card's prefix, as PR #24311 did. Its list is the generator's, untouched. - `@objectstack/console` **minor**: 32 releasing changesets across 33 non-merge commits, 1 annotated breaking, 0 release-nothing, and 1 commit without a changeset (`749ed7607`, objectui#12957's tooling merge). - The generator writes an unanswered ADR-0087 placeholder whenever the range declares a breaking entry, and says a human must answer it (`ADR_0087_SCAFFOLD`, objectstack#6494). It is answered `not-required (no-migration-prescription)` against this tree, with `Clause-②: no` beside it, as in PR #24311: - objectui `78b07f468` (objectui#7611) narrows four objectui faces: `@object-ui/core`'s `recordDelete.confirmText`, the `perm.facet.*` / `objectActions.resetPackageSet*` pack keys of `@object-ui/i18n`, the `field:permission-facet-link` registry key of `@object-ui/plugin-detail`, and `objectui check`'s known types in `@object-ui/cli`. - No package in this tree imports or depends on an `@object-ui/*` package (`git grep` over sources and manifests: 0). No file in this tree authors `widget: 'permission-facet-link'` (0). The `sys_permission_set` object whose facets that widget drew is no longer served here (ADR-0131 stage 8). ## Gates All at this PR's head `4289f447b1`, each exit code captured before any pipe. The same 72 were also run, with the same result, at `b0899060c5`. - `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands` (no paths: the change set comes from git, 5 paths vs merge base `ec951e29e` three-dot, 90 changed lines) derived **72** commands. Every one was run. - **71 exited 0.** - `pnpm check:dual-build-cjs-loads` exited 3, `PREREQUISITE NOT MET` ("Run `pnpm build` first ... nothing was measured"): it needs a whole-tree build, and this diff changes no package's source or `dist`. **NOT MEASURED** locally; CI's `Lint & Repo Gates` reading stands. - `--ran` reconciliation: "72 derived famil(ies) accounted for — 71 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)", exit 0. - The derivation said the tree was 4 commits behind `origin/main` `31ce45c071` and that one gate script changed in that range (`scripts/check-skills-token-ratchet.mjs`, an artifact-roster family outside the 72). This PR does not merge `main` again for that; the queue rebuilds on the current `main`. - Named in that list and worth reading out: `check-adr-0087-registration --base origin/main` 0 (the exemption notice names this changeset), `check-empty-changeset --base origin/main` 0, `check-changeset-no-major --base origin/main` 0, `check-sdui-manifest.mjs` 0 and `--self-test` 0, `pnpm check:sdui-lockstep` 0, `pnpm check:console-sha` 0, `pnpm check:console-injection` 0, `pnpm check:objectui-changeset` 0, `pnpm check:nul-bytes` 0. - Added by the dispatch: `pnpm check:objectui-bump` 0 ("20 assertions across 5 cases") and `pnpm check:objectui-changeset` 0 (also in the derived list). - No package source changed, so no package `test` / `typecheck` is owed. ## CI - **The Console Pin Gate does not run on this PR or in the merge queue.** `ci.yml` (THE TWO SPEEDS, lines 93-98) and the `console-pin` job's `if:` exclude `pull_request` and `merge_group`. The fleet-write relay cannot dispatch `ci.yml` either: `WORKFLOW_DISPATCH_ALLOWLIST` in `scripts/pm/fleet-write/ops.mjs` holds only `shard-timings-refresh.yml` and `release.yml`. So the **pre-merge full battery is NOT MEASURED**, and the local equivalent above is the pre-merge reading. - **The CI proof is `main`'s first full-battery run after the merge** (a `push` run, or the hourly `schedule` run if that push run is cancelled first). This PR changes `.objectui-sha`, so the console-dist cache key misses and that run builds the console fresh at `4016370af3c9`. The dispatching seat reads it and links it on #24457; if it is red, it is a `main`-red this card owns. - The fast set (Lint & Repo Gates, TypeScript Type Check, Test Core, Build Core, Governed Surface Queue Guard and the rest) runs on this PR as usual. ## Acceptance notes Observations, not filed: - `scripts/build-console.sh` (and `bump-objectui.sh`) default to the sibling `../objectui` when `OBJECTUI_ROOT` is unset. In the multi-agent worktree layout that sibling is a shared checkout, and the build adds a git worktree to it and may fetch into it (its working tree and HEAD are not touched). This run named a scratch clone every time. Documented sibling layout, not a defect. - `node scripts/check-sdui-manifest.mjs` without `OBJECTUI_ROOT` reads that sibling too (read-only); there it prints NOT CHECKED for the version leg, because the sibling does not carry the pin. With `OBJECTUI_ROOT` named it checks the leg and passes. - objectui `46dbf32bf57f` was passed over because two of its check-runs ended `cancelled` (its CI was cancelled when the next commit landed), so they never reached a verdict. - Already raised on #24306's report and not repeated as findings here: the console-dist cache key's coverage of the six non-spec manifests, and `check-console-injection`'s "injected and published spec" wording for a no-skew stamp. --- _Generated by [Claude Code](https://claude.ai/code/session_0188TsgPV8kQXfuRuKmkj2ks)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent ae6bd1a commit 3b086e7

5 files changed

Lines changed: 80 additions & 10 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
"@objectstack/console": minor
3+
---
4+
5+
Console (objectui) refreshed to `4016370af3c9`. Frontend changes in this range:
6+
7+
Derived from the changesets objectui declared over the range — 32 releasing of 32 changesets added across 33 non-merge commits; omitted: 1 commit carrying no changeset (they ship no package code).
8+
9+
- **minor** — **BREAKING** — The object-page special cases for the retired permission-set catalog object are removed (objectui#7611, after objectstack's ADR-0131 stage 8 retired `sys_position`, `sys_permissio… (objectui `78b07f468`)
10+
- **minor** — `@object-ui/react` now exports `buildNodeEvaluationScope(predicateScope, boundRecord, pageVariables)`, the one builder of the scope a page node's `visibleWhen` and other values ar… (objectui `9e7e1a55b`)
11+
- **minor** — A page route reads the objects its page binds, not the whole object registry (objectui#12980, part 1). (objectui `024b7b665`)
12+
- **minor** — feat(plugin-chatbot): a drafted result's Preview button appears for any draft kind, and the draft preview bar names what is pending on the surface it shows (objectui#12968) (objectui `76f91f80d`)
13+
- **minor** — A row action's templates read the row as `record`, the way the record header's do (objectui#12967). (objectui `025130ca0`)
14+
- **minor** — The Studio copilot's applied card can open the change review and undo the draft; the 变更 badge follows an in-turn publish; the chat fits the copilot's slot at a 1010 px window (obj… (objectui `43efd078a`)
15+
- **minor** — The list toolbar's Display control compares hidden fields and density against the view's own value again (objectui#12949). On a console list, after a user hid a column (or changed… (objectui `b5153f44e`)
16+
- **minor** — Studio's 变更 badge and the item header follow the copilot's drafts as they land (objectui#12725, item 5). (objectui `eee54ed79`)
17+
- **minor** — **The copilot's change card says when a change will be saved as a draft, and the applied card offers review and undo** (objectui#12894). (objectui `3da39ae42`)
18+
- **patch** — data-table: the whole leading cell of a selectable row is now the selection's hit area. A click beside the small checkbox toggles the row instead of opening the record (objectui#1… (objectui `4016370af`)
19+
- **patch** — `page:tabs` probes a related list's badge count from the record the record context names (`recordId`, the route's id on a record page) instead of the id inside the loaded row, so… (objectui `46dbf32bf`)
20+
- **patch** — The permission-set editor's read-only badge now names the caller's capability when that is the gate that closed (objectui#13011). (objectui `09eadf4e1`)
21+
- **patch** — The console sidebar's capability gate no longer loads the whole object registry in an app created in the console (an app with no package). It asks, by name, every object the app l… (objectui `2b1651d14`)
22+
- **patch** — The by-name object scope no longer records a failed read as a missing object (objectui#13009). A by-name read that obtains no answer (a 5xx, a network drop, a 404 without the `RES… (objectui `d0934b919`)
23+
- **patch** — The AI build plan card now draws a composed record title's line (for example 「名称:自动生成「{图书} · {读者} · {借出日期}」,表单里不出现」) in place of the plain 「名称:LABEL」 line, read from the plan card… (objectui `4b7ce4705`)
24+
- **patch** — In an app that names no package (an app created in the console is stored bound to none), two chrome readers no longer load the whole object registry (`GET /api/v1/meta/object`) wh… (objectui `1624e08f6`)
25+
- **patch** — A page route reads more of the objects its page binds in its own scope read, and an interface list page inside a package app no longer reads its source object a second time (objec… (objectui `d3fd5e4f9`)
26+
- **patch** — `record:quick_actions`: a refused declared action array (a mixed id/object array) no longer draws its "refused at index N (see console)" box in a runtime view. That box is develop… (objectui `0d9764260`)
27+
- **patch** — `record:quick_actions` no longer shows its authoring placeholder ("record:quick_actions — no actions configured") to a viewer whose named actions are all withheld. A block that na… (objectui `1d3da6c1e`)
28+
- **patch** — The AI build plan card draws a stage field's lifecycle on its chip (for example 「借出 · 已还 ✓完成 · 逾期 ⚠」), read from the plan card's `lifecycle` key. A chip without the key draws as b… (objectui `5f599dbcd`)
29+
- **patch** — Opening the console no longer starts nine reads the page does not show in the same moment as the page's own reads (objectui#12980, part 3). (objectui `6db875efc`)
30+
- **patch** — On a free-plan organization, the environment list's locked mark, "Development environments · Team plan and up" (zh 「开发环境 · 团队版起」), is now drawn only for a viewer who can upgrade (… (objectui `4dfdebdf5`)
31+
- **patch** — `page:tabs` no longer counts a related list the viewer cannot see (objectui#12987). A tab's derived badge sums the `record:related_list` blocks under it; a list whose own node-lev… (objectui `909c64e3a`)
32+
- **patch** — `record:quick_actions` maps an action's spec `variant` onto the `Button` vocabulary the way the record header and the row menu do: `danger` draws the destructive style and `primar… (objectui `bcd9717e8`)
33+
- **patch** — The Import Wizard no longer offers "Run automations & triggers" or "Import as historical data" (objectui#12985). Both import doors (`POST /api/v1/data/:object/import` and `/import… (objectui `cb8000181`)
34+
- **patch** — A console route's view no longer holds the boot splash after the route's data is in (objectui#12980, part 2). (objectui `736b9cee6`)
35+
- **patch** — Console: a create-workspace refusal carrying objectstack's `ORGANIZATION_CREATION_DISABLED` code now shows the localized "Creating new organizations is disabled on this instance."… (objectui `ccddde951`)
36+
- **patch** — The help menu gains an About entry on every console bar (the tenant console and the control plane draw the same header). It opens a small dialog naming the build the console was c… (objectui `ea34d9b7e`)
37+
- **patch** — The Studio copilot no longer draws the floating pending-changes bar over its composer (objectui#12965, part of objectui#12725). (objectui `32a171e56`)
38+
- **patch** — The list's quick-search box and the record pickers' type-ahead are no longer offered on an object whose search resolves to no field, and a refused search shows the server's messag… (objectui `b7fe09eba`)
39+
- **patch** — The metadata designer's copy no longer names the running system by the cloud noun "environment" (objectui#12960, the same rule objectui#12956 applied to the locale packs). Where a… (objectui `8dfc6b7a4`)
40+
- **patch** — Console copy names the system the user is already in, not the cloud noun "environment" (objectui#12956). Inside a running deployment, the Settings subtitle and its first category,… (objectui `7f9cc37d0`)
41+
42+
⚠️ 1 of these carries a breaking change: 1 by the author's own breaking annotation in the changeset body — objectui declares no `major` inside a launch window (`scripts/check-changeset-no-major.mjs`). Each is marked **BREAKING** in the list above — read them before compiling the release record.
43+
44+
**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.
45+
46+
- _(no changeset)_ feat(tooling): objectui consumes @objectstack/* by commit — .objectstack-sha, bump-objectstack.sh, dev and CI built from the pin (objectui#12957) (#12963) (objectui `749ed7607`)
47+
48+
Clause-②: no
49+
50+
<!-- adr-0087: not-required (no-migration-prescription)
51+
This diff moves `.objectui-sha` and the artefacts that travel with it: this console
52+
changeset, the re-recorded `scripts/sdui-manifest.record.json` and the regenerated
53+
`sdui.manifest.json`, and the re-recorded `packages/sdui-parser/objectui-lockstep.json`.
54+
It adds, removes or renames no ObjectStack-authorable key: no Zod shape, no spec
55+
declaration and no stored `sys_metadata` shape moves in it, so `objectstack migrate meta`
56+
has nothing here to rewrite, and this body carries no FROM/TO prescription of its own.
57+
The range carries one objectui change its author annotated breaking, and the digest
58+
marked it. It is answered against this tree: objectui `78b07f468` (objectui#7611)
59+
narrows four objectui faces — `@object-ui/core`'s `recordDelete.confirmText`
60+
signature, the `perm.facet.*` and `objectActions.resetPackageSet*` keys of
61+
`@object-ui/i18n`'s packs, the `field:permission-facet-link` registry key of
62+
`@object-ui/plugin-detail`, and `objectui check`'s known schema types in
63+
`@object-ui/cli`. No package in this tree imports or depends on any `@object-ui/*`
64+
package, `@objectstack/console` publishes objectui's built SPA and exports no objectui
65+
type, no file in this tree authors `widget: 'permission-facet-link'`, and the
66+
`sys_permission_set` object whose facets that widget drew is no longer served here
67+
(ADR-0131 stage 8). A field that still carries the hint renders with its declared
68+
type, the defined behaviour for an unregistered widget. -->
69+
70+
objectui range: `0707b4ae3712...4016370af3c9`

‎.objectui-sha‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0707b4ae37120d45d6401170666a0b76cb7a3546
1+
4016370af3c9c9dafec2bc5299afd8e8079701b8

‎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": "0707b4ae37120d45d6401170666a0b76cb7a3546",
10-
"revDate": "2026-10-18T08:44:48+00:00",
9+
"rev": "4016370af3c9c9dafec2bc5299afd8e8079701b8",
10+
"revDate": "2026-10-19T03:42:35+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": "0707b4ae37120d45d6401170666a0b76cb7a3546",
24+
"recordedAgainstPin": "4016370af3c9c9dafec2bc5299afd8e8079701b8",
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": "0707b4ae37120d45d6401170666a0b76cb7a3546",
14+
"objectuiSha": "4016370af3c9c9dafec2bc5299afd8e8079701b8",
1515
"source": "built-tree",
16-
"modulesRoot": ".cache/objectui-0707b4ae3712/apps/console",
16+
"modulesRoot": ".cache/objectui-4016370af3c9/apps/console",
1717
"objectuiWorkspaceVersion": "17.7.0",
1818
"generator": "scripts/gen-sdui-manifest-node.mjs",
19-
"generatedAt": "2026-10-18",
20-
"sha256": "c75bf93c6c718d40026e04520976d6ce8fc0fd2ec82cc08ec5ab1f713f6f5c9a",
19+
"generatedAt": "2026-10-19",
20+
"sha256": "c6b03966dae9b17b1f5864323efa05c143b31d95eee3cd77e4572eac980ac0cb",
2121
"components": 107
2222
}

‎sdui.manifest.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,7 +1515,7 @@
15151515
{
15161516
"name": "relationshipValueField",
15171517
"type": "string",
1518-
"description": "Which field OF THIS PARENT record `relationshipField` stores. Defaults to \"id\"; set it to the field a name-keyed junction points at (e.g. \"name\" when sys_user_position.position holds sys_position.name). The resolved value drives three things at once — the list filter, the Add-picker link value, and the pre-filled create form — so they cannot drift apart. While the parent record is still loading, a non-\"id\" field resolves to null and the list holds its fetch rather than querying on an empty value."
1518+
"description": "Which field OF THIS PARENT record `relationshipField` stores. Defaults to \"id\"; set it to the field a name-keyed junction points at (e.g. \"name\" when the junction column holds the machine name of the parent record). The resolved value drives three things at once — the list filter, the Add-picker link value, and the pre-filled create form — so they cannot drift apart. While the parent record is still loading, a non-\"id\" field resolves to null and the list holds its fetch rather than querying on an empty value."
15191519
},
15201520
{
15211521
"name": "parentDataSource",
@@ -1827,7 +1827,7 @@
18271827
"name": "actionNames",
18281828
"type": "array",
18291829
"of": "string",
1830-
"description": "Action names to expose, in order — resolved from the actions declared on the object. With no names (and no host-supplied actions) nothing is looked up and the bar renders its empty placeholder"
1830+
"description": "Action names to expose, in order — resolved from the actions declared on the object. With no names (and no host-supplied actions) nothing is looked up: the bar renders its empty placeholder on a design / preview surface and nothing at runtime"
18311831
},
18321832
{
18331833
"name": "requiredPermissions",

0 commit comments

Comments
 (0)