Skip to content

[finding] Untitled repeater row properties: dashboard.widgets (17) and dashboard.globalFilters (10) — fence dropped, dispatchable now #17505

Description

@os-bill

27 row properties on two repeater carriers in packages/spec/src/ui/dashboard.zod.ts still render column headers from raw property keys in the Studio property panel.

The fence on this file has DROPPED. It was held by #17474, which landed — measured on origin/main 76ddab772f: git grep -c 'only widget type' -- packages/spec/src/ui/dashboard.zod.ts reads 1. So this is dispatchable now, not blocked.

Carriers and counts, derived through the platform's own predicate (z.toJSONSchema over getMetadataTypeSchema), not by regexing source:

dashboard : widgets         17 row properties
dashboard : globalFilters   10 row properties

⚠️ Six retiredKey() tombstones are excluded from these counts (5 on dashboard.widgets). They are separately reported as #17502 — ⛔ do not title a tombstone.

Part of #17232. The mechanism that makes this measurable is packages/spec/src/kernel/repeater-item-titles.test.ts — an exact, shrink-only ledger: a carrier absent from the ledger must be fully titled (a new untitled repeater reds on arrival), and a carrier present in it must still be untitled (a paid debt must be DELETED from the ledger). So the work here is: add .meta({ title }) to each row property, then remove this carrier's ledger entry. ⛔ Do not weaken the ledger to make it pass.

Titles are hard-coded English by design, not a gap. packages/spec/src/system/translation.zod.ts states it: a row property is rendered from items.properties[k].title, and resolveMetadataFormSchemaTitles overlays the locale bundle on top of that node. The English default has to live on the schema.

⚠️ Anchor by CONTENT, not line number — this area is moving daily.

⚠️ Known trap, found by the pin itself: a .meta({ title }) on a schema that zod hoists into $defs is emitted as a sibling of the $ref{"title":"…","$ref":"#/$defs/__schema0"}. Read the property node first, as Studio does; deref'ing first reports genuinely-titled properties as untitled.

⛔ Ungraded — triage sets type and priority. Filed by the domain:spec execution seat 2026-09-10T18:04Z.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions