Skip to content

fix(build): let turbo own build order, delete the hand-listed prebuild hooks - #7986

Merged
baozhoutao merged 1 commit into
mainfrom
claude/issue-7292-drop-hand-listed-prebuild
Sep 6, 2026
Merged

fix(build): let turbo own build order, delete the hand-listed prebuild hooks#7986
baozhoutao merged 1 commit into
mainfrom
claude/issue-7292-drop-hand-listed-prebuild

Conversation

@baozhoutao

@baozhoutao baozhoutao commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Fixes #7292

Triage picked option 1. The two hand-written pre* hooks are deleted and turbo's dependency graph is now the single source of build order.

What changed

File Change
packages/components/package.json deleted prebuild (types, core, react) and pretest (which pointed at it)
apps/site/package.json deleted prebuild (the schema catalog)
package.json site:build now turbo run build --filter=@object-ui/site, matching what ci.yml already ran
packages/components/README_SHADCN_SYNC.md the two blocks teaching the direct form now teach the turbo form
scripts/build-plugin-stylesheet.mjs, scripts/shadcn-sync.js, packages/components/src/__tests__/page-header-action-ids.dist.spec.tsx remedy strings pointed at the direct build; now point at the turbo build
scripts/__tests__/turbo-build-inputs.test.ts, scripts/__tests__/helpers/build-program.ts the delegation assertion is ratcheted to zero instead of deleted -- see below
.changeset/7292-turbo-owns-build-order.md empty frontmatter; the trade-off is recorded there

The defect, and the reading behind the fix

The card's reproduction was run by its author on one tree, before and after, with a live control. I did not re-run it -- see "What is NOT verified" -- so it is quoted, not re-measured:

$ pnpm --filter @object-ui/components build      # fresh worktree, nothing built yet
src/hooks/useActionTextLocalizer.ts(58,69): error TS2307: Cannot find module '@object-ui/i18n' ...
src/context/AppShellContext.tsx(2,41): error TS2307: Cannot find module '@object-ui/data-objectstack' ...
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @object-ui/react@17.6.0 build

$ turbo run build --filter=@object-ui/components
Tasks:    9 successful, 9 total

The hand-written chain names three packages; the closure turbo derives is seven (core, data-objectstack, i18n, react, react-runtime, sdui-parser, types). A hand-written chain is a second, unchecked copy of the package's own dependencies, and this one had drifted.

