Skip to content

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

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

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

Conversation

@claude

@claude claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Part of #5174 (batch 34: packages/plugin-markdown/README.md)

Base: cdbc852e9ec2c92307a85a5d0460229bccb0c8d0 (carries PR #8251, batch 33). One commit, no amend, no force-push.

packages/plugin-markdown/README.md moves out of the gate's ledgered tier into its compiled tier, and its UNGATED_DOCS row is deleted. Two files changed: the page and the gate's ledger row.

Census reading 1 — the ledger-literal reading, on the base

Taken with the gate's own exported analyze / compileSnippets (no hand-written regex), the page lifted out of UNGATED_DOCS in memory, against the built --build-filter closure (35/35 turbo tasks successful).

Fences on the base: four typescript (24, 37, 51, 62) and two bash (16, 106). The bash pair is reported, not relabeled.

Fence Reading
24 semantic phase reached, 0 diagnostics
37 semantic phase reached, 0 diagnostics
51 semantic phase reached, 0 diagnostics
62 PARSE FAILURE, never judged: TS1005 at snippet 3:10 (; expected) and TS1109 at snippet 4:13 (Expression expected)
16, 106 bash, not collected; reported, not relabeled

Blind-spot count: 1 of 4 collected typescript fences never reached the semantic phase.

The ledger row was wrong in three places. It read 2 parse diagnostic(s) — blocks fenced ts that are bare object literals or elided bodies:

  • "blocks", plural — there is exactly one parse-failing block;
  • "fenced ts" — all four fences are labelled typescript;
  • the shape it blames sits on the wrong fence: fence 24 is a bare object literal and parses fine; fence 62 is a type shape written as an object literal. The page has no elided body at all.

Negative control (length-preserving), on the base page's fence 24

The base binding at fence 24 was const schema = { … } with no annotation. A genuine type error was injected into it in memory only — content given a decimal numeric literal padded to the exact byte length of the string it replaced (238 bytes before, 238 after), so no offset moves for an unrelated reason (batch 33's lesson).

  • reading without the error: parse=1 bound=0 semantic=0; TS1005@3:10, TS1109@4:13
  • reading with the error: parse=1 bound=0 semantic=0; TS1005@3:10, TS1109@4:13
  • byte-identical

The ledger row is the same with and without a real type error in the fence it says nothing about. The binding had no type at all, so there was nothing to check it against. The blind spot is measured, not argued.

First attempt, reported rather than quietly retried. The first padding used all zeros, which is an octal literal: it produced TS1121 — a parse error, not a type error — and the run measured nothing about the semantic phase. That reading is void and is recorded here; the anchor was changed to a decimal literal (1 followed by zeros) and the control re-run.

Census reading 2 — after the minimum in-memory parse repair

Fence 62 given a name in memory (type SchemaAPI = { … };); nothing else touched, nothing written to disk.

Fence 24 37 51 62
diagnostics 0 0 0 0

Total 0 — and green here means NOT LOOKED AT for three of the four:

  • fence 24 was an unannotated literal (proven by the negative control above);
  • fence 37 compiles because the deprecated two-argument register overload still exists;
  • fence 62 was a private re-declaration of a published type, and a copy cannot disagree with itself.

Only fence 51 was genuinely judged.

Census reading 3 — after the repairs in this PR

Three typescript fences remain (24, 38, 52); parse=0 bound=0 semantic=0, all three judged, blind spot 0 of 3.

Per-fence decision

Fence Decision
24 typed binding: const schema: MarkdownSchema plus import type { MarkdownSchema } alongside the existing side-effect import
37 ComponentRegistry.register(type, component, { namespace: 'plugin-markdown' }) — the call the plugin's own registration makes at packages/plugin-markdown/src/index.tsx:47-51
51 unchanged; it already taught the target idiom
62 fence replaced by a Markdown members table (route a)
16, 106 bash, unchanged, reported not relabeled; check:doc-fences green on base and head

No fragment marker, no widened type, no @ts-expect-error, no edit under packages/plugin-markdown/src/** or packages/types/src/**.

Fence 62: route (a), a members table

Weighed on the four axes:

  • Real business need. The section is a reference read — which members exist, which are optional, what an omitted one produces. Nobody copies a "Schema API" block into an app, and the page already ships a compilable, copyable example twice (fences 24 and 51).
  • Long-term soundness. MarkdownSchema has one authority (packages/types/src/data-display.ts:1168), re-exported by this plugin (src/index.tsx:14 via ./types, whose docblock records the 2026-08-25 one-authority ruling and forbids a second local declaration). A fence re-declaring it is exactly the private copy that ruling removed; contract-first says point at the type.
  • Prevents AI error. Route (c), a fragment marker, is worst: it would park a private copy of a published type permanently outside every gate, which is the tolerant shape this burn-down exists to remove. Route (b), a typed value, cannot carry optionality or the contract-versus-runtime reading, so it would teach a narrower surface than the type has. The table leaves nothing copyable that can become a second contract.
  • Startup scope discipline. The table is the smallest surface: it removes a fence rather than adding one, needs no new import, stand-in binding or marker vocabulary.

Route (b) was not needed — the page's teaching already has its compilable example. Route (c) was never in play.

The unread member: the brief's premise is stale in the dev's favour

The dispatch expected a member declared ?: boolean with @default true and read by nothing, to be stated as declared-but-unread. On this base it is already stronger than that. MarkdownSchema carries two ADR-0049 retirement tombstones, both spelled ?: never, both citing objectui#6972:

  • sanitize (data-display.ts:1176-1208) — the ?: boolean / @default true member the brief names. It is no longer declared-but-unread; it is retired, and ?: never actively refuses any authored value. Its docblock records why the enforce arm was unavailable: sanitization is unconditional, so the switch it implied does not exist in either direction.
  • components (data-display.ts:1209-1237) — the same treatment, same card.

So the "state it as declared-but-unread" branch would have been false on this tree. The table takes the other branch the ruling allows: both members are omitted, with a sentence saying why and citing the card the JSDoc names (objectui#6972, ADR-0049). No edit to the type.

Per-key table

MarkdownSchema extends BaseSchema, and BaseSchema carries [key: string]: any at packages/types/src/base.ts:467 — so an annotation checks member types and never keys (objectui#7927). Measured, not assumed: see positive-control leg 2 below.

Key Declared Read by Classification
type data-display.ts:1169, 'markdown' the registry, which resolves the renderer registered at src/index.tsx:47-51 under namespace plugin-markdown declared — keep
content data-display.ts:1172, content: string (required) src/index.tsx:39, forwarded to MarkdownImpl (MarkdownImplProps.content: string, non-optional) declared — keep
className base.ts:171 via BaseSchema src/index.tsx:40, forwarded to MarkdownImpl declared — keep
sanitize data-display.ts:1208, ?: never nothing retired tombstone — kept out of the table, named as retired
components data-display.ts:1237, ?: never nothing retired tombstone — kept out of the table, named as retired

Phantoms (undeclared and never read) written by any example: none. Undeclared-but-read keys: noneMarkdownRenderer forwards exactly content and className.

Two line-number corrections to the dispatch's citations, measured on this base: the renderer's reads are at src/index.tsx:39-40 (not :20-21), the inputs manifest at :54-61 (not :35), and defaultProps at :62-64 (not :43). The registration itself is at :47-51 as the brief states.

Defaults check, both directions

Authority: packages/plugin-markdown/src/index.tsx (the renderer) and MarkdownImpl.tsx.

  • The page documented no defaults before this change. The old "Schema API" block carried descriptions (// Markdown content …, // Tailwind classes), not defaults — so there was no wrong documented default to repair.
  • Contract versus runtime for content, stated on the page and neither widened nor narrowed. The type declares content: string required, and the inputs manifest declares required: true — but the renderer reads schema.content with an empty-string fallback, so a node that omits it renders empty instead of failing. Both statements are true; the page now says so.
  • className: no @default tag, absent from defaultProps, forwarded as-is — agree.
  • @default tags on live members: none. The only @default on the interface belonged to sanitize, now a tombstone.

Proposal, not a card and not an edit — the objectui#8246 shape. The registration's defaultProps (src/index.tsx:62-64) records a content sample (# Hello World …), while the renderer's default for an omitted content is the empty string. Re-verified on this head: the only non-test read of defaultProps in packages/core/src or packages/react/src is WidgetRegistry.ts:189, which writes manifest defaults into the widget it builds rather than feeding the render path. The value an author infers from the manifest is not the value they get. Same shape as objectui#8246, so it is recorded here rather than filed again, and src/** is not touched.

Ledger decision

Ruling 6, first branch: the file reads zero after the repairs, so its UNGATED_DOCS row is deleted rather than rewritten. No fragment marker was added — nothing on this page is parked on a filed defect. The ledger reads 3 rows on the head (README.md, packages/fields/README.md, packages/plugin-map/README.md).

The pin (scripts/__tests__/check-doc-snippet-types.test.ts:596-601) enumerates only the root README.md row and otherwise iterates the ledger generically, so no pin edit was owed — the same finding batches 28-33 recorded.

Strictness region

The region from the Fence scanning banner to EOF, sha256:

Tree Hash
base cdbc852e9 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b
head a614ee838 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b

Identical, recomputed on both trees. The banner moved from line 786 to 784; the two deleted lines are the ledger row, which sits above it.

Positive control, two legs

Both run against the committed tree, under a trap with absolute paths, with a unique multi-line anchor (batch 32's first attempt matched two fences; here the anchor includes the // Now you can use markdown type in your schemas comment, which occurs once). On-disk arrival was proven by marker counts, never by an editor exit code: marker 0 before, 1 after; the untouched control anchor stable at 1.

Leg 1 — a type error on a DECLARED member. content: 42 on the newly typed binding at fence 24.

  • HEAD blob 4faeb86ae4a10179999019b0b62d44fe8a2189e0, mutated blob 9ef5a597f11fb56591968423cabdf5ca5fd6fa6c
  • pnpm check:doc-snippets exit 1: [semantic] packages/plugin-markdown/README.md:32:3 TS2322: Type 'number' is not assignable to type 'string'. and Semantic phase: 621 of 621 block(s) judged, 1 failed.

Leg 2 — an invented key on the same binding. inventedKeyNobodyDeclared: 'x' added to the same object.

  • mutated blob 9a2274edae3ca73c215f085e480ae9f7621b11bc
  • pnpm check:doc-snippets exit 0, 621 of 621 judged, 0 failed

Leg 2 is the measured statement of the objectui#7927 bound, reported as such: because BaseSchema carries an index signature, the annotation this PR adds checks member types and never keys. It buys real checking (leg 1 proves it) and it does not buy key checking.

Restore proven by STATE, both legs, not by an exit code: git diff HEAD -- packages/plugin-markdown/README.md empty and git hash-object back to 4faeb86ae4a10179999019b0b62d44fe8a2189e0, equal to the HEAD blob.

Gates

All pinned to head a614ee838 with a clean tree; every exit code captured by redirect-then-capture, never through a pipe.

Gate Exit
pnpm check:doc-snippets 0 — 229 documents, 226 covered (123 hold a ts/tsx block), 3 ungated, 621 of 621 judged, 0 failed
pnpm exec vitest run scripts/__tests__/check-doc-snippet-types.test.ts scripts/__tests__/check-doc-fence-languages.test.ts 0 — 2 files, 123 tests
pnpm exec vitest run scripts/__tests__/ 0 — 115 files, 3415 tests
pnpm exec vitest run packages/plugin-markdown/ 0 — 5 files, 49 tests
pnpm check:doc-types 0
pnpm check:readme-exports 0 (green on the base too)
pnpm check:doc-fences 0
pnpm type-check:scripts 0
pnpm lint:root 0
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 — no changeset owed, none added, no label
node scripts/check-governed-queue-guard.mjs --test (both paths) NOT GOVERNED
pnpm check:esm-specifiers 0
pnpm check:doc-example-readers 0
pnpm check:node-esm-load 1 on its first run for the reason the gate itself prints (turbo shares one cache across worktrees; the build replayed objectui-issue-5174-b33's entry), 0 with --force-build (provenance 37/37 built by this tree, load leg 34/39)

Because both changed paths report NOT GOVERNED, this PR carries no maintainer speed-read section.

Assumptions checked

  • A1 CONFIRMED, with a refinement. Both parse diagnostics are fence 62's two members, and fence 24 parses. The codes are TS1005 (not two of one code): TS1005 at 3:10 for content: string, and TS1109 at 4:13 for className?: string.
  • A2 CONFIRMED. register(type, component, meta?) at packages/core/src/registry/Registry.ts:433; the no-namespace form warns it is deprecated at :439-450. The page taught the deprecated call.
  • A3 CONFIRMED. git log on both paths tops out at the base cdbc852e9; a git ls-remote --heads origin scan of 1011 heads finds no other branch naming doc-snippet, 5174 or this page. Re-fetched after the work: origin/main still cdbc852e9, so no merge was needed.
  • A4 CONFIRMED. markdownComponents (dist/index.d.ts:18) and MarkdownSchema (dist/index.d.ts:2) are both real exports; check:readme-exports green on base and head.
  • A5 CONFIRMED. packages/plugin-markdown/src/types.ts:40 re-exports MarkdownSchema from @object-ui/types and declares nothing of its own.

Generated by Claude Code

…ped surface

Burns down `packages/plugin-markdown/README.md`'s `UNGATED_DOCS` entry
(objectui#5174, batch 34): the page moves from the gate's ledgered tier into
its compiled tier, so its snippets are judged on every commit instead of being
recorded as debt.

- The "Schema API" block was a TYPE shape written as an object literal — the
  page's only parse failure and both ledgered diagnostics. It becomes a
  Markdown members table, so the page points at `MarkdownSchema` instead of
  carrying a second private copy of it.
- The Usage example's bare `const schema = { … }` is annotated
  `MarkdownSchema` with the type import; measured beforehand, the unannotated
  binding accepted a genuine type error with a byte-identical ledger row.
- The manual-registration loop now passes the `{ namespace: 'plugin-markdown' }`
  third argument the plugin's own registration makes; the two-argument form
  still compiles but `ComponentRegistry.register` warns that it is deprecated.

No `src/**` or type edit: `content`'s contract-versus-runtime reading
(`schema.content || ''`) and the two ADR-0049 tombstones are stated, not
changed.

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: markdown 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-XPCbTDEt.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.38KB 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

Copy link
Copy Markdown
Contributor

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

  • CI on a614ee838 converged all green at 06:21:53Z (29 checks, Live E2E (informational) green as well — no standing-down note was owed on this PR).
  • Ready for review at 06:22:04Z; post-flip Governed Surface Queue Guard completed/success at 06:22:20Z.
  • Auto-merge SQUASH enabled; added_to_merge_queue on the REST timeline at 06:22:32Z (read 06:22:38Z).

Landing stroke follows the merge: content probe on re-fetched origin/main ({ namespace: 'plugin-markdown' } in packages/plugin-markdown/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-35 claim (packages/plugin-map/README.md).


Generated by Claude Code

Merged via the queue into main with commit 320c841 Sep 7, 2026
32 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-5174-doc-snippets-batch34-plugin-markdown branch September 7, 2026 06:40

Copy link
Copy Markdown
Contributor

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

Merged at 2026-09-07T06:40:22Z as 320c84121 (squash). Content probe on re-fetched origin/main at 06:40Z: ComponentRegistry.register(type, component, { namespace: 'plugin-markdown' }) at packages/plugin-markdown/README.md:44; the 'packages/plugin-markdown/README.md' row is absent from UNGATED_DOCS (0 hits) while the control row 'packages/plugin-map/README.md' is present (1 hit); the ledger reads 3 rows; the strictness region still hashes to 2749d53ae3a8df033a53b8d7a354fa7e22ee2d1a17f6ad0c3d61122e904e084b.

Batch 35 (packages/plugin-map/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: markdown plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants