Skip to content

docs(plugin-list): compile every README snippet and leave the UNGATED_DOCS ledger - #8110

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

docs(plugin-list): compile every README snippet and leave the UNGATED_DOCS ledger#8110
baozhoutao merged 3 commits into
mainfrom
claude/issue-5174-ungated-docs-batch24

Conversation

@claude

@claude claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

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

packages/plugin-list/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
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 ListView element", "a Record
keyed by the union" — 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 three times. The first two were absorbed by
merging (never rebasing, never force-pushing); the third arrived after the final
measurement and is not in this branch.

  1. 295804a63 to 1f0f51d48 — five PRs, including batch 23's docs(react-runtime): compile every README snippet and leave the UNGATED_DOCS ledger #8081 (so
    packages/react-runtime/README.md is now out of the ledger entirely rather
    than merely reserved) and fix(plugin-chatbot): fence chatbot-floating's raw props spread #8077, which moves packages/plugin-chatbot
    source. Package source moves the built types this corpus is judged
    against, so the forced build, every gate, every probe and every test were
    re-run on the merged head.
  2. 1f0f51d48 to 6a449fc49 — five PRs, including fix(types): declare wrapperClass on Switch, Textarea, DatePicker, Select and List schemas, on both faces (objectui#7722) #8085, which declares
    wrapperClass on packages/types source, List schemas among them. That
    is the package this page's Schema block now annotates against, so everything
    was re-run again. Readings were byte-identical: an added optional key does
    not move an object literal that does not set it.
  3. 6a449fc49 to 7dcda9cd4 — four PRs (i18n(gate): widen the defaults value-compare over the declared hand-rolled tables #8101, fix(security): FLS-gate $expand at seven remaining call sites (#7429) #8089, fix(types): correct the false "nothing reads AppComponentSchema.actions[]" changeset copy and widen its reader census #8100, fix(plugin-charts): honour series[].type override on a dataKey-shaped series too #8080) landed
    after the final measurement at 5b0e22e31. This branch does not carry
    them and nothing here was re-measured against them
    — stated as a gap, not
    as a clearance. They touch package source, including
    packages/plugin-list/src/ObjectGallery.tsx in this very package; no block
    on this page composes ObjectGallery, but that is a reading of the diff, not
    a measurement of the built types. CI on this PR is what judges it.

All 17 open pull requests' file lists were read over the REST files endpoint and
each count reconciled against that PR's own changed_files: 8089/21, 8088/3,
8087/2, 8085/6, 8082/36, 8081/2, 8080/3, 8077/5, 8076/6, 8075/3, 8073/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/plugin-list/README.md.

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 current
merge base 6a449fc49 bytes (probe M0, both paths checked out to the main blobs
and proven equal by hash, restored under a trap); branch row at 5b0e22e31.

reading base 6a449fc49 branch 5b0e22e31
UNGATED_DOCS entries 14 13
covered documents 213 214
…of them holding a ts/tsx block 111 112
covered blocks 719 725
blocks to compile 561 567
declared fragments 158 158 (zero new)
semantic failures 0 0
self-imports judged (check:readme-exports) 492 496

Programmatic diff of the two UNGATED_DOCS objects — both imported as OBJECTS,
never diffed as text: removed = ['packages/plugin-list/README.md'], added =
[], reason-changed = [], survivor key order preserved = true.
git diff --numstat on the gate file against the merge base is exactly 0 2.
On the branch: plugin-list entries 0, packages/NAME/README.md entries
12 (from 13), 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 23 recorded.

The ledger's reason string for this page was STALE, continuing the streak.
It claimed "1 parse diagnostic(s) — blocks fenced ts that are bare object
literals or elided bodies; 7 undefined-name diagnostic(s)". Both halves are
wrong about what the debt was. The one parse diagnostic is not a bare object
literal or an elided body — it is TS2657, two sibling JSX elements with no
parent. And only 3 of the remaining 7 are undefined names; the other 4
are TS7006, implicit any on a parameter, which is not a missing-name problem
at all but a strict-mode signature one. The total, 8, is the only figure the
string got right.

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: plugin-list TIES on 5 blocks with
packages/core and packages/plugin-kanban. Rung 1's second term (diagnostics)
settles it — 8 against 6. Rungs 2 and 3 were never reached.

document blocks diagnostics distinct codes codes
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 23's census exactly, and held 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/react-runtime/README.md
was batch 23's and merged mid-run, so it is out of the ledger rather than
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 3 codes are 3 families, and one of them is new to this burn-down.

1. TS7006x4 — implicit any on a callback parameter. Paid down with NO
annotation at all.
The "With Callbacks" block passed four arrow functions to a
ListView element it never imported. With the element unresolved there is no
contextual type, so every parameter was an implicit any. Binding the element
with a real self-import is the entire repair: the parameters then take their
types from the shipped ListViewProps. That is ruling 4's "bind through the
shipped type" rather than annotating to a guess — no any written, no lenient
alias, and nothing hand-copied that could drift.

⚠️ But only two of the four become real checks, and this PR says so rather
than counting four.
Probe P8 assigns each parameter to a number: view
(ViewType) and search (string) raise TS2322; sort and filters raise
nothing, because the shipped props declare both as any. The block compiles
honestly either way, but two of its four documented callbacks are unverifiable
by construction. That is a shipped-surface weakness, not a doc defect, and
fixing it would move a public type — filed as objectui#8106, not decided
here.

2. TS2657x1 — JSX expressions must have one parent element. A real
fragment-shape signal, and the shape it signalled was "two blocks".
The
grouping block held two sibling ListView elements: the spec-compliant
GroupingConfig and the groupBy shorthand. They are alternatives — the
second is the shorthand form of the first, normalized into it internally — so a
reader never renders both. Wrapping them in a fragment would have made the block
compile while teaching something false. They are split into the two blocks they
really are, with the comments lifted into prose that says they are alternatives.
No fragment marker: declared fragments stay at 158.

3. TS2304x3 — ambient names. Two are the ListView element used without an
import (now real self-imports, which is why this diff hands
check:readme-exports four more self-imports to judge, 492 to 496, rather than
fewer). The third is ListColumn, inside a hand-copied interface ListViewSchema — and that is where a real contradiction was found.

The Schema section, and the drift it was carrying

A README-versus-same-package-shipped-type contradiction, fixed in the README
per ruling 5.
The page restated ListViewSchema as a hand-written interface.
Measured against the shipped type:

  • the hand copy's viewType union lists six values; the shipped union
    carries ninetree, gallery and timeline were missing;
  • the Features bullet advertised a "List" view type. list has never been a
    member of the shipped union at all (it exists only as an options.list bag).

The shipped ListViewSchema is deliberately not hand-written: its own doc
comment records that a roughly 470-line hand-mirrored interface was replaced by
a zod-derived alias precisely "so this type can no longer drift from the
protocol" (issue #2231). The README was carrying exactly the drift that decision
was taken to end.

So the hand copy is replaced by an example annotated against
ListViewSchema from @object-ui/types, and the view-type vocabulary is
written as a Record keyed by the shipped union. Both are now re-verified by this
gate on every commit, in both directions: probe P4 shows a value the union
does not carry fails (TS2353), and probe P5 shows a value missing from the
list fails (TS2741) — which is the direction that would have caught the actual
drift. The Features bullet now names the real vocabulary.

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

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

Predictions were written to the scratchpad before any probe ran and were not
amended: 5174-b24-PREDICTIONS.md (md5 2411d2327d5093b092aeb644e6e19321) at
implementation commit 642e48041 with a clean tree, plus one pinned addendum
(…-M0prime.md, md5 5b66c5b7f2e83b366ece14016c0bf83b) written before the
re-measurement that the first main move forced. 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; 213 covered / 14 ungated / 719 blocks / 561 to compile; readme-exports 492 exactly that
P1 ledger entry restored ALONE exit 0, coverage falls back to the base row; gate byte-identical to base exactly that
P2 README restored ALONE exit 1, exactly 8 diagnostics over exactly 3 codes exactly that — TS7006x4, TS2304x3, TS2657x1; 565 of 566 judged, 3 failed + 1 parse failure
P3 delete the callbacks block's self-import exit 1, TS2304 and all four TS7006 return exactly that
P4 vocabulary key renamed to list exit 1, unknown-key error naming list exactly that — TS2353
P5 vocabulary key tree deleted exit 1, TS2741-family "Property 'tree' is missing" exactly that
P6 fabricate a self-import name readme-exports 1 fabricated, naming this page exactly that — 495 real / 1 fabricated at README.md:48
P7 wrong prop key (schema to schemas) exit 1, props mismatch naming ListViewProps; TS2322 family, not batch 23's TS2769 exactly that — TS2322, "Did you mean 'schema'?"
P8 assign each callback parameter to a number exit 1, exactly two TS2322 — view and search only exactly that

P3 is the load-bearing one for this batch. It is what distinguishes "the
implicit-any family was paid down by binding to the shipped type" from "the
diagnostics were silenced": remove the one import line and TS2304 and all four
TS7006 come straight back.

One prediction was falsified, and it is reported rather than smoothed. The
first M0 run returned exit 1 with 5 failures instead of the predicted clean base
row. The cause was not the repair: refs/remotes is shared across worktrees, so
origin/main advanced inside the probe — git checkout origin/main -- handed
me the NEW main's gate file (react-runtime already removed) against a tree whose
react-runtime README was still the old one. The branch was merged, rebuilt
--force, and M0 re-run against the actual merge base, where it hit exactly.
P2's and P6's absolute counts also shifted with the merges (by the +6/−5 block
offset and by #8081's +2 self-imports); the load-bearing halves — 8 diagnostics
over 3 codes, and 1 fabricated import naming this page — held in every run.

Gates — all at 5b0e22e31, 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): 214 covered (112 of them hold a ts/tsx block), 13 ungated" / "Covered blocks: 725 — 567 to compile, 158 declared fragment(s)" / "Root bound: no block imports a specifier that resolves only through this repository's ROOT manifest" / "Semantic phase: 567 of 567 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 — "496 of them self-imports judged (496 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 6476 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/plugin-list/ — "Test Files 68 passed (68) / Tests 860 passed (860)"; pnpm --filter @object-ui/plugin-list 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 4370 files by its own count. (2) That run exits 1 with
93 errors and 12177 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 — 16 test
files, 578 tests, all green
in one run, and the set was identical before and
after both merges.

A3 is CONFIRMED, and more strongly than for recent batches: no live test pin
names this README at all.
The only file in the tree that named
packages/plugin-list/README.md was the gate's own ledger entry, which this PR
removes. Every one of the 16 readers is a reader of the gate file:
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 and
component-node-vocabulary-7434 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.

(Batch 23 counted 17 because scripts/__tests__/ci-cd-pipeline-doc.test.ts then
named the gate file; on this head it no longer mentions it at all — checked, not
assumed.)

check-readme-exports.mjs is proven live on this page by P6, and this diff adds
four self-imports, so it hands that gate more to check than it had.

Out of scope

objectui#8106ListViewProps.onSortChange and onFilterChange are
declared any, so two of the four callbacks in the repaired block compile
without either parameter being checked (measured by P8). Filed as an observation
rather than fixed: narrowing either is a public-type change with a consumer
sweep across ObjectView, StudioDesignSurface and the app-shell hosts.

objectui#8059 (the root bound versus a declared peer) did not bite here —
this page's only imports are its own package and @object-ui/types, and the
bound refused nothing. It 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

… ledger

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

packages/plugin-list/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
two lines of that one entry; the strictness region is byte-identical.

The 8 diagnostics were three families:

- TS7006x4 (implicit any on a callback parameter). Not annotated: the block
  simply binds ListView with a real self-import, and the parameters then take
  their types contextually from the shipped ListViewProps. Two are genuinely
  checked (ViewType and string); onSortChange / onFilterChange are declared
  any upstream, so those two compile without being checked — measured, and
  reported rather than smoothed.
- TS2657x1 (JSX expressions must have one parent element). The block was a
  catalogue of two ALTERNATIVE grouping shapes, not two siblings a reader
  renders together, so it is split into the two blocks it really is rather
  than wrapped in a fragment that would have taught the wrong thing.
- TS2304x3 (ambient names). Real self-imports of ListView, and the Schema
  section's hand-copied interface replaced by an example annotated against the
  shipped ListViewSchema.

That hand copy had DRIFTED: it claimed six viewType values where the shipped
union carries nine (tree, gallery and timeline missing), and the Features
bullet named a "List" view type the union has never carried. The replacement
annotates against @object-ui/types instead of restating it, and writes the
vocabulary as a record keyed by the shipped union, so neither can go stale
again without failing this gate.

No packages/** source touched, no public type widened, no gate loosened, no
new fragment marker (158 to 158).

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 plugin 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.4 KB 3191.4 KB
Main entry chunk (gzip) 143.5 KB 350 KB
Entry file index-YAcvZiUJ.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.00KB 113.96KB
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.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.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) 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

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

Every other check on 5b0e22e31 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

Copy link
Copy Markdown
Contributor

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

  • Head 5b0e22e31: 29 non-informational checks completed green at 16:43Z (the ci-wait reading); Live E2E (informational) red per the standing-down note above.
  • ready_for_review at 16:43:32Z; the post-flip Governed Surface Queue Guard run started after that timestamp and completed success at 16:43:51Z.
  • added_to_merge_queue at 16:43:57Z on the REST timeline (read 16:44:02Z). PR test(scripts): read spawned children's verdicts as numbers, not prose #8107 is ahead of it in the queue.

On MERGED: content probe on re-fetched origin/main (the packages/plugin-list/README.md ledger row gone from scripts/check-doc-snippet-types.mjs, the README's ListViewSchema annotation present, control: the packages/auth/README.md row still present), then the LANDED note here and on #5174. #5174 stays open (Part of); batch 25 dispatches after the landing.


Generated by Claude Code

Merged via the queue into main with commit e23cfb0 Sep 6, 2026
31 of 32 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-5174-ungated-docs-batch24 branch September 6, 2026 16:58

Copy link
Copy Markdown
Contributor

LANDED — merged at 2026-09-06T16:58:33Z as e23cfb000 (squash, via the merge queue), domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46.

Content probe on re-fetched origin/main (e23cfb000, read 16:58:50Z):

  • The 'packages/plugin-list/README.md' row is gone from UNGATED_DOCS in scripts/check-doc-snippet-types.mjs (0 hits); package-README rows now 12.
  • packages/plugin-list/README.md carries the ListViewSchema annotation (import type { ListViewSchema } from '@object-ui/types' at line 172) and five import { ListView } from '@object-ui/plugin-list' self-imports.
  • Control: the 'packages/auth/README.md' row is still present (1 hit), so the ledger was not emptied.

#5174 stays open (Part of); batch 25 dispatches next on the dev's census pick, packages/core/README.md.


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 plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants