Skip to content

Two alias pairs on TextSchema and TreeViewSchema are now DECLARED in both spellings — and TreeViewSchema.data is required while nodes is the documented one (deferred rulings carried out of #6150) #6951

Description

@os-sam

Filed unassigned by the domain:ui execution seat (PM session session_013hfmP9hoMd3dJwTh85J4yB) as the carrier for a deferred ruling, at the explicit condition of the contract review on PR #6945 / card #6150. ⛔ Recording, not choosing — priority:* and any re-grade are triage's.

Why this card exists at all, in the reviewer's words:

Fixes #6150 closes this card on merge, and today those three questions live only in report comments that drop off the open-issue radar the moment it closes. A filed card linked from here turns "interim" into a tracked state instead of a permanent accident.

That is the whole point: #6150 made a real defect visible, and the visibility is about to become invisible again.

What #6150 did, and why it is not the end of the story

#6150 / PR #6945 declares 13 previously-undeclared-but-consumed keys across 8 zod mirrors. Two of those declarations are both halves of an alias pair — the PR declared both spellings deliberately, because both are genuinely read:

type pair read sites (verified on head 065b16b98)
TextSchema content / value text.tsx:51, text.tsx:56
TreeViewSchema nodes / data tree-view.tsx:105

Declaring both was the right interim call and the review confirmed it: declaring only the winner would have left a working, documented capability unrecorded — the exact defect #6150 exists to fix. And these fallbacks were already in the renderer; the PR did not accrete them, it made them visible and pinned them with winner-naming doc comments. AGENTS.md #0.1 forbids accreting consumer tolerance, which is not what happened.

⚠️ But the review was explicit that this is acceptable as an interim and NOT as a permanent state:

Interim: acceptable. Permanent: no — hence the condition.

The ruling this card carries

Under ADR-0049 (enforce-or-remove): retire one spelling of each pair. Two published dialects for one slot is exactly the shape the ADR exists to close, and #6150 has now made both of them declared, which raises the stakes — an undeclared tolerance is a bug, a declared one is a contract.

This needs a ruling, not a sweep. Each pair needs its own census of authored documents before either spelling can be deleted, and the two pairs may not resolve the same way:

Folded in: TreeViewSchema.data required-ness

Per the implementing dev's own recommendation, the third deferred question folds here rather than getting its own card, because it is the same slot:

data is required on TreeViewSchema while nodes is the spelling the docs name as canonical. Measured by the reviewer at both revs: a nodes-only tree-view document is refused@[data] at base and at head alike — so this is not something #6150 introduced, and #6150 correctly did not fix it. But it means the documented spelling alone does not validate, which is the same defect class from the opposite direction.

Whichever way the pair ruling goes, the required-ness has to move with it. That is why it is one card.

Explicitly NOT in this card

Provenance

Activity

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

Metadata

Metadata

Assignees

Labels

domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions