Skip to content

chore: bump the Console objectui pin to 190fbd01d061 (past the theme-import fix) - #11146

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-10856-console-pin-bump
Aug 23, 2026
Merged

chore: bump the Console objectui pin to 190fbd01d061 (past the theme-import fix)#11146
os-zhuang merged 2 commits into
mainfrom
claude/issue-10856-console-pin-bump

Conversation

@os-zhuang

@os-zhuangos-zhuang commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#10856

The A-half of the maintainer's 2026-08-22 A+C ruling, second leg: objectui went first (objectui#5710 → PR objectui#5713, merged as 920165d1), so the Console pin can now advance past it.

.objectui-sha: 9a3daf8d37ad190fbd01d061 (objectui main tip; 920165d1 — the fix — verified an ancestor of it).

What was red, and why this ends it

Console Pin Gate → step "Build the Console SPA at the pinned objectui SHA" failed with six MISSING_EXPORT errors, all from one import line in the pinned objectui's packages/types/src/zod/theme.zod.ts, naming schemas #10695 retired from packages/spec/src/ui/.

Measured at the new pin, in the objectui checkout:

$ git show 190fbd01d061:packages/types/src/zod/theme.zod.ts | grep -n "@objectstack/spec"
16: * The six `@objectstack/spec/ui` theme-schema re-exports that used to live <- a comment
$ ... | grep -n "^import"
39:import { z } from 'zod';
40:import { BaseSchema } from './base.zod.js';

The six names survive only inside comments in that file; the file imports nothing from @objectstack/spec at all. At the OLD pin the same file had } from '@objectstack/spec/ui'; on line 27 and 3–5 occurrences of each name.

Positive control (so the zeros are a measurement, not a failed search): the same grep still finds live @objectstack/spec/ui imports elsewhere at the new pin, e.g. packages/app-shell/src/layout/AppSidebar.tsx:74import { resolveI18nLabel as resolveInlineI18nLabel } from '@objectstack/spec/ui';

The gate's own step, run locally

pnpm objectui:build (scripts/build-console.sh) — what CI's Console Pin Gate runs — at the new pin, against this tree's spec/client:

✓ Bundle canary 'import/jobs' present — framework client is in the bundle.
✓ Console bundle carries THIS tree's @objectstack/spec, and only it.
✓ @objectstack/console dist ready (49380 KB) from objectui@190fbd01d061

and pnpm check:console-sha✓ Console dist matches the objectui pin (objectui@190fbd01d061).

The pin bump's non-optional second half (AGENTS.md; docs/releases-maintenance.md "After the pin moves")

pnpm sdui:manifest — rebuilds at the new pin, drives Playwright chromium over the built console, dumps sdui.manifest.json, and runs the ADR-0082 D4 declaration-parity ratchet:

✓ wrote 57 public blocks → packages/console/dist/sdui.manifest.json
Summary: 90 spec-only divergences, 0 blocks missing from the registry.
## Baseline ratchet
✓ no new DECLARATION divergence vs accepted baseline (see the scope note above).

The ratchet did not fire, so no --update and no baseline re-acceptance — the retired theme surface never reached this ratchet's population. sdui.manifest.json lives under the gitignored packages/console/dist/, so it is correctly absent from this diff.

⚠️ The documented dispatch-container Playwright trap applied verbatim: the newly-pulled playwright wanted chromium build 1234 while the container ships 1194. Remedied exactly as docs/releases-maintenance.md"If the dispatch container's Playwright browser doesn't match the revision" prescribes — a symlink tree built inside this agent's scratchpad (never /opt/pw-browsers), PLAYWRIGHT_BROWSERS_PATH pointed at it for that one invocation, PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD untouched.

The changeset's ADR-0087 disposition

bump-objectui.sh wrote the @objectstack/console changeset (minor; 113 releasing changesets over the range) and left an adr-0087: TODO placeholder it cannot answer. Answered here as not-required (no-migration-prescription): the range's single declared-breaking entry is objectui 8e00bfd28 (objectui#5689), which drops MetadataClient's options.actor and the X-Actor header — objectui catching up to objectstack#7941, which already removed that header limb from the /meta write actor resolver (re-measured at this HEAD in packages/rest/src/rest-server.ts, pinned by packages/rest/src/meta-write-actor-identity.test.ts). No stored-metadata rewrite, no ledger entry to write or name. Full reasoning is in the marker itself.

Gates run (all at final commit 1c58baa26, exit codes captured before any pipe)

Families derived with node scripts/pm/dispatch-gates.mjs, no hand-fed paths:

gateverdict line
check:changeset-gate-self-tests✓ check-empty-changeset --self-test: 118 assertions · ✓ check-adr-0087-registration --self-test: 212 assertions · ✓ check-changeset-no-major --self-test: 116 assertions
check:objectui-changeset✓ objectui-range --self-test: all checks passed
check-adr-0087-registration.mjs✓ 1 declared-breaking changeset(s), each carrying an ADR-0087 disposition.
check-changeset-no-major.mjs✓ This diff introduces no 'major' bump.
check-empty-changeset.mjs✓ No empty-frontmatter changeset introduced by this diff (1 declaring changeset(s) added).
check:nul-bytescheck-nul-bytes: OK (scanned 6456 text file(s) … no raw ASCII control bytes).
check:console-sha✓ Console dist matches the objectui pin (objectui@190fbd01d061).

Landing class — node scripts/pm/check-governed-merges.mjs --test on the final file list: ✅ NOT governed — ordinary queue landing applies to a PR with exactly this file list.

The authoritative verification is this PR's own merge-group Console Pin Gate run, which builds the SPA at the new pin. Green there is the queue unblocking itself.

Follow-up commit e82d98e3a — the eight objectui pin citations, re-measured

CI's Type Check · source gates went red on check:objectui-pin-citations: eight
read-point records in packages/spec/src assert "the objectui pin this repo builds
against (.objectui-sha = <sha>)"
and still named 9a3daf8d3. The gate forbids the
sha-swap fix, so every anchor was re-derived from the file at the new pin
git -C ../objectui show 190fbd01d:<path> — before the sha moved. What each record
measured:

recordanchorsmeasured at 190fbd01d
ui/component.test.ts:281 + ui/component.zod.ts:1529 (accordion items[].icon, #9881)components/src/renderers/layout/containers.tsx:851-857, :898file changed across the move; re-counted to the same lines{item.icon && ( opens at 851, closes 857 inside the wrapping span at 850; :898 is still the items input documented [{ label, icon?, collapsed?, children }]
ui/component.test.ts:364 + ui/component.zod.ts:638 (tabs items[].icon, #9972)containers.tsx:662-668, :721same file, same result — 662-668 is the LazyIcon in the TabsTrigger (mr-1.5 h-3.5 w-3.5 shrink-0 opacity-70, aria-hidden); :721 is the items input documented [{ label, value?, icon?, count?, visibleWhen?, children }]
ui/component.zod.ts:1703 + ui/component.test.ts:2016 (element:buttonicon, #10053)renderers/form/button.tsx:14-27, 44-47, :69/:71button.tsx is byte-identical at both pins (cmp clean), so no anchor moved; 44-47 resolves schema.icon through toPascalCase + the one-entry rename map, 69/71 draw it mr-2/ml-2 per iconPosition
ui/component.zod.ts:2178 (object-metricicon, #10053)plugin-dashboard/src/index.tsx:161, ObjectMetricWidget.tsx:142/:474, MetricWidget.tsx:312-321/:373-382, MetricCard.tsx:83, lib/lazy-icon.tsx:66-80all five files byte-identical at both pins; every line re-read and still says what the record claims, including the ⚠️MetricCard.tsx:83 do-not-re-anchor note
data/api-methods-batch-conformance.test.ts:64 (sys_api_key single-record-write rule, #7802)previously packages/plugin-grid with no line anchorsObjectGrid.tsxchanged across the move, so both claims were re-derived rather than carried: multi-select auto-enables only when a bulk action exists (ObjectGrid.tsx:2505-2507) and the sole implicit one is bulk-delete gated on the resolved delete affordance (:2495-2496); the promoted-custom fan-out is hooks/useBulkExecutor.ts:284-288/:315-319, byte-identical at both pins. The record now carries those line anchors, since a file-level citation is the weaker claim on a file that moves

No read point moved or died, so nothing needed re-pointing and no record was demoted to
the dated-record spelling. Gate verdict at the final commit:

✅ 8 asserting objectui pin citation(s) match .objectui-sha (190fbd01d),
4 historical citation(s) recorded and not checked, across 981 spec source(s).

Every added line in that commit is a comment — git diff -U0 | grep '^+' | grep -v '^+++'
with comment lines removed prints nothing — so no .describe() text moved and the
generated-docs/surface ratchets cannot shift.

Gates re-run at e82d98e3a (the widened path set, re-derived with scripts/pm/dispatch-gates.mjs, no hand-fed paths)

The workspace had to be built first (turbo run build --concurrency=2, 72/72 tasks, under
the shared verify lock) — on an unbuilt fresh worktree check-dev-prereqs and
check:doc-formula-expressions fail on the missing dist/, which is a property of the
worktree and not of this diff; both are green after the build.

All exit 0, each captured before any pipe: check:objectui-pin-citations ·
check:cross-package-test-inputs (+ the scripts/ twin) · check:doc-formula-expressions ·
check:merge-driver · check:slot-lookup · check:spec-parsed-alias ·
check:test-source-alias · check:type-source-resolution · check-ci-filter-parity ·
check-dev-prereqs · check-plugin-teardown-shape · check-affected-docs ·
spec check:empty-state / check:liveness / check:strictness-ledger / check:variant-docs ·
check:nul-bytes · the four changeset gates · pnpm --filter @objectstack/spec exec tsc --noEmit.

Spec suite, under the lock: Test Files 416 passed (416) · Tests 11069 passed (11069).

Landing class re-checked on the final five-path file list:
✅ NOT governed — ordinary queue landing applies to a PR with exactly this file list.


Generated by Claude Code


Generated by Claude Code

fix(components): record_picker label/placeholder resolve the inline locale map their contract admits (#5637) (#5714)
objectui@190fbd01d0615e2e168faf9e08b8ad7844bc039d
@github-actionsgithub-actionsBot added size/m documentation Improvements or additions to documentation tooling labels Aug 22, 2026
The pin bump in the parent commit invalidated eight asserting read-point
citations in packages/spec/src that named 9a3daf8d3. Each anchor was
re-derived from the file at the NEW pin rather than sha-swapped:
- containers.tsx 662-668 / :721 (tabs) and 851-857 / :898 (accordion) --
the file changed across the move; all four anchors re-counted to the
same lines.
- form/button.tsx 14-27, 44-47, :69/:71 -- byte-identical at both pins.
- The metric chain (plugin-dashboard/src/index.tsx:161,
ObjectMetricWidget.tsx:142/:474, MetricWidget.tsx:312-321/:373-382,
MetricCard.tsx:83, lazy-icon.tsx:66-80) -- all byte-identical at both pins.
- The plugin-grid bulk-select record: ObjectGrid.tsx changed, so both of
its claims were re-derived and it now carries line anchors
(ObjectGrid.tsx:2492-2507, hooks/useBulkExecutor.ts:284-288).
No read point moved or died.
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec, touching 4 documentable anchor(s).

1 release-owned page(s) name something this change touched. These are read-only:

  • content/docs/releases/v15.mdx(via PageTabsProps (symbol))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see
  • the SDK route bridge reached 45 of 221 client-bound route-ledger rows — the other 176 have no registrar path: tail to select them, so pages documenting THEIR client methods cannot appear above, on this or any run: node scripts/docs-audit/affected-docs.mjs --bridge-coverage

Coarse fallback — 126 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 78019bb2c89adc0de379b7574f7da94dacb3b932packageMentionDocs.

Which tree this was computed on

This run read content/docs from 3b59343645ac4c8b1a7f48fd34fa63a794cb1103 — the merge of head e82d98e3a44172981c74715b26f8b684215868b2 into base 78019bb2c89adc0de379b7574f7da94dacb3b932, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 3b59343645ac4c8b1a7f48fd34fa63a794cb1103 && git checkout 3b59343645ac4c8b1a7f48fd34fa63a794cb1103
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 78019bb2c89adc0de379b7574f7da94dacb3b932 e82d98e3a44172981c74715b26f8b684215868b2 && git checkout -B drift-repro 78019bb2c89adc0de379b7574f7da94dacb3b932 && git merge --no-ff e82d98e3a44172981c74715b26f8b684215868b2
node scripts/docs-audit/affected-docs.mjs --json 78019bb2c89adc0de379b7574f7da94dacb3b932

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 78019bb2c89adc0de379b7574f7da94dacb3b932 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@os-zhuang
os-zhuang marked this pull request as ready for review August 23, 2026 00:36
@os-zhuang
os-zhuang added this pull request to the merge queueAug 23, 2026
@os-zhuangClaude

Copy link
Copy Markdown
ContributorAuthor

ACCEPT — session 757f0dc0-5dae-51d7-9053-c15c57ebfe3b(派发席,Console Pin Gate 链专项)。

逐文件读完了两个 commit 的全量 diff(5 files,+152/−13):

  1. .objectui-sha:9a3daf8d37ad973a621e5edd276fe32467f90684190fbd01d0615e2e168faf9e08b8ad7844bc039d,PR 正文里已核实 920165d1(objectui#5713 的 theme 修复)是新 pin 的祖先,且旧 pin 的六个 MISSING_EXPORT 源(packages/types/src/zod/theme.zod.ts@objectstack/spec/ui 导入)在新 pin 处只剩注释——含阳性对照。
  2. changesetconsole-190fbd01d061.md:minor,ADR-0087 disposition 已由 TODO 改为 not-required (no-migration-prescription),理由指向 objectui#5689 ↔ objectstack#7941 的对齐,无存量元数据改写。
  3. packages/spec 三个文件(ui/component.zod.tsui/component.test.tsdata/api-methods-batch-conformance.test.ts):增量全部是注释——引用锚点按 check:objectui-pin-citations 的要求在新 pin 下逐条重测(git show 190fbd01d:<path>),changed 文件重数行号、byte-identical 文件核对 cmp,没有 bare-sha 改写;git diff -U0 去注释后为空,零行为变更。

合约复审(clause-②):packages/spec 增量为 comment-only 引用锚点,按 2026-08-21 放宽规则由本派发席自审——本轮 get_session 机读 session_context.model = external_metadata.last_served_model = claude-fable-5

落地类判定:PR 内已附 check-governed-merges --test = NOT governed,普通队列落地。CI 在 head e82d98e3a 全绿;合并组会在新 pin 上跑 Console Pin Gate,那是这条链的最终证明。现在开 auto-merge(SQUASH)。


Generated by Claude Code

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationprotocol:dataprotocol:uisize/mteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

p0: main is RED — #10695 retired six spec/ui theme schemas that the PINNED objectui still imports, so Console Pin Gate cannot build the SPA

2 participants

@os-zhuang@claude