Cada uno leído antes de tocarlo; tres clases distintas: - combobox.input y gradient-builder.track: el morfo declara el data-* SIN value (soma posee el valor — el idioma que el propio trigger de combobox documenta) y nadie lo escribía. El comentario del input además afirmaba que la bolsa lo resolvía, cosa que una declaración sin fuente no puede hacer. Escritura manual, como sus hermanos. - menu-dial.trigger: componente de scope eidos (contrato espejado a mano); el trigger estampaba marker y aria pero olvidó data-state — la lista de al lado sí lo lleva. Espejo del idioma existente. - calendar (data-calendar-surface) y fab (data-fab-size): attrs visuales de wrapper / hooks compartidos de eidos, sancionados FUERA del morfo por la doctrina firmada (precedente: data-combobox-control). El instrumento no conocía la doctrina: nace scripts/eidos-only-attrs.ts como lista ÚNICA que consumen morfo-check y eidos-lint-all, para que los dos instrumentos no puedan divergir. - palabras.handle: el grip porta el escape del focus-scope a propósito (comentario in situ con la razón); la declaración alcanza a la implementación sancionada. Los otros cuatro rojos del censo previo no eran contrato: accordion, background y link eran timeouts de compilación fría (pasan en caliente) y color-field lo sanó la unificación de la bolsa por sí sola. Verificación: morfo:check 160/161 con los seis en PASS — el único rojo restante (natural-time-picker) es la clase flaky del instrumento «demo que navega bajo el eval» (no falló en ninguna de las dos pasadas previas; la ruta verificada a mano en navegador con su contrato completo) · schema sweep 89/89 · eidos:lint exit 0 · combobox 11/11 · palabras 84/84. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>alpha-0.1-background
parent
3ca138e913
commit
9dffa541ef
@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Cross-cutting attrs the EIDOS layer owns — stamped by wrappers or shared
|
||||
* styling hooks, deliberately NOT part of any morfo contract (the signed
|
||||
* "visual wrapper attrs do not enter the morfo" doctrine; `data-combobox-
|
||||
* control` set the precedent for hooks that squat a component's namespace).
|
||||
*
|
||||
* Consumed by BOTH instruments so they cannot drift apart (P0 fase A, audit
|
||||
* 2026-08-26): `eidos-lint-all` classifies CSS selectors with it, and
|
||||
* `morfo-check` skips these names in its undeclared-attr sweep.
|
||||
*/
|
||||
export const EIDOS_ONLY_ATTRS = new Set([
|
||||
'data-archetype',
|
||||
'data-block',
|
||||
// Shared calendar-surface sizing hook (`src/uix/eidos/lib/calendar-surface.css`):
|
||||
// calendar / month-grid / year-grid / range-calendar wrappers stamp it.
|
||||
// Squats the calendar namespace the way data-combobox-control squats combobox's.
|
||||
'data-calendar-surface',
|
||||
'data-collapsed',
|
||||
'data-combobox-control',
|
||||
'data-color',
|
||||
'data-columns',
|
||||
'data-dragging',
|
||||
// The sema stamp (`src/uix/sema/stamp.ts`), not a morfo part. Allowlisted
|
||||
// STRUCTURALLY only — the VALUE is validated against the morfo catalogue
|
||||
// by `lintEventValues` in eidos-lint-all.
|
||||
'data-event',
|
||||
'data-event-direction',
|
||||
'data-event-family',
|
||||
'data-event-id',
|
||||
'data-event-intent',
|
||||
'data-event-phase',
|
||||
// Fab's wrapper visual axis (`fab.svelte` stamps it next to data-extended;
|
||||
// the recipe sizes off it). Wrapper attr, not contract.
|
||||
'data-fab-size',
|
||||
'data-fitted',
|
||||
'data-icon-only',
|
||||
'data-indicator-placement',
|
||||
'data-motion',
|
||||
'data-motion-disabled',
|
||||
'data-position',
|
||||
'data-ready',
|
||||
'data-scrollable',
|
||||
'data-sheet',
|
||||
'data-size',
|
||||
'data-floating-wrapper',
|
||||
'data-svg',
|
||||
'data-svg-direction',
|
||||
'data-variant'
|
||||
]);
|
||||
Loading…
Reference in new issue