Skip to content

test(types): the unmirrored-keys pin stops claiming a doc side the flag half lost (objectui#7992) - #9688

Draft
os-justin wants to merge 1 commit into
mainfrom
claude/issue-7992-unmirrored-keys-comment-loses-its-doc-side
Draft

os-justin wants to merge 1 commit into
mainfrom
claude/issue-7992-unmirrored-keys-comment-loses-its-doc-side

Conversation

@os-justin

Copy link
Copy Markdown
Collaborator

Part of #7992

What changed — prose only

packages/types/src/__tests__/object-view-unmirrored-keys-7779.test.ts labelled a pair of
SpecObjectListViewSchema refusals with a single source line.

Before:

    // schema-reference.md: an ObjectQL tuple filter and a `default: true` flag.

After — the label now covers only the half that still has a doc side, and a second
comment says what the other half is:

    // schema-reference.md: an ObjectQL tuple filter. Only `tuple` still has a
    // doc side, and that side is HELD — the "still what the docs teach" test
    // below pins this exact filter string off disk.
    // `flagged` has NO doc side, and its removal was deliberate: objectui#7923
    // (PR objectui#7991) deleted the per-view `default: true` flag from that
    // same `object-view` example, because `NamedListView` never declared the
    // key and `ObjectView` never read it. What is left is a refusal pinned on
    // its OWN merits — the spec closes `default` too, which is why that doc fix
    // is not merely cosmetic — so this case is no longer a reading of any shape
    // the docs teach. ⚠️ Nothing re-derives that absence: read the sentence
    // above as history, not as a live reading of that file.

⛔ No assertion added, removed or weakened. Mechanically: every changed line in the diff is a
// line — git diff -U0 | grep '^[+-]' | grep -v '^[+-]\s*//' (after dropping the +++/---
headers) returns nothing. The flagged assertion is kept because it still measures something
real, and the sibling readRepo('content/docs/api/schema-reference.md') assertion — the one that
still HAS a live doc side — is untouched.

The doc-side measurement, with a control that FIRES

A bare "0 hits" would prove nothing here, and the dispatch's own first probe is the demonstration:
"default": — with the colon, JSON-quoted — also scores 0 across content/docs, so that
pattern matches nothing anywhere and a zero is a fact about the pattern, not about the tree.
Readings below taken at d83ea4160, this branch's head; a historical reading, ⛔ not re-derived by
anything and ⛔ not to be read as live.

probe reading
SUBJECT — "default": true across content/docs 0
⚠️ blind-pattern check — "default": across content/docs 0 — why the subject alone proves nothing
CONTROL A — "filter": in content/docs/api/schema-reference.md 2 — the JSON-quoted key style DOES match in this file
CONTROL B — the word default in that same file 34 — a zero for the flag is not a file-wide blind spot
CONTROL C — "filter": [["owner", "=", "${currentUser.id}"]], in that file present, inside the object-view example — the tuple half's doc side, and the string the sibling assertion pins

⇒ The flag is genuinely gone, on controls that fire. What stands in its place in that example is a
node-level "defaultListView" key — PR objectui#7991 spelled the default list view once, at the
node, instead of as a per-view flag NamedListView never declared.

Verification

check reading
pnpm vitest run over the changed test file exit 0 — 1 file, 164 tests passed
pnpm --filter @object-ui/types test (via the shared verify lock) exit 0 — 198 files, 4656 tests passed
pnpm --filter @object-ui/types type-check exit 0
eslint . in packages/types exit 0 — 269 files linted, 0 errors
node scripts/check-changeset-presence.mjs exit 0 — the empty-frontmatter declaration is this gate's own explicit exemption, quoted in its output
pnpm changeset:check exit 0
pnpm check:new-line-citations exit 0 — 0 new citations
pnpm check:control-bytes exit 0
pnpm check:changeset-claims · pnpm check:pending-changeset-literals exit 0
node scripts/check-governed-queue-guard.mjs --test over both changed paths NOT GOVERNED — ordinary review and merge-queue route

Every exit code above was captured before any pipe (cmd > log 2>&1; EXIT=$?), not through one.
The lint reading is the whole affected package rather than a narrowing; type-aware linting is not
enabled in this repo's eslint config either way (no project / projectService key), so this diff
cannot move the verdict on a file it does not touch. The repo-level turbo run lint belongs to CI.

Changeset

.changeset/issue-7992-unmirrored-keys-doc-side.md, EMPTY frontmatter — declared as releasing
nothing. Followed the gate rather than guessed: check-changeset-presence.mjs scored the test file
as published source of a released package and demanded a declaration, and names the empty
frontmatter as "a pass, not a workaround".

Scope

  • ⛔ The docs are NOT touched: objectui#7923 removed that flag deliberately, and restoring it to
    make the old comment true again is the wrong direction.
  • ⛔ objectui#7721's class — prose inside a pin stating a measurement that has gone stale, with
    nothing holding prose to measurement — is NOT closed here. This card is one instance of it.
  • ⚠️ The card's own address for the comment has drifted (the card cites an older line number). It
    is located by content — the quoted line above — and per AGENTS.md [WIP] Update documentation for project #11 the repair is not minted
    into a new line address here. Reported, not fixed: this is a scope-pinned card, so [WIP] Update documentation for project #11's
    opportunistic citation repair does not apply.
  • ⚠️ PR chore(deps): lucide-react 1.31.0 -> 1.43.0, with the one retired spelling repaired #8941 is open on content/docs/api/schema-reference.md (a lucide icon rename in the
    detail-view example). Re-measured: it touches neither the object-view example nor default.
    No overlap with this branch, which does not touch that file at all.

Generated by Claude Code

…ag half lost (objectui#7992)

`object-view-unmirrored-keys-7779.test.ts` labelled a pair of
`SpecObjectListViewSchema` refusals with one source line reading
"schema-reference.md: an ObjectQL tuple filter and a `default: true` flag."
The tuple half is still true and still pinned off disk by the neighbouring
"still what the docs teach" test. The flag half is not: objectui#7923
(PR objectui#7991) deleted the per-view `default: true` flag from that
example, because `NamedListView` never declared the key and `ObjectView`
never read it.

Prose only. The `flagged` assertion still measures something real — the spec
closes `default` too — so it is kept, and the comment now says what it is:
a refusal pinned on its own merits, with nothing re-deriving the flag's
absence from the docs, marked as history rather than a live reading.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EpHzwH4wTy5sd7ibkD2yq
@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 329 chunks) 3048.9 KB 3104.5 KB
Main entry chunk (gzip) 145.7 KB 350 KB
Entry file index-Ckww2Jo5.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) 16.69KB 6.21KB
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) 11.08KB 4.58KB
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) 545.84KB 130.66KB
core (index.js) 8.94KB 3.59KB
create-plugin (index.js) 27.94KB 9.51KB
data-objectstack (index.js) 215.98KB 59.97KB
fields (index.js) 249.27KB 62.92KB
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) 8.87KB 3.64KB
i18n (index.js) 5.22KB 2.26KB
i18n (pickLocalized.js) 9.86KB 3.95KB
i18n (provider.js) 32.15KB 10.49KB
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.83KB 10.95KB
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) 13.52KB 4.88KB
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) 8.39KB 3.10KB
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) 14.81KB 3.63KB
plugin-calendar (index.js) 49.92KB 14.22KB
plugin-charts (index.js) 71.33KB 19.90KB
plugin-chatbot (index.js) 195.34KB 46.51KB
plugin-dashboard (index.js) 131.44KB 34.65KB
plugin-designer (index.js) 215.94KB 44.33KB
plugin-detail (index.js) 253.29KB 65.88KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 136.71KB 34.16KB
plugin-gantt (index.js) 167.62KB 41.26KB
plugin-grid (index.js) 212.64KB 57.91KB
plugin-kanban (index.js) 46.41KB 14.49KB
plugin-list (index.js) 112.73KB 27.69KB
plugin-map (index.js) 21.48KB 6.99KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.41KB 11.93KB
plugin-timeline (index.js) 30.07KB 8.74KB
plugin-tree (index.js) 10.58KB 3.72KB
plugin-view (index.js) 85.04KB 21.01KB
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) 104.82KB 34.67KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 4.25KB 2.04KB
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.66KB 2.50KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (kanban-quick-add.js) 3.89KB 1.87KB
sdui-parser (parse.js) 25.28KB 7.80KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 14.82KB 4.99KB
types (ai.js) 4.11KB 2.06KB
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.93KB 1.49KB
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 (strict-authoring-face.js) 14.04KB 5.36KB
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants