Skip to content

feat(spec)!: prune dead aria/performance from ReportSchema + dogfood the live report chart (report-liveness close-out) - #3496

Merged
os-zhuang merged 2 commits into
mainfrom
chore/report-liveness-closeout
Jul 26, 2026
Merged

feat(spec)!: prune dead aria/performance from ReportSchema + dogfood the live report chart (report-liveness close-out)#3496
os-zhuang merged 2 commits into
mainfrom
chore/report-liveness-closeout

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Report-liveness close-out — follow-up to #3463. Closes out the 2026-06 ReportSchema liveness audit (docs/audits/2026-06-reportschema-property-liveness.md), whose remaining findings were re-verified against current code.

What changed

1. Prune dead aria / performance from ReportSchema (spec, breaking→minor)
The audit flagged both as dead — declared on ReportSchema (editable in the Studio report form) but read by no renderer. Confirmed still dead in objectui (zero readers on the render path). Removed them + the now-orphan AriaPropsSchema / PerformanceConfigSchema imports. Both schemas stay exported (still used by views/pages/charts); ReportChart keeps its own aria from ChartConfigSchema. No manifest-key or public-export change; report.mdx regenerated.

2. Refresh the stale audit doc + index
Every finding in the 2026-06 audit is now resolved, and one was wrong: report.chart is live, not dead — DatasetReportRenderer plots chart.xAxis/yAxis via DatasetReportChart (DatasetReportRenderer.tsx:429-465,773-786). Added a resolution banner (chart=WIRED, aria/performance=pruned, re-exports=removed via #3463, joined-preview=fixed) and annotated the audits README section 2 (leaving the still-open chart-view/dashboard debt untouched).

3. Dogfood the live report chart
report.chart had no showcase coverage — none of the three showcase reports declared a chart. Added showcase_hours_by_status_chart (a summary report with a chart block: est_hours by status, bar) + an Analytics nav item, so the DatasetReportChart path is exercised by the showcase smoke.

Verification

  • @objectstack/spec build + 6850 tests pass; check:api-surface (unchanged — properties, not exports) ✓; check:docs (report.mdx in sync) ✓.
  • examples/app-showcase typecheck clean; backend boots with the new report (valid chart shape parses).
  • Browser-verified against the showcase backend: the new Hours by Status (Chart) report renders a bar chart (In Progress 100, In Review 54, …) via DatasetReportChart, with the summary table below; POST /api/v1/analytics/dataset/query all 200.

Refs #3463, #1878, #1890.

🤖 Generated with Claude Code

…the live report chart (report-liveness close-out)
Follow-up to the #3463 report cleanup, closing out the 2026-06 ReportSchema
liveness audit. That audit flagged `aria` and `performance` as dead — declared
on ReportSchema (editable in the Studio report form) but read by no renderer.
- spec: removed ReportSchema.aria (AriaPropsSchema) + ReportSchema.performance
(PerformanceConfigSchema) and the now-orphan imports. Both schemas stay
exported (still used by views/pages/charts); ReportChart keeps its own aria
from ChartConfigSchema. No manifest/export change; report.mdx regenerated.
Ships minor per the launch-window breaking-as-minor policy.
- showcase: added `showcase_hours_by_status_chart` — a summary report with a
`chart` block (est_hours by status, bar) + an Analytics nav item. This
dogfoods the live DatasetReportChart path (chart.xAxis/yAxis over the bound
dataset), which had no showcase coverage; browser-verified rendering.
- docs/audits: the 2026-06 report-liveness audit is refreshed with a resolution
banner (chart = WIRED not dead, aria/performance pruned, re-exports removed,
joined preview fixed), and the audits README section 2 annotates the resolved
report slice while leaving the open chart-view/dashboard debt untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercelBot commented Jul 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentJul 26, 2026 7:27am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:ui tooling size/s labels Jul 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

104 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx(via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx(via @objectstack/spec)
  • content/docs/ai/skills.mdx(via @objectstack/spec)
  • content/docs/api/client-sdk.mdx(via @objectstack/spec)
  • content/docs/api/environment-routing.mdx(via @objectstack/spec)
  • content/docs/api/error-catalog.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx(via @objectstack/spec)
  • content/docs/api/index.mdx(via @objectstack/spec)
  • content/docs/automation/approvals.mdx(via packages/spec)
  • content/docs/automation/flows.mdx(via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx(via packages/spec)
  • content/docs/automation/hooks.mdx(via @objectstack/spec)
  • content/docs/automation/index.mdx(via @objectstack/spec)
  • content/docs/automation/webhooks.mdx(via @objectstack/spec)
  • content/docs/automation/workflows.mdx(via @objectstack/spec)
  • content/docs/concepts/architecture.mdx(via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx(via packages/spec)
  • content/docs/concepts/index.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx(via packages/spec)
  • content/docs/concepts/north-star.mdx(via packages/spec)
  • content/docs/data-modeling/analytics.mdx(via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx(via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx(via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx(via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx(via @objectstack/spec)
  • content/docs/data-modeling/index.mdx(via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx(via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx(via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx(via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx(via @objectstack/spec)
  • content/docs/deployment/cli.mdx(via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx(via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx(via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx(via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx(via @objectstack/spec)
  • content/docs/getting-started/examples.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx(via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/spec)
  • content/docs/kernel/cluster.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx(via packages/spec)
  • content/docs/kernel/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/email-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx(via packages/spec)
  • content/docs/kernel/services-checklist.mdx(via @objectstack/spec)
  • content/docs/permissions/authorization.mdx(via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx(via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx(via @objectstack/spec)
  • content/docs/permissions/positions.mdx(via @objectstack/spec)
  • content/docs/permissions/rls.mdx(via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx(via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx(via @objectstack/spec)
  • content/docs/plugins/development.mdx(via @objectstack/spec)
  • content/docs/plugins/index.mdx(via @objectstack/spec)
  • content/docs/plugins/packages.mdx(via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx(via @objectstack/spec)
  • content/docs/protocol/diagram.mdx(via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/runtime-capabilities.mdx(via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx(via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx(via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx(via @objectstack/spec)
  • content/docs/releases/index.mdx(via @objectstack/spec)
  • content/docs/releases/v12.mdx(via @objectstack/spec)
  • content/docs/releases/v13.mdx(via @objectstack/spec)
  • content/docs/releases/v16.mdx(via @objectstack/spec)
  • content/docs/releases/v9.mdx(via @objectstack/spec)
  • content/docs/ui/actions.mdx(via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx(via @objectstack/spec)
  • content/docs/ui/dashboards.mdx(via @objectstack/spec)
  • content/docs/ui/forms.mdx(via @objectstack/spec)
  • content/docs/ui/index.mdx(via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx(via @objectstack/spec)
  • content/docs/ui/setup-app.mdx(via @objectstack/spec)
  • content/docs/ui/translations.mdx(via @objectstack/spec)
  • content/docs/ui/views.mdx(via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

…port
seed.test.ts hardcoded 3 reports; the new showcase_hours_by_status_chart
makes it 4 (summary, chart, matrix, joined).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@os-zhuang
os-zhuang merged commit 74f7339 into mainJul 26, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the chore/report-liveness-closeout branch July 26, 2026 07:36
os-zhuang added a commit that referenced this pull request Jul 30, 2026
… silent drifts (#3786) (#4120)
Every entry in METADATA_FORM_REGISTRY is a hand-written `defineForm` layout
naming keys of a Zod schema it never imports. Four of the seventeen had already
drifted, each silently — the schemas are deliberately not `.strict()`, so a key
they do not declare parses clean and is stripped on the way to storage.
- object: `capabilities` is not a key (it is `enable`) — 7 toggles saved nothing
- object: the inline column grid offered 16 keys FieldSchema never declared
- report: `aria`/`performance`, pruned by #3496, still rendered
- hook/action: `body.memoryMb` was unauthorable
- page: `interfaceConfig.sort` was unauthorable
The gate is metadata-form-zod-reconciliation.test.ts, reconciling every
registered form against getMetadataTypeSchema(). form-only is always a defect
and not ledgerable; zod-only is ledgerable with a reason, checked for
non-vacuity and for still resolving on both sides.
Also: TRANSLATABLE_META_TYPES in rest is now derived from the translator
dispatch (exported as TRANSLATABLE_METADATA_TYPES), and ActionAiCategorySchema's
"update both sides" comment — whose source #3896 deleted — is retired.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationprotocol:uisize/steststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang