Skip to content

docs(core): compile every README snippet and leave the UNGATED_DOCS ledger - #8132

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

docs(core): compile every README snippet and leave the UNGATED_DOCS ledger#8132
baozhoutao merged 3 commits into
mainfrom
claude/issue-5174-ungated-docs-batch25

Conversation

@baozhoutao

Copy link
Copy Markdown
Contributor

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

packages/core/README.md leaves the ledger and every ts/tsx block on the page
now compiles against the built types. The gate file's only change is the ten
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 generic parameters and
JSX elements are spelled out in words below — "Registry of any", "DeepReadonly
of T", "the ActionProvider element" — 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 were absorbed by merging
(never rebasing, never force-pushing).

  1. e23cfb000 to cf1d29e2f — two PRs, including feat(types): ComponentInput.of — the coarse member kind, with readers on day one #8097, which declares
    ComponentInput.of on packages/types source. Package source moves the
    built types this corpus is judged against, so the forced build, the census,
    every gate, every probe and every test were re-run on the merged head. Every
    reading was byte-identical.
  2. cf1d29e2f to f10bcd497 — two docs PRs (docs(guide): make three drifted counts on ci-cd-pipeline.md self-maintaining #8121 on
    content/docs/guide/ci-cd-pipeline.md, docs(gates): record the package-README census and defer check:doc-types' fourth leg (objectui#7896) #8111 adding a comment block to
    scripts/check-doc-component-types.mjs). Both are inside the corpus this
    gate scans, so everything was re-run again on 1ad6167a6. Readings again
    byte-identical.

All 16 open pull requests' file lists were read over the REST files endpoint and
each count reconciled against that PR's own changed_files: 8118/9, 8116/34,
8112/1, 8111/1, 8109/1, 8104/2, 8097/16, 8091/1, 8090/1, 8076/6, 7749/4,
7685/67, 7058/24, 7054/2, 7053/2, 5400/1058. #5400's 1058-file list was paged to
exhaustion because the endpoint pages at 100 and a truncated list renders as a
confident absence. No open PR touches packages/core/README.md or
scripts/check-doc-snippet-types.mjs.
The one open PR that touches any
package README is #7685, on packages/auth/README.md — which is exactly the
standing exclusion, so it doubles as the positive control that this grep can
find a hit at all.

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

Ledger arithmetic

Both rows MEASURED by a real gate run, never computed. Base row at the final
merge base f10bcd497 bytes (probe M0, both paths checked out to the main blobs
and proven equal by hash, restored under a trap); branch row at 1ad6167a6.

reading base f10bcd497 branch 1ad6167a6
UNGATED_DOCS entries 13 12
covered documents 214 215
…of them holding a ts/tsx block 112 113
covered blocks 725 730
blocks to compile 567 572
declared fragments 158 158 (zero new)
semantic failures 0 0
self-imports judged (check:readme-exports) 496 499

Programmatic diff of the two UNGATED_DOCS objects — both imported as OBJECTS,
never diffed as text: removed = ['packages/core/README.md'], added = [],
reason-changed = [], survivor key order preserved = true. git diff --numstat
on the gate file against the merge base is exactly 0 10. On the branch: core
entries 0, packages/NAME/README.md entries 11 (from 12), 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 the merge
base and on the branch. Re-measured here on both sides, not inherited; it is the
value batches 15 through 24 recorded.

This entry's reason string was ACCURATE — the stale-ledger streak ends here.
It claimed "5 undefined-name diagnostic(s) … plus TS2339x1 — TRIAGED, and NOT a
defect". Measured: exactly TS2304x5 and exactly TS2339x1, and the TS2339 is
exactly the line the string names. Every recent batch has reported its entry as
stale about what the debt was; this one was right, including its triage, and
that is worth recording rather than passing over.

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 — and re-taken again after each merge.

Rung 1 does not decide, and neither does rung 2: packages/core and
packages/plugin-kanban tie on blocks (5), on rung 1's second term
(6 diagnostics) and on rung 2's distinct codes (2). Rung 3 decides
alphabetically — packages/core/README.md.

document blocks diagnostics distinct codes codes
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 24's census exactly, and held identical across
both merges. Zero bound refusals on this page.

Exclusions re-verified against GitHub on this base, not inherited: the root
README.md is not a packages/NAME/README.md; packages/auth/README.md is
held by open draft PR #7685; packages/plugin-chatbot/README.md is deferred by
the earlier ruling.

The System-View block: a failure that IS the documentation

This is the batch-25 ruling, and it is the reason this page needed a decision
rather than a repair.

packages/core/README.md demonstrates System-View immutability by writing a
columns.push that is supposed to be refused, annotated
// (cross) TypeError (strict mode). Its TS2339 is not debt — the ledger's own
entry called it "TRIAGED, and NOT a defect", and the measurement agrees. Three
shapes were available and only one is honest:

  • Delete or comment out the line. Refused: it deletes the lesson.
  • Declare the block a fragment. Refused: a fragment's reason says the block
    cannot be checked, and this block can be — claiming otherwise would be the
    one thing the gate's fragment rule exists to prevent.
  • Keep the line and declare the expected failure. Taken.

The line now carries, directly above it, a @ts-expect-error whose trailing
text is its reason — that the readonly rejection is defineSystemView deep
freezing the graph and typing it readonly, so the push is refused at compile
time as well as at run time. The prose comment stays: it is the runtime half of
the same lesson.

This shape is a pin in BOTH directions, and both were measured.

  • Forward: the block compiles today, so the page is genuinely covered
    (Semantic phase: 572 of 572 block(s) judged, 0 failed).
  • Backward: if defineSystemView ever stops returning a readonly graph, the
    directive becomes unused and TypeScript reports TS2578 — so the gate goes
    red exactly when the documented property is lost. That is what probe PD
    proves, below, and it is why this is stronger than the ungated entry it
    replaces: an ungated page could lose the property in silence.

Two facts had to be established before this shape could be used, and both were:

  1. The gate honours the directive. scripts/check-doc-snippet-types.mjs
    contains no mention of expect-error, ts-ignore, ts-nocheck or any
    @ts- prefix (grep count 0) — it hands each block to a real TypeScript
    program (strict: true) and reads the diagnostics back, so the directive is
    the compiler's to honour, not the gate's to strip. Confirmed empirically: the
    gate is green with the directive in place.
  2. The directive is load-bearing, not decorative. Probe PD.

There was no fallback to the fragment marker, so there is no
needs_decision on this point.

The other five: TS2304, paid down by binding to the shipped surface

All five are ambient names the page never defined. None is repaired with a
lenient alias, and none with a hand-copied type.

Component Registry block (1). buttonMetadata had no declaration. It now
gets a real self-import of the shipped ComponentRenderer name plus a
declare const stand-in typed to it.

⚠️ And this PR reports what that stand-in is actually worth rather than
counting it as a check.
ComponentRenderer is a deliberate IDENTITY alias —
Registry.d.ts documents it as load-bearing for objectui#6298, it resolves to
its own parameter and contributes no type information, and
component-config-single-declaration.test.ts pins that identity so it cannot
change unnoticed. So the stand-in binds to a slot that is inert by design.
That is a measurement, not a defect, and nothing is filed for it: unlike batch
24's #8106 (an undeclared any on a public prop), this one is intentional,
documented and already pinned.

A README-versus-shipped-type contradiction, fixed in the README. While
typing that stand-in, the shipped signature contradicted the page's vocabulary:
register()'s second parameter is the component, its optional third is the
metadata, and getMeta() — not get() — reads metadata back. The block called
the second argument buttonMetadata and named get()'s result metadata. Both
are renamed to what the shipped surface says they are, and the prose beneath the
block now states the rule. The gate cannot catch this (the slot is the
identity alias above), so it is named here rather than left to be inferred from
the diff.

