Skip to content

docs(plugin-charts): compile the README's snippets against the shipped surface - #8245

Merged
baozhoutao merged 1 commit into
mainfrom
claude/issue-5174-doc-snippets-batch31-plugin-charts
Sep 7, 2026
Merged

docs(plugin-charts): compile the README's snippets against the shipped surface#8245
baozhoutao merged 1 commit into
mainfrom
claude/issue-5174-doc-snippets-batch31-plugin-charts

Conversation

@claude

@claude claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Part of #5174 (batch 31: packages/plugin-charts/README.md)

Burns down this page's UNGATED_DOCS entry in scripts/check-doc-snippet-types.mjs so the gate compiles its snippets instead of ledgering them.

Notation. Generic parameters are spelled as uppercase words, never in angle brackets, because this repository has measured GitHub's body sanitizer eating tag-shaped fragments inside backticks and fenced blocks alike (AGENTS.md, "GitHub 会改写你写进 issue/PR 正文的字节"). So Array of Record from STRING to ANY below is the literal Array generic the file writes.

Census — two readings, with the gate's own analyzer

Both readings call the script's exported analyze() / scanFences() / compileSnippets() with this page removed from UNGATED_DOCS, against the built closure (pnpm exec turbo run build $(node scripts/check-doc-snippet-types.mjs --build-filter) --concurrency=2, 35/35 successful). No hand-written regex. Harness controls on every run: resolution landed on packages/types/dist/index.d.ts, srcLeaks 0, positive control 0 diagnostics, sentinel 1, undeclared 1, root-declared 1.

Fences on the base: four typescript (22, 42, 56, 73), one unlabeled (100), two bash.

Reading 1 — ledger-literal (base page, base ledger row)

The row read: 6 parse diagnostic(s) — blocks fenced ts that are bare object literals or elided bodies.

Fence Language Phase reached Diagnostics
22 typescript semantic 0
42 typescript semantic 0
56 typescript semantic 0
73 typescript parse — never judged 6 × TS1109 "Expression expected", one per optional member (snippet lines 3–8)
100 (unlabeled) not collected
108, 14 bash not collected

Blind spot: 1 fence of 4 never reached the semantic phase. Two corrections to the row itself, both measured:

  1. The row says "blocks" (plural) and names two shapes. There is exactly one parse-failing block, and no elided body anywhere on the page. All six diagnostics are the same block, the same code, one per ?: member.
  2. The row is a parse row, so it says nothing at all about the other three fences — and that silence was not innocent. See the negative control below: the same type error that this PR's positive control makes the gate report is, on the base page, completely invisible — the row still reads exactly 6 × TS1109, because fence 22's binding carried no type for anything to be checked against.

Reading 2 — after the minimum in-memory parse repair

Fence 73 made parseable with the smallest possible change (the bare shape given a name: type SchemaAPI = { … }), nothing else touched:

Fence Phase reached Diagnostics
22 semantic 0
42 semantic 0
56 semantic 0
73 semantic 0

Zero. This is the first real look at the page's type debt, and the honest reading is that the page has none that a compiler can see — because two of its four fences were written so that nothing could be checked: fence 22 was an unannotated literal (every key inferred, nothing compared) and fence 73 was a private re-declaration of a published type (a copy cannot disagree with itself). Green here means "not looked at", not "verified". That is what the repairs below change, and the positive/negative control pair is the proof.

Per-fence decision

Fence (base) Was Now Why
22 — Automatic Registration const schema = { … }, unannotated; comment taught the keyword chart-bar const schema: BarChartSchema = { … } plus import type { BarChartSchema }; comment reads bar-chart Typed binding before markers (batches 25–30 idiom). The annotation is what makes the keys checkable at all — proven by the control pair. chart-bar is registered by nothing; bar-chart is (src/index.tsx:38).
42 — Manual Integration ComponentRegistry.register(type, component) ComponentRegistry.register(type, component, { namespace: 'plugin-charts' }) Assumption A2 confirmed: register(type, component, meta?) (packages/core/src/registry/Registry.ts:433) accepts two arguments, so this compiled — and Registry.ts:440–449 warns at runtime that the no-namespace form is deprecated. The page taught the deprecated call; the package's own six register() calls all pass a namespace. Repaired to the shipped call, not to something new.
56 — TypeScript Support already const schema: BarChartSchema = … unchanged Already the target idiom; it is the spelling fence 22 now copies.
73 — Schema API a TYPE shape written as an object literal a Markdown members table Route (a); four-axis reasoning below.
100 — Build Output Example unlabeled fence unchanged Reported, not relabeled (ruling 1). Its content is build output, not TypeScript. check:doc-fences is green over it and this page appears in no entry of that gate's shrink-only ledger (grep for plugin-charts in scripts/check-doc-fence-languages.mjs exits 1).
14, 108 bash unchanged Reported, not relabeled.

Fence 73 — the route, on the four axes

Route (a): replace the fence with a Markdown table of BarChartSchema's declared members. Alternatives weighed: (b) a typescript fence that imports the type and shows its members through a typed value; (c) a fragment marker naming the shape.

  • 实际业务需求 (measured, not assumed). The section is a reference: a reader consults it for which members exist, their optionality and their defaults. A value expression cannot carry optionality or a default, and the page already ships a compilable typed example of exactly this shape one section above (fence 56) — so (b) buys a fourth compiled fence that duplicates the third and still cannot answer the question the section is asked. (a) serves the actual read.
  • 项目长远合理性 (contract-first). BarChartSchema is the published contract, re-exported from @object-ui/types (packages/plugin-charts/src/types.ts:52 — assumption A5 confirmed) so that the type an author annotates with and the schema that validates their document are one declaration. A fence re-declaring it is a private second copy that drifts silently, which is exactly objectui#7646. (a) deletes the copy; (c) keeps the copy forever and merely stops the gate from looking at it.
  • 防 AI 写代码犯错. (c) is the worst of the three here: a marker would park a private type copy permanently outside every gate — the tolerant shape this burn-down exists to remove — and a model reading the page would still copy the literal. (a) leaves nothing copyable that can become a second contract, and it is not unchecked: check:doc-types reads the table (4 key table(s), 24 row(s), 45 table key(s) judged, 45 registered), so the one machine-checkable claim in it — that bar-chart is a registered keyword — is still verified on every commit.
  • 创业阶段不扩散需求. (a) is the smallest surface: it removes a fence rather than adding one, and needs no new import, no stand-in binding, no marker vocabulary. It also retires a wrong documented default rather than carrying it forward.

⇒ (a), matching the dispatching seat's reading. (b) was reserved for the case where the page's teaching needs a compilable example at that spot; it does not — fence 56 is that example.

Per-key table (objectui#7927 key-surface bound)

BarChartSchema extends BaseSchema (packages/types/src/data-display.ts:2143) and BaseSchema carries [key: string]: any (packages/types/src/base.ts:467), so an annotation checks member types and never keys. Every key the examples write is therefore classified by hand-reading the declaration and the renderer's reads, not by the compiler.

Key Declared Read at runtime Verdict
type data-display.ts:2144 ('bar-chart'), narrowing BaseSchema.type (base.ts:75) registry lookup (src/index.tsx:38) declared ⇒ keep
data data-display.ts data? ChartRenderer.tsx:32 declared ⇒ keep
dataKey data-display.ts dataKey? ChartRenderer.tsx:33 declared ⇒ keep
xAxisKey data-display.ts xAxisKey? ChartRenderer.tsx:34 declared ⇒ keep
height data-display.ts height? ChartRenderer.tsx:35 declared ⇒ keep
color data-display.ts color? ChartRenderer.tsx:37 declared ⇒ keep
className BaseSchema className? (base.ts:171) ChartRenderer.tsx:36 declared ⇒ keep

No phantoms, and no undeclared-but-read key among what these examples write: the seven keys are exactly the six ChartBarRenderer forwards plus type. Nothing dropped, nothing withheld, no src/** or types/** proposal owed on this axis.

Defaults check — one wrong documented default, repaired

The base page documented four defaults inside fence 73. Checked against the renderer's own parameter defaults in packages/plugin-charts/src/ChartImpl.tsx:55–61:

Key Page claimed Renderer's actual default Verdict
dataKey 'value' 'value' (:56) correct
xAxisKey 'name' 'name' (:57) correct
height 400 400 (:58) correct
color '#8884d8' hsl(var(--primary)) (:61) wrong — repaired
data (not documented) [] (:55) added
className (not documented) '' (:59) added

ChartBarRenderer forwards color={schema.color} verbatim (ChartRenderer.tsx:37), so an omitted color reaches ChartImpl as undefined, so the theme token is what actually renders. The literal '#8884d8' survives in two places, neither of which is on the render path:

  • the registration's defaultProps.color (src/index.tsx:63) — the package's own comment at src/index.tsx:143–151 records the finding of objectui#7401 that SchemaRenderer never reads a registration's defaultProps; I re-verified it: the only read of defaultProps in packages/core and packages/react outside tests is WidgetRegistry.ts:189, which writes manifest defaults into the registry;
  • the published type's JSDoc, @default '#8884d8' on BarChartSchema.color (packages/types/src/data-display.ts).

Proposal for the PM (no edit made — packages/types/** and packages/plugin-charts/src/** are out of surface): the type's @default tag on color records a value nothing on the render path produces. Two candidate directions, and this is a contract question rather than a doc one: correct the JSDoc to the theme token, or make the registration's defaultProps actually reachable so the documented value becomes true. The README now states the runtime truth and names the drift in one sentence so a reader who opens the type is not silently contradicted.

Ledger decision

Ruling 5, first branch: the file reads zero after the repairs (reading 3, on the committed tree — parse 0, bound 0, semantic 0, all three remaining typescript fences judged and green), so its UNGATED_DOCS entry is deleted rather than rewritten. No fragment marker was added: nothing on this page is parked on a filed defect, and every block compiles as written. The ledger reads 6 rows on the head (was 7).

Strictness region

The region from the Fence scanning banner to EOF, byte-identical as ruling 6 requires. Both values recomputed here with tail -n +LINE scripts/check-doc-snippet-types.mjs | sha256sum:

Tree Banner at line sha256
base f10c6c559 792 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b
head 0ee362ae8 790 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b

Identical. The two-line shift is the deleted ledger row, which sits above the banner.

Positive control (and its negative twin)

Run against the committed tree, under a trap with absolute paths, restore proven by STATE.

Positiveheight: 400 mutated to height: 'tall' in the repaired fence 22 (the typed binding):

  • on-disk mutation proven by anchor counts, not by an editor's exit code: ^ height: 400$ went 2 → 1, height: 'tall' went 0 → 1; blob moved d0e2535ee2d55e220e9c8217b7be66b34c2fa592c814e819cbbc016393bd9342a504b696864a5e6f.
  • pnpm check:doc-snippets exit 1, naming the page and the line: [semantic] packages/plugin-charts/README.md:39:3 TS2322: Type 'string' is not assignable to type 'number'. and Semantic phase: 614 of 614 block(s) judged, 1 failed.
  • restore proven by state: git checkout HEAD -- PATH, then git diff HEAD -- PATH empty and git hash-object PATH = d0e2535ee2d55e220e9c8217b7be66b34c2fa592 = the HEAD blob. Anchors back to 2 and 0.

Negative twin (the blind-spot proof). The identical mutation applied to the base page, compiled in memory through the same analyzer: parse still 6 × TS1109 on fence 73, semantic failures 0. The base ledger row is byte-for-byte the same with and without a type error in the very fence the row is silent about. That is the second blind-spot form batch 30 recorded, in its purest shape here — not an errored binding feeding a checked element, but a binding with no type at all, so there was never anything to check.

Gates (all pinned to head 0ee362ae8, tree clean; exit codes captured by redirect-then-capture, never through a pipe)

Gate Exit Reading
pnpm check:doc-snippets 0 Scanned 229 document(s): 223 covered (120 hold a ts/tsx block), 6 ungated; 614 to compile, 159 declared fragment(s); Semantic phase: 614 of 614 judged, 0 failed. This page is in the covered/compiled tier.
pnpm exec vitest run scripts/__tests__/ (whole directory, includes check-doc-snippet-types.test.ts and check-doc-fence-languages.test.ts) 0 115 files, 3415 tests passed. The pin does not enumerate the ledger beyond the root README row — batches 28–30's reading holds, and no pin edit was owed.
pnpm check:doc-types 0 4 key table(s), 24 row(s), 45 table key(s) judged, 45 registered — the new members table is read by this gate.
pnpm check:readme-exports 0 43 READMEs, 740 import bindings, 0 wrong-path, 0 fabricated. Assumption A4 confirmed: chartComponents (src/index.tsx:32) and BarChartSchema (src/index.tsx:14) are both real exports; the gate was green on the base too.
pnpm check:doc-fences 0 227 documents; this page is in no ledger entry of that gate.
pnpm type-check:scripts 0
pnpm lint:root 0 32 warnings, 0 errors; none in the two changed files.
pnpm check:control-bytes 0 plus a grep -naP self-scan of both changed paths: no hits.
pnpm check:entry-guard 0
node scripts/check-changeset-presence.mjs 0 0 of them published source of a package the release covers … no changeset is owed. No changeset added, no label.
node scripts/check-governed-queue-guard.mjs --test (both paths) 0 NOT GOVERNED — 2 path(s) checked against 5 governed surface(s); none matched.
pnpm exec vitest run packages/plugin-charts/ 0 48 files, 447 tests. Run because turbo ls --affected against the base names @object-ui/plugin-charts (the README is inside the package). Its seven transitive dependents are affected only through that README byte and are declared to CI.

Live E2E (informational) is red on every branch today for an upstream reason (#7990 / objectstack#16186) — not from this change.

Assumptions

  • A1 falsified in part. The six parse diagnostics are fence 73's optional-member shape, as guessed — but only fence 73. Fence 22's comment-led block parses and reaches the semantic phase; it was never a parse failure. And no elided body exists on this page, contrary to the row's own wording.
  • A2 confirmed. Two-argument register() compiles (the third parameter is optional) and is the deprecated form the registry warns about at runtime.
  • A3 confirmed. git log --oneline -5 origin/main on both paths tops out at the base commit; a git ls-remote --heads origin scan of 1022 heads finds no other branch naming doc-snippet, 5174 or plugin-charts. Main did not move during the task.
  • A4 confirmed. Both imported names are real exports; no phantom.
  • A5 confirmed. The plugin re-exports BarChartSchema from @object-ui/types; it declares nothing of its own.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr


Generated by Claude Code

…d surface

Burn down `packages/plugin-charts/README.md`'s UNGATED_DOCS entry in
scripts/check-doc-snippet-types.mjs so the gate compiles the page instead of
ledgering it (objectui#5174, batch 31).

The row read "6 parse diagnostic(s)". Measured with the gate's own analyzer,
all six were TS1109 on one block — the "Schema API" fence, a TYPE shape written
as an object literal, one diagnostic per optional member. A parse-only row hides
the semantic phase, so the page's other three fences had never been judged at
all.

- Schema API: the fence is replaced by a members table. It re-declared the
  published `BarChartSchema` instead of importing it, so the gate would have
  judged a private copy of the contract; a table teaches the members without
  teaching the copy.
- The bare `const schema = { … }` is annotated `BarChartSchema` and imports the
  type, so its keys are now checked against the declaration.
- The manual-registration loop passes `{ namespace: 'plugin-charts' }`, the
  shipped call. `register()` with two arguments is the deprecated form and warns
  at runtime.
- `color`'s documented default was `'#8884d8'`, which nothing on the render path
  reads; the renderer defaults it to the theme token. Corrected, with the drift
  named.
- `chart-bar` is not a registered keyword; both occurrences now read `bar-chart`.

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 plugin: charts labels Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3191.0 KB 3191.4 KB
Main entry chunk (gzip) 143.9 KB 350 KB
Entry file index-DGTJvZoi.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.91KB
core (index.js) 6.96KB 2.79KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 189.11KB 52.55KB
fields (index.js) 243.04KB 61.36KB
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.67KB 13.25KB
plugin-charts (index.js) 70.62KB 19.71KB
plugin-chatbot (index.js) 193.54KB 46.04KB
plugin-dashboard (index.js) 131.41KB 34.43KB
plugin-designer (index.js) 213.21KB 43.63KB
plugin-detail (index.js) 247.68KB 63.49KB
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.83KB 14.63KB
plugin-list (index.js) 113.35KB 27.73KB
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.46KB 20.80KB
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

@claude

claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Standing down on Live E2E (informational) for this PR — domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, 2026-09-07T03:06Z.

That check is informational (not in the main ruleset's required contexts) and is red on the base branch for an upstream reason anchored on objectui#7990 / objectstack#16186; this PR touches one package README and one ledger row in a gate script, neither of which the Live E2E suite exercises. No re-run is requested. Every required check is judged on its own conclusion; this PR flips to ready only when all of them read completed / success on 0ee362ae8. (Posted through the seat's REST channel.)


Generated by Claude Code

Copy link
Copy Markdown
Contributor

Armed — domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46.

  • CI on 0ee362ae8 converged all green at 03:17:40Z (29 checks; Live E2E (informational) excluded per the standing-down note above).
  • Ready for review at 03:17:50Z; post-flip Governed Surface Queue Guard completed/success at 03:18:09Z.
  • Auto-merge SQUASH enabled; added_to_merge_queue on the REST timeline at 03:18:23Z (read 03:18:28Z). PR test(vi-mock): inherit the real @object-ui/plugin-designer surface in 10 vi.mock factories #8233 (slice 11) is ahead of it in the queue; the two are disjoint and may land in one group.

Landing stroke follows the merge: content probe on re-fetched origin/main ({ namespace: 'plugin-charts' } in packages/plugin-charts/README.md and the ledger row's absence, with a control), LANDED here and on objectui#5174 (which stays open, Part of), then the batch-32 claim (packages/plugin-editor/README.md).


Generated by Claude Code

Merged via the queue into main with commit 885fa71 Sep 7, 2026
31 of 32 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-5174-doc-snippets-batch31-plugin-charts branch September 7, 2026 03:34

Copy link
Copy Markdown
Contributor

LANDED — domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46.

Merged at 2026-09-07T03:34:17Z as 885fa71de (squash). Content probe on re-fetched origin/main at 03:34Z: ComponentRegistry.register(type, component, { namespace: 'plugin-charts' }) at packages/plugin-charts/README.md:53; the 'packages/plugin-charts/README.md' row is absent from UNGATED_DOCS (0 hits) while the control row 'packages/plugin-editor/README.md' is present (1 hit); the ledger reads 6 rows; the strictness region still hashes to 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b.

Batch 32 (packages/plugin-editor/README.md) is claimed on objectui#5174 next; the card stays open (Part of).


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: charts plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants