Repository navigation
Commit 0bf85ea
chore(objectui): bump the console pin to f8a9d0fb0596 (carries objectui#10221 and the objectui#9910 re-cut) with re-measured pin citations and the lockstep re-record (#20036)
Fixes #20029
Clause-②: no
Moves the console pin to objectui `main` `f8a9d0fb0596` (the tip at
2026-09-24T20:41Z). That pin carries objectui#10221 (`0651e7ab4`, a
currency amount's decimals come from its currency, never from `scale`),
which ruling 乙 on #19910 item 2 requires before PR #19909 lands. It also
carries the objectui#9910 re-cut (`5ea623ea`, containment is the
declared `children` slot), which #19969 waits on. The PR folds in the
#19503 / PR #19832 precedent's two steps: the sdui-parser lockstep
re-record, and a re-MEASURE of the `packages/spec/src/**` citations that
`check:objectui-pin-citations` names. Every spec edit is to comment or
migration-rationale prose only, plus ONE `.describe()` citation re-point
(the `FormField.span` pin, under PM ruling `5822830122`, option A). No
schema, key, default or export changes. Clause-②: no, because every
authored document is accepted and refused exactly as before.
✅ **All 47 pin citations are now green.** The one `.describe()` this PR
first stopped on (`view.zod.ts:3392`, `FormField.span`) was re-pointed
under PM ruling `5822830122` (option A) on #20029. See "The describe,
resolved" below.
## Ancestry reading (fix → new pin: AHEAD)
- **REST `compare`: NOT MEASURED.** This session's proxy refuses GitHub
API reads on `objectstack-ai/objectui`. `GET
/repos/objectstack-ai/objectui/compare/0651e7ab4...f8a9d0fb0` answered
"GitHub access to this repository is not enabled for this session".
- **In its place, measured by git** in a FULL clone of
`objectstack-ai/objectui`, where `git rev-parse --is-shallow-repository`
returns `false`. An exit 0 is self-proving, and an exit 1 there is not a
shallow-window artefact.
| command | exit | reading |
|---|---|---|
| `git merge-base --is-ancestor 0651e7ab4 f8a9d0fb0596` | 0 |
objectui#10221 is IN the new pin |
| `git rev-list --count 0651e7ab4..f8a9d0fb0596` | 14 | the new pin is
14 commits AHEAD of the fix (REST would read `ahead`) |
| `git merge-base --is-ancestor 5ea623ea f8a9d0fb0596` | 0 | the
objectui#9910 re-cut is IN the new pin |
| `git merge-base --is-ancestor 5ea623ea 0651e7ab4` | 0 | it is an
ancestor of the fix, too |
| `git merge-base --is-ancestor 62597c588072 0651e7ab4` | 0 | the old
pin is behind the fix (control leg) |
| `git merge-base --is-ancestor 5ea623ea 62597c588072` | 1 | the re-cut
was NOT in the old pin (full clone, so the exit 1 stands) |
| `git rev-list --count 62597c588072..f8a9d0fb0596` | 92 | this hop's
size |
The bump's own changeset lists both: `(objectui 0651e7ab4)` and
`(objectui 5ea623eab)`.
## What moved, and how each artefact was produced
| artefact | producer |
|---|---|
| `.objectui-sha` + `.changeset/console-f8a9d0fb0596.md` | `bash
scripts/bump-objectui.sh --no-commit f8a9d0fb0596…` exit 0. It reads 86
releasing changesets and 9 breaking (all 9 annotated, none declared
major); `@objectstack/console: minor`. The generator's `adr-0087: TODO`
is answered `not-required (no-migration-prescription)`, in the wording
of the last bump that carried breaking entries. |
| the console | `OBJECTUI_ROOT=../objectui bash
scripts/build-console.sh`, through the verify lock, VERDICT command-exit
0 (691 s). The `import/jobs` bundle canary is present. `pnpm
check:console-sha` exit 0: "Console dist matches the objectui pin
(objectui@f8a9d0fb0596)". |
| `sdui.manifest.json` + `scripts/sdui-manifest.record.json` | `node
scripts/gen-sdui-manifest-node.mjs` exit 0. It wrote 59 components,
sha256 `12dd4f8fbf45`. The diff is +39: the `children` slot input
objectui#9910 declared on `alert`, `badge`, `box`, `button`, `card`,
`container`, `flex`, `grid` and `stack`. `node
scripts/check-sdui-manifest.mjs` exit 0. |
| `packages/sdui-parser/objectui-lockstep.json` |
`OBJECTUI_ROOT=../objectui pnpm gen:sdui-lockstep` exit 0. The diff is
3+/3-, only `rev`, `revDate` and `recordedAgainstPin`. Grammar blob
`0131f27cf86d` is unchanged (214 lines), and all 26 diagnostic codes
agree. `pnpm check:sdui-lockstep` exit 0: "byte-identical to
objectui@f8a9d0fb0596". No parser port is owed by the lockstep gate. |
| `packages/spec/src/migrations/registry.ts` | `pnpm --filter
@objectstack/spec gen:migration-registry`, from the six edited entries |
## The #19969 save/render window (measured, not fixed here)
In the NEW `sdui.manifest.json`, **5 of 59 components** disagree between
`isContainer` (what `packages/sdui-parser/src/validate.ts` still tests)
and "declares a `{ name: 'children', type: 'slot' }` input" (what the
pinned renderer now decides containment by):
| component | `isContainer` | `children` slot | direction |
|---|---|---|---|
| `badge` | false | true | the save gate warns `not-a-container` on
children the renderer renders |
| `alert` | false | true | same |
| `button` | false | true | same. objectui states it on purpose: "⛔ Not
`isContainer`: objectui#6804 ruled that flag means LAYOUT containment"
(`button.tsx:97-104`) |
| `page:tabs` | true | false | the save gate accepts top-level children
that the slot rule does not declare (the children live in
`items[].children`) |
| `page:accordion` | true | false | same |
Non-zero, so #19969 can be sequenced right behind this PR. The predicate
is ⛔ not ported here.
## Citation re-measure: method
- **Read points.** For each cited objectui file, `git diff --quiet
62597c588072 f8a9d0fb0596 -- FILE`.
- An unchanged file holds its anchors by identity. The prose says so and
keeps the earlier hops' history.
- For a changed file, each cited span was taken at the old pin and
searched for byte-for-byte at the new pin. A moved span is re-pointed. A
span not found was re-READ in the new tree, and its content change is
stated where it is cited.
- **Corpus counts** (six migration entries + `registry.ts`). `git grep
-o -F TOKEN SHA | wc -l`. The method was calibrated first: at
`62597c588` it reproduces every recorded count exactly (8303 files,
`objectstack` 13125, `@objectstack/spec` 5043, `timeout` 1086,
`RuntimeConfig` 240, `resourceLimits` 2, `useState` 2389, `window` 3526,
`period` 170, `interval` 179, `metrics` 324, `TTL` 156, `tenant` 987,
`Span` 486, `SpanSchema` 53).
- At `f8a9d0fb0`, all 100 dark tokens still count 0: every export of the
four cited zod files plus each key name.
- Only the corpus size (8512) and the lit controls move. The two new
`Span` hits are `colSpan` and the word "Spanish".
- `check:future-spec-major`'s measurement exemption to the sentence
"controls objectstack 12966 and @objectstack/spec 4997 on the same
corpus" is kept verbatim. The new figures follow it as "13347 and 5123 …
at this pin", and the gate is exit 0.
## Every `packages/spec/src/**` edit, with its before → after anchor
| site | objectui file(s) | reading at `f8a9d0fb0` |
|---|---|---|
| `api-methods-batch-conformance.test.ts` `sys_api_key` |
`ObjectGrid.tsx` (changed +18/-5: objectui#10083 `rowActionsDeclared`,
objectui#9909 currency locale), `useBulkExecutor.ts` (identical) |
selection block `4024-4051` → `4032-4059`, still hash `c88443302d40`.
`298-303` is identical (hash `01083348330f`) |
| `functional-completeness.ts` calendar / gantt / timeline / map rows |
`ListView.tsx` (changed: objectui#10275 `$select`; objectui#10037 /
objectui#10250 self-query filter and search on gantt / tree / chart),
`ObjectGantt.tsx` (changed: `$search`), `ObjectCalendar.tsx` /
`ObjectTimeline.tsx` / `ObjectMap.tsx` (identical) | no calendar /
gantt-date / timeline / map arm touched; prose restated |
| 6 migration entries + their 6 `registry.ts` copies | whole corpus |
dark tokens 0 at 8512 files; lit controls re-counted (see method) |
| `component.zod.ts` / `component.test.ts` tabs + accordion `icon` |
`containers.tsx` (changed, `ba0b61a60`: an import line + `page:header`)
| `853-859`, `912`, `1069-1075`, `1116` did NOT move, text
byte-identical |
| `component.zod.ts` / `component.test.ts` button `icon` | `button.tsx`
(changed, `5ea623eab`), `resolve-icon.ts` / `lazy-icon.tsx` (identical)
| 1 parent 2274894 commit 0bf85ea
20 files changed
Lines changed: 600 additions & 284 deletions
File tree
- .changeset
- content/docs/references/ui
- packages
- sdui-parser
- spec/src
- data
- kernel
- migrations
- entries/semantic
- ui
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
202 | | - | |
| 202 | + | |
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
| |||
364 | 364 | | |
365 | 365 | | |
366 | 366 | | |
367 | | - | |
| 367 | + | |
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
| |||
| 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 | | |
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
70 | 75 | | |
71 | 76 | | |
72 | 77 | | |
73 | 78 | | |
74 | | - | |
| 79 | + | |
75 | 80 | | |
76 | 81 | | |
77 | 82 | | |
| |||
86 | 91 | | |
87 | 92 | | |
88 | 93 | | |
89 | | - | |
| 94 | + | |
90 | 95 | | |
91 | 96 | | |
92 | 97 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
286 | | - | |
287 | | - | |
288 | | - | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
289 | 292 | | |
290 | 293 | | |
291 | 294 | | |
292 | 295 | | |
293 | | - | |
294 | | - | |
295 | | - | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
296 | 303 | | |
297 | 304 | | |
298 | 305 | | |
| |||
305 | 312 | | |
306 | 313 | | |
307 | 314 | | |
308 | | - | |
| 315 | + | |
| 316 | + | |
309 | 317 | | |
310 | 318 | | |
311 | 319 | | |
| |||
321 | 329 | | |
322 | 330 | | |
323 | 331 | | |
324 | | - | |
325 | | - | |
326 | | - | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
327 | 337 | | |
328 | 338 | | |
329 | 339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
| 51 | + | |
51 | 52 | | |
52 | | - | |
53 | | - | |
| 53 | + | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | | - | |
48 | | - | |
| 47 | + | |
| 48 | + | |
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
49 | 49 | | |
50 | | - | |
51 | | - | |
| 50 | + | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| |||
0 commit comments