Skip to content

docs(layout): compile every README snippet and leave the UNGATED_DOCS ledger - #8063

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

docs(layout): compile every README snippet and leave the UNGATED_DOCS ledger#8063
baozhoutao merged 2 commits into
mainfrom
claude/issue-5174-ungated-docs-batch22

Conversation

@baozhoutao

Copy link
Copy Markdown
Contributor

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

packages/layout/README.md leaves the ledger and all 7 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 — "an AppShell element", "a
ComponentType of props with an optional className" — 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 the way the
brief requires.

  1. PR docs(types): compile the types README's 7 blocks and drop its ledger entry #8038 (batch 21, packages/types/README.md) merged at 12:50:27Z,
    taking origin/main from ed4a2f17c to 58cd01a38. This branch had no
    commits of its own at that moment, so it was fast-forwarded rather than
    carrying a merge commit. The census was taken on both bases and is
    byte-identical across them, as is the pick.
  2. test(plugin-markdown): cite toc-anchor-parity instances by content, not line address #8046, docs(create-plugin): record that in-repo scaffolding is already refused by named pins #8042 and docs(plugin-view): ObjectView.dataSource has no context fallback — delete the promise, pin the behaviour #8039 merged, taking origin/main to a8f4bd75f. By
    then this branch had its implementation commit, so origin/main was
    merged (never rebased, never force-pushed). That range touches neither of
    this branch's two paths, but it does move packages/plugin-view/src/ObjectView.tsx
    — package source, so the built types the corpus is judged against move with it.
    The forced build, every gate, every test and the lint readings were therefore
    all re-run on the merged head 85ebbcbe9.

All 11 open pull requests' file lists were read over the REST files endpoint and
each count reconciled against that PR's own changed_files: 8049/3, 8048/3,
8046/2, 8042/2, 8039/3, 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/layout/README.md or the gate file.
The only README any open
PR touches at all is packages/auth/README.md (PR #7685), which is excluded
anyway.

Two neighbours worth naming, neither an exclusion:

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

Ledger arithmetic

reading base a8f4bd75f branch 85ebbcbe9
UNGATED_DOCS entries 16 15
covered documents 211 212
…of them holding a ts/tsx block 109 110
covered blocks 707 714
blocks to compile 549 556
declared fragments 158 158 (zero new)
semantic failures 0 0
self-imports judged (check:readme-exports) 489 490

Both rows were MEASURED, not computed. The base row is a real
pnpm check:doc-snippets run (probe M0) with both changed files checked out at
base bytes — on-disk hashes proven equal to the base blobs f497d997… and
9beae7db… — and restored afterwards under a trap. The base
check:readme-exports row is its own run against base README bytes (probe M0b).

Programmatic diff of the two UNGATED_DOCS objects — both imported as OBJECTS,
never diffed as text: removed = ['packages/layout/README.md'], added = [],
reason-changed = [], key order preserved for survivors = true.
git diff --numstat on the gate file is exactly 0 2. On the branch: layout
entries 0, packages/NAME/README.md entries 14 (from 15), 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 both bases, not inherited;
it is the value batches 15 through 21 recorded.

Census and the rung that decided

Re-taken through the gate's exported analyze() / compileSnippets() over every
non-excluded ledger candidate — once on ed4a2f17c (17 entries, 13 candidates
after exclusions) and again on 58cd01a38 after batch 21 landed (16 entries, 13
candidates). Both runs give the same table and the same pick.

Rung 1 (larger measured debt: blocks, then diagnostics) DECIDES OUTRIGHT:
layout is alone at 7 blocks; every other candidate holds 5 or fewer. Rungs 2 and
3 were never reached.

document blocks diagnostics distinct codes codes
packages/layout/README.md 7 2 1 TS2304x2 (+1 bound refusal)
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 and diagnostic total matches batch
21's census exactly, including the two per-code figures batch 21 reported as
moving with the compiler program's shape (react-runtime 7 distinct codes,
plugin-ai 3). Neither column is read by rung 1, which decided outright.

Exclusions re-verified against GitHub on this base, not inherited: the root
README.md is not a packages/NAME/README.md; packages/types/README.md was
batch 21'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 ledger's reason string for this page was STALE, as the dispatch warned.
It claimed "3 undefined-name diagnostic(s) … 3 unresolved-module diagnostic(s)".
The measurement reads 2 undefined-name diagnostics and one refused specifier,
not three. That continues the streak batch 21 briefly broke.

The debt, and what each repair did

Seven blocks: three were already clean, two more needed nothing, and the debt sat
in two.

1. The "Usage with React Router" block was REFUSED, not judged. It imports
react-router-dom, and the gate's root bound turned it away:

[bound]  packages/layout/README.md:201  imports 'react-router-dom', which resolve only
through this repository's ROOT package.json — this workspace's own devDependency set,
not anything a reader of the documented packages installs.

Ruling 4 asks whether that is a real dependency gap or a peer the reader
supplies. It is a peer, and the manifest says so outright:
packages/layout/package.json declares react-router-dom under
peerDependencies at ^6.0.0 || ^7.0.0, matching the README's own Installation
section, and does not list it under dependencies. The gate maps third-party
specifiers from dependencies only — its header says so deliberately — so a peer
is unmapped, the repository root declares it as a devDependency, and the bound
refuses it. No dependency gap, so no two-shipped-surfaces finding under ruling
5, and no manifest was touched.

The repair takes the gate's own first-listed remedy — import only what the
package declares — by standing the three router components in with declare const bindings typed to what the block uses them as. The block now imports
react, @object-ui/layout and lucide-react, all of which layout really
declares, so the AppShell and SidebarNav composition is genuinely
type-checked
instead of being surrendered to a fragment marker. That mattered:
probe P7 shows a wrong NavItem key in that block now reds the gate, and a wrong
NavItem key is exactly the defect objectui#3999 recorded on this page.

That refusal was masking a real diagnostic. A refused block never reaches the
semantic phase, and behind it Dashboard was never defined anywhere in the
snippet — a TS2304 that appears the moment the bound is lifted (probe P3).

2. The same block routed to the icon, and no gate could ever have caught it.
It imported Users from lucide-react for the sidebar and then used that same
name as the element of the /users route, so a reader copying the block
rendered a 24-pixel glyph where the page content belonged. A Lucide icon is a
valid component, so the route type-checks either way — probe P4 puts the icon
back and the gate stays GREEN
. The route element is now a separately named page
component, and a short prose paragraph says why the two are named apart, because
nothing mechanical will say it for the next author.

3. The "Customization" block used AppShell with no import, TS2304 twice. It
now self-imports it, which is also why this diff hands check:readme-exports one
more self-import to judge (489 to 490) rather than fewer.

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 — one base measurement and eight probes, each predicted in writing first

Predictions were written to the scratchpad as 5174-b22-PREDICTIONS.md
(md5 7a6dbf1800914b511f9f848fc52d46dd) at implementation commit 82b1c989d
with a clean tree, before any probe ran, and were not amended. 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. Nothing here is read through a package dist/:
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 base bytes exit 0, 211 covered / 16 ungated / 549 to compile, bound empty exactly that
P1 ledger entry restored ALONE exit 0, coverage falls back to 211 / 16 / 549; gate file byte-identical to base exactly that (9beae7db… both sides)
P2 README restored ALONE exit 1; bound refuses react-router-dom at :201 plus TS2304 twice for AppShell exactly that; 555 of 556 judged
P3 delete the Dashboard declaration exit 1, TS2304 Cannot find name 'Dashboard' exactly that, at :232
P4 put the lucide icon back in the route GREEN, no diagnostic exactly that — 556 of 556, 0 failed, 0 lines naming this page
P5 delete the Customization self-import exit 1, TS2304 twice for AppShell exactly that, at :256 and :262
P6 fabricate a self-import name readme-exports 0 to 1 fabricated 490 real / 0 fabricated to 489 real / 1 fabricated naming :256
P7 wrong NavItem key inside the ROUTER block exit 1, TS2739 / TS2322 / TS2353 family TS2322, "Property 'title' is missing … but required in type 'NavItem'"
P8 restore the react-router-dom import exit 1 and the Root bound line names it again exactly that; 555 of 556 judged

All nine legs ran in the predicted direction. P4 is the one whose prediction
was that the probe would NOT go red, and that is the point of it: it is what
makes the icon-in-route repair a documentation fix rather than a type fix, and
what justifies spending prose on it.

Gates — all at 85ebbcbe9, 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
(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 the force-built dist, as the gate
prescribes. 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): 212 covered (110 of them hold a ts/tsx block), 15 ungated" / "Covered blocks: 714 — 556 to compile, 158 declared fragment(s)" / "Root bound: no block imports a specifier that resolves only through this repository's ROOT manifest" / "Semantic phase: 556 of 556 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 — "490 of them self-imports judged (490 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 6463 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/layout/ — "Test Files 19 passed (19) / Tests 202 passed (202)"; pnpm --filter @object-ui/layout type-check exit 0, its output echoing tsc --noEmit && tsc -p tsconfig.test.json, so the test tsconfig is genuinely included.
  • 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 4361 files by its own count. (2) That run exits 1 with 93 errors and
12170 warnings
, all of them in files this diff does not touch — 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, not guessed — 22 test files, 642
tests, all green
in one run. This page is far more heavily pinned than batch
21's was:

  • 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).
  • Six live pins under packages/layout/src/__tests__/ read this README directly: readme-app-shell-example, readme-sidebar-nav-example, readme-registration-keys, app-shell-docs-nav-example, guide-layout-app-shell-doc, guide-layout-sidebar-nav-doc. Two of them assert doc parity — that an example appears in the README as a contiguous run of lines — and one re-reads every fence mentioning SidebarNav and rejects the string-icon spelling. A3 is CONFIRMED and then some: batch 21's page had exactly one reader; this one has seven.
  • scripts/__tests__/doc-version-claims.test.ts — names this README path; green.
  • scripts/check-readme-exports.mjs — reads this README's self-imports; proven live by P6. This diff ADDS one, so it hands that gate more to check than it had.
  • Readers of the GATE file additionally exercised: check-doc-snippet-types.test.ts and six sibling gate suites, plus the six package and example suites that name it.

Out of scope, filed rather than repaired here

objectui#8059, unassigned, labelled finding only (domain triage is not this
seat's to assign). The gate's root bound refuses a package's own declared peer
— measured: four packages (app-shell, layout, plugin-designer,
plugin-detail) declare react-router-dom as a peer and none as a dependency —
and the refusal message names two remedies, neither of which fits a package whose
headline feature IS that peer integration. This batch used a third shape that the
message and the header do not name. That rule is deliberate and documented, so
the card asks only for the remedy text
, and changing it would mean editing the
gate's strictness region, which this batch's licence pins byte-identical. The
other three READMEs are covered and green today, so the wall is latent, not
active — but the burn-down will walk into it again.

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

… ledger

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

`packages/layout/README.md` leaves the ledger and all 7 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; its strictness region is byte-identical.

Two repairs, both inside ts/tsx blocks:

- The "Usage with React Router" block was REFUSED rather than judged: it
  imports `react-router-dom`, which `@object-ui/layout` declares as a peer
  dependency, so the specifier reaches a snippet only through this
  repository's own root install and the gate's bound turns it away. Its three
  router components are now stood in for by `declare const`s typed to what the
  block uses them as, which keeps the AppShell / SidebarNav composition — this
  package's own surface — genuinely checked. That refusal was masking a real
  diagnostic: `Dashboard` was never defined.

- The same block routed `/users` to `Users`, the lucide-react icon it imports
  for the sidebar, so the page rendered a glyph where its content belonged. An
  icon is a valid component, so no diagnostic could catch it; the route
  element is now a separately named page component.

- The "Customization" block used `AppShell` with no import (TS2304 twice) and
  now self-imports it.

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

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
Brings in #8046, #8042, #8039. Neither of this branch's two paths is touched by
that range; plugin-view source moved, so the forced build and every gate are
re-run on the merged head.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
@github-actions github-actions Bot added documentation Improvements or additions to documentation package: layout labels Sep 6, 2026
@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.0 KB 3191.4 KB
Main entry chunk (gzip) 143.5 KB 350 KB
Entry file index-DuMkzIKe.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.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 85ebbcbe9 is green.


Generated by Claude Code

@baozhoutao
baozhoutao marked this pull request as ready for review September 6, 2026 13:56
@baozhoutao
baozhoutao added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit 3686a44 Sep 6, 2026
31 of 32 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-5174-ungated-docs-batch22 branch September 6, 2026 14:12
baozhoutao pushed a commit that referenced this pull request Sep 6, 2026
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
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: layout

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants