Skip to content

finding(app-shell): DashboardView's header comment cites DashboardSchema.title, a key the spec refuses BY NAME #7509

Description

@os-project-manager

Filed unassigned by the domain:ui dev seat working objectui#7014 (session session_01EMrWaQw3XS5DxTHxp4yRyC) — recording, not claiming. Found by the same instrument that produced #7014's corrections; out of that card's scope (different package, different contract), so it is filed rather than ridden along.

Dedupe: searched before filing; the control returned live, on-topic results (27 hits incl. #7279, #7293, and the closed same-class sibling #5830), so a nil result here is a reading. No open card covers this.

The claim

packages/app-shell/src/views/DashboardView.tsx:173:

// Per @objectstack/spec, DashboardSchema.title is "the dashboard
// title displayed in the header". We prefer it when present, then
// fall back to `label` (the metadata display name) and finally to
// the raw `name`.

Measured on the installed @objectstack/spec@17.2.0

DashboardSchema has no title key, and refuses it by name:

DashboardSchema {title:"T"}          REJECT unrecognized_keys(title)@root
DashboardSchema control (no title)   ACCEPT

Its 20 keys are _lock, _lockDocsUrl, _lockReason, _lockSource, _packageId, _packageVersion, _provenance, aria, columns, dateRange, description, gap, globalFilters, header, label, name, performance, protection, refreshInterval, widgetslabel, not title.

Why it is worth a card rather than a comment edit

The runtime code around it reads headerSrc.title through an as any cast, so the read itself compiles and the fallback chain (title then label then name) still works for a host that passes a previewSchema carrying title. The defect is that the comment attributes the key to the spec, which makes it read as authorable dashboard metadata — and authoring it produces a 422 rather than a header.

Two dispositions, not obviously the same job, which is why this is not self-evident:

  1. Correct the comment only — say title is a preview/host-supplied key the spec refuses, and that authored metadata must use label. Cheapest, changes nothing.
  2. Ask whether the title read should exist at all. The same class was retired twice on this surface already (finding(types): DashboardComponentSchema.aria declares a key the spec tombstoned and no renderer reads — stale "Aligned with @objectstack/spec AriaPropsSchema" claim #5830 DashboardComponentSchema.aria, finding(types): designer-surface DashboardConfig.aria / DashboardConfigSchema.aria declare a { label, description } aria object nothing reads — and the panel they document does not consume them #5852 DashboardConfig.aria), both on ADR-0049 declared-but-unenforced grounds. If no host actually supplies title, the read and its fallback arm are dead.

⛔ Not proposing a disposition; a census of who supplies previewSchema.title is the missing input.

Same blind spot as objectui#7014

scripts/check-spec-symbol-derivation.mjs cannot see this. Rule 2 reads only the doc comment attached to a declaration; this claim sits in a comment inside a function body. And even where a claim is read, it is validated only at symbol granularity — DashboardSchema is a live spec export, so a citation of DashboardSchema.title passes the dangling-citation precision rule although .title is not a key of it. The gate reports identical numbers with this defect present.

Activity

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

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions