Skip to content

chore(spec): enroll report and dashboard in the liveness GOVERNED set (#3462)#3474

Merged
os-zhuang merged 1 commit into
mainfrom
claude/liveness-govern-report-3462
Jul 25, 2026
Merged

chore(spec): enroll report and dashboard in the liveness GOVERNED set (#3462)#3474
os-zhuang merged 1 commit into
mainfrom
claude/liveness-govern-report-3462

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

Enrolls two more authorable UI metadata types — report and dashboard — in
the spec liveness GOVERNED set, closing another slice of the umbrella
metadata-liveness audit (#1878, follow-up #3462).

Both types were already registered and round-trippable but ungoverned, so
their property liveness was never CI-checked. That's exactly how drifts like
dashboard titlelabel and stale report chart config survived until a
manual audit caught them. After this change, future drift on these types is a
CI failure, not an audit finding.

Changes

  • packages/spec/liveness/report.json — new ledger, 20 live / 2 dead. Each
    property classified with an objectui consumer reference.
  • packages/spec/liveness/dashboard.json — new ledger, 18 live / 2 dead.
  • packages/spec/scripts/liveness/check-liveness.mts — added report and
    dashboard to GOVERNED.
  • packages/spec/liveness/README.md — added both to the governed table;
    removed them from the "not yet governed" rollout list.
  • .changeset/govern-report-dashboard-liveness.md@objectstack/spec patch.

Re-verification corrected several stale 2026-06 audit findings

Rather than transcribe the audit docs verbatim, each property was re-checked
against objectui HEAD. Corrections baked into the ledgers:

Only aria and performance remain dead on each type (performance carries an
authorWarn so authoring it surfaces a hint).

Scope / non-goals

Verification

  • pnpm --filter @objectstack/spec check:liveness → green:
    report 22 classified (live 20, dead 2); dashboard 20 classified (live 18, dead 2); ✓ all governed-type properties are classified
  • Proof-registry test suite: 22 passed.

Refs #1878. Closes the report/dashboard portion of #3462.


Generated by Claude Code

…#3462)

Closes the systemic anti-drift gap for two authorable UI types (umbrella
#1878). Both were registered but ungoverned, so their property liveness
wasn't CI-checked.

- Add liveness/report.json (20 live / 2 dead) and dashboard.json
  (18 live / 2 dead), each property classified with an objectui consumer.
- Re-verification corrected stale 2026-06 audit findings: report `chart`
  is live (DatasetReportChart via useDatasetRows, #1890/#3441); dashboard
  globalFilters/dateRange live (#2501); title↔label fixed (objectui#2806);
  ADR-0021 widget migration shipped (#3251). Only aria/performance dead.
- Add both to GOVERNED in check-liveness.mts; gate green; README table +
  rollout list updated.

webhook (third type in #3462) deferred — not a registered metadata type;
rides with the disconnect decision in #3461.

No spec shape/behavior change (ledger + gate config only).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMaDBhnZEUu1fcw8Rvo6Yq
@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Error Error Jul 25, 2026 12:36am

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tooling and removed size/m 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.

@os-zhuang
os-zhuang marked this pull request as ready for review July 25, 2026 01:00
@os-zhuang
os-zhuang merged commit a41ba5c into main Jul 25, 2026
16 of 17 checks passed
@os-zhuang
os-zhuang deleted the claude/liveness-govern-report-3462 branch July 25, 2026 01:00
os-zhuang added a commit that referenced this pull request Jul 25, 2026
…3485)

Closes the final third of #3462 (umbrella #1878). report/dashboard landed in
#3474; webhook was deferred for two reasons, both handled here.

- Not a registered metadata type: webhook is absent from the metadata-type
  registry, so the gate can't resolve it via getMetadataTypeSchema. Registering
  it would switch on Studio webhook CRUD + saveMetaItem overlay acceptance +
  diagnostics sweeping — wrong while the authoring surface is still disconnected.
  Instead the gate walks it via a small SPEC_ONLY_SCHEMAS override in
  check-liveness.mts (consulted before the registry). Zero runtime blast radius.

- The whole authoring surface is dead (#3461, confirmed at HEAD): nothing
  materializes an authored webhooks: entry (stack/connector) into a sys_webhook
  dispatcher row; the runtime reads only admin-authored sys_webhook rows. So
  liveness/webhook.json classifies all 16 authorable props dead + authentication
  experimental (HMAC-secret-only, its existing marker). Per-prop notes record the
  sys_webhook column map as the future materializer's mapping table (#3461 A) and
  flag the object->object_name / isActive->active mismatches. Also documents the
  objectql engine.ts:1183/1343 dead-end that registers webhooks: as inert
  metadata items nothing reads back — the trap that makes this look connected.

- Author-warning wired (@objectstack/cli): added { type: 'webhook', key:
  'webhooks' } to TYPE_COLLECTIONS so os compile now advises that webhooks: is a
  silent no-op. The required url prop carries the single warning per webhook
  (one heads-up per artifact, not one per dead prop); isActive left unmarked
  (default(true) boolean). The showcase's TaskChangedWebhook is the live example.

Enrollment only — does not decide #3461's build-the-bridge vs retire-the-surface
question. Gate green (webhook 17 classified: dead 16, experimental 1); lint
contract test red->green; spec 6857 + cli 640 tests pass. No spec shape/behavior
change (ledger + gate/lint config only).

Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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 tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants