Skip to content

feat: add umf.dashboard platform-neutral dashboard profile - #13

Merged
garyfischer-maker merged 3 commits into
masterfrom
feat/dashboard-profile
Oct 9, 2026
Merged

garyfischer-maker merged 3 commits into
masterfrom
feat/dashboard-profile

Conversation

@garyfischer-maker

Copy link
Copy Markdown
Contributor

Summary

Proposes umf.dashboard 0.1.0, a semantic extension that describes a dashboard independently of Databricks AI/BI (Lakeview .lvdash.json) or Tableau (.twb/.twbx). It follows the same pattern as umf.ddd. The goal is to port dashboards between platforms through UMF: native umf.lakeview / umf.tableau extensions keep the exact platform detail, this profile holds the shared meaning, and every import or export reports what didn't translate.

This PR adds only the neutral profile. Importers, exporters and the native extensions would come in follow-up changes.

Vocabulary

Scope Kind Content
document dashboard title, ordered pages, layout.columns grid, optional theme
module page title, role canvas or global-filters
module data holds datasets shared across pages
element dataset table or query source, grain, fields marked column or measure (measures declare an aggregate expression)
element visual chart, dataset reference, channel encodings, rows aggregated/detail, position, optional trace id
element text plain or markdown content, position
element filter control type, explicit {dataset, field} targets, default, position

Design choices worth reviewing

  • Fields are column or measure, not dimension/measure, because a raw numeric column isn't a dimension.
  • SQL and Tableau expressions are kept with their language tag and never parsed (DASHBOARD_EXPRESSION_OPAQUE). As with DDD invariants, this marks the document incomplete and blocks the edit API.
  • Overlapping layout is a warning rather than an error, because Tableau floating zones are legal.
  • Unknown content is retained and reported (DASHBOARD_UNKNOWN). Not modeled in 0.1.0: Tableau parameters and actions, per-visual filter exemptions, cross-filter wiring, permissions.

Changes

  • spec/extensions/dashboard/: extension package and payload schema
  • src/extensions/dashboard/: semantic validator plus readDashboardDocument, writeDashboardDocument, inspectDashboard, getDashboardDefinition, editDashboardDefinition
  • fixtures/dashboard/marketing-campaign.json: built from a deployed Lakeview dashboard
  • tests/dashboard/profile.test.ts: US-077-AC1 to AC4, including 28 deliberate-corruption checks
  • HELIX: FEAT-026, US-077, CONTRACT-055, TD-077; regenerated acceptance ledger and package/schema audits

Verification (Windows 11, Bun 1.3.14)

  • bun test tests/dashboard tests/traceability: 6 pass
  • bun run test:schemas: 62/62 packages, 350/350 schemas
  • bun run typecheck: clean

Dependencies and open items

🤖 Generated with Claude Code

garyfischer-maker and others added 3 commits October 9, 2026 12:54
…indows

- .gitattributes: check out text as LF so pinned hashes and byte comparisons hold
  under core.autocrlf=true
- generator scripts record '/' paths (ledger, package and schema audits)
- core-ideals evidence and domain-pack boundary checks compare '/' paths, so
  '..\' escapes are rejected and valid paths aren't flagged unsafe on Windows

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Add umf.dashboard 0.1.0, a semantic extension that describes dashboards
independently of Databricks AI/BI (Lakeview) or Tableau: page order, layout
grid and theme; canvas and global-filter pages; datasets with grain and
column/measure fields; visuals with channel encodings; text blocks; and
filters with explicit dataset/field targets. SQL and Tableau expressions are
retained with their language and flagged as not interpreted.

- spec/extensions/dashboard: extension package and payload schema
- src/extensions/dashboard: semantic validator and read/write/inspect/edit API
- fixtures/dashboard: Marketing Campaign fixture from a deployed Lakeview dashboard
- tests/dashboard: US-077-AC1..AC4 with 28 semantic corruption checks
- HELIX: FEAT-026, US-077, CONTRACT-055, TD-077; regenerated ledger and audits

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@garyfischer-maker
garyfischer-maker marked this pull request as ready for review October 9, 2026 17:16

@easel easel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Off hand this looks incredible!

@garyfischer-maker
garyfischer-maker merged commit de11e17 into master Oct 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants