Repository navigation
Commit b8191f7
chore(objectui): bump the console pin to e420df310f5b (carries objectui#11163 and objectui#11199) (#20990)
Fixes #20949
Clause-②: no (narrowing)
Bumps the console pin: `.objectui-sha` `db11afd4967c` -> `e420df310f5b`,
objectui `origin/main` HEAD at bump time (2026-09-30T22:03Z). The pin's
`apps/console/package.json` is `@object-ui/console` 17.6.0, the same
version the old pin carried (`npm view @object-ui/console dist-tags`
answers `latest: 17.6.0`).
## Containment (objectui `merge-base --is-ancestor C e420df310f5b`,
private full clone, `rev-parse --is-shallow-repository` = false)
| commit | subject | result |
|---|---|---|
| `f4ed2387e9` | record:related_list reads its declared `actions`
(objectui#11163, PR objectui#11263) | exit 0, contained |
| `f8334f8777` | the permission editor's RLS policy list draws each
policy's label and description (objectui#11199, PR objectui#11215) |
exit 0, contained |
| control `db11afd4967c` (old pin) | | exit 0, contained (90 commits
behind the new pin) |
| negative control: `e420df310f5b` as ancestor of `db11afd4967c` | |
exit 1 |
On `main`: `git branch -r --contains e420df310f5b` lists `origin/main`,
and `merge-base --is-ancestor e420df310f5b origin/main` exits 0.
Riders: objectui#11270 and objectui#11253 are not in the range (0 hits
in the `db11afd4967c..e420df310f5b` log). So the three rider texts on
#20949 (comment `5920572123`) are not due at this pin.
## What changed
- `.objectui-sha` and `.changeset/console-e420df310f5b.md`, written by
`scripts/bump-objectui.sh` (`@objectstack/console` minor). The range has
87 releasing changesets. 5 of them are declared breaking, and all 5 are
on objectui's own packages (see "Resolved since the first report").
- `sdui.manifest.json` and `scripts/sdui-manifest.record.json`, from
`node scripts/gen-sdui-manifest-node.mjs` (no arguments): 107
components, `@object-ui/core` 17.6.0.
- `packages/sdui-parser/objectui-lockstep.json`, from `pnpm
gen:sdui-lockstep` against the pin's own checkout: 214 grammar-region
lines, 25 diagnostic codes on objectui's side.
- **The `@objectstack/sdui-parser` port the lockstep demands.** This is
the seat's ruling A on #20949 (`5923109668`), which widened the claim's
surface. It mechanically mirrors objectui `6f864cf62` (objectui#8285).
- `packages/sdui-parser/src/kanban-quick-add.ts` is deleted.
- Its wiring in `validate.ts` and its four barrel exports in `index.ts`
(`checkKanbanQuickAdd`, `INERT_QUICK_ADD`, `QUICK_ADD_HOST_TYPES`,
`QUICK_ADD_KEY`) are removed.
- `__tests__/inert-quick-add.test.ts` is rewritten for the new state, as
objectui rewrote its own pin: an authored `quickAdd` on `object-kanban`
draws the prop walk's own `unknown-prop` warning, and the barrel no
longer publishes the four names.
- There is no new diagnostic.
- No other workspace package imports the four names (`git grep`, 0 hits
outside `packages/sdui-parser`). `@objectstack/lint` and
`@objectstack/metadata-protocol` import only `compile`, `parseJsx` and
types.
- `.changeset/sdui-parser-retire-inert-quick-add.md` declares the export
removal: `minor`, `**BREAKING**` under the launch-window convention, a
`!` summary and `Clause-②: no (narrowing)`.
- `pnpm check:sdui-lockstep` now exits 0: the copy agrees with objectui
at `e420df310f5b` on all 25 codes.
- The 49 asserting pin citations in `packages/spec/src`, re-measured at
the new pin (next section). Also the regenerated
`packages/spec/src/migrations/registry.ts` and
`content/docs/references/ui/view.mdx`, and
`.changeset/objectui-pin-citations-e420df310f5b.md` (`@objectstack/spec`
patch). The `FormField.span` describe and six migration-entry
descriptions ship the pin sha, so the text change publishes.
- `pnpm objectui:build` at the new pin built objectui against this
tree's client and spec. It found no API break against framework code: 34
of 34 objectui dependency builds succeeded, with 0 TypeScript errors.
- `origin/main` was merged three times through
`scripts/pm/os-regen-merge.sh`, at `e32638aeac`, `b1da822c0f` and
`62ec639b04`.
- The first two overlapped only on the generated `registry.ts`, and
`gen:migration-registry` reproduced the merged file byte for byte.
- The third overlapped on `component.zod.ts` and `component.test.ts`
(#20961's slot positions). It text-merged cleanly, and
`check:objectui-pin-citations` still reads 49 asserting citations
matching.
- After each merge `check:generated` read every artifact current, so no
regeneration commit was owed.
## Pin-citation re-measure
Each record was handled in the same way. Its anchors were mapped through
the `db11afd4967c..e420df310f5b` diff of the file each one cites, and
each anchor was re-read at the new pin. Line hashes and corpus counts
were taken again with the method the record names: `git hash-object` of
the cited block, and `git grep -o -F` over the tracked tree. Only after
that were the pin and the moved numbers updated. Each record keeps its
earlier hops as history. `check:objectui-pin-citations` now reports 49
asserting citations matching `e420df310` and 7 anchor content assertions
verified against objectui at the pin.
Records whose CLAIMS moved, not only their numbers. These want a human
read:
- **`action:*` rows** (`component.zod.ts`): objectui#11168 slice 1
rewrote all four registrations' `inputs`.
- `action:button` now publishes 27 of its 29 keys, all but `endpoint`
and `undoable`. It used to publish 7.
- `action:menu` now publishes `size` and `visible`.
- `action:group` no longer publishes its group-level `name`, and
publishes the primitive's four sizes.
- The three publication sentences are corrected. `action:icon`'s `label`
is now read five times, where the record said four: objectui#11212 added
a fault label.
- **New, recorded and not declared:** objectui#11182 has `action:group`
and `action:menu` consume the host's evaluated `disabled` verdict. So a
`properties.disabled` on either block now greys it out at render, while
their strict rows refuse the key at save. The docblocks say so.
Declaring the key is a contract decision, not a pin re-measure.
- **`object-kanban` `limit`:** objectui#9853 renamed the default
`DEFAULT_KANBAN_LIMIT` to `DEFAULT_KANBAN_FETCH_BATCH_SIZE`. It is still
100. The query line changed on the anchor itself.
- **`object-kanban` `quickAdd` records:** objectui#8285 and
objectui#11234 landed objectui's half of the retirement. The board now
renders an internal `KanbanBoardCore`, which reads neither key. So
`ObjectKanban.tsx` names `quickAdd` and `onQuickAdd` 2 times each, all
four in the comments that record the cut, where the records said 0. The
records also now say that the schema-only `kanban-ui` block they point
to was retired in objectui (objectui#8257), long before this pin.
- **`object-tree`:** objectui#8348 moved the tree's rung-1 call from the
`undeclared` arm to `view-data`. It also dropped the `?? schema.data`
fallback from the host-data read. So the renderer and the row now agree
on a bare array. The "WIDER than this row" sentences are dated to the
pin where they held.
- **`object-map`:** one sentence said an authored `data` array still
reaches the renderer through the React props channel. That has been
false since objectui#9571, which predates `db11afd4967c`. objectui's own
docblock was only corrected on this hop, so the record is corrected now.
The `sort` record said the registration declares no `sort` input.
objectui#8220 now declares one, in the same array form, and also on
`object-gantt` and `object-timeline`.
Files: `component.zod.ts`, `component.test.ts`, `view.zod.ts`,
`dataset.zod.ts`, `functional-completeness.ts`,
`api-methods-batch-conformance.test.ts`, the six
`migrations/entries/semantic/18.*` entries, and the regenerated
`registry.ts` and `view.mdx`. No key, default, enum member or export
moves.
## Boot at the new pin
- **Build:** `scripts/build-console.sh` ran at `e420df310f5b` with this
tree's client and spec injected, and its VERDICT was command-exit 0.
- The canary `import/jobs` is present.
- `assert-console-spec-injection` passes: 22 of 22 injected-only
descriptions are present, and all 6 published-only ones are absent.
- `chunk-membership.json` reads `client` in `vendor-objectstack`.
- The tracked manifest it shipped is recorded at this pin. The dist is
62660 KB.
- **Server:** `examples/app-showcase` booted with `objectstack dev --ui
--fresh --no-seed-admin --no-watch -p 41949` on the whole-workspace
build of the merged tree. `bootstrap-status` answered `hasOwner: false`.
- **Registration:** headless Chromium (`/opt/pw-browsers/chromium`)
opened `/_console/setup` and submitted the owner form.
- `bootstrap-status` flipped to `hasOwner: true`.
- In-page `get-session` returned the new owner with positions
`platform_admin`, `org_owner` and `everyone`, and `isPlatformAdmin:
true`.
- The wizard exited to `/_console/home`, which lists Showcase and Setup.
- **Second sign-in:** a fresh context signed in through
`/_console/login`.
- Showcase opened
`/_console/apps/com.example.showcase/page/showcase_capability_map`.
- Setup opened
`/_console/apps/com.objectstack.setup/dashboard/system_overview`.
- Neither page showed a compile or render error.
- **Errors:** 0 page errors, 0 `TypeError` and 0 5xx across both passes.
- **Non-2xx:**
- `401 GET /api/v1/auth/get-session` before each sign-in.
- `404 GET /api/v1/usage/storage`, which #20638's boot recorded at the
old pin too.
- The browser's implicit `404 /favicon.ico`. The console's `index.html`
declares an empty-href icon link, and that file is byte-identical at
both pins.
- **Note:** a first drive from `127.0.0.1` was refused at sign-up with
403 (Better Auth: `Invalid origin`). The server publishes `localhost`,
and the drive from `localhost` is the record above. That attempt wrote
nothing; `hasOwner` stayed false.
- **Teardown:** only the four recorded PIDs were stopped. The port is
free, and the `--fresh` tempdir went with the process.
- **Not repeated after the sdui-parser port:** the port touches nothing
the console loads. `build-console.sh` injects only this tree's
`@objectstack/client` and `@objectstack/spec` into the bundle.
`@objectstack/sdui-parser` runs server-side, in the JSX-page save gate
(`@objectstack/lint`, `@objectstack/metadata-protocol`). The change
there is one diagnostic code for an authored `quickAdd` on
`object-kanban` (`inert-quick-add` becomes `unknown-prop`, still a
warning), which the registration and sign-in path never reaches.
## Spec compatibility
objectui at `e420df310f5b` resolves every `@objectstack/*` package to
17.5.0 in its lockfile, the published `latest`. Its declared ranges top
out at `^17.5.0`. Its own CI on that commit concluded success for both
`Type Check` and `Spec Main Shape Gate`. The first compiles against the
installed 17.5.0 faces, and the second against objectstack `main`.
Here, objectui's dependency build ran against
`node_modules/@objectstack/spec` 17.5.0 with 0 TypeScript errors. No
objectui change in the range needs an unreleased spec.
## Governed surface
None of the 25 changed paths is a row of `GOVERNED_SURFACES` in
`scripts/pm/check-governed-merges.mjs` (`governedPathsIn` returns none).
No release act was performed. The diff is 1950 changed lines, under the
5000-line human-merge threshold.
## Resolved since the first report
Both answers are on #20949 in `5923109668`.
1. **ADR-0087 disposition, the maintainer's ruling** 「not-required
(推荐)」: `.changeset/console-e420df310f5b.md` now carries `adr-0087:
not-required (no-migration-prescription)` in place of the bump script's
placeholder. It is worded after #20638's and fitted to this diff:
- It names the paths this diff moves, and states that the diff adds,
removes or renames no ObjectStack-authorable key.
- It names the five declared-breaking entries as objectui's own
surfaces: `52aad5cef`, `615346d61`, `6f864cf62`, `3c13675e5` and
`846cec0ef`.
- It notes that `object-kanban.quickAdd` is already registered on this
side as `page.component.object-kanban.quickAdd` (#17260).
- The sdui-parser changeset carries the same disposition, worded as the
ObjectStack mirror of `6f864cf62`.
- `check-adr-0087-registration --base origin/main` exits 0: 2
declared-breaking changesets, each with a disposition.
2. **`check:sdui-lockstep` code-drift `inert-quick-add`, the seat's
ruling A:** the port is above, and the gate exits 0.
Gates at head `62ec639b04`: 125 derived, 125 run, 0 NOT-MEASURED, 0
unrun, and all 125 exit 0. The 11 artifact-roster gates whose roster
sits in a touched directory also all exit 0.
- `@objectstack/spec`: tests 17211 passed and 1 todo, across 584 files;
typecheck exit 0.
- `@objectstack/sdui-parser`: 217 tests passed across 13 files;
typecheck exit 0.
- `@objectstack/lint` (its three JSX-page and lazy-deps suites): 20
tests passed.
- `@objectstack/metadata-protocol`: 2896 tests passed and 19 skipped.
- Whole-workspace build: 72 of 72 tasks.
- The rewritten `inert-quick-add` pin was reverse-checked once. With the
three pre-port sources restored from `b1da822c0f`, 4 of its 6 rows go
red. The `false` and braced-marker rows stay green, because the interim
never fired for them. Restored, `git diff HEAD` is empty and both edited
files' blobs equal `HEAD`'s.
---
_Generated by [Claude
Code](https://claude.ai/code/session_018fxqvRJW12TaHC7DUQ89Y6)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4f83db5 commit b8191f7
25 files changed
Lines changed: 1234 additions & 716 deletions
File tree
- .changeset
- content/docs/references/ui
- packages
- sdui-parser
- src
- __tests__
- spec/src
- data
- kernel
- migrations
- entries/semantic
- ui
- scripts
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
216 | | - | |
| 216 | + | |
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
| |||
378 | 378 | | |
379 | 379 | | |
380 | 380 | | |
381 | | - | |
| 381 | + | |
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
| 9 | + | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | 18 | | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
24 | 23 | | |
25 | | - | |
| 24 | + | |
26 | 25 | | |
27 | 26 | | |
28 | 27 | | |
| |||
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | | - | |
43 | 41 | | |
44 | 42 | | |
45 | 43 | | |
| |||
0 commit comments