turbo.json reading (measured on this branch's base, 3702f92a9):

"build": { "dependsOn": ["^build"], ... }
"test":  { "dependsOn": ["^build"], ... }
"test:dist": { "dependsOn": ["build"], ... }

Both build and test depend on ^build, so turbo orders the upstream builds for both tasks from the declared dependency graph. That is what makes the hooks redundant rather than load-bearing -- and it is also why deleting pretest does not break turbo run test.

Usage change (the one thing reviewers should read twice)

pretest is what let pnpm --filter @object-ui/components test build its upstream packages first. After this PR the bare per-package forms no longer do that:

  • supported: turbo run build --filter=@object-ui/components, turbo run test --filter=@object-ui/components, and the repo-root pnpm test
  • no longer self-sufficient on a cold tree: pnpm --filter @object-ui/components build, pnpm --filter @object-ui/components test

Honest statement of the residual state (the card's A4): after this deletion pnpm --filter @object-ui/components build on a clean tree still fails -- now on this package's own upstream dist rather than inside @object-ui/react. That is not a regression this PR introduces; the direct form was never a supported entry point on a cold tree, and the deleted hook was a partial, drifting imitation of the ordering turbo already does correctly. The remedy strings and docs now say so.

Every in-repo site that taught the direct form was found with a wider grep than the one on the card (the card's narrower sweep over AGENTS.md / README.md / content/docs/ / .github/ legitimately returned zero -- none of the hits live there):

package.json:28                        site:build   -> rewritten to the turbo form
packages/components/README_SHADCN_SYNC.md:137,138,247,250 -> rewritten
scripts/build-plugin-stylesheet.mjs:287                   -> rewritten
scripts/shadcn-sync.js:915                                -> rewritten
packages/components/src/__tests__/page-header-action-ids.dist.spec.tsx:187 -> rewritten
.claude/hooks/guard-tree-enum.selftest.sh:96              -> NOT touched (governed surface, and it is
                                                             an allow-list fixture, not a teaching site)
.changeset/7799-cwd-rooted-package-tests.md               -> NOT touched (historical record)
packages/components/src/__tests__/browser-process-shim-scope.test.ts:81,
packages/components/src/renderers/__tests__/container-declaration-ratchet.test.tsx:110
                                                          -> NOT touched: both are comments about which
                                                             ENTRY POINTS run the file, and both stay true --
                                                             `pnpm --filter @object-ui/components test` still
                                                             runs, it just no longer pre-builds

apps/site: the dependency edge exists, so the hook goes

Judged by the same rule the card sets for it. The measurement is the manifest itself:

apps/site/package.json:18   "@object-ui/example-schema-catalog": "workspace:*",   <- declared dependency

The edge is present, so turbo's build.dependsOn: ["^build"] already orders @object-ui/example-schema-catalog before @object-ui/site. This is the "delete it" case, not the "the edge is missing, fix the manifest" case -- no dependency was added, and turbo.json is untouched.

One consequence had to be handled rather than assumed: ci.yml:1545 builds the site as pnpm turbo run build --filter='@object-ui/site' (turbo form, unaffected), but the root site:build script used the direct form and would have silently stopped building the catalog. It is rewritten to the turbo form.

Why the delegation guard is ratcheted, not deleted

scripts/__tests__/turbo-build-inputs.test.ts carried a liveness pin -- "no package delegates a build any more" -- whose failure message instructs deleting the assertion along with the narrowing it defends. Deleting both hooks trips exactly that pin.

I did not delete it. The predecessor policed the survivors (each delegated package must be a declared dependency), which is the weaker guard: a delegation whose target IS declared still duplicates the graph, still drifts, and still fails only on the trees nobody looks at -- apps/site was precisely that shape, declared target and all. The assertion is inverted into a ratchet on the whole class ("no build lifecycle script delegates to another package with pnpm --filter"), and helpers/build-program.ts keeps collecting delegations unchanged, so re-introducing one fails loudly here instead of silently widening an unswept build program. Under the decision frame this is the "contract tightening beats consumer leniency / declared = enforced" axis, and it adds no new gate, no new file and no new verification surface -- it replaces one assertion in a test that already ran.

Verified (R45) -- every leg the R44 report left NOT RUN has now been run

Verification round on this exact head (16aed838e), no code change needed: the branch is byte-identical to what R44 pushed, and git diff HEAD is empty after every probe. Dedicated worktree, pnpm install --frozen-lockfile EXIT=0. "Cold tree" below means measured: 0 packages/*/dist + apps/*/dist, 0 tsconfig.tsbuildinfo, no turbo cache directory. Heavy runs went through this container's shared verify lock (its VERDICT command-exit line is the exit code, not a bare status variable); every exit code was captured by redirecting to a file first, never through a pipe.

Leg Command Verdict line
1 · the ratchet, first pnpm exec vitest run scripts/__tests__/turbo-build-inputs.test.ts EXIT=0 -- Test Files 1 passed (1) / Tests 46 passed (46); the verbose reporter names the rewritten assertion as passing: no build lifecycle script delegates to another package with pnpm --filter
2 · probe, restore the hook re-add the deleted prebuild to packages/components/package.json, re-run leg 1 RED as predicted, EXIT=1 -- Tests reads 1 failed, 45 passed, 46 total, received ["@object-ui/components -> @object-ui/core, @object-ui/react, @object-ui/types"] against expected []. Mutation proven on disk (git hash-object moved 12055578 to e6a070ba, HEAD blob 12055578); restore proven (git checkout HEAD -- path, hash back to 12055578, git diff HEAD 0 lines)
3a · cold build, components turbo run build --filter=@object-ui/components --concurrency=2 EXIT=0 -- Tasks: 8 successful, 8 total / Cached: 0 cached, 8 total. Zero cache hits, so this is an executed ordering, not a replay: the seven upstream packages plus this one
3b · cold build, site turbo run build --filter=@object-ui/site --concurrency=2 EXIT=0 -- Tasks: 30 successful, 30 total / Cached: 8 cached, 30 total. turbo reports Remote caching disabled, using shared worktree cache, and the 8 hits are leg 3a's own outputs in this same tree, so leg 3c re-ran it forced
3c · cold build, site, forced same plus --force, on a re-wiped cold tree EXIT=0 -- Tasks: 30 successful, 30 total / Cached: 0 cached, 30 total, with @object-ui/example-schema-catalog:build: cache bypass, force executing at line 1032 and @object-ui/site:build at line 1037. This is the ordering claim with no cache in it
3d · the rewritten root script, verbatim pnpm site:build EXIT=0 -- Tasks: 30 successful, 30 total / Cached: 30 cached, 30 total (warm tree). A3 holds: the turbo form still puts the catalog ahead of the site
4 · probe, the edge orders the catalog turbo run build --filter=@object-ui/site --dry=json, before and after deleting the workspace:* edge from apps/site/package.json Before: 31 tasks, @object-ui/example-schema-catalog#build present at index 3 against site at index 28, and listed verbatim in @object-ui/site#build's own dependencies. After deleting the edge: 30 tasks, catalog absent from both the task list and site's dependencies. So the manifest edge is what orders it, never the deleted hook. Restore proven (hash back to 161ab80b, git diff HEAD 0 lines)
5 · the card's A1 reproduction, on this branch pnpm --filter @object-ui/components build, cold tree STILL FAILS, EXIT=1 -- ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL @object-ui/components@17.6.0 build. The PR body's residual-state claim is confirmed and sharpened: the failure has MOVED. Before the change it died inside @object-ui/react's tsc; now it dies in this package's own vite build, on its own upstream dist -- 253 TS2307 lines naming @object-ui/core (100), @object-ui/types (83), @object-ui/react (36), @object-ui/i18n (25), @object-ui/types/form (4), @object-ui/sdui-parser (3), @object-ui/react-runtime (2). Not a regression this PR introduces; the direct form was never self-sufficient on a cold tree
6 · the dist pin, through its real runner pnpm test:dist EXIT=0 -- Tasks: 9 successful, 9 total; Test Files 1 passed (1) / Tests 3 passed (3) for page-header-action-ids.dist.spec.tsx. Run through test:dist and not as a bare vitest path: the .dist.spec.tsx suffix is collected ONLY by the dist project, so a bare path run would have matched zero tests and read as green
6 · the whole scripts suite pnpm exec vitest run scripts/__tests__/ EXIT=0 -- Test Files 107 passed (107) / Tests 3240 passed (3240). Owed because the diff edits two files in it; helpers/build-program.ts has exactly one reader, turbo-build-inputs.test.ts
7 · readers git grep -n for the two hook names, prebuild and pretest, excluding CHANGELOG.md and pnpm-lock.yaml 6 hits, none of them a manifest: the changeset prose, three comment lines citing this card, and the two lines in helpers/build-program.ts that still COLLECT prebuild -- which is precisely what makes leg 2 go red

Gates, each quoting its own verdict line:

pnpm lint:root                                   EXIT=0   32 problems (0 errors, 32 warnings)
turbo run lint --filter=components --filter=site EXIT=0   Tasks: 3 successful, 3 total
                                                          (site 7 warnings, components 925 warnings, 0 errors,
                                                           none in any file this PR touches)
pnpm type-check:scripts                          EXIT=0   tsc -p tsconfig.scripts.json
  MEASURED, not merely run: `--listFiles` shows 829 files, including
  scripts/__tests__/helpers/build-program.ts and scripts/__tests__/turbo-build-inputs.test.ts
node scripts/check-changeset-presence.mjs        EXIT=0   1 source file(s) of 1 released package(s) changed,
                                                          and this change declares 1 changeset(s)
node scripts/check-changeset-no-major.mjs        EXIT=0   No changeset declares a `major` bump.
node scripts/check-changeset-fixed.mjs           EXIT=0   All workspace packages are in the changeset fixed group.
node scripts/check-control-bytes.mjs             EXIT=0   OK (scanned 6428 tracked text file(s); skipped 85 binary)
node scripts/check-doc-links.mjs                 EXIT=0   Links are valid across 17 scan roots.
node scripts/check-governed-queue-guard.mjs --test (all 10 changed paths)   EXIT=0
                                                          NOT GOVERNED -- 10 path(s) checked against
                                                          5 governed surface(s); none matched.

Two counts moved since the card was written, both benign and both explained rather than waved through:

  • The card quoted Tasks: 9 successful, 9 total for the components build; on this base it is 8. The closure is unchanged at seven upstream packages plus the package itself; the card's run was on an older base.
  • The site dry run lists 31 tasks where the real run executes 30. The extra one is @object-ui/test-support#build, whose command in the dry JSON is the literal string NONEXISTENT -- the package declares no build script, so turbo lists it in the graph and executes nothing.

Open questions from the R44 report, decided on the measurement: question 1 -- A stands. The ratchet is green on this branch (leg 1) and red, naming the offending package, the moment a hook comes back (leg 2). It is neither weakened nor deleted. Question 2 -- A stands, the extra files are kept; leg 3d is the measurement that says the root site:build rewrite was forced rather than opportunistic.

Session attribution as prose, because the footer block does not survive an edit: created by https://claude.ai/code/session_013uAaxiwgYDybsTNV9xwa1M, verified by https://claude.ai/code/session_01MM7kaS4dPpYHV5BsMyu4tQ.

Census re-count on this base

Re-counted on 3702f92a9: 42 packages/*/package.json + apps/*/package.json. Hand-written pre* build/test hooks: exactly the two this PR deletes. (packages/runner, apps/console and the two console examples declare preview / prepublishOnly, and apps/site declares postinstall: fumadocs-mdx -- none of those is a build-order copy, and none is touched.)

Out-of-scope finding, not fixed here

scripts/setup.sh:55-70 is the same defect class outside the manifest census: it hand-lists types -> core -> react -> components -> fields -> layout and, under set -e, its pnpm --filter @object-ui/react build step fails on a clean checkout for the identical TS2307 reason, before this PR and after it. This PR does not change that file's behaviour (it already built types/core/react itself, so the deleted prebuild was redundant there). Separately, its last step calls pnpm test:root, which the root package.json does not declare. Both left untouched and reported for triage; #7292 is the only card this PR closes.

R45 update: both findings are now filed, unassigned, as objectui#7987 -- the hand-listed six-package chain and the undeclared pnpm test:root call. Re-measured on this branch and unchanged by it: under set -e the script dies at its pnpm --filter @object-ui/react build step, three lines before it ever reaches pnpm --filter @object-ui/components build, so the deleted hook was never what carried it.


Generated by Claude Code

…d hooks

`packages/components` hand-listed the workspace packages its build needed
(`prebuild`: types, core, react; `pretest`: the same chain) and `apps/site`
did the same for the schema catalog it already declares as a dependency.
A hand-written chain is a second, unchecked copy of the package's own
`dependencies`, and the components one had drifted: `@object-ui/react`
imports `@object-ui/i18n` and `@object-ui/data-objectstack`, neither of
which the list names, so on a tree where those two have no `dist` the chain
dies inside react's `tsc` with TS2307 -- pointing at react's source rather
than at the stale list. turbo derives the same closure from the dependency
graph and gets seven packages.

Both hooks are deleted. turbo's `build.dependsOn: ["^build"]` (and
`test.dependsOn: ["^build"]`) is now the single source of build order, which
is what every path CI takes already used.

Usage change: the bare per-package forms no longer build upstream first.
`turbo run build --filter=<pkg>` / `turbo run test --filter=<pkg>` and the
repo-root `pnpm test` are the supported entry points; every in-repo document
and hint string that taught the direct form now teaches the turbo form, and
the root `site:build` script goes through turbo the way `ci.yml` already did.

The `turbo build inputs` guard's delegation assertion is ratcheted to zero
rather than deleted: it used to police the survivors (each delegated package
must be a declared dependency), which is the weaker guard -- a delegation
whose target IS declared still duplicates the graph and still drifts. The
derivation keeps collecting delegations so that re-introducing one fails
loudly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013uAaxiwgYDybsTNV9xwa1M
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3185.9 KB 3191.4 KB
Main entry chunk (gzip) 143.5 KB 350 KB
Entry file index-8xzvN5SF.js
Status PASS

The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it.


📦 Bundle Size Report

Package Size Gzipped
app-shell (consoleActionDispatch.js) 0.20KB 0.19KB
app-shell (index.js) 15.67KB 5.75KB
app-shell (runtime-config.js) 20.68KB 7.36KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 10.06KB 3.86KB
auth (ActiveOrganizationStorage.js) 25.05KB 9.16KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 2.07KB 1.00KB
auth (AuthProvider.js) 40.18KB 10.59KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.15KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.65KB 2.22KB
auth (SocialSignInButtons.js) 9.61KB 3.89KB
auth (UserMenu.js) 3.41KB 1.23KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 40.21KB 10.80KB
auth (createAuthenticatedFetch.js) 8.46KB 3.43KB
auth (index.js) 3.19KB 1.44KB
auth (invitation-status.js) 1.22KB 0.70KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.30KB 1.02KB
auth (useWorkspaceAdminStatus.js) 5.13KB 2.35KB
collaboration (CommentThread.js) 26.08KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.68KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 497.06KB 113.79KB
core (index.js) 6.96KB 2.79KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 182.08KB 50.62KB
fields (index.js) 242.44KB 61.25KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (builtinAggregateLabels.js) 0.86KB 0.49KB
i18n (currency.js) 1.22KB 0.64KB
i18n (fallbackInterpolation.js) 6.25KB 2.77KB
i18n (i18n.js) 4.28KB 1.75KB
i18n (index.js) 3.65KB 1.47KB
i18n (pickLocalized.js) 7.62KB 3.26KB
i18n (provider.js) 26.89KB 9.04KB
i18n (useDisplayLocale.js) 2.85KB 1.45KB
i18n (useObjectLabel.js) 34.34KB 9.17KB
i18n (useSafeTranslation.js) 5.60KB 2.33KB
layout (index.js) 38.84KB 10.94KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.75KB
mobile (index.js) 1.99KB 0.87KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.72KB 0.42KB
mobile (useSpecGesture.js) 4.39KB 1.66KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 11.71KB 4.29KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 6.24KB 2.16KB
permissions (discardProofCache.js) 1.04KB 0.55KB
permissions (evaluator.js) 5.12KB 1.74KB
permissions (index.js) 0.93KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.53KB
permissions (usePermissions.js) 4.83KB 2.27KB
plugin-ai (index.js) 15.16KB 3.68KB
plugin-calendar (index.js) 47.35KB 13.21KB
plugin-charts (index.js) 70.31KB 19.62KB
plugin-chatbot (index.js) 193.53KB 46.05KB
plugin-dashboard (index.js) 131.41KB 34.43KB
plugin-designer (index.js) 211.51KB 43.01KB
plugin-detail (index.js) 247.59KB 63.48KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 131.01KB 32.32KB
plugin-gantt (index.js) 167.16KB 40.99KB
plugin-grid (index.js) 208.56KB 56.63KB
plugin-kanban (index.js) 52.30KB 14.49KB
plugin-list (index.js) 113.24KB 27.66KB
plugin-map (index.js) 20.35KB 6.77KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.42KB 11.92KB
plugin-timeline (index.js) 29.95KB 8.67KB
plugin-tree (index.js) 9.16KB 3.18KB
plugin-view (index.js) 84.33KB 20.75KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.66KB 3.50KB
providers (index.js) 0.45KB 0.23KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.62KB 2.34KB
react (LazyPluginLoader.js) 4.47KB 1.63KB
react (SchemaRenderer.js) 81.07KB 26.86KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 2.32KB 1.24KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 5.41KB 2.34KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 4.93KB 2.24KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (parse.js) 20.57KB 5.88KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 10.35KB 3.60KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 1.00KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 2.74KB 1.41KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 3.75KB 1.85KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.85KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (expression.js) 0.20KB 0.18KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-inflight.js) 8.87KB 3.73KB
types (http-retry.js) 4.32KB 2.02KB
types (icon-key-migration.js) 4.26KB 1.63KB
types (index.js) 4.74KB 2.25KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 4.73KB 2.28KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (select-option.js) 0.20KB 0.19KB
types (spec-report.js) 5.05KB 1.93KB
types (spec-ui-namespace.js) 0.20KB 0.19KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 6.28KB 2.87KB
types (ui-action.js) 8.11KB 3.32KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

Copy link
Copy Markdown
Contributor Author

Standing down on Live E2E (informational) — red on the base branch too, not this PR's. domain:devx @ objectui execution seat, PM session session_01MM7kaS4dPpYHV5BsMyu4tQ, R45, 2026-09-06T07:05Z.

Proceeding: verification round ACCEPTed on #7292 (5557621075); flipping to ready, waiting for the post-flip guard, then arming.


Generated by Claude Code

@baozhoutao
baozhoutao marked this pull request as ready for review September 6, 2026 07:04
@baozhoutao
baozhoutao added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit bf914dc Sep 6, 2026
33 of 34 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-7292-drop-hand-listed-prebuild branch September 6, 2026 07:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@object-ui/components' hand-listed prebuild is stale: pnpm --filter @object-ui/components build fails on a clean checkout, and turbo hides it

2 participants