Uh oh!
There was an error while loading. Please reload this page.
chore: bump the console pin to objectui d8ec8d6d4f01 - #14165
Conversation
fix(plugin-detail,i18n): ActivityTimeline's remaining 18 literals resolve from the packs (#7162) objectui@d8ec8d6d4f011b11c8eb1e6dbd364ef206711391
…rity at the new pin The pin bump's generated changeset carries an unanswered `adr-0087: TODO` placeholder; `check:adr-0087-registration` rejects the placeholder on purpose. Answered as `not-required (no-migration-prescription)`, judging all fifteen declared-breaking entries in the objectui range one at a time. `check:sdui-lockstep` refuses when the live pin moves past the pin its parity record was taken at, so re-recorded with `pnpm gen:sdui-lockstep` against the objectui checkout the bump already required. The grammar region and the 24 diagnostic codes are byte-unchanged, so no parser port is owed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
📓 Docs Drift CheckThis PR changes 2 package(s): ⛔ 1 release-owned page(s) name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 129 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin ce77e665fe495bcb492e2b9755515f0f9dcaa177 && git checkout ce77e665fe495bcb492e2b9755515f0f9dcaa177
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 45b9051248f86f362b042fa9de63295a8c224073 5876a3dcace5745b1af6f587607c916f944e45b3 && git checkout -B drift-repro 45b9051248f86f362b042fa9de63295a8c224073 && git merge --no-ff 5876a3dcace5745b1af6f587607c916f944e45b3
node scripts/docs-audit/affected-docs.mjs --json 45b9051248f86f362b042fa9de63295a8c224073
|
check:objectui-pin-citations reds on this PR's own diff: moving .objectui-sha left 8 spec sources asserting the old pin 9602dc820 with objectui file:line anchors. The gate's remedy is explicit that replacing the sha alone is the wrong fix, so every anchor was re-READ at the new pin and the anchors and the sha are updated together. Three of the ten cited objectui files changed across the move. What moved: containers.tsx tabs icon block 662-668 -> 729-735 containers.tsx tabs registration 721 -> 788 containers.tsx accordion icon block 851-857 -> 918-924 containers.tsx accordion registration 898 -> 965 ObjectGrid.tsx bulk/selection block 2586-2601 -> 3187-3202 Each moved span is byte-identical to the one cited before, shifted only by insertions above it. Everything else is unmoved, including plugin-dashboard's index.tsx:204 in a file that DID change elsewhere. No read point died and none changed meaning, so no record needed more than a citation refresh. Comment lines only — git diff -U0 over packages/spec matches no non-comment line. No accept/reject behaviour changes. pnpm --filter @objectstack/spec build && check:generated: all 15 generated artifacts already up to date. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
…4f01 check-sdui-manifest reds on a moved pin until the repo-root sdui.manifest.json is regenerated and its provenance record re-written. Regenerated with the generator the gate names, never hand-edited: node scripts/gen-sdui-manifest-node.mjs --objectui-version 17.6.0 17.6.0 is @object-ui/core's version at the new pin, read from the objectui checkout's packages/core/package.json at d8ec8d6d4f01. The ARTEFACT did not move: same sha256 49211fee7792, same 57 components, same 66910 bytes. It could not have, because the manifest describes the PUBLISHED @object-ui registry and both pins ship 17.6.0 — the four days of objectui commits in this bump changed no published registry version. So only provenance moves: objectuiSha and generatedAt. This is a different artefact from the one pnpm sdui:manifest writes. That one is the browser dump at packages/console/dist/sdui.manifest.json (gitignored, feeds the ADR-0082 D4 parity ratchet); this one is the tracked repo-root manifest resolveSduiManifest() picks up to switch validateJsxPages from parse-only to full validateTree. Two generators, two artefacts; round 1's browser run did not and could not refresh this one. node scripts/check-sdui-manifest.mjs --self-test && node scripts/check-sdui-manifest.mjs both exit 0, the second reporting freshness at pin d8ec8d6d4f01. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
Uh oh!
There was an error while loading. Please reload this page.
Fixes#14027
Bumps the console pin from
9602dc820450(objectui, 2026-08-25 22:43Z) tod8ec8d6d4f01(objectuimain, 2026-09-01 08:23Z), the step the maintainer's 2026-08-25 "Ruled: A" sequence on #12039 parked its Key 2 on.Performed with the repo's dedicated tooling, never a hand edit:
scripts/bump-objectui.sh SHAthenscripts/build-console.sh(the two halves ofpnpm objectui:refresh), plus the two follow-on steps those scripts name.Acceptance criterion (from the card)
The file exists at the new pin, and
translateFilterArray(params.filter)has 1 hit inpackages/data-objectstack/src/index.tsthere (0 at the old pin). Ancestry, which the card could only approximate by content probe because the container's objectui checkout was shallow, is now measured directly: the old pin is an ancestor of the new one, the range is 339 commits, and objectui PR #6828 is in it as512737848.This bump pulls in ~4 days of unrelated objectui work
339 non-merge commits, 218 releasing changesets, 15 declared-breaking, 25 commits with no changeset. Per the pin-bump discipline that is the bump's normal cost and is stated here rather than trimmed: CI red traceable to one of those upstream changes is a property of the range, not of this PR's mechanics. The full itemised list is in the changeset.
Files changed (3)
.objectui-shabump-objectui.sh.changeset/console-d8ec8d6d4f01.md@objectstack/console: minorpackages/sdui-parser/objectui-lockstep.jsonpnpm gen:sdui-locksteppackages/console/dist/is gitignored (packages/console/.gitignore), so the rebuilt SPA is build-time only and correctly appears in no commit here.Why the lockstep record is in this diff, and is not a rider
check:sdui-locksteprefuses when the live pin moves past the pin its parity record was taken at — by its own design, a pin bump is the moment a parser divergence stops being latent and starts shipping. It went red on[pin-moved]immediately after the bump, naming its own remedy, which is what ran:The grammar region blob and all 24 diagnostic codes are unchanged, so no parser port is owed. The record's content diff is 4 metadata lines (
rev,revDate,recordedAgainstPin, andrepo, which the current generator writes from its ownOBJECTUI_REMOTEconstant as a clone URL where the older record held the shortowner/nameform).The ADR-0087 disposition
The generated changeset declares 15 breaking entries and therefore carried an unanswered
adr-0087: TODOplaceholder, whichcheck-adr-0087-registrationrejects on purpose ("the pin bump cannot answer this; a human must"). Answered asnot-required (no-migration-prescription), judging all fifteen one at a time against their own upstream changeset, in the shape the previous pin bump's disposition established. The load-bearing measurements, each re-taken at this HEAD:@object-ui/*package; none names an@objectstack/*package (read from the digest's per-entrypackagesfield, not from prose);DashboardWidgetSchemahere is astrictObjectand has been since the ADR-0021 cutover;LocationValueSchemaalready declares{ lat, lng };FieldSchemais astrictObjectcarrying nosortOrdermember;timeScale,ComponentConfig,buildExpressionUser,isConcurrentUpdateErrorand the spec-bridge symbols have 0 tracked references here (mentions are prose in docs, audits and CHANGELOGs);@objectstack/consolepublishes a frozen prebuilt SPA —filesis["dist", "README.md", "CHANGELOG.md"], its soleexportsentry is./package.json— and nopackage.jsonin this workspace declares any@object-ui/*dependency, so none of the 15 is reachable through anything this repo publishes.f07b976ef(objectui#6825,aggregate()refusing an unloweredwhere) is Key 1 of #12039; the spec-side convergence is the ruled follow-up (Key 2) and carries its own changeset and disposition. Nothing is prescribed from here.Gates run (locally, on
6c9f68fa)The family was derived from the actual diff with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, re-derived after the lockstep record entered the surface — which grew it from 12 families to 29, since that file sits inside a package.29 families run, 27 exit 0. Including the four pin/console gates the card's dispatch named:
Both console gates skip when there is no
dist/and were re-run afterbuild-console.shso the greens above are measurements, not skips. The build itself reported✓ Bundle canary 'import/jobs' presentand✓ Console bundle carries THIS tree's @objectstack/spec, and only it(50196 KB from objectui@d8ec8d6d4f01).The documented second half of the pin procedure also ran —
pnpm sdui:manifest, the ADR-0082 D4 declaration-parity ratchet whose only trigger is a pin bump:✓ no new DECLARATION divergence vs accepted baseline, sopackages/spec/react-declaration-parity.baseline.jsonneeded no update and is not in this diff.2 of the 29 are NOT MEASURED, by their own words — neither is a red:
check-test-completeness.mjs(exit 3) — needs aturbo run testlog CI tees to it; run with no argument it exits before parsing a line and says so.check:dual-build-cjs-loads(exit 3) —PREREQUISITE NOT MET, needs a full workspacepnpm build; 34 packages have nodist/.Repo-wide
pnpm lintwas not run locally; it is CI's, and CI runs the farm exactly once regardless.Patch round — the pin citations in
packages/specCI came back red on
Type Check · source gates, and the red was this PR's own:check:objectui-pin-citationsfound 8 spec sources asserting the OLD pin9602dc820beside objectuifile:lineanchors. The coupling is atomic — landing the citations alone or the pin alone redsmaineither way — so the gate's own remedy text defines the bump's true required surface. Exactly the files it named were touched, nothing else.The gate is explicit that the obvious fix is the wrong one:
So every anchor was re-read at the new pin (
git -C ../objectui show d8ec8d6d4:PATH) and re-derived from that file, never carried over on byte-identity — which preserves a wrong anchor as faithfully as a right one (#10274).What each anchor measured
Three of the ten cited objectui files changed across the move; every anchor was re-read regardless.
9602dc820d8ec8d6d4containers.tsx(CHANGED)item.iconblockcontainers.tsxitemsinputcontainers.tsxitem.iconblockcontainers.tsxitemsinputObjectGrid.tsx(CHANGED)effectiveBulkActions/ selection blockplugin-dashboard/index.tsx(CHANGED)object-metricicon designer inputuseBulkExecutor.tsbutton.tsxresolveIconcall; icon rendersbutton.tsxresolve-icon.tsresolveIcon;toPascalCase+ rename maplazy-icon.tsxgetLazyIcon; +LazyIconObjectMetricWidget.tsxMetricWidget.tsxgetLazyIconresolve; tinted squareMetricCard.tsxNo read point moved to a different construct, and none died. Every moved span is byte-identical to the one cited before (verified by extracting both and diffing), shifted only by insertions above it — so no record needed more than a citation refresh, and nothing here forks back to the PM.
Two results worth stating because they are the ones that would have been got wrong by inference:
plugin-dashboard/src/index.tsxdid change, yet its anchor did not move: the file has twoIcon (Lucide name)inputs, and the one this record cites is the one after theobject-metricregistration at:194, still on:204. Byte-difference does not imply a moved anchor.useBulkExecutor.ts:284-289was re-read rather than carried on its byte-identity, and still ends onlabel = 'bulk delete'— the line an older284-288span stopped short of. That is the [finding] The #9881/#9972 read-point records still cite.objectui-sha=82a94170c— #10137 moved the pin, so "the pin this repo builds against" is now false in spec prose and tests #10274 error class this discipline exists for.No citation was converted to the historical
`.objectui-sha` pin `SHA`spelling: all 8 sites are claims about what is live at today's pin, not dated records of a past measurement, so all 8 stay in the checked spelling.Scope of the spec edit
Comment lines only. Mechanically checked, not asserted:
git diff -U0 -- packages/specfiltered to lines that are not//,*or/*matches nothing. Zero accept/reject behaviour change, no schema, no export, no.describe().needs:contract-reviewis applied for the path limb; the content limb is "no".pnpm --filter @objectstack/spec build && check:generated— all 15 generated artifacts already up to date, so the TSDoc touched here lands in none of them.Gates re-run after the patch (on
0137a8dc)The family was re-derived from the grown diff — spec sources are in the surface now, so it went 29 → 51 families. All 51 run; 46 exit 0, including the gate that reds this round and the four pin/console gates:
check:react-declaration-parityis the ADR-0082 D4 ratchet, and it has no CI backstop — it is on-demand by decision (#5960), never a CI job — so rather than declare a narrowing, its input was regenerated: console rebuilt at the new pin,pnpm sdui:manifestre-dumped the registry in a real browser, then the gate run explicitly withMANIFESTand--strict. Green.5 of the 51 are unmet preconditions, not reds — each says so in its own words, and every one wants a full workspace
pnpm buildor a CI-produced log that no local run can supply:check-dev-prereqs("the workspace is not built — 1 unmet precondition, not a list of problems"),check:doc-formula-expressions,check:dual-build-cjs-loads,check:type-check-debt(allPREREQUISITE NOT MET), andcheck-test-completeness(needs theturbo run testlog CI tees to it). None is measuring anything about this diff.Patch round 2 — the tracked SDUI manifest's provenance
Lint & Repo Gatesred, again this PR's own:check-sdui-manifestreds on a moved pin until the repo-root manifest is regenerated and its provenance re-recorded. Regenerated with the generator the gate names, never hand-edited:17.6.0is@object-ui/core's version at the new pin, read from the objectui checkout'spackages/core/package.jsonatd8ec8d6d4f01.Two manifests, two generators — round 1's run could not have fixed this
Worth stating plainly, because the names collide:
pnpm sdui:manifest(round 1)packages/console/dist/sdui.manifest.jsongen-sdui-manifest.sh, browser dump of a built consolesdui.manifest.json(repo root) +scripts/sdui-manifest.record.jsongen-sdui-manifest-node.mjs, plain Node against the PUBLISHED@object-ui/*packagesresolveSduiManifest()in the CLI, switchingvalidateJsxPagesfrom parse-only to fullvalidateTreeSo round 1's browser run refreshed a different artefact; the gate's one was untouched and correctly stayed red.
The artefact did not move — only provenance did
Same sha256, same component count, same byte count as before:
sdui.manifest.jsonis not in this diff at all. It could not have moved — the manifest describes the published@object-uiregistry, and both pins ship17.6.0, so the four days of objectui commits riding this bump changed no published registry version. The only diff is two lines of provenance in the record:objectuiShaandgeneratedAt.That is also the useful negative result for the freshness gate: it is doing anti-rot bookkeeping here, not catching a stale component whitelist.
Verified
check:react-declaration-paritywas re-taken against the regenerated artefact and does not move:✓ no new DECLARATION divergence vs accepted baseline, with a summary identical to round 1's browser-dump run (90 spec-only divergences, 0 blocks missing from the registry). Run against both manifests, they agree.The family grew again, 51 → 58, since
scripts/**is now in the surface. All 7 new families exit 0 (check:agent-test-spelling,check:bash32-floor,check:cli-command-ids,check:entry-guard,check:parse-guard,check:pnpm-filter-targets,check:watch-hint-literal), as do the sweep gates no per-file mapping predicts (check-ratchet-remedy-authority,check-nul-bytes) and the ratchet/pin families re-run on this head (check:authorable-surface,check:liveness,check:strictness-ledger,check:objectui-pin-citations,check:sdui-lockstep,check:objectui-changeset, and the three changeset gates).One honest gap:
check:console-shaskipped this round rather than passing — this worktree has nopackages/console/dist, and the gate skips without one. Its green in the previous round was a real measurement against a real dist at this same pin, and nothing in this round's diff (two lines of JSON provenance) can affect it.Generated by Claude Code