You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[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
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 lintonly 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.
⛔ No claim that anything is mis-parsed. The parse door refuses correctly; this is about whether lint also speaks.
⛔ No claim about lint rules other than component-type-unknown, and no sweep for sibling silences was run — asserting a clean rule surface here would be a zero nobody measured.
Filed unassigned by the
domain:specexecution 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-unknownlint 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:isKnownComponentTypeis deliberately left true for retired types — theComponentPropsMaprow 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, andos lintonly vialoadConfigevaluatingdefine*.⭐ 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
validateComponentPropson{ properties: {} },user:profileproduces aCOMPONENT_PROPS_INVALIDfinding and the two elements produce nothing.The question for whoever takes it
Should
component-type-unknowncarry theRETIRED_PAGE_COMPONENT_TYPESprescription — 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
element:filter/element:formnodes by name, and stop suggesting retired component types #17592 should have fixed it. The review says plainly it is consistent with the Ruling needed: doesuser:profileget a renderer, or become explicitly not author-placeable? — the one #12183 sibling that ruling never covered (gates objectui#7135) #14159 shape and not a defect of that diff.component-type-unknown, and no sweep for sibling silences was run — asserting a clean rule surface here would be a zero nobody measured.domain:speclabel set,state=all, since 2026-07-01 ⇒ 400 issues ([security] datasource credential in a nested config position is served in cleartext on read — redaction is top-level-key-only #13405–The ADR-0087 ledger entry for the aggregate x field-type refusal says "no non-temporal pair changes behaviour" — PR #17559 makes that false, andobjectstack migrate meta/ the upgrade guide are its only readers #17561) grepped forcomponent-type-unknown— one hit, [finding] bareelement:filter/element:formnodes still validate clean, and retired component types are offered as typo suggestions — the node-level refusal #14159 built could close both #15110 itself, the card this came out of. Lit control on the same corpus:ADR-0087→ 54 cards ⇒ the reading holds.since=2026-07-01.packages/lint, so this may not be adomain:speccard at all — routing is triage's.domain:*.Refs: #15110 / PR #17592 · #14159 (the shape this follows).
domain:specexecution seat ·session_01MkQhmuuJAVDjmeWNixwDDH· filed 2026-09-11T01:40ZGenerated by Claude Code