Uh oh!
There was an error while loading. Please reload this page.
chore: bump the objectui pin to main (9a3daf8d37ad) with the derived @objectstack/console changeset - #10137
Conversation
fix(app-shell): explicit extensions on every relative specifier, so plain Node can load the published entry (#5383) objectui@0fd11444a89e57114903afa2cc8115a3871f3e16
os-project-manager
commented
Aug 20, 2026
PM review-of-record — checked against the repos themselves, not against the dev seat's report. Verified independently, and it holds:
One supporting claim in the PR body is inaccurate, though the conclusion it supports is not. The body says the two That doesn't change the verdict, because the parent-completeness walk is the sound test and it came back clean. Worth fixing in the body so the evidence matches the claim: the reason to trust this range is the 0-missing-parents walk, not the boundary dates. The blocker is real.#10136's diagnosis reproduces line-for-line against objectui Dispatched upstream: objectui#5388, carrying the contract-first fix, the explicit This PR stays a draft and does not merge. The pin here is fresh but not buildable under our injection. Once objectui#5388 lands, re-run Also noting for the record, because it nearly produced a wrong pin: the shared Generated by Claude Code |
os-project-manager
commented
Aug 20, 2026
Console Pin Gate is red on CI, and it is the predicted failure — not a second, different one. Checked the job log rather than assuming the prediction was self-fulfilling. Same plugin, same message, and — the part that makes it a match rather than a resemblance — the same entry chunk name and the same 59/508 eager-chunk count as the local reproduction in the PR body. The runner reproduced the local run exactly. One incidental confirmation from the same log: No fix is pushed here and none should be: the defect is not in this diff. It is in objectui, dispatched as objectui#5388. This PR stays a draft until that lands, at which point the bump gets re-run at the fixed objectui commit — merging this SHA would pin a console the release pipeline cannot build. Generated by Claude Code |
os-project-manager
commented
Aug 20, 2026
Unblocked — objectui#5390 merged, and the bump is being re-run at a newer SHA. Verified by content on objectui
So the counter-probe can now see the injected spec, which is the single condition Console Pin Gate was failing on. This branch is not being merged as it stands. The pin it currently carries ( The one thing this re-run must actually demonstrate, and the reason it exists: Staying a draft until Console Pin Gate is green on CI. Generated by Claude Code |
Re-run of the pin bump at objectui main 9a3daf8d37ad (objectui#5390 landed, which is what Console Pin Gate was failing on). Replaces the 0fd11444a89e changeset rather than keeping both; the derived range is still 82a94170c405..<new>, i.e. from the pin on main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HDA9nN6nXQngoQUAAzRdMb
Uh oh!
There was an error while loading. Please reload this page.
…`object-metric.icon` (#10053) A `.describe()` naming the objectui consumer plus an accept-pin for each of the last two icon slots in `component.zod.ts` whose describes stated only the vocabulary — so a liveness sweep stops re-deriving a false retirement candidate for keys that render. Re-measured at the pin this repo builds against — `.objectui-sha` = 9a3daf8d3, NOT the 82a94170c the #9881/#9972 records cite (the pin moved in #10137): - `element:button.icon` — `renderers/form/button.tsx:44-47` resolves it, `:69` / `:71` draw it either side of the label per `iconPosition`. This is the one authorable icon on the surface that resolves through `lucide-react`'s `icons` map rather than `LazyIcon`, and an unknown name renders nothing at all. - `object-metric.icon` — `plugin-dashboard/src/index.tsx:161` publishes the input, `ObjectMetricWidget.tsx:142`/`:474` forwards it to `MetricWidget`, which resolves it at `MetricWidget.tsx:312-321` via `getLazyIcon`. Nothing about what parses changes — both keys were already declared and optional. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016gcKVsiywU9CcS96S5t9qD
Fixes#10129
Re-run at a newer objectui SHA.
pnpm objectui:buildis now GREEN — that was the one thing blocking this card, and it is the reason this re-run exists. Kept a draft; the PM marks it ready once CI's Console Pin Gate confirms it.The bump
main)82a94170c4058d451ce3ac179d99296d90554479— objectui, 2026-08-17 21:51:40 +00009a3daf8d37ad973a621e5edd276fe32467f90684— objectui, 2026-08-20 08:41:53 +0000@objectstack/console: minorProduced by
scripts/bump-objectui.sh 9a3daf8d37ad973a621e5edd276fe32467f90684, thenpnpm sdui:manifest. The range is measured from the pin onorigin/main, not from the superseded0fd11444a89e—.changeset/console-0fd11444a89e.mdis deleted and.changeset/console-9a3daf8d37ad.mdreplaces it. There is exactly one console changeset, and no file was hand-edited except the ADR-0087 disposition the script explicitly hands to a human.The SHA was passed explicitly, deliberately. The shared
../objectuicheckout is not onmain— it sits on another agent's branch (claude/pm-dispatch-upgrade-jyngga), so the script's default (rev-parse HEAD) would have pinned that branch tip.9a3daf8d37adisorigin/mainat bump time, re-read aftergit -C ../objectui fetch origin main.Why
minor. The level is the highest level objectui itself declared across the range, never a guess off commit subjects (#4731). Measured over the range: 108 releasing changesets — 20minor, 88patch, 0major. objectui declares nomajorinside a launch window (its owncheck-changeset-no-major.mjs), so the highest declared level isminorand that is what the changeset carries. Five of those entries are breaking by the author's own annotation in the changeset body rather than by declared level (#6099); each is marked**BREAKING**in the list.Blocker — cleared upstream by objectui#5390
The previous revision of this PR was blocked, and the history is kept rather than deleted:
scripts/build-console.shcould not build objectui at0fd11444a89e, dying ingenerateBundlewithobjectui
6d5368ac8(objectui#5323) had added that probe with a private module-id regex/@objectstack[\\/+]spec/, which ourOBJECTSTACK_SPEC_DISTinjection (#8134) defeats — the injection rewrites all 18@objectstack/spec*specifiers to absolute paths in the framework tree, which carry no@objectstacksegment, so zero module ids matched and the counter-probe correctly refused a verdict. Filed from this side as #10136, dispatched upstream as objectui#5388.objectui#5390 merged that fix, and it is in this pin. Verified by content in the tree this PR actually built (
.cache/objectui-9a3daf8d37ad/apps/console/vite.config.ts), not by sha ancestry::98—assertLazyLinterStaysLazy(specTest: RegExp)now takes the spec module-id test as a parameter:414—specModuleTestcomes fromspecDistInjection.specModuleTestwhenOBJECTSTACK_SPEC_DISTis set, and falls back to the literal otherwise:435— registered asassertLazyLinterStaysLazy(specModuleTest), unconditionally, in the plugins arraySo the counter-probe now reads the same producer the
vendor-objectstackchunk group has always read. One consumer that did not read its producer, fixed at the producer's side of the contract.pnpm objectui:build— green, and the probe really ranExit 0. Two things make this a real green rather than a skipped probe: the plugin is registered unconditionally at line 435 of the config that built (quoted above — it has no env guard), and the build's own spec-provenance assertion fired, which is the injection being active. The failure mode being ruled out was a build that dies inside
generateBundle; this one walked past it and wrotedist/.Walkability — no deepening needed, and the reason is the parent walk, not the boundary dates
--check-walkablecame back clean on the first ask, sogit fetch --unshallownever ran andOBJECTUI_NO_DEEPENwas never set:Confirmed independently by the sound test: walking all 151 commits in the range and resolving every parent with
git cat-file -egives 0 missing.Correcting the previous revision of this body, which argued the same conclusion from the wrong evidence: it claimed the two
.git/shallowboundaries were "both older than the old pin and neither inside the range". Older by date is not the same as ancestor, and on a shallow repomerge-base --is-ancestorcannot settle it either — its own inputs are truncated. That argument is withdrawn. The reason to trust this range is the 0-missing-parents walk, and nothing else.No
⚠️ Degraded listbanner in the emitted changeset — it is derived, and the accounting line says so: 108 releasing of 125 changesets added across 151 non-merge commits, omitting 17 release-nothing changesets and 27 commits carrying no changeset.The free correctness check still passes. objectui
e7c3b3e91(the@changesets/cliv3 migration, objectui#5307) ships an empty-frontmatter changeset and is inside the range; it is absent from the list, as it must be — the digest is reading declarations, not commit subjects.CONSOLE_CHANGES_MAXdid fire — the list is capped at 100 of 108Left at its default 100, so the rendered list carries 100 entries and closes with the script's own honest line:
The real count is 108 releasing changesets. The list is complete for 100 of them and must not be read as the whole range; the range itself (
82a94170c405...9a3daf8d37ad) is printed in the entry for anyone recompiling it. Kept at the default rather than raised, so the artifact is reproducible by anyone running the documented command.ADR-0087 disposition — re-derived for the grown range, not copied
The script emitted a fresh
adr-0087: TODOplaceholder (#6494 makes that a human's answer). It was re-derived, and the re-derivation produced a measurement worth stating plainly, because the expectation going in was that the range would grow to six breaking entries:It is still FIVE. The range gained exactly two commits over the previous run — objectui
413629a89(docs/skills plus one pin test) and9a3daf8d3(objectui#5390, build-config only) — and both ship an empty-frontmatter, release-nothing changeset. Read their frontmatter directly rather than inferring it from the subjects. So the declared-breaking set did not grow with the range, and the console list is byte-identical to the previous revision's apart from the tip SHA, the accounting line and the range line.Each of the five was still judged again, one at a time, against its upstream changeset, and the three repo-side facts the argument leans on were re-measured at this HEAD rather than carried over:
9c60144b5NavigationRendererdropsresolveGroupLabel/resolveItemLabelisCustomizedguard made them structurally unreachable, and nav localization is already owned by the server-side/metaboundary (translateApp, re-measured present inpackages/spec/src/system/i18n-resolver.ts)f6fc565b0ObjectMetricWidgetPropsadoptsI18nLabelon four members4dbcae756dashboardComponentsre-keyed to the 8 registered schematypekeysd2ce342fcconfirmobject on actions becomes a?: nevertombstonepackages/spec/src/ui/action.zod.tsstill declaresconfirmas a live alias ofconfirmText, so the authorable surface is unchanged and no stored action row needs rewritinga2a974779FieldValidationRules.pattern.valuenarrows toRegExpPlus the reachability fact, re-measured against
packages/console/package.jsonat this HEAD:@objectstack/consolepublishes a frozen prebuilt SPA —filesis["dist", "README.md", "CHANGELOG.md"], its soleexportsentry is./package.json— so it forwards no@object-ui/*module entry point and re-exports none of these types, props or maps. This diff is.objectui-shaplus the changeset and nothing else.pnpm sdui:manifest— ran, green, no tracked files changedThe other half of the procedure (ADR-0082 D4, #5960), re-run because the manifest is a function of the pin and the pin moved:
So
packages/spec/react-declaration-parity.baseline.jsonneeds no update and is not touched by this PR;git statusis clean after the run.The Playwright revision mismatch is unchanged from the first run and is an environment fact, not a repo one: the objectui tree at this pin resolves
playwright@1.62.1, which wants chromium build 1234, while/opt/pw-browsersholds 1194. Fixed exactly asdocs/releases-maintenance.mdprescribes — a symlink tree in the session scratchpad mimicking the newer per-browser layout,PLAYWRIGHT_BROWSERS_PATHpointed at it for that one invocation.playwright installwas never run. TheENOENTon a missingpackages/console/dist/(#10138) did not bite this time, because the console build now succeeds and creates it.How the branch was brought up to
mainBy merge, not rebase. The previous tip (
656f413a4) was already pushed, so rebasing it would have required a force-push, which AGENTS.md §branch-hygiene 3 forbids outright.39a3befa8mergesorigin/mainin;a71b20ae0carries the re-run bump on top. The net diff againstmainis still exactly two files.Verification — all at
a71b20ae0Union re-derived from the actual changed paths with
node scripts/pm/dispatch-gates.mjs .objectui-sha .changeset/console-9a3daf8d37ad.md .changeset/console-0fd11444a89e.md, run after the final commit:Left to CI: the full lint farm, and Console Pin Gate — which is the one this re-run exists to turn green, and which now passes locally under the same
scripts/build-console.shit runs.Non-goals honoured
No publish, no version tag, no release-workflow dispatch, no Version Packages PR touched. objectui#4655 untouched — the pin is a SHA, not an npm version.
.github/workflows/cut-rc.yml,scripts/bump-objectui.shandcontent/docs/releases/**untouched. Nothing in the objectui repo was edited.Generated by Claude Code