Server Action Dispatch block (4). myAuthenticatedFetch, currentObject,
refetchData and runner are all host-injected. Each is now a declare const
typed from the shipped surface — ServerActionFetch and ActionRunner by real
self-import — so the example is checked against the factory's own
ServerActionHandlerConfig rather than against a copy of it. These are real
checks, and probes P4 and P5 are what make that falsifiable
: retype one
stand-in and the config literal rejects it by name.

One of them turns a documented CLAIM into a compile-time check.
serverActionHandler.d.ts says in prose that the handler it produces is
"Assignable to ActionRunnerHandler". By typing runner as the shipped
ActionRunner, the line runner.registerHandler('script', script) now
verifies that sentence on every commit instead of asserting it.

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

Probes — a base measurement and seven probes, each predicted in writing first

Predictions were written to the scratchpad before any probe ran and were not
amended: 5174-b25-PREDICTIONS.md (md5 5cbbdd6c967794a467871bad822890e1) at
implementation commit 775ccf34e with a clean tree. 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 paths at merge-base bytes exit 0; 214 covered / 13 ungated / 725 blocks / 567 to compile; readme-exports 496 exactly that
P1 ledger entry restored ALONE exit 0, coverage falls back to the base row exactly that
P2 README restored ALONE exit 1, exactly 6 diagnostics over exactly 2 codes exactly that — TS2304x5, TS2339x1, matching the census row
PD the directive MOVED onto the non-erroring isSystemView line exit 1, TS2578 "Unused '@ts-expect-error' directive" naming this file and that line exactly that — TS2578 at README.md:134:1, plus TS2339 returning at 133:22
P3 delete the runner stand-in exit 1, TS2304 "Cannot find name 'runner'" exactly that
P4 retype currentObject to a number exit 1, assignability error on resolveObject exactly that — TS2322, "Type 'number' is not assignable to type 'string'" against the shipped resolver signature
P5 retype myAuthenticatedFetch to a void thunk exit 1, TS2322 on the fetch key naming ServerActionFetch exactly that — "not assignable to type 'ServerActionFetch'"
P6 fabricate a self-import name readme-exports 1 fabricated, naming this page exactly that — 498 real / 1 fabricated at packages/core/README.md:48

PD is the load-bearing one for this batch, and it is load-bearing in an
unusual way: it does not prove a repair, it proves that a deliberately-failing
line is still failing for the documented reason. Moving the directive one line
down — onto isSystemView(userListView), which does not error — turns the gate
red with TS2578, and the push line's TS2339 returns at the same time. Both
halves of the pin fire.

No prediction was falsified. All eight readings hit as written, on the first
implementation head and again after each of the two merges.

Gates — all at 1ad6167a6, 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): 215 covered (113 of them hold a ts/tsx block), 12 ungated" / "Covered blocks: 730 — 572 to compile, 158 declared fragment(s)" / "Root bound: no block imports a specifier that resolves only through this repository's ROOT manifest" / "Semantic phase: 572 of 572 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 — "499 of them self-imports judged (499 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 6499 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.
  • 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/core/ — "Test Files 120 passed (120) / Tests 2559 passed (2559)"; pnpm --filter @object-ui/core 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 4380 files by its own count. (2) That run exits 1 with
93 errors and 12219 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. Both readings were taken on the final commit 1ad6167a6.

Readers of the changed paths

Derived with git grep -l on both paths on this head, not guessed — 18 test
files, 724 tests, all green
in one run, and the set was identical before and
after both merges.

A2 is CONFIRMED, and its warning was checked rather than assumed.
packages/core/src/utils/__tests__/freeze-schema.types.test.ts does name
packages/core/README.md — but only in prose, in its header and in a comment
above its first case. It pins the type behaviour, not the README's text, with
its own inline cases, and it is green untouched. It is also independent
corroboration of the ruling: its case index 3, "the System View itself still
refuses .push on a nested array", asserts rejected: true for exactly the
statement this README demonstrates — and it compiles against source while
the snippet gate compiles against dist, so the two legs resolve differently
on purpose. The @ts-expect-error added here is the dist-side half of a
property the source side already pins.

The other two readers of the README are
scripts/__tests__/check-doc-links.test.ts and packages/core/CHANGELOG.md
(prose, not a reader). The remaining fifteen are readers of the gate file.
Batch 24 counted 16 readers; this batch counts 18 because its document has two
live readers of its own, which batch 24's did not.

Out of scope

Nothing was filed, and that is a finding rather than an omission. The one
candidate — that ComponentRegistry.register's component parameter contributes
no type information — was traced to a deliberate, documented, already-pinned
identity alias (objectui#6298) rather than to an oversight, so filing it would
have added noise to triage. It is reported in the section above instead. No
dedup search was run, because a search with nothing to dedup is not a reading.

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

…edger

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

`packages/core/README.md` leaves the ledger; every ts/tsx block on the page
now compiles against the built types. The gate file's only change is the ten
lines of that one entry, removals only.

The five TS2304 are paid down with real self-imports plus `declare const`
stand-ins typed from the shipped surface (`ComponentRenderer`,
`ServerActionFetch`, `ActionRunner`), never a lenient alias. The surviving
TS2339 is the System-View immutability demonstration, whose rejection IS the
documentation: the line stays and carries a `@ts-expect-error` with its
reason, which pins the property in both directions.

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

Copy link
Copy Markdown
Contributor Author

Standing down on Live E2E (informational) for this PR, read 2026-09-06T17:58Z.

Every other check on 1ad6167a6 is judged on its own; this PR flips to ready once the required set converges, then goes to the merge queue by squash.


Generated by Claude Code

@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.6 KB 3191.4 KB
Main entry chunk (gzip) 143.6 KB 350 KB
Entry file index-Cs9mOUgK.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) 498.06KB 113.97KB
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.35KB 19.68KB
plugin-chatbot (index.js) 193.54KB 46.04KB
plugin-dashboard (index.js) 131.41KB 34.43KB
plugin-designer (index.js) 211.51KB 43.01KB
plugin-detail (index.js) 247.75KB 63.50KB
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.58KB 56.63KB
plugin-kanban (index.js) 52.46KB 14.57KB
plugin-list (index.js) 113.34KB 27.72KB
plugin-map (index.js) 20.49KB 6.83KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.42KB 11.92KB
plugin-timeline (index.js) 30.10KB 8.74KB
plugin-tree (index.js) 9.33KB 3.25KB
plugin-view (index.js) 84.48KB 20.81KB
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) 6.58KB 2.74KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 5.55KB 2.45KB
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) 13.64KB 4.59KB
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

Armed — squash auto-merge enabled and the PR is in the merge queue, domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46.

On MERGED: content probe on re-fetched origin/main (the packages/core/README.md row gone from UNGATED_DOCS, // @ts-expect-error readonly by defineSystemView at the System Views block; control: the packages/auth/README.md row still present), then the LANDED note here and on #5174. #5174 stays open (Part of); objectui#7864 (deferred on this gate file) dispatches after the landing, and batch 26 after #7864 and PR #8134.


Generated by Claude Code

Merged via the queue into main with commit 23933ae Sep 6, 2026
31 of 32 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-5174-ungated-docs-batch25 branch September 6, 2026 18:23

Copy link
Copy Markdown
Contributor Author

LANDED — merged at 2026-09-06T18:23:15Z as 23933ae25 (squash, via the merge queue), domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46.

Content probe on re-fetched origin/main (23933ae25, read 18:23:54Z):

  • The 'packages/core/README.md' row is gone from UNGATED_DOCS (0 hits); package-README rows now 11.
  • packages/core/README.md:133 carries // @ts-expect-error readonly by defineSystemView … above the kept demonstration line.
  • Control: the 'packages/auth/README.md' row is still present (1 hit).

#5174 stays open (Part of); the LANDED note goes there in the same stroke. objectui#7864 takes the gate file next; batch 26 follows it.


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: core

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants