You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/scripts/theming-census-debt.ts

1399 lines
114 KiB

feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
/**
* theming-census-debt — the theme-reach DEBT of the catalogue, registered.
*
* WHAT THIS IS, AND WHAT IT IS NOT. This is NOT an exceptions file. An
* exception asserts «this is fine»; every key below asserts the opposite:
* «this declaration does NOT reach a theme, we measured it, and we are
* freezing it so it cannot grow». It is the other class of written act —
* the sibling of `theming-sentinel-exceptions.ts` in MECHANISM (one written
* line per key, a STALE detector on top) and its opposite in MEANING.
*
* The exception valve is untouched and lives elsewhere: a literal with its
* `/* literal: <reason> *​/` annotation on the declaration (recipe-contract
* §3, class `exception` in the census) and the component-level
* `R-5.1 exception: <reason>` of a README. Those say «signed deviation».
* This file says «unpaid debt, counted».
*
* WHY IT EXISTS. Until 2026-08-25 the floor of this axis was two COARSE
* ceilings (`maxLiteral` / `maxGlobal`): the catalogue could add five
* regressions and hide them under five unrelated fixes, because only the
* TOTAL was asserted. R-5.1 could not graduate to `error` against a total,
* either — a per-component rule needs a per-component truth. The ratchet is
* now PER KEY: a literal or a raw global outside this ledger is a
* regression, and a ledger entry that is no longer debt is STALE. The debt
* only shrinks, key by key. Same doctrine as R-5.4 («a declaration that
* reads no token and carries no act, lies») and the same mechanism that
* caught 18 STALE entries in `toast` the day this was written.
*
* HOW A KEY ENTERS. Only by signature. This baseline was generated ONCE,
* on 2026-08-25, from the census of that day. Regenerating it wholesale
* (`node --import tsx/esm scripts/theming-census.ts --debt --write`) erases
* the ratchet, which is why the writer prints the delta it is about to
* commit: an author reads that delta and decides. New debt is not registered
* by re-running the generator — it is tokenized, or annotated, or signed.
*
* HOW A KEY LEAVES. Four ways, all of them progress:
* 1. TOKENIZED — the declaration now reads `var(--{c}-…)`;
* 2. ANNOTATED — it gained its `/* literal: <reason> *​/` (class
* `exception`), so it is a signed deviation and no longer debt;
* 3. DEAD — the declaration, the rule or the component is gone;
* 4. SYSTEM — it moved to a transversal system the recipe consumes.
* In all four the guard reports the entry as STALE and it must be deleted
* in the same commit that earned it. A stale entry is the same debt as a
* stale allowlist row: it claims a knob is broken that is already fixed.
*
* THE KEY. `{class} · {file} · {selector} · {property}` — deliberately
* LINE-INDEPENDENT, so moving a rule, reformatting a file or inserting a
* comment above it does not fabricate a regression. Repeated identically
* (the same property under the same selector in a `@media` block and in the
* base rule) it appears twice: the comparison is a MULTISET, so the count
* is part of the freeze and a duplicated declaration cannot slip in.
* Two consequences worth knowing before they surprise anyone:
* · renaming a selector reads as one STALE + one new key. That is the
* ratchet working as designed — the debt moved and gets re-signed;
* · turning a literal into a raw global (`8px` → `var(--space-2)`) does
* the same, because the CLASS is part of the identity. It is a partial
* improvement, and re-signing it is what records the improvement.
*
* THE WIP TRACKS ARE IN — `palabras` (272 global + 87 literal) and
* `chronos` (198 global + 11 literal) are 568 of the 1088 keys, and they
* are registered like everyone else, for one reason: **debt is real
* wherever it lives**. `component-audit` excludes those tracks from its
* catalogue so WIP noise does not read as catalogue breakage — a rule about
* a COMPONENT'S completeness. This ledger answers a different question, the
* catalogue-wide one the floor test asks, and leaving a third of the debt
* out of it would make F3's gate («census 100 % adjudicated») a claim about
* two thirds of the catalogue. Their entries retire when their own track
* tokenizes, not by a commit of this axis.
* ⚠ ONE CAVEAT, MEASURED AND WRITTEN DOWN (2026-08-25, adversarial review
* of the debt-B axis): for `palabras` the census's classification is IN
1 month ago
* QUESTION. Its two recipes consume 117 distinct `--palabras-*` names (103
* with a `var(…, fallback)`, 14 without — all 117 under `--palabras-scheme-*`,
* recounted by the adversarial pass) and declare ZERO of them; they are not a theme
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
* contract but the live projection of the document's `scheme-style`,
* written per instance as `--palabras-scheme-*` by `schemeCssVars`
* (`palabras-scheme.ts`). That is a VALUE channel, another axis — so the
* 103 knobs the census scores `public` there are misclassified and its
* «22 % reach» is not partial theme reach. What that does NOT change is
* the 359 keys below: they are literals and raw globals either way. They
* are frozen AS THE CENSUS MEASURES THEM, which is all a ledger ever
* claims — never that the measurement has been adjudicated.
*
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
* WHAT IS NOT HERE — AND THE HOLE THAT CLOSED. The first baseline registered
* only `global` and `literal`; the census's third unreached class, a `private`
* that does NOT derive from a public (318 knobs), had no per-key ratchet and
* this header named that as a hole rather than hiding it. **It is closed.**
* The 318 were adjudicated key by key in two moves, and both are mechanical
* from here on:
*
* 1. the census learned to READ the two shapes the doctrine had already
* adjudicated — the THM-2 palette `bridge` (132) and the per-instance
* value `channel` (36), decided off the GENERATOR'S OUTPUT and not off a
* name (see `PALETTE_BRIDGE` in `theming-census.ts`);
* 2. the remaining RESIDUE of 150 was split by measurement: 84 knobs whose
* shape the doctrine blesses ONE LEVEL BELOW the knob carry a written
* `/* private: <reason> *​/` on the declaration that establishes the
* mechanism — class `exception`, the canon's existing signed-deviation
* class, not a new tier — and the other 66 are registered below like any
* other debt.
*
* So `private` is now a `DebtClass` beside `global` and `literal`: a knob
* reading a private that derives from nothing is new debt, named, and has the
* same three exits as the other two (tokenize it, sign it, register it) plus
* the same STALE detector on the way out. A `private · …` entry that gains its
* annotation, or whose private starts deriving from a public, reports STALE
* and its line goes in the commit that earned it.
*
* What remains outside the ledger is only what is outside the RATIO by
* design: `system`, `structural`, `bridge`, `channel` and `exception` — four
* measured classes and one written act, each documented where it is decided.
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
*
* Generated: `node --import tsx/esm scripts/theming-census.ts --debt --write`
* Checked: `node --import tsx/esm scripts/theming-census.ts --debt`
* Guarded: `src/uix/eidos/theming-reach-floor.test.ts` (catalogue) +
* `component-audit` R-5.1 / R-5.2 (per component).
*/
export const CENSUS_DEBT: Record<string, string[]> = {
accordion: [
"literal · accordion.css · [data-accordion-content][data-orientation='horizontal'] · inline-size",
"literal · accordion.css · [data-accordion-indicator] [data-svg='chevron'] · block-size",
"literal · accordion.css · [data-accordion-indicator] [data-svg='chevron'] · inline-size",
'literal · accordion.css · [data-accordion-trigger] · inline-size',
'literal · accordion.css · [data-accordion] · inline-size'
],
announce: ['global · announce.css · [data-announce-region] · font-family'],
'audio-player': [
"global · audio-player.css · [data-media-player][data-variant='bar'] [data-media-player-time-slider] · min-inline-size",
"global · audio-player.css · [data-media-player][data-variant='inline'] · padding",
'global · audio-player.css · [data-media-player][data-variant] [data-media-player-artist] · color',
'global · audio-player.css · [data-media-player][data-variant] [data-media-player-artist] · font-size',
'global · audio-player.css · [data-media-player][data-variant] [data-media-player-controls] · gap',
'global · audio-player.css · [data-media-player][data-variant] [data-media-player-live-indicator][data-live] · color',
'global · audio-player.css · [data-media-player][data-variant] [data-media-player-live-indicator][data-live] · font-size',
'global · audio-player.css · [data-media-player][data-variant] · padding'
],
aura: [
'global · aura.css · [data-aura-ring] · border-radius',
'literal · aura.css · [data-aura-indicator] canvas · block-size',
'literal · aura.css · [data-aura-indicator] canvas · inline-size',
'literal · aura.css · [data-aura-region] · block-size',
'literal · aura.css · [data-aura-region] · inline-size',
'literal · aura.css · [data-aura-ring] svg · block-size',
'literal · aura.css · [data-aura-ring] svg · inline-size'
],
'card-group': [
'literal · card-group.css · [data-card-group-item] · block-size',
'literal · card-group.css · [data-card-group] · inline-size'
],
carousel: [
'literal · carousel.css · [data-carousel][data-block] · inline-size',
"literal · carousel.css · [data-carousel][data-orientation='vertical'] [data-carousel-indicator-group] · inline-size",
"literal · carousel.css · [data-carousel][data-orientation='vertical'] [data-carousel-item-group] · block-size",
"literal · carousel.css · [data-carousel][data-orientation='vertical'] [data-carousel-item] · block-size",
"literal · carousel.css · [data-carousel][data-orientation='vertical'] [data-carousel-viewport] · block-size"
],
chart: [
'literal · chart.css · [data-chart-bar-list-bar] · block-size',
'literal · chart.css · [data-chart-bar-list] · inline-size',
'literal · chart.css · [data-chart-bar-segment-fill] · block-size',
'literal · chart.css · [data-chart-bar-segment] · inline-size',
'literal · chart.css · [data-chart-empty] · block-size',
'literal · chart.css · [data-chart-figure] · inline-size',
'literal · chart.css · [data-chart-frame] · inline-size',
'literal · chart.css · [data-chart-plot] · inline-size',
'literal · chart.css · [data-chart-tooltip] · min-inline-size',
'literal · chart.css · [data-chart] · inline-size'
],
chronos: [
'global · chronos.css · .chronos-agenda · gap',
'global · chronos.css · .chronos-agenda-date · color',
'global · chronos.css · .chronos-agenda-date · font-size',
'global · chronos.css · .chronos-agenda-date · font-weight',
'global · chronos.css · .chronos-agenda-dot · block-size',
'global · chronos.css · .chronos-agenda-dot · border-radius',
'global · chronos.css · .chronos-agenda-dot · inline-size',
'global · chronos.css · .chronos-agenda-empty · color',
'global · chronos.css · .chronos-agenda-group · gap',
'global · chronos.css · .chronos-agenda-item · background',
'global · chronos.css · .chronos-agenda-item · border',
'global · chronos.css · .chronos-agenda-item · border-radius',
'global · chronos.css · .chronos-agenda-item · color',
'global · chronos.css · .chronos-agenda-item · gap',
'global · chronos.css · .chronos-agenda-item · padding',
'global · chronos.css · .chronos-agenda-list · gap',
'global · chronos.css · .chronos-agenda-time · color',
'global · chronos.css · .chronos-agenda-time · font-size',
'global · chronos.css · .chronos-bands · gap',
'global · chronos.css · .chronos-chip-title · font-weight',
'global · chronos.css · .chronos-clock-endpoint · gap',
'global · chronos.css · .chronos-date-badge · border',
'global · chronos.css · .chronos-date-badge · border-radius',
'global · chronos.css · .chronos-date-badge · line-height',
'global · chronos.css · .chronos-date-badge · min-inline-size',
'global · chronos.css · .chronos-date-badge · padding',
'global · chronos.css · .chronos-date-badge-day · color',
'global · chronos.css · .chronos-date-badge-day · font-size',
'global · chronos.css · .chronos-date-badge-day · font-weight',
'global · chronos.css · .chronos-date-badge-month · color',
'global · chronos.css · .chronos-date-badge-month · font-size',
'global · chronos.css · .chronos-date-badge-month · font-weight',
'global · chronos.css · .chronos-day-cell-head · gap',
'global · chronos.css · .chronos-drag-preview · box-shadow',
'global · chronos.css · .chronos-editor-error · color',
'global · chronos.css · .chronos-editor-error · font-size',
'global · chronos.css · .chronos-editor-error · gap',
'global · chronos.css · .chronos-editor-fields · gap',
'global · chronos.css · .chronos-field · gap',
'global · chronos.css · .chronos-field-label · color',
'global · chronos.css · .chronos-field-label · font-family',
'global · chronos.css · .chronos-field-label · font-size',
'global · chronos.css · .chronos-field-label · font-weight',
'global · chronos.css · .chronos-legend · gap',
'global · chronos.css · .chronos-legend · padding-block-start',
'global · chronos.css · .chronos-legend-item · color',
'global · chronos.css · .chronos-legend-item · font-size',
'global · chronos.css · .chronos-legend-item · gap',
'global · chronos.css · .chronos-legend-swatch · block-size',
'global · chronos.css · .chronos-legend-swatch · border-radius',
'global · chronos.css · .chronos-legend-swatch · inline-size',
'global · chronos.css · .chronos-nav-group > :not(:first-child) · border-inline-start',
'global · chronos.css · .chronos-nav-group · border',
'global · chronos.css · .chronos-nav-group · border-radius',
'global · chronos.css · .chronos-overlay · gap',
'global · chronos.css · .chronos-pair, .chronos-band-row · gap',
'global · chronos.css · .chronos-pair-sep · color',
'global · chronos.css · .chronos-peek-allday [data-chronos-event-chip] · padding-block',
'global · chronos.css · .chronos-peek-allday · gap',
'global · chronos.css · .chronos-peek-body · border-block-start',
'global · chronos.css · .chronos-peek-body · padding-block-start',
'global · chronos.css · .chronos-peek-col · border-inline-start',
'global · chronos.css · .chronos-peek-daynum · color',
'global · chronos.css · .chronos-peek-daynum · font-size',
'global · chronos.css · .chronos-peek-daynum · font-weight',
'global · chronos.css · .chronos-peek-daynum · line-height',
'global · chronos.css · .chronos-peek-daynum[data-today] · background',
'global · chronos.css · .chronos-peek-daynum[data-today] · block-size',
'global · chronos.css · .chronos-peek-daynum[data-today] · border-radius',
'global · chronos.css · .chronos-peek-daynum[data-today] · color',
'global · chronos.css · .chronos-peek-daynum[data-today] · min-inline-size',
'global · chronos.css · .chronos-peek-empty · color',
'global · chronos.css · .chronos-peek-empty · font-size',
'global · chronos.css · .chronos-peek-empty · padding-block',
'global · chronos.css · .chronos-peek-fulldate · color',
'global · chronos.css · .chronos-peek-fulldate · font-size',
'global · chronos.css · .chronos-peek-head · border-block-end',
'global · chronos.css · .chronos-peek-head · gap',
'global · chronos.css · .chronos-peek-head · padding-block-end',
'global · chronos.css · .chronos-peek-hour · color',
'global · chronos.css · .chronos-peek-hour · font-size',
'global · chronos.css · .chronos-peek-resize · inline-size',
'global · chronos.css · .chronos-peek-resize::after · background',
'global · chronos.css · .chronos-peek-resize::after · block-size',
'global · chronos.css · .chronos-peek-resize::after · border-radius',
'global · chronos.css · .chronos-peek-resize::after · inline-size',
'global · chronos.css · .chronos-peek-resize:hover::after, .chronos-peek-resize:active::after · background',
'global · chronos.css · .chronos-peek-resize:hover::after, .chronos-peek-resize:active::after · block-size',
'global · chronos.css · .chronos-peek-slot · border-block-end',
'global · chronos.css · .chronos-peek-weekday · color',
'global · chronos.css · .chronos-peek-weekday · font-size',
'global · chronos.css · .chronos-peek-weekday · font-weight',
'global · chronos.css · .chronos-range · color',
'global · chronos.css · .chronos-range · font-size',
'global · chronos.css · .chronos-resize-handle · inline-size',
'global · chronos.css · .chronos-resize-handle-b · block-size',
'global · chronos.css · .chronos-swatch · block-size',
'global · chronos.css · .chronos-swatch · border',
'global · chronos.css · .chronos-swatch · border-radius',
'global · chronos.css · .chronos-swatch · inline-size',
'global · chronos.css · .chronos-swatch[data-selected] · box-shadow',
'global · chronos.css · .chronos-swatches · gap',
'global · chronos.css · .chronos-tg-alldaycol · border-inline-start',
'global · chronos.css · .chronos-tg-alldaycol · gap',
'global · chronos.css · .chronos-tg-alldaycol · padding',
'global · chronos.css · .chronos-tg-body · padding-block-start',
'global · chronos.css · .chronos-tg-col · border-inline-start',
'global · chronos.css · .chronos-tg-dayhead · border-inline-start',
'global · chronos.css · .chronos-tg-dayhead · color',
'global · chronos.css · .chronos-tg-dayhead · font-size',
'global · chronos.css · .chronos-tg-dayhead · gap',
'global · chronos.css · .chronos-tg-dayhead · padding-block',
'global · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · block-size',
'global · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · border-radius',
'global · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · color',
'global · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · font-weight',
'global · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · min-inline-size',
'global · chronos.css · .chronos-tg-head, .chronos-tg-allday · border-block-end',
'global · chronos.css · .chronos-tg-hour · color',
'global · chronos.css · .chronos-tg-hour · font-size',
'global · chronos.css · .chronos-tg-now::before · block-size',
'global · chronos.css · .chronos-tg-now::before · border-radius',
'global · chronos.css · .chronos-tg-now::before · inline-size',
'global · chronos.css · .chronos-tg-railcell · color',
'global · chronos.css · .chronos-tg-railcell · font-size',
'global · chronos.css · .chronos-tg-slot · border-block-end',
'global · chronos.css · .chronos-tg-sticky · background',
'global · chronos.css · .chronos-title-block · gap',
'global · chronos.css · .chronos-title-row · gap',
'global · chronos.css · .chronos-tooltip · gap',
'global · chronos.css · .chronos-tooltip-meta · color',
'global · chronos.css · .chronos-tooltip-meta · font-size',
'global · chronos.css · .chronos-type-option · gap',
'global · chronos.css · .chronos-type-swatch · block-size',
'global · chronos.css · .chronos-type-swatch · border-radius',
'global · chronos.css · .chronos-type-swatch · inline-size',
'global · chronos.css · .chronos-week-badge · border',
'global · chronos.css · .chronos-week-badge · border-radius',
'global · chronos.css · .chronos-week-badge · color',
'global · chronos.css · .chronos-week-badge · font-size',
'global · chronos.css · .chronos-week-badge · padding',
'global · chronos.css · .chronos-when [data-time-range-picker] · gap',
'global · chronos.css · .chronos-when · background',
'global · chronos.css · .chronos-when · border',
'global · chronos.css · .chronos-when · border-radius',
'global · chronos.css · .chronos-when · gap',
'global · chronos.css · .chronos-when · padding',
'global · chronos.css · .chronos-when-field · gap',
'global · chronos.css · .chronos-when-hint · color',
'global · chronos.css · .chronos-when-hint · font-size',
'global · chronos.css · .chronos-when-label · color',
'global · chronos.css · .chronos-when-label · font-size',
'global · chronos.css · .chronos-when-label · font-weight',
'global · chronos.css · .chronos-when-warn · color',
'global · chronos.css · .chronos-when-warn · font-size',
'global · chronos.css · .chronos-when-warn · gap',
'global · chronos.css · [data-chronos-day-cell] · border-inline-end',
'global · chronos.css · [data-chronos-day-cell] · padding',
'global · chronos.css · [data-chronos-day-cell][data-outside-month] [data-chronos-day-number] · color',
'global · chronos.css · [data-chronos-day-cell][data-today] [data-chronos-day-number] · border-radius',
'global · chronos.css · [data-chronos-day-cell][data-today] [data-chronos-day-number] · color',
'global · chronos.css · [data-chronos-day-cell][data-today] [data-chronos-day-number] · font-weight',
'global · chronos.css · [data-chronos-day-cell][data-weekend], [data-chronos-day-cell][data-outside-month] · background',
'global · chronos.css · [data-chronos-day-number] · block-size',
'global · chronos.css · [data-chronos-day-number] · color',
'global · chronos.css · [data-chronos-day-number] · font-size',
'global · chronos.css · [data-chronos-day-number] · min-inline-size',
'global · chronos.css · [data-chronos-day-peek] · gap',
'global · chronos.css · [data-chronos-event-chip] · border-radius',
'global · chronos.css · [data-chronos-event-chip] · font-size',
'global · chronos.css · [data-chronos-event-chip] · gap',
'global · chronos.css · [data-chronos-event-chip] · padding-inline',
'global · chronos.css · [data-chronos-event-chip][data-timed] · padding-block',
'global · chronos.css · [data-chronos-grid-head] · border-block-end',
'global · chronos.css · [data-chronos-grid-row]:not(:last-child) · border-block-end',
'global · chronos.css · [data-chronos-grid] · background',
'global · chronos.css · [data-chronos-grid] · border',
'global · chronos.css · [data-chronos-grid] · border-radius',
'global · chronos.css · [data-chronos-head-cell] · color',
'global · chronos.css · [data-chronos-head-cell] · font-size',
'global · chronos.css · [data-chronos-head-cell] · font-weight',
'global · chronos.css · [data-chronos-head-cell] · padding-block',
'global · chronos.css · [data-chronos-heading] · color',
'global · chronos.css · [data-chronos-heading] · font-size',
'global · chronos.css · [data-chronos-heading] · font-weight',
'global · chronos.css · [data-chronos-peek-panel] · min-block-size',
'global · chronos.css · [data-chronos-peek-panel] · min-inline-size',
'global · chronos.css · [data-chronos-time-view] · background',
'global · chronos.css · [data-chronos-time-view] · border',
'global · chronos.css · [data-chronos-time-view] · border-radius',
'global · chronos.css · [data-chronos-toolbar] · gap',
'global · chronos.css · [data-chronos] · color',
'global · chronos.css · [data-chronos] · font-family',
'global · chronos.css · [data-chronos] · font-size',
'global · chronos.css · [data-chronos] · gap',
'global · chronos.css · [data-chronos] · line-height',
"global · chronos.css · [data-chronos][data-size='lg'] · font-size",
"global · chronos.css · [data-chronos][data-size='sm'] · font-size",
'literal · chronos.css · .chronos-editor-fields [data-date-field-input], .chronos-editor-fields [data-select-trigger], .chronos-editor-fields [data-field-input] · inline-size',
'literal · chronos.css · .chronos-editor-fields [data-date-range-picker] · inline-size',
'literal · chronos.css · .chronos-editor-fields [data-field], .chronos-editor-fields [data-field-control], .chronos-editor-fields [data-date-field], .chronos-editor-fields [data-select] · inline-size',
'literal · chronos.css · .chronos-editor-fields · inline-size',
'literal · chronos.css · .chronos-field · inline-size',
'literal · chronos.css · .chronos-pair > [data-date-range-field-input], .chronos-when-field > [data-time-range-picker], .chronos-band-row > [data-time-range-picker] · inline-size',
'literal · chronos.css · .chronos-peek-scroll · inline-size',
'literal · chronos.css · .chronos-when [data-time-range-field-input] · inline-size',
'literal · chronos.css · [data-chronos-day-cell]:hover [data-chronos-day-add], [data-chronos-day-add]:focus-visible · opacity',
'literal · chronos.css · [data-chronos-event-chip][data-draft] · opacity',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · chronos.css · [data-chronos] · inline-size',
'private · chronos.css · .chronos-peek-hour · block-size',
'private · chronos.css · .chronos-peek-slot · block-size',
'private · chronos.css · .chronos-tg-dayhead[data-today] .chronos-tg-daynum · background',
'private · chronos.css · .chronos-tg-hour · block-size',
'private · chronos.css · .chronos-tg-now · border-block-start',
'private · chronos.css · .chronos-tg-now::before · background',
'private · chronos.css · .chronos-tg-slot · block-size',
'private · chronos.css · .chronos-tg-slot[data-dragover], .chronos-tg-alldaycol[data-dragover] · background',
'private · chronos.css · .chronos-tg-slot[data-dragover], .chronos-tg-alldaycol[data-dragover] · box-shadow',
'private · chronos.css · [data-chronos-day-cell][data-dragover] · background',
'private · chronos.css · [data-chronos-day-cell][data-dragover] · box-shadow',
'private · chronos.css · [data-chronos-day-cell][data-today] [data-chronos-day-number] · background',
'private · chronos.css · [data-chronos-event-chip][data-continues-after] · padding-inline-end',
'private · chronos.css · [data-chronos-event-chip][data-continues-before] · padding-inline-start'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
clipboard: ['global · clipboard.css · [data-clipboard-indicator] · font-family'],
'code-block': [
'global · code-block.css · [data-code-block-code] · font-family',
'global · code-block.css · [data-code-block-code] · font-weight',
'global · code-block.css · [data-code-block-code] · letter-spacing'
],
'color-field': [
'global · color-field.css · [data-color-field-swatch][data-color-swatch] · border-radius'
],
'color-picker': [
'global · color-picker.css · [data-color-picker-channel-slider][data-slider]::after · block-size',
'global · color-picker.css · [data-color-picker-channel-slider][data-slider]::after · border-radius',
'literal · color-picker.css · [data-color-picker-area-background]::after · background',
'literal · color-picker.css · [data-color-picker-area-background]::before · background',
'literal · color-picker.css · [data-color-picker-area-background]:dir(rtl)::before · background',
'literal · color-picker.css · [data-color-picker-area] · inline-size',
"literal · color-picker.css · [data-color-picker-area][data-x-channel='hue'][data-y-channel='brightness'] [data-color-picker-area-background]::after · background",
'literal · color-picker.css · [data-color-picker-channel-slider][data-slider] [data-slider-range] · background',
'literal · color-picker.css · [data-color-picker-channel-slider][data-slider] · inline-size',
'literal · color-picker.css · [data-color-picker-swatch-group] · inline-size',
'literal · color-picker.css · [data-color-picker-swatch-indicator] · block-size',
'literal · color-picker.css · [data-color-picker-swatch-indicator] · inline-size',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · color-picker.css · [data-color-picker] · inline-size',
'private · color-picker.css · [data-color-picker-label] · font-size',
'private · color-picker.css · [data-color-picker-trigger] · font-size',
'private · color-picker.css · [data-color-picker-value-text] · font-size'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
combobox: [
'global · combobox.css · [data-combobox-selected-tag-remove]:hover · background',
'global · combobox.css · [data-combobox-trigger]:hover:not(:disabled):not([data-disabled]) · background',
'global · combobox.css · [data-combobox-trigger]:hover:not(:disabled):not([data-disabled]) · color',
'literal · combobox.css · [data-combobox-control] · inline-size',
'literal · combobox.css · [data-combobox-input] · inline-size',
"literal · combobox.css · [data-combobox-item][data-state='checked'] [data-combobox-item-indicator] · opacity",
'literal · combobox.css · [data-combobox-selected-tag-remove]:focus-visible · opacity',
'literal · combobox.css · [data-combobox-selected-tag-remove]:hover · opacity',
'literal · combobox.css · [data-combobox] · inline-size'
],
command: ['literal · command.css · [data-command] · inline-size'],
'context-menu': [
'global · context-menu.css · [data-context-menu-content], [data-context-menu-sub-content] · font-family',
'literal · context-menu.css · [data-context-menu-separator] · block-size',
'literal · context-menu.css · [data-context-menu-sub-trigger]::after · block-size',
'literal · context-menu.css · [data-context-menu-sub-trigger]::after · inline-size'
],
cropper: ['global · cropper.css · [data-cropper-zoom-btn]:hover · background'],
'date-range-picker': [
'global · date-range-picker-time.css · .range-time · border-block-start',
'global · date-range-picker-time.css · .range-time · gap',
'global · date-range-picker-time.css · .range-time · padding-block-start',
'global · date-range-picker.css · [data-date-range-field-input] [data-date-range-picker-trigger] · block-size',
'global · date-range-picker.css · [data-date-range-field-input] [data-date-range-picker-trigger] · border-radius',
'global · date-range-picker.css · [data-date-range-field-input] [data-date-range-picker-trigger] · inline-size',
'global · date-range-picker.css · [data-date-range-field-input] [data-date-range-picker-trigger]:hover, [data-date-range-field-input] [data-date-range-picker-trigger]:focus-visible · background',
'global · date-range-picker.css · [data-date-range-field-input] [data-date-range-picker-trigger]:hover, [data-date-range-field-input] [data-date-range-picker-trigger]:focus-visible · color',
'global · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · color',
'global · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · font-family',
'global · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · gap',
'global · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · line-height',
'global · date-range-picker.css · [data-date-range-picker-trigger] · background',
'global · date-range-picker.css · [data-date-range-picker-trigger] · border',
'global · date-range-picker.css · [data-date-range-picker-trigger] · border-radius',
'global · date-range-picker.css · [data-date-range-picker-trigger][data-disabled], [data-date-range-picker-trigger]:disabled · opacity',
'global · date-range-picker.css · [data-date-range-picker-year-view-cell], [data-date-range-picker-month-view-cell] · border',
'global · date-range-picker.css · [data-date-range-picker-year-view-prev], [data-date-range-picker-year-view-next], [data-date-range-picker-month-view-prev], [data-date-range-picker-month-view-next] · border',
'global · date-range-picker.css · [data-date-range-picker][data-invalid] [data-field-control] · border-color',
'literal · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · inline-size',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · date-range-picker.css · [data-date-range-picker] · inline-size',
'private · date-range-picker.css · [data-date-range-picker-calendar][data-range-calendar] · font-size',
'private · date-range-picker.css · [data-date-range-picker-trigger] · block-size',
'private · date-range-picker.css · [data-date-range-picker-trigger] · inline-size',
'private · date-range-picker.css · [data-date-range-picker-trigger]:focus-visible · border-color',
'private · date-range-picker.css · [data-date-range-picker-trigger]:hover · background',
'private · date-range-picker.css · [data-date-range-picker-trigger]:hover · border-color',
'private · date-range-picker.css · [data-date-range-picker-trigger]:hover · color',
'private · date-range-picker.css · [data-date-range-picker] · font-size',
'private · date-range-picker.css · [data-date-range-picker] · gap'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
drawer: [
"global · drawer.css · [data-drawer-content][data-side='bottom'] · border-top",
"global · drawer.css · [data-drawer-content][data-side='left'] · border-right",
"global · drawer.css · [data-drawer-content][data-side='right'] · border-left",
"global · drawer.css · [data-drawer-content][data-side='top'] · border-bottom",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='bottom'][data-last-action='cancelled'], [data-drawer-content][data-state='closed'][data-side='bottom'][data-last-action='dismissed'], [data-drawer-content][data-state='closed'][data-side='bottom'][data-last-action='dismissed-outside'] · border-top-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='bottom'][data-last-action='failed'] · border-top-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='bottom'][data-last-action='saved'] · border-top-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='left'][data-last-action='cancelled'], [data-drawer-content][data-state='closed'][data-side='left'][data-last-action='dismissed'], [data-drawer-content][data-state='closed'][data-side='left'][data-last-action='dismissed-outside'] · border-right-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='left'][data-last-action='failed'] · border-right-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='left'][data-last-action='saved'] · border-right-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='right'][data-last-action='cancelled'], [data-drawer-content][data-state='closed'][data-side='right'][data-last-action='dismissed'], [data-drawer-content][data-state='closed'][data-side='right'][data-last-action='dismissed-outside'] · border-left-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='right'][data-last-action='failed'] · border-left-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='right'][data-last-action='saved'] · border-left-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='top'][data-last-action='cancelled'], [data-drawer-content][data-state='closed'][data-side='top'][data-last-action='dismissed'], [data-drawer-content][data-state='closed'][data-side='top'][data-last-action='dismissed-outside'] · border-bottom-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='top'][data-last-action='failed'] · border-bottom-color",
"global · drawer.css · [data-drawer-content][data-state='closed'][data-side='top'][data-last-action='saved'] · border-bottom-color",
"literal · drawer.css · [data-drawer-content][data-variant='persistent'][data-side='left'], [data-drawer-content][data-variant='persistent'][data-side='right'] · block-size",
"literal · drawer.css · [data-drawer-content][data-variant='persistent'][data-side='top'], [data-drawer-content][data-variant='persistent'][data-side='bottom'] · inline-size",
"literal · drawer.css · [data-drawer-content][data-variant='persistent'][data-size='full'] · height",
"literal · drawer.css · [data-drawer-content][data-variant='persistent'][data-size='full'] · width",
"literal · drawer.css · [data-drawer-overlay][data-variant='overlay'] · opacity"
],
'dropdown-menu': [
'global · dropdown-menu.css · [data-dropdown-menu-content], [data-dropdown-menu-sub-content] · font-family'
],
feed: [
'global · feed.css · [data-feed][data-busy] [data-feed-sentinel]::before · border-radius',
'literal · feed.css · [data-feed-root][data-block] · inline-size'
],
'field-langs': [
'global · field-langs.css · [data-field-langs-lang-option]::after · background',
'global · field-langs.css · [data-field-langs-lang-option]::after · border-radius',
'global · field-langs.css · [data-field-langs-lang-option][data-complete]::after · background',
'global · field-langs.css · [data-field-langs-lang-option][data-required]:not([data-complete])::after · background',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · border-radius',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · color',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · font-size',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · gap',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · padding',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option][data-active] · background',
'global · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option][data-active] · color',
'global · field-langs.css · [data-field-langs-menu] · gap',
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] + [data-field-langs-lang-option] · border-inline-start",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · color",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · font-size",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · gap",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · padding-inline",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option]:disabled · color",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option][data-active] · background",
"global · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option][data-active] · color",
"global · field-langs.css · [data-field-langs-switcher][data-mode='select'] [data-popover-trigger] · color",
"global · field-langs.css · [data-field-langs-switcher][data-mode='select'] [data-popover-trigger] · font-size",
"global · field-langs.css · [data-field-langs-switcher][data-mode='select'] [data-popover-trigger] · gap",
"global · field-langs.css · [data-field-langs-switcher][data-mode='select'] [data-popover-trigger] · padding-inline",
'global · field-langs.css · [data-field-langs-textarea] [data-field-langs-switcher] · background',
'global · field-langs.css · [data-field-langs-textarea] [data-field-langs-switcher] · border',
'global · field-langs.css · [data-field-langs-textarea] [data-field-langs-switcher] · border-radius',
"global · field-langs.css · [data-field-langs-textarea] [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · padding-block",
'global · field-langs.css · [data-field-langs-textarea] [data-textarea-input] · padding-block-start',
"global · field-langs.css · [data-field-langs][data-switcher-side='end'] [data-field-control] [data-field-langs-switcher][data-mode='segmented'] · border-inline-start",
"global · field-langs.css · [data-field-langs][data-switcher-side='start'] [data-field-control] [data-field-langs-switcher][data-mode='segmented'] · border-inline-end",
'literal · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · inline-size',
'literal · field-langs.css · [data-field-langs-menu] [data-field-langs-lang-option] · line-height',
'literal · field-langs.css · [data-field-langs-menu] · min-inline-size',
"literal · field-langs.css · [data-field-langs-switcher][data-mode='segmented'] [data-field-langs-lang-option] · line-height",
"literal · field-langs.css · [data-field-langs-switcher][data-mode='select'] [data-popover-trigger] · line-height",
'literal · field-langs.css · [data-field-langs] · inline-size'
],
'float-panel': [
'literal · float-panel.css · [data-float-panel-action], [data-float-panel-stage-trigger] · line-height',
'literal · float-panel.css · [data-float-panel-resize-grip] · background-image',
'literal · float-panel.css · [data-float-panel-resize-grip]:dir(rtl) · background-image',
'literal · float-panel.css · [data-float-panel-resize-grip]:focus-visible · opacity',
'literal · float-panel.css · [data-float-panel-resize-grip]:hover, [data-float-panel-resize-grip][data-grabbed] · opacity'
],
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
form: [
'private · form.css · [data-form-auto-fields-array-add], [data-form-auto-fields-array-remove] · background',
'private · form.css · [data-form-auto-fields-array-add], [data-form-auto-fields-array-remove] · color',
'private · form.css · [data-form-auto-fields-array-add]:not(:disabled):hover, [data-form-auto-fields-array-remove]:not(:disabled):hover · background'
],
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'gradient-builder': [
'global · gradient-builder.css · [data-gradient-builder-stop]:focus-visible · box-shadow',
'literal · gradient-builder.css · [data-gradient-builder-preset] · inline-size',
'literal · gradient-builder.css · [data-gradient-builder-stop-color-sliders] · inline-size',
'literal · gradient-builder.css · [data-gradient-builder] · inline-size'
],
'gradient-picker': [
'global · gradient-picker.css · .gradient-picker-trigger-swatch · background',
'global · gradient-picker.css · [data-gradient-picker-value-swatch] · background',
'literal · gradient-picker.css · [data-gradient-picker-preset] · inline-size'
],
'grid-list': [
'global · grid-list.css · [data-grid-list-row]:hover:not([data-disabled]), [data-grid-list-row][data-highlighted]:not([data-disabled]) · background',
'literal · grid-list.css · [data-grid-list][data-block] · inline-size'
],
kbd: [
'global · kbd.css · [data-kbd] · font-family',
'literal · kbd.css · [data-kbd] · line-height'
],
knob: [
'global · knob.css · [data-knob-value-field] [data-spin-field-input]:focus-visible · border-radius',
'literal · knob.css · [data-knob-control]:hover · filter',
'literal · knob.css · [data-knob-value-field] [data-spin-field-input] · line-height',
'literal · knob.css · [data-knob-value-text] · line-height'
],
link: [
'global · link.css · [data-link]:active, [data-link][data-variant]:active · opacity',
'literal · link.css · [data-link-sr-only] · height',
'literal · link.css · [data-link-sr-only] · width'
],
listbox: [
'global · listbox.css · [data-listbox-item][data-highlighted]:not([data-disabled]) · background',
'literal · listbox.css · [data-listbox][data-block] · inline-size'
],
'media-player': [
'literal · media-player.css · [data-media-player-media] · height',
'literal · media-player.css · [data-media-player-media] · width',
'literal · media-player.css · [data-media-player-poster] · height',
'literal · media-player.css · [data-media-player-poster] · width',
'literal · media-player.css · [data-media-player-rate-float], [data-media-player-caption-float] · inline-size',
'literal · media-player.css · [data-media-player] · width'
],
'menu-dial': [
'global · menu-dial.css · .menu-dial-glyph::before, .menu-dial-glyph::after · border-radius',
'literal · menu-dial.css · .menu-dial-glyph · block-size',
'literal · menu-dial.css · .menu-dial-glyph · inline-size',
'literal · menu-dial.css · .menu-dial-glyph::before, .menu-dial-glyph::after · block-size',
"literal · menu-dial.css · [data-menu-dial-list][data-state='open'] .menu-dial-action · opacity"
],
menubar: [
'global · menubar.css · [data-menubar-panel] · font-family',
'global · menubar.css · [data-menubar-panel] · line-height',
'global · menubar.css · [data-menubar-trigger]:hover:not([data-disabled]), [data-menubar-trigger][data-highlighted]:not([data-disabled]) · background'
],
meter: [
"global · meter.css · [data-meter][data-shape='circular'] [data-meter-indicator]::before · border-radius",
"global · meter.css · [data-meter][data-shape='circular'] · border-radius"
],
metrics: [
'literal · metrics.css · [data-metrics-actions] · inline-size',
'literal · metrics.css · [data-metrics-chart] · inline-size',
'literal · metrics.css · [data-metrics-gauge-value] · line-height',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · metrics.css · [data-metrics-progress] · inline-size',
"private · metrics.css · [data-metrics-icon][data-variant='solid'] · background",
"private · metrics.css · [data-metrics-icon][data-variant='solid'] · color"
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
mockup: [
'global · mockup.css · [data-box][data-mockup] [data-mockup-bar] · background',
'global · mockup.css · [data-box][data-mockup] [data-mockup-bar] · gap',
'global · mockup.css · [data-box][data-mockup] [data-mockup-bar] · padding-inline',
'global · mockup.css · [data-box][data-mockup] [data-mockup-dot] · background',
'global · mockup.css · [data-box][data-mockup] [data-mockup-dot] · border-radius',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · background',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · border-radius',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · color',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · font-size',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · padding-block',
'global · mockup.css · [data-box][data-mockup] [data-mockup-url] · padding-inline',
'global · mockup.css · [data-box][data-mockup] · inline-size',
"global · mockup.css · [data-box][data-mockup][data-chrome='phone'] [data-mockup-screen] · background",
'literal · mockup.css · [data-box][data-mockup] [data-mockup-dot] · block-size',
'literal · mockup.css · [data-box][data-mockup] [data-mockup-dot] · inline-size',
'literal · mockup.css · [data-box][data-mockup] [data-mockup-screen] > :where(img, video, picture, svg) · inline-size',
"literal · mockup.css · [data-box][data-mockup][data-chrome='phone']::before · block-size",
"literal · mockup.css · [data-box][data-mockup][data-chrome='phone']::before · inline-size"
],
'month-grid': [
'literal · month-grid.css · [data-month-grid-grid] · inline-size',
'literal · month-grid.css · [data-month-grid-header] · inline-size',
'literal · month-grid.css · [data-month-grid] · inline-size',
'literal · month-grid.css · [data-popover-content] [data-month-grid-grid] · inline-size',
'literal · month-grid.css · [data-popover-content] [data-month-grid] · inline-size'
],
'natural-time-picker': [
'global · natural-time-picker.css · [data-natural-time-picker-panel] · background',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · border',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · border-radius',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · box-shadow',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · color',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · min-inline-size',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · padding-block',
'global · natural-time-picker.css · [data-natural-time-picker-panel] · padding-inline',
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='lg'] · min-inline-size",
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='lg'] · padding-block",
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='lg'] · padding-inline",
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='sm'] · min-inline-size",
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='sm'] · padding-block",
"global · natural-time-picker.css · [data-natural-time-picker-panel][data-size='sm'] · padding-inline",
'literal · natural-time-picker.css · [data-natural-time-picker-band] · inline-size',
'literal · natural-time-picker.css · [data-natural-time-picker-meridiem] · line-height',
'literal · natural-time-picker.css · [data-natural-time-picker-panel] [data-natural-time-picker-periods]:not([data-icon-only]) [data-button] · inline-size',
'literal · natural-time-picker.css · [data-natural-time-picker-panel] · inline-size',
'literal · natural-time-picker.css · [data-natural-time-picker-tick] · line-height',
'literal · natural-time-picker.css · [data-natural-time-picker-time] · line-height'
],
'nav-tree': [
'literal · nav-tree.css · [data-nav-tree-link], [data-nav-tree-trigger] · inline-size'
],
'onion-menu': [
'global · onion-menu.css · .onion-menu-trigger · background',
'literal · onion-menu.css · .onion-menu-icon :global(svg) · block-size',
'literal · onion-menu.css · .onion-menu-icon :global(svg) · inline-size'
],
palabras: [
'global · palabras-chrome.css · [data-palabras-appearance][data-palabras-appearance], [data-palabras-appearance][data-palabras-appearance] * · font-family',
'global · palabras-chrome.css · [data-palabras-border-caption] · color',
'global · palabras-chrome.css · [data-palabras-border-caption] · font-size',
'global · palabras-chrome.css · [data-palabras-border-field] · column-gap',
'global · palabras-chrome.css · [data-palabras-border-field][data-stack] · row-gap',
'global · palabras-chrome.css · [data-palabras-border-pair] · column-gap',
'global · palabras-chrome.css · [data-palabras-border-row] · column-gap',
'global · palabras-chrome.css · [data-palabras-border] · gap',
'global · palabras-chrome.css · [data-palabras-bubble-divider] · background',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · background',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · border',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · border-radius',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · color',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · font-size',
'global · palabras-chrome.css · [data-palabras-bubble-link] input · padding',
'global · palabras-chrome.css · [data-palabras-bubble-link] input:focus · background',
'global · palabras-chrome.css · [data-palabras-bubble-link] · gap',
'global · palabras-chrome.css · [data-palabras-bubble-typo] · gap',
'global · palabras-chrome.css · [data-palabras-bubble] [data-active] · background',
'global · palabras-chrome.css · [data-palabras-bubble] [data-active] · color',
'global · palabras-chrome.css · [data-palabras-bubble] · background',
'global · palabras-chrome.css · [data-palabras-bubble] · border',
'global · palabras-chrome.css · [data-palabras-bubble] · border-radius',
'global · palabras-chrome.css · [data-palabras-bubble] · box-shadow',
'global · palabras-chrome.css · [data-palabras-bubble] · font-family',
'global · palabras-chrome.css · [data-palabras-bubble] · gap',
'global · palabras-chrome.css · [data-palabras-bubble] · padding',
'global · palabras-chrome.css · [data-palabras-canvas] [data-palabras-block-drop-line] · background',
'global · palabras-chrome.css · [data-palabras-col-resize]::before · background',
'global · palabras-chrome.css · [data-palabras-col-resize]::before · border-radius',
'global · palabras-chrome.css · [data-palabras-col-resize]:hover::before, [data-palabras-col-resize][data-dragging]::before · background',
'global · palabras-chrome.css · [data-palabras-delete] · color',
'global · palabras-chrome.css · [data-palabras-delete]:hover:not(:disabled) · color',
'global · palabras-chrome.css · [data-palabras-doc] [data-button][data-palabras-handle]:hover:not([data-disabled]), [data-palabras-canvas] [data-palabras-column-inserter] [data-button][data-palabras-column-inserter-button]:hover:not([data-disabled]) · background',
'global · palabras-chrome.css · [data-palabras-doc] [data-button][data-palabras-handle]:hover:not([data-disabled]), [data-palabras-canvas] [data-palabras-column-inserter] [data-button][data-palabras-column-inserter-button]:hover:not([data-disabled]) · border-color',
'global · palabras-chrome.css · [data-palabras-doc] [data-button][data-palabras-handle]:hover:not([data-disabled]), [data-palabras-canvas] [data-palabras-column-inserter] [data-button][data-palabras-column-inserter-button]:hover:not([data-disabled]) · color',
'global · palabras-chrome.css · [data-palabras-doc] [data-palabras-handle], [data-palabras-canvas] [data-palabras-column-inserter] [data-palabras-column-inserter-button] · background',
'global · palabras-chrome.css · [data-palabras-doc] [data-palabras-handle], [data-palabras-canvas] [data-palabras-column-inserter] [data-palabras-column-inserter-button] · border',
'global · palabras-chrome.css · [data-palabras-doc] [data-palabras-handle], [data-palabras-canvas] [data-palabras-column-inserter] [data-palabras-column-inserter-button] · border-radius',
'global · palabras-chrome.css · [data-palabras-doc] [data-palabras-handle], [data-palabras-canvas] [data-palabras-column-inserter] [data-palabras-column-inserter-button] · box-shadow',
'global · palabras-chrome.css · [data-palabras-doc] [data-palabras-handle], [data-palabras-canvas] [data-palabras-column-inserter] [data-palabras-column-inserter-button] · color',
'global · palabras-chrome.css · [data-palabras-export-actions] · gap',
'global · palabras-chrome.css · [data-palabras-export-foot] · border-block-start',
'global · palabras-chrome.css · [data-palabras-export-foot] · gap',
'global · palabras-chrome.css · [data-palabras-export-foot] · padding',
'global · palabras-chrome.css · [data-palabras-export-label] · color',
'global · palabras-chrome.css · [data-palabras-export-label] · font-size',
'global · palabras-chrome.css · [data-palabras-export-label] · gap',
'global · palabras-chrome.css · [data-palabras-field-label] · color',
'global · palabras-chrome.css · [data-palabras-field-label] · font-size',
'global · palabras-chrome.css · [data-palabras-field-label] · line-height',
'global · palabras-chrome.css · [data-palabras-field] · column-gap',
'global · palabras-chrome.css · [data-palabras-field] · row-gap',
'global · palabras-chrome.css · [data-palabras-field][data-slider] [data-palabras-slider-head] · gap',
'global · palabras-chrome.css · [data-palabras-field][data-slider] [data-palabras-slider-value] · color',
'global · palabras-chrome.css · [data-palabras-field][data-slider] [data-palabras-slider-value] · font-size',
'global · palabras-chrome.css · [data-palabras-field][data-slider] · row-gap',
'global · palabras-chrome.css · [data-palabras-find-count] · color',
'global · palabras-chrome.css · [data-palabras-find-count] · font-size',
'global · palabras-chrome.css · [data-palabras-find-icon] · color',
'global · palabras-chrome.css · [data-palabras-find-icon] · padding-inline',
'global · palabras-chrome.css · [data-palabras-find-input] · background',
'global · palabras-chrome.css · [data-palabras-find-input] · border',
'global · palabras-chrome.css · [data-palabras-find-input] · border-radius',
'global · palabras-chrome.css · [data-palabras-find-input] · color',
'global · palabras-chrome.css · [data-palabras-find-input] · font-size',
'global · palabras-chrome.css · [data-palabras-find-input] · padding',
'global · palabras-chrome.css · [data-palabras-find-input]:focus · background',
'global · palabras-chrome.css · [data-palabras-find-row] · gap',
'global · palabras-chrome.css · [data-palabras-find-sep] · background',
'global · palabras-chrome.css · [data-palabras-find] [data-active] · background',
'global · palabras-chrome.css · [data-palabras-find] [data-active] · color',
'global · palabras-chrome.css · [data-palabras-find] · background',
'global · palabras-chrome.css · [data-palabras-find] · border',
'global · palabras-chrome.css · [data-palabras-find] · border-radius',
'global · palabras-chrome.css · [data-palabras-find] · box-shadow',
'global · palabras-chrome.css · [data-palabras-find] · font-family',
'global · palabras-chrome.css · [data-palabras-find] · gap',
'global · palabras-chrome.css · [data-palabras-find] · padding',
'global · palabras-chrome.css · [data-palabras-find][data-invalid] [data-palabras-find-row]:first-child [data-palabras-find-input] · border-color',
"global · palabras-chrome.css · [data-palabras-handle-menu] [role='menuitem'] · gap",
'global · palabras-chrome.css · [data-palabras-help] kbd · background',
'global · palabras-chrome.css · [data-palabras-help] kbd · border',
'global · palabras-chrome.css · [data-palabras-help] kbd · border-radius',
'global · palabras-chrome.css · [data-palabras-help] kbd · padding-inline',
'global · palabras-chrome.css · [data-palabras-help] · color',
'global · palabras-chrome.css · [data-palabras-help] · font-size',
'global · palabras-chrome.css · [data-palabras-inspector-fields] · gap',
'global · palabras-chrome.css · [data-palabras-inspector] * · font-family',
'global · palabras-chrome.css · [data-palabras-inspector] :is([data-field-control], [data-css-field], [data-textarea-input]), [data-palabras-inspector] [data-select-trigger] · background',
'global · palabras-chrome.css · [data-palabras-inspector] :is([data-field-control], [data-css-field], [data-textarea-input]), [data-palabras-inspector] [data-select-trigger] · border-radius',
'global · palabras-chrome.css · [data-palabras-inspector] :is([data-textarea-input], [data-field] input) · font-size',
'global · palabras-chrome.css · [data-palabras-inspector] [data-field-control]:focus-within, [data-palabras-inspector] [data-css-field]:focus-within, [data-palabras-inspector] [data-textarea][data-focused] [data-textarea-input], [data-palabras-inspector] [data-select-trigger]:focus-visible · background',
'global · palabras-chrome.css · [data-palabras-inspector] [data-palabras-adjustments] · column-gap',
'global · palabras-chrome.css · [data-palabras-inspector] [data-palabras-adjustments] · row-gap',
'global · palabras-chrome.css · [data-palabras-inspector] [data-palabras-typography] · gap',
'global · palabras-chrome.css · [data-palabras-inspector] · font-family',
'global · palabras-chrome.css · [data-palabras-inspector] · inline-size',
'global · palabras-chrome.css · [data-palabras-inspector] · padding',
'global · palabras-chrome.css · [data-palabras-lang-menu-content] · padding',
'global · palabras-chrome.css · [data-palabras-lang-menu] [data-palabras-lang-option] · min-block-size',
'global · palabras-chrome.css · [data-palabras-lang-menu] · gap',
'global · palabras-chrome.css · [data-palabras-lang-option] · border-radius',
'global · palabras-chrome.css · [data-palabras-lang-option] · color',
'global · palabras-chrome.css · [data-palabras-lang-option] · font-size',
'global · palabras-chrome.css · [data-palabras-lang-option] · gap',
'global · palabras-chrome.css · [data-palabras-lang-option] · min-block-size',
'global · palabras-chrome.css · [data-palabras-lang-option] · padding-inline',
'global · palabras-chrome.css · [data-palabras-lang-option]::before · border',
'global · palabras-chrome.css · [data-palabras-lang-option]::before · border-radius',
'global · palabras-chrome.css · [data-palabras-lang-option]:hover:not([data-active]) · color',
'global · palabras-chrome.css · [data-palabras-lang-option][data-complete]::before · background',
'global · palabras-chrome.css · [data-palabras-lang-option][data-complete]::before · border-color',
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] [data-palabras-lang-option][data-active] · background",
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] [data-palabras-lang-option][data-active] · color",
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] · background",
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] · border-radius",
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] · gap",
"global · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] · padding",
'global · palabras-chrome.css · [data-palabras-lang-trigger] · background',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · border',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · border-radius',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · color',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · font-size',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · gap',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · min-block-size',
'global · palabras-chrome.css · [data-palabras-lang-trigger] · padding-inline',
'global · palabras-chrome.css · [data-palabras-menubar-crumbs] [data-breadcrumb-link] · font-size',
'global · palabras-chrome.css · [data-palabras-menubar-crumbs] · padding-inline',
'global · palabras-chrome.css · [data-palabras-menubar] · gap',
'global · palabras-chrome.css · [data-palabras-outline-item] · border-radius',
'global · palabras-chrome.css · [data-palabras-outline-item] · color',
'global · palabras-chrome.css · [data-palabras-outline-item] · font-size',
'global · palabras-chrome.css · [data-palabras-outline-item] · padding',
'global · palabras-chrome.css · [data-palabras-outline-item]:hover · background',
"global · palabras-chrome.css · [data-palabras-outline-item][data-level='2'] · padding-inline-start",
"global · palabras-chrome.css · [data-palabras-outline-item][data-level='3'] · padding-inline-start",
"global · palabras-chrome.css · [data-palabras-outline-item][data-level='4'], [data-palabras-outline-item][data-level='5'], [data-palabras-outline-item][data-level='6'] · padding-inline-start",
'global · palabras-chrome.css · [data-palabras-outline-trigger] · border-radius',
'global · palabras-chrome.css · [data-palabras-outline-trigger] · color',
'global · palabras-chrome.css · [data-palabras-outline-trigger] · font-size',
'global · palabras-chrome.css · [data-palabras-outline-trigger] · gap',
'global · palabras-chrome.css · [data-palabras-outline-trigger] · padding',
'global · palabras-chrome.css · [data-palabras-outline-trigger]:hover:not(:disabled) · background',
'global · palabras-chrome.css · [data-palabras-panel-crumb-sep] · color',
'global · palabras-chrome.css · [data-palabras-panel-crumb][data-current] · color',
'global · palabras-chrome.css · [data-palabras-panel-crumb][data-current] · font-weight',
'global · palabras-chrome.css · [data-palabras-panel-crumbs] · color',
'global · palabras-chrome.css · [data-palabras-panel-crumbs] · column-gap',
'global · palabras-chrome.css · [data-palabras-panel-crumbs] · font-size',
'global · palabras-chrome.css · [data-palabras-panel-crumbs] · padding',
'global · palabras-chrome.css · [data-palabras-panel-empty] · color',
'global · palabras-chrome.css · [data-palabras-panel-empty] · font-size',
'global · palabras-chrome.css · [data-palabras-panel-empty] · padding',
'global · palabras-chrome.css · [data-palabras-panel-foot] · background',
'global · palabras-chrome.css · [data-palabras-panel-foot] · border-block-start',
'global · palabras-chrome.css · [data-palabras-panel-foot] · color',
'global · palabras-chrome.css · [data-palabras-panel-foot] · font-size',
'global · palabras-chrome.css · [data-palabras-panel-foot] · gap',
'global · palabras-chrome.css · [data-palabras-panel-foot] · padding',
'global · palabras-chrome.css · [data-palabras-panel-head-main] · gap',
'global · palabras-chrome.css · [data-palabras-panel-icon] · background',
'global · palabras-chrome.css · [data-palabras-panel-icon] · block-size',
'global · palabras-chrome.css · [data-palabras-panel-icon] · border-radius',
'global · palabras-chrome.css · [data-palabras-panel-icon] · color',
'global · palabras-chrome.css · [data-palabras-panel-icon] · inline-size',
'global · palabras-chrome.css · [data-palabras-panel] :is([data-field-control], [data-css-field], [data-textarea-input]), [data-palabras-panel] [data-select-trigger], [data-palabras-text], [data-palabras-spacing-cell] · background',
'global · palabras-chrome.css · [data-palabras-panel] :is([data-field-control], [data-css-field], [data-textarea-input]), [data-palabras-panel] [data-select-trigger], [data-palabras-text], [data-palabras-spacing-cell] · border-radius',
'global · palabras-chrome.css · [data-palabras-panel] :is([data-textarea-input], [data-field] input) · font-size',
'global · palabras-chrome.css · [data-palabras-panel] [data-field-control]:focus-within, [data-palabras-panel] [data-css-field]:focus-within, [data-palabras-panel] [data-textarea][data-focused] [data-textarea-input], [data-palabras-panel] [data-select-trigger]:focus-visible, [data-palabras-text]:focus-visible, [data-palabras-spacing-cell]:focus-visible · background',
'global · palabras-chrome.css · [data-palabras-panel] [data-float-panel-header], [data-palabras-panel] [data-palabras-dock-header] · padding',
'global · palabras-chrome.css · [data-palabras-panel] [data-float-panel-title], [data-palabras-panel] [data-drawer-title], [data-palabras-panel] [data-palabras-menu-title] · color',
'global · palabras-chrome.css · [data-palabras-panel] [data-float-panel-title], [data-palabras-panel] [data-drawer-title], [data-palabras-panel] [data-palabras-menu-title] · font-size',
'global · palabras-chrome.css · [data-palabras-panel] [data-float-panel-title], [data-palabras-panel] [data-drawer-title], [data-palabras-panel] [data-palabras-menu-title] · font-weight',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-content] · padding',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-item] + [data-accordion-item] · border-block-start',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-trigger] · color',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-trigger] · font-size',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-trigger] · font-weight',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-trigger] · padding-block',
"global · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-trigger]:hover, [data-palabras-panel] [data-palabras-design] [data-accordion-trigger][data-state='open'], [data-palabras-panel] [data-palabras-design] [data-accordion-trigger][aria-expanded='true'] · color",
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-doc-body] · border-block-start',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-doc-body] · padding-block',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-doc-body] · padding-inline',
'global · palabras-chrome.css · [data-palabras-panel] [data-palabras-dock-controls] · gap',
'global · palabras-chrome.css · [data-palabras-panel] [data-scroll-area]:has([data-scroll-area-scrollbar]) [data-scroll-area-viewport] · padding-inline-end',
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-docked][data-drawer-content] · background',
"global · palabras-chrome.css · [data-palabras-panel][data-palabras-docked][data-side='left'] · border-inline-end",
"global · palabras-chrome.css · [data-palabras-panel][data-palabras-docked][data-side='right'] · border-inline-start",
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-panel], [data-palabras-panel][data-palabras-panel] * · font-family',
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-panel]:not([data-palabras-docked]):not([data-menubar-panel]) · background',
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-panel]:not([data-palabras-docked]):not([data-menubar-panel]) · border',
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-panel]:not([data-palabras-docked]):not([data-menubar-panel]) · border-radius',
'global · palabras-chrome.css · [data-palabras-panel][data-palabras-panel]:not([data-palabras-docked]):not([data-menubar-panel]) · box-shadow',
'global · palabras-chrome.css · [data-palabras-section-reset] · color',
'global · palabras-chrome.css · [data-palabras-select-text][data-empty] · color',
'global · palabras-chrome.css · [data-palabras-slash-desc] · color',
'global · palabras-chrome.css · [data-palabras-slash-desc] · font-size',
'global · palabras-chrome.css · [data-palabras-slash-desc] · padding-inline-start',
'global · palabras-chrome.css · [data-palabras-slash-icon] · color',
'global · palabras-chrome.css · [data-palabras-slash-item] · border-radius',
'global · palabras-chrome.css · [data-palabras-slash-item] · color',
'global · palabras-chrome.css · [data-palabras-slash-item] · font-size',
'global · palabras-chrome.css · [data-palabras-slash-item] · gap',
'global · palabras-chrome.css · [data-palabras-slash-item] · padding',
'global · palabras-chrome.css · [data-palabras-slash-item][data-active] · background',
'global · palabras-chrome.css · [data-palabras-slash-label] · font-weight',
'global · palabras-chrome.css · [data-palabras-slash] · background',
'global · palabras-chrome.css · [data-palabras-slash] · border',
'global · palabras-chrome.css · [data-palabras-slash] · border-radius',
'global · palabras-chrome.css · [data-palabras-slash] · box-shadow',
'global · palabras-chrome.css · [data-palabras-slash] · font-family',
'global · palabras-chrome.css · [data-palabras-slash] · padding',
'global · palabras-chrome.css · [data-palabras-spacing-cell] :is(input, [data-field-input]) · font-size',
'global · palabras-chrome.css · [data-palabras-spacing-cell] :is(input, [data-field-input]) · padding',
'global · palabras-chrome.css · [data-palabras-spacing-head] · gap',
'global · palabras-chrome.css · [data-palabras-spacing-head] · min-block-size',
'global · palabras-chrome.css · [data-palabras-spacing-link] · color',
'global · palabras-chrome.css · [data-palabras-spacing-side] · color',
'global · palabras-chrome.css · [data-palabras-spacing-side] · font-size',
'global · palabras-chrome.css · [data-palabras-spacing] · column-gap',
'global · palabras-chrome.css · [data-palabras-spacing] · row-gap',
'global · palabras-chrome.css · [data-palabras-src-group] · gap',
'global · palabras-chrome.css · [data-palabras-status] · color',
'global · palabras-chrome.css · [data-palabras-status] · font-size',
'global · palabras-chrome.css · [data-palabras-status] · gap',
'global · palabras-chrome.css · [data-palabras-status] · padding-block',
'global · palabras-chrome.css · [data-palabras-tab-empty] · color',
'global · palabras-chrome.css · [data-palabras-tab-empty] · font-size',
'global · palabras-chrome.css · [data-palabras-tab-empty] · padding',
'global · palabras-chrome.css · [data-palabras-tabs] [data-tabs-content] > [data-scroll-area] > [data-scroll-area-viewport] · padding-block',
'global · palabras-chrome.css · [data-palabras-tabs] [data-tabs-content] · border-block-start',
'global · palabras-chrome.css · [data-palabras-tabs] · padding-inline',
'global · palabras-chrome.css · [data-palabras-text] · color',
'global · palabras-chrome.css · [data-palabras-text] · font-family',
'global · palabras-chrome.css · [data-palabras-text] · font-size',
'global · palabras-chrome.css · [data-palabras-text] · padding',
'global · palabras-chrome.css · [data-palabras-text][data-invalid] · border-color',
'global · palabras-chrome.css · [data-palabras-type-pair] · column-gap',
'global · palabras-chrome.css · [data-palabras-type-style] · gap',
'global · palabras-chrome.css · [data-palabras-typography] · gap',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item] · border-radius',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item] · color',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item]:hover · color',
"global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item][data-state='on'] · background",
"global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item][data-state='on'] · box-shadow",
"global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] [data-toggle-group-item][data-state='on'] · color",
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] · background',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] · border-radius',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] · gap',
'global · palabras-chrome.css · [data-toggle-group][data-palabras-segmented] · padding',
'global · palabras-chrome.css · button[data-palabras-panel-crumb]:hover · color',
'global · palabras.css · [data-palabras-doc] [data-palabras-active] · border-radius',
'global · palabras.css · [data-palabras-doc] [data-palabras-active] · outline',
"global · palabras.css · [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column] · border",
"global · palabras.css · [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column] · border-radius",
"global · palabras.css · [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column] · padding",
"global · palabras.css · [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column]:hover, [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column]:focus-within · border-color",
'global · palabras.css · [data-palabras-doc] [data-palabras-content] pre[data-palabras-code-language]::before · font-family',
'global · palabras.css · [data-palabras-doc] [data-palabras-content] pre[data-palabras-code-language]::before · font-size',
'global · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · background',
'global · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · border',
'global · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · border-radius',
'global · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · color',
'global · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · padding',
'global · palabras.css · [data-palabras-doc] [data-palabras-untranslated] · border-radius',
'global · palabras.css · [data-palabras-doc] [data-palabras-untranslated] · outline',
"global · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'] figcaption · color",
"global · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'] figcaption · font-size",
"global · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'] img · border-radius",
"global · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-fit] :where(img, [data-palabras-image-tile]) · background",
"global · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-fit] :where(img, [data-palabras-image-tile]) · border-radius",
'literal · palabras-chrome.css · [data-menubar-panel][data-palabras-inspector-surface] · inline-size',
'literal · palabras-chrome.css · [data-palabras-appearance] [data-number-field] · inline-size',
'literal · palabras-chrome.css · [data-palabras-border] · inline-size',
'literal · palabras-chrome.css · [data-palabras-bubble-divider] · block-size',
'literal · palabras-chrome.css · [data-palabras-bubble-divider] · inline-size',
'literal · palabras-chrome.css · [data-palabras-bubble-family] · inline-size',
'literal · palabras-chrome.css · [data-palabras-bubble-link] input · inline-size',
'literal · palabras-chrome.css · [data-palabras-bubble-size] [data-number-field], [data-palabras-bubble-family] [data-select-trigger] · inline-size',
'literal · palabras-chrome.css · [data-palabras-bubble-size] · inline-size',
'literal · palabras-chrome.css · [data-palabras-canvas] [data-palabras-block-drop-line] · block-size',
'literal · palabras-chrome.css · [data-palabras-canvas] [data-palabras-block-drop-line] · border-radius',
'literal · palabras-chrome.css · [data-palabras-canvas] [data-palabras-column-inserter][data-visible] · opacity',
'literal · palabras-chrome.css · [data-palabras-col-resize] · inline-size',
'literal · palabras-chrome.css · [data-palabras-doc-card] · min-block-size',
'literal · palabras-chrome.css · [data-palabras-field] [data-css-field] · inline-size',
'literal · palabras-chrome.css · [data-palabras-field][data-disabled] · opacity',
'literal · palabras-chrome.css · [data-palabras-field][data-stack] > [data-toggle-group][data-palabras-segmented] [data-toggle-group-item] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-find-count] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-find-input] · inline-size',
'literal · palabras-chrome.css · [data-palabras-find-sep] · block-size',
'literal · palabras-chrome.css · [data-palabras-find-sep] · inline-size',
"literal · palabras-chrome.css · [data-palabras-handle-menu] [role='menuitem'] svg · block-size",
"literal · palabras-chrome.css · [data-palabras-handle-menu] [role='menuitem'] svg · inline-size",
"literal · palabras-chrome.css · [data-palabras-handle-menu] [role='menuitem'] svg · opacity",
'literal · palabras-chrome.css · [data-palabras-insert-grid] · gap',
'literal · palabras-chrome.css · [data-palabras-inspector] [data-css-field], [data-palabras-inspector] [data-select-trigger] · inline-size',
'literal · palabras-chrome.css · [data-palabras-lang-menu] [data-palabras-lang-option] · inline-size',
'literal · palabras-chrome.css · [data-palabras-lang-menu] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-lang-option] · font-weight',
'literal · palabras-chrome.css · [data-palabras-lang-option]::before · block-size',
'literal · palabras-chrome.css · [data-palabras-lang-option]::before · inline-size',
"literal · palabras-chrome.css · [data-palabras-lang-switcher][data-mode='segmented'] [data-palabras-lang-option][data-active] · font-weight",
'literal · palabras-chrome.css · [data-palabras-live] · block-size',
'literal · palabras-chrome.css · [data-palabras-live] · inline-size',
'literal · palabras-chrome.css · [data-palabras-menubar] · inline-size',
'literal · palabras-chrome.css · [data-palabras-outline-item] · inline-size',
'literal · palabras-chrome.css · [data-palabras-outline-trigger] svg · block-size',
'literal · palabras-chrome.css · [data-palabras-outline-trigger] svg · inline-size',
'literal · palabras-chrome.css · [data-palabras-outline-trigger]:disabled · opacity',
'literal · palabras-chrome.css · [data-palabras-outline] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-panel-icon] svg · block-size',
'literal · palabras-chrome.css · [data-palabras-panel-icon] svg · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-float-panel-title], [data-palabras-panel] [data-drawer-title], [data-palabras-panel] [data-palabras-menu-title] · letter-spacing',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-border-radius-scale] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-border-style] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] [data-accordion-content] [data-scroll-area] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-design] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-spacing-scale] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-palabras-spacing-scale] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-panel] [data-select-trigger] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel][data-menubar-panel] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel][data-palabras-mobile][data-drawer-content] · inline-size',
'literal · palabras-chrome.css · [data-palabras-panel][data-palabras-panel]:not([data-palabras-docked]):not([data-menubar-panel]) · height',
'literal · palabras-chrome.css · [data-palabras-shell] · inline-size',
'literal · palabras-chrome.css · [data-palabras-slash-item] · inline-size',
'literal · palabras-chrome.css · [data-palabras-slash] · gap',
'literal · palabras-chrome.css · [data-palabras-slash] · min-inline-size',
'literal · palabras-chrome.css · [data-palabras-spacing-cell] · inline-size',
'literal · palabras-chrome.css · [data-palabras-spacing] · inline-size',
'literal · palabras-chrome.css · [data-palabras-src-group] · inline-size',
'literal · palabras-chrome.css · [data-palabras-tabs] [data-tabs-content] > [data-scroll-area] · inline-size',
'literal · palabras-chrome.css · [data-palabras-tabs] · inline-size',
'literal · palabras-chrome.css · [data-palabras-text] · border',
'literal · palabras-chrome.css · [data-palabras-text] · inline-size',
'literal · palabras-chrome.css · [data-palabras-typography] · inline-size',
"literal · palabras.css · [data-palabras-doc] [data-palabras-block='columns'] [data-palabras-column] · min-block-size",
"literal · palabras.css · [data-palabras-doc] [data-palabras-content] [data-palabras-block='callout'][data-palabras-callout-icon]::before · font-size",
"literal · palabras.css · [data-palabras-doc] [data-palabras-content] [data-palabras-block='callout'][data-palabras-callout-icon]::before · line-height",
"literal · palabras.css · [data-palabras-doc] [data-palabras-content] [data-palabras-block='callout'][data-palabras-callout-icon]::before · opacity",
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] blockquote[data-palabras-quote-marks]::before · font-size',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] blockquote[data-palabras-quote-marks]::before · line-height',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] blockquote[data-palabras-quote-marks]::before · opacity',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] pre[data-palabras-code-language]::before · font-weight',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] pre[data-palabras-code-language]::before · letter-spacing',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] pre[data-palabras-code-language]::before · line-height',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] table · inline-size',
'literal · palabras.css · [data-palabras-doc] [data-palabras-content] table[data-palabras-table-zebra] tbody tr:nth-child(even) td · background',
'literal · palabras.css · [data-palabras-doc] [data-palabras-i18n-fallback]::before · opacity',
'literal · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · inline-size',
'literal · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder] · min-block-size',
'literal · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder]::before · background',
'literal · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder]::before · block-size',
'literal · palabras.css · [data-palabras-doc] [data-palabras-image-placeholder]::before · inline-size',
"literal · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-fit] :where(img, [data-palabras-image-tile]) · inline-size",
"literal · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-fit] · inline-size",
"literal · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-full-width] img · inline-size",
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
"literal · palabras.css · [data-palabras-doc] figure[data-palabras-block='image'][data-palabras-image-full-width] · inline-size",
'private · palabras-chrome.css · [data-palabras-col-resize]::before · inline-size'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
'password-field': [
'global · password-field.css · [data-password-field-strength-meter-label] · font-size',
'global · password-field.css · [data-password-field-strength-meter] · padding-inline',
'literal · password-field.css · [data-password-field-caps-lock-glyph] svg · block-size',
'literal · password-field.css · [data-password-field-caps-lock-glyph] svg · inline-size',
'literal · password-field.css · [data-password-field-caps-lock-glyph] · line-height',
'literal · password-field.css · [data-password-field-caps-lock-indicator] · gap',
'literal · password-field.css · [data-password-field-caps-lock-indicator] · padding-block',
'literal · password-field.css · [data-password-field-caps-lock-indicator] · padding-inline',
'literal · password-field.css · [data-password-field-strength-meter] · gap',
'literal · password-field.css · [data-password-field-visibility-trigger] svg · block-size',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · password-field.css · [data-password-field-visibility-trigger] svg · inline-size',
'private · password-field.css · [data-password-field-visibility-trigger]:hover:not([data-disabled]) · background',
'private · password-field.css · [data-password-field-visibility-trigger]:hover:not([data-disabled]) · color'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
'picker-shell': ['global · picker-time-row.css · .picker-time-label · font-size'],
popover: [
"global · popover.css · [data-popover-content][data-state='closed'][data-side='bottom'][data-last-action='cancelled'], [data-popover-content][data-state='closed'][data-side='bottom'][data-last-action='dismissed'], [data-popover-content][data-state='closed'][data-side='bottom'][data-last-action='dismissed-outside'] · border-top",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='bottom'][data-last-action='failed'] · border-top",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='bottom'][data-last-action='saved'] · border-top",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='left'][data-last-action='cancelled'], [data-popover-content][data-state='closed'][data-side='left'][data-last-action='dismissed'], [data-popover-content][data-state='closed'][data-side='left'][data-last-action='dismissed-outside'] · border-right",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='left'][data-last-action='failed'] · border-right",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='left'][data-last-action='saved'] · border-right",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='right'][data-last-action='cancelled'], [data-popover-content][data-state='closed'][data-side='right'][data-last-action='dismissed'], [data-popover-content][data-state='closed'][data-side='right'][data-last-action='dismissed-outside'] · border-left",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='right'][data-last-action='failed'] · border-left",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='right'][data-last-action='saved'] · border-left",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='top'][data-last-action='cancelled'], [data-popover-content][data-state='closed'][data-side='top'][data-last-action='dismissed'], [data-popover-content][data-state='closed'][data-side='top'][data-last-action='dismissed-outside'] · border-bottom",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='top'][data-last-action='failed'] · border-bottom",
"global · popover.css · [data-popover-content][data-state='closed'][data-side='top'][data-last-action='saved'] · border-bottom"
],
progress: [
"global · progress.css · [data-progress][data-shape='circular'] [data-progress-indicator] · border-radius",
"global · progress.css · [data-progress][data-shape='circular'] [data-progress-indicator]::before · border-radius"
],
'proof-of-human': [
'global · clock.css · .ck-badge-num · fill',
'global · clock.css · .ck-hand-main, .ck-hand-tail · fill',
'global · clock.css · .ck-house-frame · stroke',
'global · clock.css · .ck-hub · fill',
'global · clock.css · .ck-num · fill',
'global · clock.css · .ck-ring · fill',
'global · clock.css · .ck-ring · stroke',
'global · clock.css · .ck-sill · fill',
'global · clock.css · .ck-tick · stroke',
"global · clock.css · [data-proof-of-human][data-state='verified'] .ck-badge-dot · fill",
"global · clock.css · [data-proof-of-human][data-state='verified'] .ck-roof · fill",
'global · proof-of-human.css · .poh-trace-dot[data-off-path] · background',
'global · proof-of-human.css · .poh-trace-dot[data-off-path] · box-shadow',
'global · proof-of-human.css · [data-path-trace-token]::before · min-block-size',
'global · proof-of-human.css · [data-path-trace-token]::before · min-inline-size',
'global · rotate-align.css · .ra-card · fill',
'global · rotate-align.css · .ra-flag · fill',
'global · rotate-align.css · .ra-hub · fill',
'global · rotate-align.css · .ra-n · fill',
'global · rotate-align.css · .ra-post · fill',
'global · rotate-align.css · .ra-ring · fill',
'global · rotate-align.css · .ra-ring · stroke',
'global · rotate-align.css · .ra-s · fill',
'global · rotate-align.css · .ra-tick · stroke',
"global · rotate-align.css · [data-proof-of-human][data-state='verified'] .ra-box · fill",
"global · rotate-align.css · [data-proof-of-human][data-state='verified'] .ra-flag · fill",
'global · rotate-align.css · [data-rotate-align-needle]::before · min-block-size',
'global · rotate-align.css · [data-rotate-align-needle]::before · min-inline-size',
'global · rotate-align.css · [data-rotate-align-needle]:focus-visible · border-radius',
'literal · clock.css · .ck-face, .ck-hand · block-size',
'literal · clock.css · .ck-face, .ck-hand · inline-size',
'literal · clock.css · 0%, 13% · opacity',
'literal · clock.css · 26%, 62% · opacity',
'literal · clock.css · to · opacity',
'literal · proof-of-human.css · .poh-trace-svg · block-size',
'literal · proof-of-human.css · .poh-trace-svg · inline-size',
'literal · proof-of-human.css · [data-path-trace-token]::before · block-size',
'literal · proof-of-human.css · [data-path-trace-token]::before · inline-size',
'literal · rotate-align.css · .ra-card · font-weight',
'literal · rotate-align.css · .ra-dial, .ra-needle · block-size',
'literal · rotate-align.css · .ra-dial, .ra-needle · inline-size',
'literal · rotate-align.css · [data-rotate-align-dial], [data-rotate-align-needle] · block-size',
'literal · rotate-align.css · [data-rotate-align-dial], [data-rotate-align-needle] · inline-size',
'literal · rotate-align.css · [data-rotate-align-skin] · inline-size'
],
prose: [
'literal · prose.css · :where([data-prose] :is(ul, ol)):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding-inline-start',
'literal · prose.css · :where([data-prose] blockquote):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding-inline-start',
'literal · prose.css · :where([data-prose] code):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding',
'literal · prose.css · :where([data-prose] kbd):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding',
'literal · prose.css · :where([data-prose] mark):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding',
'literal · prose.css · :where([data-prose] pre):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding',
'literal · prose.css · :where([data-prose] table):not(:where([data-prose-ignore], [data-prose-ignore] *)) · inline-size',
'literal · prose.css · :where([data-prose] td):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding',
'literal · prose.css · :where([data-prose] th):not(:where([data-prose-ignore], [data-prose-ignore] *)) · padding'
],
'radio-cards': [
'global · radio-cards.css · [data-radio-cards-indicator] · background',
'global · radio-cards.css · [data-radio-cards-indicator] · block-size',
'global · radio-cards.css · [data-radio-cards-indicator] · border',
'global · radio-cards.css · [data-radio-cards-indicator] · border-radius',
'global · radio-cards.css · [data-radio-cards-indicator] · inline-size',
'global · radio-cards.css · [data-radio-cards-indicator]::after · background',
'global · radio-cards.css · [data-radio-cards-indicator]::after · border-radius',
'global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-disabled] [data-radio-cards-indicator] · background',
'global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-disabled] [data-radio-cards-indicator] · border-color',
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked'] [data-radio-cards-icon] · color",
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked'] [data-radio-cards-indicator] · border-color",
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked'] · background",
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked'] · border-color",
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked']:hover:not([data-disabled]):not([data-readonly]) · background",
"global · radio-cards.css · [data-radio-cards] [data-radio-cards-item][data-state='checked']:hover:not([data-disabled]):not([data-readonly]) · border-color",
"global · radio-cards.css · [data-radio-cards][data-size='lg'] [data-radio-cards-indicator] · block-size",
"global · radio-cards.css · [data-radio-cards][data-size='lg'] [data-radio-cards-indicator] · inline-size",
"global · radio-cards.css · [data-radio-cards][data-size='sm'] [data-radio-cards-indicator] · block-size",
"global · radio-cards.css · [data-radio-cards][data-size='sm'] [data-radio-cards-indicator] · inline-size",
"global · radio-cards.css · [data-radio-cards][data-size='xl'] [data-radio-cards-indicator] · block-size",
"global · radio-cards.css · [data-radio-cards][data-size='xl'] [data-radio-cards-indicator] · inline-size",
"global · radio-cards.css · [data-radio-cards][data-size='xs'] [data-radio-cards-indicator] · block-size",
"global · radio-cards.css · [data-radio-cards][data-size='xs'] [data-radio-cards-indicator] · inline-size",
'literal · radio-cards.css · [data-radio-cards-icon] svg · block-size',
'literal · radio-cards.css · [data-radio-cards-icon] svg · inline-size',
'literal · radio-cards.css · [data-radio-cards-indicator]::after · block-size',
'literal · radio-cards.css · [data-radio-cards-indicator]::after · inline-size'
],
'radio-group': ['global · radio-group.css · [data-radio-group-row] · min-block-size'],
'range-calendar': [
'global · range-calendar.css · [data-range-calendar-day][data-range-end] · font-weight',
'global · range-calendar.css · [data-range-calendar-day][data-range-start] · font-weight',
'literal · range-calendar.css · [data-range-calendar-grid] · inline-size',
'literal · range-calendar.css · [data-range-calendar-header] · inline-size',
'literal · range-calendar.css · [data-range-calendar-month-panel] · min-inline-size',
'literal · range-calendar.css · [data-range-calendar] · inline-size'
],
result: [
'literal · result.css · [data-result-extra] · inline-size',
'literal · result.css · [data-result-media] · line-height'
],
's-text-virtual-list': [
'global · s-text-virtual-list.css · [data-s-text-virtual-list] · font-family',
'global · s-text-virtual-list.css · [data-s-text-virtual-list] · font-size',
'global · s-text-virtual-list.css · [data-s-text-virtual-list] · font-weight'
],
'scroll-frames': [
'global · scroll-frames.css · [data-scroll-frames-loader] · opacity',
'literal · scroll-frames.css · [data-scroll-frames-loader] · line-height',
'literal · scroll-frames.css · [data-scroll-frames-media] · block-size',
'literal · scroll-frames.css · [data-scroll-frames-media] · inline-size',
'literal · scroll-frames.css · [data-scroll-frames] · inline-size'
],
sidebar: [
'global · sidebar.css · [data-sidebar-content] · gap',
'global · sidebar.css · [data-sidebar-group-label] · color',
'global · sidebar.css · [data-sidebar-group-label] · font-weight',
'global · sidebar.css · [data-sidebar-group-label] · line-height',
'global · sidebar.css · [data-sidebar-group-label] · padding-block',
'global · sidebar.css · [data-sidebar-menu-button], [data-sidebar-menu-sub-button] · color',
'global · sidebar.css · [data-sidebar-menu-button]:hover, [data-sidebar-menu-sub-button]:hover · color',
'global · sidebar.css · [data-sidebar-menu-button][data-active], [data-sidebar-menu-sub-button][data-active] · background-color',
'global · sidebar.css · [data-sidebar-menu-button][data-active], [data-sidebar-menu-sub-button][data-active] · color',
'global · sidebar.css · [data-sidebar-menu-button][data-active], [data-sidebar-menu-sub-button][data-active] · font-weight',
'global · sidebar.css · [data-sidebar-menu-button][data-disabled], [data-sidebar-menu-sub-button][data-disabled] · color',
'global · sidebar.css · [data-sidebar-menu-item] · gap',
'global · sidebar.css · [data-sidebar-menu-sub][data-floating] · border-radius',
'global · sidebar.css · [data-sidebar-rail]:hover · background',
'literal · sidebar.css · [data-sidebar-panel] · block-size',
'literal · sidebar.css · [data-sidebar] · block-size',
'literal · sidebar.css · [data-sidebar] · inline-size',
'literal · sidebar.css · [data-sidebar][data-mobile] [data-sidebar-panel] · block-size',
'literal · sidebar.css · [data-sidebar][data-mobile] [data-sidebar-panel] · inline-size'
],
skeleton: ['literal · skeleton.css · [data-skeleton] · inline-size'],
'skin-media-player': [
'global · skin-media-player.css · [data-skin-media-player] · inline-size',
'literal · skin-media-player.css · [data-media-player]:not([data-paused]) .smp-lamp · opacity',
'literal · skin-media-player.css · [data-skin-media-player-cassette] · filter',
'literal · skin-media-player.css · [data-skin-media-player-deck][data-spinning] .smp-lamp · opacity',
'literal · skin-media-player.css · [data-skin-media-player-fader] [data-slider] · inline-size',
'literal · skin-media-player.css · [data-skin-media-player] > svg · block-size',
'literal · skin-media-player.css · [data-skin-media-player] > svg · inline-size'
],
'spin-field': [
'global · spin-field.css · [data-spin-field-increment-trigger], [data-spin-field-decrement-trigger], [data-spin-field-scrubber] · block-size',
'global · spin-field.css · [data-spin-field-increment-trigger], [data-spin-field-decrement-trigger], [data-spin-field-scrubber] · inline-size',
'global · spin-field.css · [data-spin-field-increment-trigger], [data-spin-field-decrement-trigger], [data-spin-field-scrubber] · min-inline-size',
'global · spin-field.css · [data-spin-field-input] · padding-inline',
"global · spin-field.css · [data-spin-field][data-steppers='stacked'] [data-spin-field-increment-trigger], [data-spin-field][data-steppers='stacked'] [data-spin-field-decrement-trigger] · font-size",
"global · spin-field.css · [data-spin-field][data-steppers='stacked'] [data-spin-field-increment-trigger], [data-spin-field][data-steppers='stacked'] [data-spin-field-decrement-trigger] · inline-size",
"global · spin-field.css · [data-spin-field][data-steppers='stacked'] [data-spin-field-increment-trigger], [data-spin-field][data-steppers='stacked'] [data-spin-field-decrement-trigger] · min-inline-size",
"global · spin-field.css · [data-spin-field][data-steppers='stacked'] [data-spin-field-input] · padding-inline"
],
spinner: [
'literal · spinner.css · 0%, 80%, 100% · opacity',
'literal · spinner.css · 40% · opacity',
"literal · spinner.css · [data-spinner][data-variant='dots'] [data-spinner-dot] · border-radius",
"literal · spinner.css · [data-spinner][data-variant='ring'] [data-spinner-track] · border-radius"
],
'split-button': [
'global · split-button.css · [data-dropdown-menu-content][data-split-button-menu] · min-inline-size'
],
stepper: [
"literal · stepper.css · [data-stepper-separator][data-orientation='vertical'] · block-size"
],
table: [
'literal · table.css · [data-table-root][data-block] · inline-size',
'literal · table.css · [data-table-sort-trigger][data-sorted] [data-table-sort-indicator] · opacity',
'literal · table.css · [data-table] · inline-size'
],
tabs: [
'global · tabs.css · [data-tabs-indicator] · block-size',
'global · tabs.css · [data-tabs-indicator] · inline-size'
],
'tag-group': ['literal · tag-group.css · [data-tag-group-remove-button] · line-height'],
'text-scramble': [
'literal · text-scramble.css · [data-text-scramble-sr] · height',
'literal · text-scramble.css · [data-text-scramble-sr] · width'
],
textarea: [
'literal · textarea.css · [data-textarea-count] · line-height',
'literal · textarea.css · [data-textarea-input] · inline-size',
'literal · textarea.css · [data-textarea] · inline-size'
],
'time-picker': [
'global · time-picker.css · .time-picker-scale · padding-inline',
'global · time-picker.css · .time-picker-scale-mark · background',
'global · time-picker.css · .time-picker-scale-tick · color',
'global · time-picker.css · .time-picker-scale-tick · font-family',
'global · time-picker.css · .time-picker-scale-tick · font-size',
'global · time-picker.css · .time-picker-slider-label · color',
'global · time-picker.css · .time-picker-slider-label · font-family',
'global · time-picker.css · .time-picker-slider-label · font-weight',
'global · time-picker.css · .time-picker-slider-label · letter-spacing',
'global · time-picker.css · [data-time-field-input] [data-time-picker-trigger] · block-size',
'global · time-picker.css · [data-time-field-input] [data-time-picker-trigger] · color',
'global · time-picker.css · [data-time-field-input] [data-time-picker-trigger] · inline-size',
'global · time-picker.css · [data-time-field-input] [data-time-picker-trigger]:focus-visible · background',
'global · time-picker.css · [data-time-field-input] [data-time-picker-trigger]:focus-visible · color',
"global · time-picker.css · [data-time-picker-clock] [data-time-picker-day-period-toggle] [data-toggle-group-item][data-state='on']:hover · background",
"global · time-picker.css · [data-time-picker-clock] [data-time-picker-day-period-toggle] [data-toggle-group-item][data-state='on']:hover · border-color",
'global · time-picker.css · [data-time-picker-clock] · padding',
'global · time-picker.css · [data-time-picker-trigger] · background',
'global · time-picker.css · [data-time-picker-trigger] · border',
'global · time-picker.css · [data-time-picker-trigger] · border-radius',
'global · time-picker.css · [data-time-picker-trigger][data-disabled], [data-time-picker-trigger]:disabled · opacity',
'global · time-picker.css · [data-time-picker] · color',
'global · time-picker.css · [data-time-picker] · font-family',
'global · time-picker.css · [data-time-picker] · line-height',
'literal · time-picker.css · .time-picker-scale · block-size',
'literal · time-picker.css · .time-picker-scale · inline-size',
'literal · time-picker.css · .time-picker-scale-mark · block-size',
'literal · time-picker.css · .time-picker-scale-mark · inline-size',
'literal · time-picker.css · .time-picker-scale-tick · gap',
'literal · time-picker.css · .time-picker-scale-tick · line-height',
'literal · time-picker.css · .time-picker-slider · gap',
'literal · time-picker.css · .time-picker-slider · inline-size',
'literal · time-picker.css · .time-picker-slider-label · line-height',
'literal · time-picker.css · [data-time-picker-clock] [data-slider] · inline-size',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · time-picker.css · [data-time-picker] · inline-size',
'private · time-picker.css · .time-picker-slider-label · font-size',
'private · time-picker.css · [data-time-field-input] [data-time-picker-trigger]:hover · background',
'private · time-picker.css · [data-time-field-input] [data-time-picker-trigger]:hover · color',
'private · time-picker.css · [data-time-picker-clock] [data-slider-range] · background',
'private · time-picker.css · [data-time-picker-clock] [data-slider-thumb] · border-color',
'private · time-picker.css · [data-time-picker-trigger] · block-size',
'private · time-picker.css · [data-time-picker-trigger] · inline-size',
'private · time-picker.css · [data-time-picker-trigger]:focus-visible · border-color',
'private · time-picker.css · [data-time-picker-trigger]:hover · background',
'private · time-picker.css · [data-time-picker-trigger]:hover · border-color',
'private · time-picker.css · [data-time-picker-trigger]:hover · color',
'private · time-picker.css · [data-time-picker] · font-size'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
'time-range-picker': [
'global · time-range-picker.css · .time-range-picker-endpoint · gap',
'global · time-range-picker.css · .time-range-picker-endpoint-label · color',
'global · time-range-picker.css · .time-range-picker-endpoint-label · font-weight',
'global · time-range-picker.css · .time-range-picker-endpoint-label · letter-spacing',
'global · time-range-picker.css · .time-range-picker-endpoint:first-child::after · background',
'global · time-range-picker.css · .time-range-picker-endpoint:first-child::after · inline-size',
'global · time-range-picker.css · .time-range-picker-scale · padding-inline',
'global · time-range-picker.css · .time-range-picker-scale-mark · background',
'global · time-range-picker.css · .time-range-picker-scale-tick · color',
'global · time-range-picker.css · .time-range-picker-scale-tick · font-family',
'global · time-range-picker.css · .time-range-picker-scale-tick · font-size',
'global · time-range-picker.css · .time-range-picker-slider-label · color',
'global · time-range-picker.css · .time-range-picker-slider-label · font-family',
'global · time-range-picker.css · .time-range-picker-slider-label · font-weight',
'global · time-range-picker.css · .time-range-picker-slider-label · letter-spacing',
'global · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger] · border-radius',
'global · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger] · color',
'global · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger]:focus-visible · background',
'global · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger]:focus-visible · color',
'global · time-range-picker.css · [data-time-range-picker-clock] [data-slider-thumb] · box-shadow',
'global · time-range-picker.css · [data-time-range-picker-clock] [data-slider-thumb]:focus-visible · box-shadow',
"global · time-range-picker.css · [data-time-range-picker-clock] [data-time-range-picker-day-period-toggle] [data-toggle-group-item][data-state='on']:hover · background",
"global · time-range-picker.css · [data-time-range-picker-clock] [data-time-range-picker-day-period-toggle] [data-toggle-group-item][data-state='on']:hover · border-color",
'global · time-range-picker.css · [data-time-range-picker-clock] · padding',
'global · time-range-picker.css · [data-time-range-picker-trigger] · background',
'global · time-range-picker.css · [data-time-range-picker-trigger] · border',
'global · time-range-picker.css · [data-time-range-picker-trigger] · border-radius',
'global · time-range-picker.css · [data-time-range-picker-trigger][data-disabled], [data-time-range-picker-trigger]:disabled · opacity',
'global · time-range-picker.css · [data-time-range-picker] · color',
'global · time-range-picker.css · [data-time-range-picker] · font-family',
'global · time-range-picker.css · [data-time-range-picker] · line-height',
'global · time-range-picker.css · [data-time-range-picker][data-invalid] [data-time-range-picker-trigger] · border-color',
'global · time-range-picker.css · [data-time-range-picker][data-invalid] [data-time-range-picker-trigger]:hover · border-color',
'literal · time-range-picker.css · .time-range-picker-scale · block-size',
'literal · time-range-picker.css · .time-range-picker-scale · inline-size',
'literal · time-range-picker.css · .time-range-picker-scale-mark · block-size',
'literal · time-range-picker.css · .time-range-picker-scale-mark · inline-size',
'literal · time-range-picker.css · .time-range-picker-scale-tick · gap',
'literal · time-range-picker.css · .time-range-picker-scale-tick · line-height',
'literal · time-range-picker.css · .time-range-picker-slider · gap',
'literal · time-range-picker.css · .time-range-picker-slider · inline-size',
'literal · time-range-picker.css · .time-range-picker-slider-label · line-height',
'literal · time-range-picker.css · [data-time-range-picker-clock] [data-slider] · inline-size',
'literal · time-range-picker.css · [data-time-range-picker-clock] · min-inline-size',
"literal · time-range-picker.css · [data-time-range-picker-day-period-item] input[type='radio'] · block-size",
"literal · time-range-picker.css · [data-time-range-picker-day-period-item] input[type='radio'] · inline-size",
'literal · time-range-picker.css · [data-time-range-picker-day-period-toggle] · padding',
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'literal · time-range-picker.css · [data-time-range-picker] · inline-size',
'private · time-range-picker.css · .time-range-picker-endpoint-label · font-size',
'private · time-range-picker.css · .time-range-picker-slider-label · font-size',
'private · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger] · block-size',
'private · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger] · inline-size',
'private · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger]:hover · background',
'private · time-range-picker.css · [data-time-range-field-input] [data-time-range-picker-trigger]:hover · color',
"private · time-range-picker.css · [data-time-range-picker-clock] [data-endpoint='end'] [data-slider-range] · background",
'private · time-range-picker.css · [data-time-range-picker-clock] [data-slider-range] · background',
'private · time-range-picker.css · [data-time-range-picker-clock] [data-slider-thumb] · border-color',
'private · time-range-picker.css · [data-time-range-picker-day-period-item][data-checked] · background',
'private · time-range-picker.css · [data-time-range-picker-day-period-item][data-checked] · color',
'private · time-range-picker.css · [data-time-range-picker-trigger] · block-size',
'private · time-range-picker.css · [data-time-range-picker-trigger] · inline-size',
'private · time-range-picker.css · [data-time-range-picker-trigger]:focus-visible · border-color',
'private · time-range-picker.css · [data-time-range-picker-trigger]:hover · background',
'private · time-range-picker.css · [data-time-range-picker-trigger]:hover · border-color',
'private · time-range-picker.css · [data-time-range-picker-trigger]:hover · color',
'private · time-range-picker.css · [data-time-range-picker] · font-size',
'private · time-range-picker.css · [data-time-range-picker] · gap'
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
],
timeline: ['literal · timeline.css · [data-timeline-marker] · line-height'],
'toggle-group': ['global · toggle-group.css · [data-toggle-group][data-disabled] · opacity'],
feat(theming): los 150 privados del residuo quedan adjudicados - 84 firmados, 66 contados Segunda pieza de la firma de los 318 (F2). El residuo que F1 dejo se adjudica POR CLAVE, cada acta con su medida: 150 = 84 ANOTADOS + 66 al LEDGER + 0 sin nombre. - Valvula nueva /* private: <razon> */ -> clase exception (vocabulario cerrado). Corre en una CUARTA pasada, la ultima: donde una prueba mecanica ya decidio, una firma no tiene nada que firmar. La nota va en el bloque de comentario ENCIMA de la declaracion (al final de linea, prettier partiria el var() - un commit de anotacion no reescribe el CSS que viene a firmar); el paseo hacia arriba solo salta lineas que eran solo-comentario. - private es DebtClass: clave `private - {fichero} - {selector} - {propiedad}`, newDebt y STALE simetricos. Un privado no-derivado nuevo ya no puede entrar sin nombre. Ledger 1088 -> 1154 (+66, 0 claves perdidas, verificado contra el blob de HEAD, no regenerado en bloque). - ANOTADOS 84: 59 con ficha SS5 firmada que lo dice (card, avatar, badge, surface, switch, timeline, textarea, spinner, skeleton, metrics, float-panel, image, toolbar, button, drawer, listbox) + 25 medidos (proof-of-human 17: el puente UN NIVEL bajo el knob, base verbatim del forward, medido dos veces; form 4: conmutador-identidad; 4 sueltos). - LEDGER 66: casi todo UN patron - el conmutador de tono A MANO ([data-color=risk] { --_c-accent: var(--color-risk-solid) }) sin adoptar el forward THM-2 (time-range-picker 19, chronos 14, time-picker 12, date-range-picker 9...) mas las tallas prestadas de field. Se retiran el dia que esa familia adopte la escalera de paleta. - Contradiccion con ficha RESUELTA por medida: metrics SS5 decia que el conmutador del icono derivaba entero de publicos - cierto para track/text, falso para solid/contrast (leen roles crudos): 3 anotados, 2 al ledger. timeline SS5 (pre-B') se respeta y queda señalado para reabrir. Mutaciones (backup+restore en finally, arbol comprobado): privado nuevo -> newDebt lo nombra y suelo ROJO; anotado -> verde; registrado -> verde; ledger'd que gana su nota -> STALE hasta borrar la linea. --debt final: 1154 registered - 0 new - 0 stale, dos corridas. Suelo 5/5, audit 162 PASS sin flips, tsc 0 propios, diff de los 22 css = 100% comentario (verificado por strip programatico contra el blob de HEAD), prettier 0 regresiones. Reach 71% -> 73% (3074/4228). El suelo (69/45) y la prosa "318" los sube F3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
tooltip: ['private · tooltip.css · [data-tooltip-content] · background'],
feat(theming)!: R-5.1/5.2 a error contra el LEDGER DE DEUDA - el ratchet es por clave La pieza grande del CIERRE, con la forma firmada hoy: la deuda de alcance no se tolera en warn ni se disfraza de excepcion - se REGISTRA, clave a clave, y desde ahi la regresion es imposible y la mejora queda contada. - scripts/theming-census-debt.ts (NUEVO): 1088 claves (763 global + 325 literal, 74 componentes), clave `{clase} - {fichero} - {selector} - {propiedad}` INDEPENDIENTE de linea (mover una regla no fabrica regresion), comparacion MULTISET, generacion reproducible (dos corridas = mismo sha256), nace prettier-limpio. NO es un fichero de excepciones: es deuda registrada, la otra clase de acta - la valvula R-5.x exception de los README sigue intacta y NUNCA ciega el ratchet. Los carriles WIP ENTRAN (palabras 359 + chronos 209 = 568): la deuda es real viva donde viva, y dejarla fuera haria del gate una afirmacion sobre dos tercios del arbol. Con la salvedad MEDIDA de palabras escrita: sus nombres --palabras-* son canal de VALOR del scheme del documento, no contrato de tema - sus 103 "public" del censo estan en cuestion. - theming-census.ts: censusAudit() -> {newDebt, stale} + CLI --debt [--write] que imprime el delta que va a cometer (regenerar en masa borra el ratchet: el escritor grita y la cabecera lo prohibe sin firma). - theming-reach-floor.test.ts (reescrito): newDebt=0 y stale=0 con las claves NOMBRADAS; los techos burdos maxLiteral/maxGlobal RETIRADOS (superseded por el por-clave: 5 regresiones ya no se esconden bajo 5 arreglos); reachPct sube a 69 como ratchet grueso - y cubre el hueco nombrado: los 318 privados no-derivados siguen SIN ratchet por clave (acotado por la firma a literal|global; pendiente de firma propia); atHundred corrige su criterio (public>0, 14 -> 45: los 31 de diferencia eran denominadores vacios, ninguno un avance real). - component-audit.ts: filas R-5.1 y R-5.2 a ERROR consumiendo censusAudit() (dos implementaciones de una medida son dos medidas); R-5.2 honesto sobre los 18 sin-contrato (11 nada-que-declarar all-system/0-knobs; field-langs cubierto POR el ledger - la entrada ES su registro; 3 consumidores de capa calendar; mockup y text-scramble PASS con nota del idioma var(..,fallback) sin contrato - forma real sin nombre, pendiente de decision; palabras fuera del catalogo del audit). R-5.3 YA estaba en error (verificado, --names 0 desviadas). El skip por censo roto ahora GRITA por consola (la leccion del prepareWith: un guard saltado nunca es mudo - y el suelo de vitest queda de red mecanica). - docs: canon/recipe-contract.md SS4 y theming/reference.md SS12 reflejan la ley (gate F3 = censo 100% ADJUDICADO); completion-checklist gana las dos filas (exigido por el guard I5); el stub RECIPE_CONTRACT.md solo actualiza su linea de enforcement. Mutaciones, todas mordiendo: literal nuevo en mark -> newDebt lo nombra, suelo rojo, R-5.1 falla; clave de aura tokenizada -> STALE rojo hasta borrar la linea; literal sin registrar en field-langs -> R-5.2 muerde. Guards en HEAD: component:audit 162 PASS (cero flips; los 4 NEEDS-WORK son R-1.x ajenos), suelo 5/5, docs:check 0/0. BREAKING: los techos maxLiteral/maxGlobal del suelo desaparecen; anadir un literal o un global crudo a una receta exige desde ahora tokenizar, anotar /* literal: */ o firmar la entrada en el ledger de deuda. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
'tree-grid': ['literal · tree-grid.css · [data-tree-grid-root][data-block] · inline-size'],
'tree-view': ['literal · tree-view.css · [data-tree-view-root][data-block] · inline-size'],
'virtual-grid': [
'literal · virtual-grid.css · [data-virtual-grid-root][data-block] · inline-size',
'literal · virtual-grid.css · [data-virtual-grid-viewport] · block-size',
'literal · virtual-grid.css · [data-virtual-grid-viewport] · inline-size'
],
'virtual-list': [
'literal · virtual-list.css · [data-virtual-list-root][data-block] · inline-size',
'literal · virtual-list.css · [data-virtual-list-viewport] · block-size',
'literal · virtual-list.css · [data-virtual-list-viewport] · inline-size',
'literal · virtual-list.css · [data-virtual-list-window-viewport] · inline-size'
],
waveform: [
'global · waveform.css · [data-waveform]:has([data-slider][data-disabled]) [data-waveform-wave] · opacity'
],
'year-grid': [
'literal · year-grid.css · [data-popover-content] [data-year-grid-grid] · inline-size',
'literal · year-grid.css · [data-popover-content] [data-year-grid] · inline-size',
'literal · year-grid.css · [data-year-grid-grid] · inline-size',
'literal · year-grid.css · [data-year-grid-header] · inline-size',
'literal · year-grid.css · [data-year-grid] · inline-size'
]
};

Powered by TurnKey Linux.