Uh oh!
There was an error while loading. Please reload this page.
chore: bump the Console objectui pin to 190fbd01d061 (past the theme-import fix) - #11146
Conversation
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.
📓 Docs Drift CheckThis PR changes 1 package(s): ⛔ 1 release-owned page(s) name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 126 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 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
|
os-zhuang
commented
Aug 23, 2026
ACCEPT — session 逐文件读完了两个 commit 的全量 diff(5 files,+152/−13):
合约复审(clause-②):packages/spec 增量为 comment-only 引用锚点,按 2026-08-21 放宽规则由本派发席自审——本轮 落地类判定:PR 内已附 Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
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:9a3daf8d37ad→190fbd01d061(objectuimaintip;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 sixMISSING_EXPORTerrors, all from one import line in the pinned objectui'spackages/types/src/zod/theme.zod.ts, naming schemas #10695 retired frompackages/spec/src/ui/.Measured at the new pin, in the objectui checkout:
The six names survive only inside comments in that file; the file imports nothing from
@objectstack/specat 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/uiimports elsewhere at the new pin, e.g.packages/app-shell/src/layout/AppSidebar.tsx:74—import { 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: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, dumpssdui.manifest.json, and runs the ADR-0082 D4 declaration-parity ratchet:The ratchet did not fire, so no
--updateand no baseline re-acceptance — the retired theme surface never reached this ratchet's population.sdui.manifest.jsonlives under the gitignoredpackages/console/dist/, so it is correctly absent from this diff.1234while the container ships1194. Remedied exactly asdocs/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_PATHpointed at it for that one invocation,PLAYWRIGHT_SKIP_BROWSER_DOWNLOADuntouched.The changeset's ADR-0087 disposition
bump-objectui.shwrote the@objectstack/consolechangeset (minor; 113 releasing changesets over the range) and left anadr-0087: TODOplaceholder it cannot answer. Answered here asnot-required (no-migration-prescription): the range's single declared-breaking entry is objectui8e00bfd28(objectui#5689), which dropsMetadataClient'soptions.actorand theX-Actorheader — objectui catching up to objectstack#7941, which already removed that header limb from the/metawrite actor resolver (re-measured at this HEAD inpackages/rest/src/rest-server.ts, pinned bypackages/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: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 assertionscheck:objectui-changeset✓ objectui-range --self-test: all checks passedcheck-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 --teston 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 Gaterun, 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-measuredCI's
Type Check · source gateswent red oncheck:objectui-pin-citations: eightread-point records in
packages/spec/srcassert "the objectui pin this repo buildsagainst (
.objectui-sha=<sha>)" and still named9a3daf8d3. The gate forbids thesha-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 recordmeasured:
190fbd01dui/component.test.ts:281+ui/component.zod.ts:1529(accordionitems[].icon, #9881)components/src/renderers/layout/containers.tsx:851-857,:898{item.icon && (opens at 851, closes 857 inside the wrappingspanat 850;:898is still theitemsinput documented[{ label, icon?, collapsed?, children }]ui/component.test.ts:364+ui/component.zod.ts:638(tabsitems[].icon, #9972)containers.tsx:662-668,:721LazyIconin theTabsTrigger(mr-1.5 h-3.5 w-3.5 shrink-0 opacity-70,aria-hidden);:721is theitemsinput 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.tsxis byte-identical at both pins (cmpclean), so no anchor moved; 44-47 resolvesschema.iconthroughtoPascalCase+ the one-entry rename map, 69/71 draw itmr-2/ml-2periconPositionui/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-80MetricCard.tsx:83do-not-re-anchor notedata/api-methods-batch-conformance.test.ts:64(sys_api_keysingle-record-write rule, #7802)packages/plugin-gridwith 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 resolveddeleteaffordance (:2495-2496); the promoted-custom fan-out ishooks/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 movesNo 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:
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 thegenerated-docs/surface ratchets cannot shift.
Gates re-run at
e82d98e3a(the widened path set, re-derived withscripts/pm/dispatch-gates.mjs, no hand-fed paths)The workspace had to be built first (
turbo run build --concurrency=2, 72/72 tasks, underthe shared verify lock) — on an unbuilt fresh worktree
check-dev-prereqsandcheck:doc-formula-expressionsfail on the missingdist/, which is a property of theworktree 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(+ thescripts/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