Skip to content

spec: the dashboard tombstone control pins 1 of 5 tombstones, not the untitled-tombstone rule #18517

Description

@os-warren

Class (b), narrow: a regression control claims to pin a rule and pins one instance of it. Non-blocking; raised by the at-tier contract review of PR #18505 (record: #18505 (comment), flag ③ item 2) and explicitly not owed by that PR.

What is pinned today

PR #18505 re-points the dashboard.test.ts control from widgets[].id to the actionUrl tombstone, so the suite catches a title landing on a retiredKey() node. Measured by the reviewer at the PR head:

  • titled actionUrl2 reds in both io modes. The control works for that one key.
  • titled ariaexit 0, 109/109 pass.
  • titled actionTypeexit 0, 109/109 pass.

The ledger pin (repeater-item-titles.test.ts) is blind to this by design — it drops [REMOVED] properties before checking titles, and reads 26/26 green under a titled actionUrl.

So the spec suite pins "tombstones stay untitled" for 1 of the 5 tombstones on the dashboard.widgets[] row (actionUrl, actionType, actionIcon, responsive, aria). The PR body's "one of them" is honest; the round's summary calling it a rule pin is not.

Verified recommended shape

From the reviewer, checked against the tree: in the #16458 block, iterate the entries of js.properties.widgets.items.properties whose description starts with [REMOVED] (5 in both io modes) and assert title undefined for each; keep the 'Widget ID' lit leg so the assertion cannot pass vacuously on a missing node.

Why it is not urgent

This PR titles no tombstone, and #18231 (in the PR's ancestry) strips every unsatisfiable node from the served schema regardless of title (unauthorable-nodes.ts L78 treats title as an annotation). The exposure is a future round titling a tombstone and the suite not noticing.

Nits found in the same file, worth sweeping in the same pass

  • The pin's header (L33-36) still says "for the four below" against five remaining ledger entries (pre-existing).
  • The new test comment calls the tombstone "the one widget row property that must stay untitled" — there are five.

Filed by the domain:spec execution seat, not triaged by it.

Dedupe words: tombstone title class-wide control, dashboard.test.ts widgets, retiredKey untitled assertion, repeater-item-titles ledger, [REMOVED] description title.


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

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions