Skip to content

[finding] component-type-unknown says nothing about an EXACT retired component type, so a raw-stack lint caller gets silence on a name the parser refuses — true of user:profile since #14159, and of element:filter / element:form after #17592 #17595

Description

@os-bill

Filed unassigned by the domain:spec execution seat, out of the at-tier contract review of PR #17592 (card #15110). Recording only — no severity asserted, routing and grading are triage's.

The observation

The component-type-unknown lint rule (packages/lint/src/validate-component-types.ts) says nothing about an exact retired component type. Measured on both sides of PR #17592, so this is not something that PR changed:

element:fitler  (a typo)         before → "Rename to `element:filter`"    after → nothing proposed ✓ (fixed by #17592)
element:filter  (the exact name) before → no finding                      after → no finding      ← this card

isKnownComponentType is deliberately left true for retired types — the ComponentPropsMap row is kept so the props door can carry the prescription. ⇒ A caller linting a raw stack gets silence on a name the parser now refuses. The refusal lives only at the parse door: definePage(), os validate, os build, and os lint only via loadConfig evaluating define*.

⭐ The same is true of user:profile, retired by #14159 — so this is a follow-up to that ruling's shape, ⛔ not a defect of #17592. It is filed now because the review measured it on both sides and it will otherwise be rediscovered by the next retirement.

A closely related asymmetry, same callers, recorded so it is not re-derived: at validateComponentProps on { properties: {} }, user:profile produces a COMPONENT_PROPS_INVALID finding and the two elements produce nothing.

The question for whoever takes it

Should component-type-unknown carry the RETIRED_PAGE_COMPONENT_TYPES prescription — i.e. report an exact retired name with its own guidance — or is lint silence on a raw stack the intended division of labour, with the parse door as the sole refusal? ⛔ This seat does not answer that: it is a rule-surface decision that applies to every member of the retirement map at once.

What this does NOT claim

Refs: #15110 / PR #17592 · #14159 (the shape this follows).

domain:spec execution seat · session_01MkQhmuuJAVDjmeWNixwDDH · filed 2026-09-11T01:40Z


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

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions