Skip to content

docs(react-runtime): compile every README snippet and leave the UNGATED_DOCS ledger - #8081

Merged
baozhoutao merged 3 commits into
mainfrom
claude/issue-5174-ungated-docs-batch23
Sep 6, 2026
Merged

docs(react-runtime): compile every README snippet and leave the UNGATED_DOCS ledger#8081
baozhoutao merged 3 commits into
mainfrom
claude/issue-5174-ungated-docs-batch23

Conversation

@baozhoutao

Copy link
Copy Markdown
Contributor

Part of #5174 — batch 23 of the UNGATED_DOCS burn-down.

packages/react-runtime/README.md leaves the ledger and all 5 of its ts/tsx blocks
now compile against the built types. The gate file's only change is the two lines
of that one entry.

Notation, read this first

This repository has measured that GitHub's body sanitizer deletes tag-shaped
fragments even inside backticks and fenced blocks. So JSX elements and generic
parameters are spelled out in words below — "a ReactRunner element", "a
ComponentType" — rather than in their real angle-bracket form. The README itself
carries the real spellings; this page does not.

Concurrency

main moved under this batch twice, and both moves were absorbed by merging
(never rebasing, never force-pushing).

  1. Batch 22's PR docs(layout): compile every README snippet and leave the UNGATED_DOCS ledger #8063 merged, along with docs(types,api): name the component node BaseSchema and pin the vocabulary #8064, docs(ci-cd-pipeline): correct the Half-State Patrol wiring and pin it against the workflow #8061, fix(fields): GeolocationField emits null for a cleared coordinate #8056 and test(app-shell,console): inherit the real surface in @object-ui/auth vi.mock factories #8054,
    taking origin/main from 65ce8c576 to a81336390. fix(fields): GeolocationField emits null for a cleared coordinate #8056 moves
    packages/fields source — package source, so the built types this corpus is
    judged against move with it — so the forced build, every gate, every probe
    reading and every test were re-run on the merged head.
  2. fix(devx): say the skill-examples build is scoped at both precondition sites #8066 merged, taking origin/main to 295804a63. It touches only
    scripts/check-skill-examples.mjs and its test: no package source, so no
    rebuild was owed
    — that is a measurement, not an omission. Its test is a
    reader of the gate file, so the reader suite was re-run on this head.

All 9 open pull requests' file lists were read over the REST files endpoint and
each count reconciled against that PR's own changed_files: 8064/3, 8063/2,
8061/2, 7749/4, 7685/67, 7058/24, 7054/2, 7053/2, 5400/1058. #5400's 1058-file
list was paged to exhaustion (11 pages) because the endpoint pages at 100 and a
truncated list renders as a confident absence. No open PR touches
packages/react-runtime/README.md.

One neighbour worth naming, not an exclusion: PR #5400 (the release PR) edits
packages/react-runtime/package.json and its CHANGELOG. That manifest is what
scripts/__tests__/doc-version-claims.test.ts compares this README's peer line
against, so a version bump there is the one open change that could move a pin on
this page. This diff does not touch that line.

Live E2E (informational) is red on every branch today for an upstream reason
(objectui#7990 / objectstack#16186), not because of this diff.

Ledger arithmetic

Base row measured at origin/main 295804a63 bytes (probe M0'), branch row at
8cefaa894. Both rows MEASURED by a real gate run, never computed.

reading base 295804a63 branch 8cefaa894
UNGATED_DOCS entries 15 14
covered documents 212 213
…of them holding a ts/tsx block 110 111
covered blocks 714 719
blocks to compile 556 561
declared fragments 158 158 (zero new)
semantic failures 0 0
self-imports judged (check:readme-exports) 490 492

Programmatic diff of the two UNGATED_DOCS objects — both imported as OBJECTS,
never diffed as text: removed = ['packages/react-runtime/README.md'],
added = [], reason-changed = [], key order preserved for survivors = true.
git diff --numstat on the gate file against origin/main is exactly 0 2.
On the branch: react-runtime entries 0, packages/NAME/README.md entries
13 (from 14), control 'packages/auth/README.md' 1.

The strictness region — the Fence scanning banner line to EOF, 1178 lines on
both sides — hashes to
f46b5662ba336f026bca3a0003e0b7979789d48d0291fa5760be7d23c8ed0160 on
origin/main and on the branch. Re-measured here on the dispatched base and on
the current merge base, not inherited; it is the value batches 15 through 22
recorded.

The ledger's reason string for this page was STALE, continuing the streak.
It claimed "25 undefined-name diagnostic(s) … plus TS2813x1 TS2814x1". The
measurement reads 20 in the undefined-name family (TS2304x13, TS18004x6,
TS2552x1) and 27 in total, and the string names neither the TS2300x4 nor the
TS2686x1 population at all.

Census and the rung that decided

Re-taken on this batch's own base through the gate's exported analyze() /
compileSnippets(), one document un-gated at a time, over every non-excluded
ledger candidate.

Rung 1 does NOT decide on blocks alone: react-runtime TIES on 5 blocks with
plugin-list, core and plugin-kanban. Rung 1's second term (diagnostics) settles
it — 27 against the next-best 8. Rungs 2 and 3 were never reached.

document blocks diagnostics distinct codes codes
packages/react-runtime/README.md 5 27 7 TS2304x13 TS18004x6 TS2300x4 TS2552x1 TS2686x1 TS2813x1 TS2814x1
packages/plugin-list/README.md 5 8 3 TS7006x4 TS2304x3 TS2657x1
packages/core/README.md 5 6 2 TS2304x5 TS2339x1
packages/plugin-kanban/README.md 5 6 2 TS1109x5 TS1011x1
packages/plugin-ai/README.md 4 8 3 TS2304x4 TS2322x3 TS2552x1
packages/providers/README.md 4 8 2 TS2304x7 TS2741x1
packages/plugin-charts/README.md 4 6 1 TS1109x6
packages/plugin-editor/README.md 4 6 1 TS1109x6
packages/plugin-map/README.md 4 2 2 TS1005x1 TS2304x1
packages/plugin-markdown/README.md 4 2 2 TS1005x1 TS1109x1
packages/fields/README.md 2 3 2 TS7031x2 TS2307x1
packages/plugin-tree/README.md 1 3 2 TS1005x2 TS1109x1

Assumption A1 is CONFIRMED — every block total, diagnostic total and
per-code figure matches batch 22's census exactly, including react-runtime's 7
distinct codes, the figure batch 21 reported as moving with the compiler
program's shape.

Exclusions re-verified against GitHub on this base, not inherited: the root
README.md is not a packages/NAME/README.md; packages/layout/README.md was
batch 22's and has now merged, so it is out of the ledger entirely rather than
merely reserved; packages/auth/README.md is held by open draft PR #7685;
packages/plugin-chatbot/README.md is deferred by the earlier ruling.

The debt, and what each repair did

The 7 codes are 3 families, not 7. The triage matters more than the count.

1. Ambient demo names the page never defines (TS2304x13, TS18004x6, TS2552x1 —
20 of the 27).
These are the values a reader injects into the runtime scope
(ObjectGrid, data, useAdapter), the source strings (code, src), the
error sink (report) and the module object (dateFns). TS18004 is not JSX,
as the dispatch wondered — the harness parses every block as TSX regardless of
the fence label, so a JSX-bearing ts fence is never a parse error. TS18004 is
the object shorthand diagnostic, raised by the scope object literals whose
shorthand keys named nothing. They are now declare const bindings typed to
what each is used as. TS2552 is the same family with a near-miss attached:
useAdapter was being matched against the DOM lib's GPUAdapter.

2. Three blocks used a ReactRunner element without importing it. The Imports
block and both halves of the scope block now self-import it, which is why this
diff hands check:readme-exports two more self-imports to judge (490 to 492)
rather than fewer.

3. The Accepted-source-shapes block declared Page four ways — and this is
where the ledger's "candidate real defects" claim is retired.
That block is a
catalogue of alternative source strings: bare JSX, a function declaration, an
arrow expression, a class, then the const form that does not get the implicit
export and the same form exported explicitly. They are alternatives, never one
program — but the harness gives each block its own virtual module, so all four
Page declarations landed in one scope. TS2300x4 is that collision, and
TS2813 and TS2814 — the two the ledger called "candidate real defects,
un-triaged" — are strictly downstream of it.
Probe P4b proves this: recreate
the function-versus-class name collision alone and both codes come straight
back. Neither is a defect in the documented API. TS2686 was the same block's
React reference resolving to the UMD global once the block became a module.

The four shapes now carry distinct names, and a new prose paragraph says why —
that each line is a separate source, that they are named apart only so the block
compiles as one program, and that the rule is about the shape the source starts
with
, never about the name. React is bound with a declare const typed as the
react module, matching what the runtime actually injects, so the page does not
tell a reader to import React into a source string when the README already says
React is always present.

No README-versus-shipped-type contradiction was found. The props table
(code, scope, fallback, onError) and the Lower-level API comments were
checked against the built dist/index.d.ts and all match, so ruling 5 was not
reached and nothing was filed under it.

No packages/** source touched, no public type widened, no lenient alias added,
no gate loosened, and no new fragment marker: declared fragments stay at 158.

Probes — two base measurements and nine probes, each predicted in writing first

Predictions were written to the scratchpad before any probe ran and were not
amended: 5174-b23-PREDICTIONS.md (md5 89e912d0714e2a2b8ee91d541e388338) at
implementation commit 2a7fb4884 with a clean tree, plus two pinned addenda for
a re-aim and a re-measurement (…-P4b.md, md5
07cc94d60e06f0e21cb5a8436b0281c7; …-M0prime.md, md5
e3187919f47ce2c04360e5c4da7be7a8). Every mutation is proven on disk by
occurrence counts of both the injected and the deleted text plus git hash-object against the HEAD blob; every restore is proven by an empty git diff HEAD; every leg runs under a trap … EXIT INT TERM with absolute paths,
restoring with git checkout HEAD -- against an absolute path rather than a bare
checkout from the index. No dist preflight is owed, and that is a measurement
rather than an omission:
both mutated paths are read from disk by the gate
itself, so no rebuild sits between a mutation and its reading.

probe mutation predicted observed
M0 both files at dispatched base 65ce8c576 exit 0, 211 covered / 16 ungated / 549 to compile, bound empty exactly that
M0b base check:readme-exports 489 real, 0 fabricated exactly that
M0' both files at current merge base 295804a63 exit 0, 212 / 15 / 556; readme-exports 490 exactly that
P1 ledger entry restored ALONE exit 0, coverage falls back to 211 / 16 / 549; gate byte-identical to base exactly that (9beae7db… both sides)
P2 README restored ALONE exit 1, 27 diagnostics over 7 codes exactly that; but "549 of 554 judged" was WRONG — see below
P3 delete the React binding in the catalogue block exit 1, TS2686 UMD global exactly that
P4 rename one const back to collide TS2300 + TS2813 + TS2814 FALSIFIED — TS2451x2 (redeclare block-scoped); see below
P4b recreate the function-versus-class collision exit 1, TS2300 + TS2813 + TS2814 TS2814 + TS2813 returned; TS2300 did NOT — see below
P5 delete the Imports block's self-import exit 1, TS2304 for the runner name exactly that
P6 fabricate a self-import name readme-exports 490 real / 1 fabricated exactly that, naming packages/react-runtime/README.md:99
P7 wrong prop key on a ReactRunner element exit 1, props mismatch naming ReactRunnerProps TS2769, not the predicted TS2322 family; see below
P8 delete the Scope-typed binding exit 1, TS2304 for that name exactly that

Three predictions were wrong, and all three are reported rather than smoothed.

  • P2's judged count. I predicted "549 of 554 judged", assuming the restored
    page's blocks would drop out of the judged set. They do not: nothing refuses
    them, so the gate judges all 554 and 5 fail. The load-bearing half — exit
    1, exactly 27 diagnostics over exactly 7 codes on this page — held.
  • P4 was falsified outright. Renaming one const to collide with another
    const gives TS2451 "Cannot redeclare block-scoped variable" — correct
    TypeScript, and evidence my aim was wrong rather than the triage claim. P4b
    re-aimed at the function-versus-class collision, which is what the base page
    actually had, and was predicted in writing before it ran.
  • P4b was half wrong too, and the half that failed is informative. TS2813 and
    TS2814 came straight back, which is the claim that mattered. TS2300 did not
    — a two-way function/class collision does not raise it; the base page's
    TS2300x4 needed all four Page declarations. So the ledger's two "candidate
    real defects" are proven downstream of the collision, and TS2300 is proven to
    be the four-way catalogue shape specifically.
  • P7 returned TS2769, not the predicted TS2322/TS2353/TS2739 family, because
    ReactRunner is a class component so a bad prop fails overload resolution. Same
    meaning, different code: the message names ReactRunnerProps and says
    "Property 'scopes' does not exist … Did you mean 'scope'?", which is what makes
    the point — the composition is genuinely CHECKED against the shipped props,
    not merely parsed.

Gates — all at 8cefaa894, clean tree, nothing pushed after

Exit codes captured by redirect-then-capture, before any pipe; each row quotes
the gate's own verdict line. The build was forced first
(pnpm exec turbo run build --filter=./packages/* --concurrency=2 --force, 39
successful / 0 cached) and again inside the provenance gate (43 successful / 0
cached); every dist-sensitive gate was then re-run on that force-built dist. Note
the invocation: bare turbo is not on PATH in this container, so pnpm exec turbo is what ran.

  • pnpm check:doc-snippets exit 0 — "Scanned 227 document(s): 213 covered (111 of them hold a ts/tsx block), 14 ungated" / "Covered blocks: 719 — 561 to compile, 158 declared fragment(s)" / "Root bound: no block imports a specifier that resolves only through this repository's ROOT manifest" / "Semantic phase: 561 of 561 block(s) judged, 0 failed" / "Every covered documentation snippet compiles against the built types."
  • pnpm check:doc-fences exit 0 — "every TypeScript block in 227 document(s) is fenced ts/tsx/typescript"
  • pnpm check:readme-exports exit 0 — "492 of them self-imports judged (492 real, 0 wrong-path, 0 fabricated)"
  • pnpm check:doc-types exit 0 — "Every documented component type is registered."
  • node scripts/check-doc-links.mjs exit 0 — "Links are valid across 17 scan roots."
  • pnpm check:doc-example-readers exit 0 — "OK 80 documented symbol(s), 3947 call site(s)"
  • pnpm check:control-bytes exit 0 — "OK (scanned 6473 tracked text file(s); skipped 85 binary)"
  • node scripts/check-node-esm-load.mjs --force-build exit 0 — "Provenance leg: 37 of 37 gradable entries were built by this tree." Green on its first run, so no gate had to be re-run over a replayed sibling cache. Its three ERR_UNKNOWN_FILE_EXTENSION lines are the gate's own by-design entries.
  • pnpm type-check:scripts exit 0
  • node scripts/check-changeset-presence.mjs exit 0 — "2 file(s) changed, 0 of them published source of a package the release covers … no changeset is owed." No skip-changeset label applied: this repository declares with an empty-frontmatter changeset rather than that label, and the presence gate says none is owed, so nothing was labelled at all by this seat.
  • node scripts/check-governed-queue-guard.mjs --test on both paths exit 0 — "NOT GOVERNED — 2 path(s) checked against 5 governed surface(s); none matched"
  • Owning package: pnpm exec vitest run packages/react-runtime/ — "Test Files 1 passed (1) / Tests 19 passed (19)"; pnpm --filter @object-ui/react-runtime type-check exit 0, its output echoing tsc --noEmit && tsc -p tsconfig.test.json, so the test tsconfig is genuinely included and the script really ran.
  • Beyond the gate, a manual control-byte scan of both changed paths with grep -naP over the C0/DEL ranges found nothing (exit 1, zero output bytes).

Lint, with the narrowing declared and its three evidence items. pnpm lint
here is turbo run lint per package, so the repository-wide sweep is CI's run;
the narrowed run over exactly this diff is
pnpm exec eslint --no-inline-config --format json on both paths — 2 entries,
0 errors. eslint's own answer for the README is "File ignored because no
matching configuration was supplied", so the real lint surface of this diff is
the one .mjs at 0 errors and 0 warnings. (1) The population eslint would
otherwise judge is 4364 files by its own count. (2) That run exits 1 with
93 errors and 12171 warnings, and the touched files carry 0 of them
measured, and reported rather than smoothed, because a reader must not mistake
the narrowing for a green repository. (3) eslint.config.js declares no
project, projectService or parserOptions.project (grep count 0), so
type-aware linting is off and this diff cannot move the verdict on any untouched
file.

Readers of the changed paths

Derived with git grep -l on both paths on this head, not guessed — 17 test
files, 607 tests, all green
in one run.

  • scripts/__tests__/doc-version-claims.test.ts — the one live pin that names this README. It asserts the page's react ^18.0.0 || ^19.0.0 prose line restates peerDependencies.react verbatim. This diff does not touch that line, and A3 is confirmed: exactly one live reader, as predicted.
  • scripts/check-doc-snippet-types.mjs — the gate itself, which now COMPILES this page instead of excusing it; P1 proves the entry was what suppressed it.
  • scripts/check-readme-exports.mjs — reads this README's self-imports, proven live by P6. This diff ADDS two, so it hands that gate more to check than it had.
  • Readers of the GATE file additionally exercised: check-doc-snippet-types, check-doc-component-types, check-doc-expression-carriage, check-doc-fence-languages, check-links-workflow, check-readme-exports, check-skill-examples, component-node-vocabulary-7434 and ci-cd-pipeline-doc under scripts/__tests__/, the five packages/types/src/__tests__/ doc-surface suites, packages/plugin-gantt/src/readme-navigation-example.test.ts, packages/react/src/__tests__/LazyPluginLoader.jsdocExample.test.ts and examples/schema-catalog/test/component-fixture-declared-keys.test.ts.

Out of scope

Nothing was filed this batch. The one wall this burn-down keeps meeting — the
root bound refusing a package's own declared peer — did not bite here:
react is a declared peer of @object-ui/react-runtime, but it is mapped
anyway because other workspace packages declare it under dependencies, so the
bound never refused it and this page needed no stand-in for it. objectui#8059
already records that trade-off and was not refiled.

This PR is a DRAFT and stays a draft: this seat does not flip ready, does not
enable auto-merge, and touches no labels or assignee.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr


Generated by Claude Code

…ED_DOCS ledger

Part of #5174 — batch 23 of the UNGATED_DOCS burn-down.

All 5 ts/tsx blocks in packages/react-runtime/README.md now compile against the
built types, so the document leaves the ledger. The gate file's only change is
the two lines of that one entry; the strictness region is byte-identical.

The 27 diagnostics across 7 codes were three families, not seven:
  - undefined ambient demo names (TS2304, TS18004 shorthand, TS2552) — the
    values a reader injects into the runtime scope, now declared;
  - a missing self-import of ReactRunner in three blocks;
  - one catalogue block that declared `Page` four ways. TS2300x4 plus the
    TS2813/TS2814 the ledger called "candidate real defects, un-triaged" are
    all downstream of that one collision, and are NOT defects: the lines are
    alternative sources shown together. They are named apart so the block
    compiles, with prose saying so.

No packages/** source touched, no public type widened, no gate loosened, and no
new fragment marker.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
Brings in batch 22 (#8063, packages/layout/README.md leaves the ledger) and
#8056, which moves packages/fields source and therefore the built types this
corpus is judged against. Forced build, gates, probes and tests re-run on the
merged head.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
#8066 touches only scripts/check-skill-examples.mjs and its test — no package
source, so the built types this corpus is judged against do not move and no
rebuild is owed. Its test is a reader of the gate file, so the reader suite is
re-run on this head.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
@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) 3186.2 KB 3191.4 KB
Main entry chunk (gzip) 143.6 KB 350 KB
Entry file index-DFch1VaU.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.43KB 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) 6.57KB 2.76KB
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.29KB 13.18KB
plugin-charts (index.js) 70.43KB 19.71KB
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.19KB 3.19KB
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): that check is red on main itself today (base-red, anchored on objectui#7990 / objectstack-ai/objectstack#16186), it is informational (not required), and this PR changes one package README and two ledger lines in a doc gate — nothing the live lane exercises. No fix is ported because none exists yet upstream. The flip to ready happens only once every non-informational check on 8cefaa894 is green.


Generated by Claude Code

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

Labels

documentation Improvements or additions to documentation package: react-runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants