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.
|
|
|
|
|
|
*
|
fix(scripts): la estela de M0 — habia OCHO agujas ciegas al corte de Prettier, no una
M0 (`830cd7671`) curo cinco agujas del censo de theming y su cuerpo dejo tres
cabos anotados. Al tirar de ellos aparece que el defecto era mucho mas ancho:
un barrido de `scripts/` entero, con TRES ortografias de la aguja (literal
`var\(--`, cadena `'var\\(--'` y grupo `var\((--`), encuentra SEIS mas. Se
corrigen cinco y se declara la sexta.
POR QUE IMPORTA MAS QUE EN EL CENSO. La aguja del censo produce una MALA
CLASIFICACION, y una mala clasificacion al menos se cuenta en algun sitio.
Estas producen sobre todo FALSOS NEGATIVOS: el guard deja de mirar y PASA en
silencio. Cinco de las seis son de ese sentido.
LAS AGUJAS (todas con CERO victimas hoy, medido antes de tocar; se corrigen por
la misma razon que M0 escribio para las suyas sin victima: dejarlas ciegas deja
el bug armado para la proxima linea que Prettier rompa):
- `theming-census.ts:1267` `scopeFor` — LA DE CLASE VIVA, y esta EN EL FICHERO
QUE M0 DECLARO CURADO, comiendo de la MISMA tuberia (`knob.value`,
normalizado a espacios simples en :579). Escribiria alcance `root` donde la
verdad es `host`. Medido el catalogo: 5187 knobs + 1497 privados, 12 valores
llevan hoy `var( --` y ninguno contiene `palette-`.
- `theming-census.ts:2244` `valenced` y `:2246` el rol neutro — el segundo mata
el clasificador `state-layer` entero: sin match, el knob nunca se encola.
Su entrada es `base.ts`, que NADIE normaliza, y el lector de PRODUCCION de
esos mismos valores ya es tolerante (`render-css.ts` VAR_REF_REGEX).
- `theming-sentinel.ts:867` `kindOfTerm` y `:884` los operandos de
`calc/min/max/clamp` — el segundo es el caso que el propio comentario de
arriba documenta (22 longitudes leidas como numeros). Probado por
EQUIVALENCIA sobre las 4566 entradas de base.ts: 0 diferencias de kind ni de
sentinel entre HEAD y la version tolerante.
- `component-audit.ts:957 / :1137 / :1329` (R-2.6, R-4.3, R-4.6) — la 4.3 era
la peor del lote: opera sobre un valor SIN normalizar, tomado directo del
fuente, y su error se INVIERTE (falso positivo: acusa de «capa de estado
artesanal» a una declaracion que lee la del sistema).
- `__statelayer-analysis.ts:28` — NO TOCADA y declarada: su lector es POR
LINEA, asi que un corte trunca el valor ANTES de que la aguja corra. Anadir
tolerancia daria falsa sensacion de cobertura mientras la limitacion real
sigue en pie. (De paso, defecto preexistente NO tocado en :32: un
`new RegExp` con comillas DOBLES hace que su `\s` sea solo `s` y esa regex no
case nunca.)
`\s*` va a AMBOS lados donde la aguja cierra parentesis, porque el corte produce
`var( --x )`; solo a la izquierda donde no lo cierra. La tolerancia esta COPIADA
del hermano de la casa (`recipe-css-contract.test.ts:150`), no inventada.
DOS CORRECCIONES DOCUMENTALES que el pase adversarial caza:
- `component-audit.ts` ≈:1154 justificaba no usar `/g` con un mecanismo FALSO
(«lastIndex viaja entre llamadas»). Medido: un literal inline se re-crea en
cada evaluacion (`true,true,true`) y sobrevive a la bandera POR ACCIDENTE de
donde esta escrito; el arrastre es del OBJETO regex izado a const de modulo
(`true,FALSE,true`). La decision de no usar `/g` sigue siendo buena y ahora
se sostiene en su razon verdadera. El acta del censo queda como esta: sus
agujas SI estan izadas y alli el arrastre es real.
- `theming-census-debt.ts:58-59` se contradecia con su propia linea :96 tras
la reescritura de la caveat: `87 literal` -> `86` y `583 of the 1154 keys` ->
`582 of the 1150`. Verificado contando el ledger (palabras 272+86+1=359 ·
chronos 198+11+14=223 · 582 de 1150) y con `--debt` («1150 registered, 0 new,
0 stale»). La aritmetica cierra con las actas del propio fichero:
1154 −2 (`8ac23047f`) = 1152 −2 (`830cd7671`) = 1150.
CAVEAT DEL LEDGER reescrita: las claves `--palabras-*` ya NO estan «EN
CUESTION» — la clasificacion esta ADJUDICADA (canal de valor del scheme del
documento) y lo que queda pendiente de firma es la EJECUCION, no el veredicto.
Se anade el dato que faltaba y que cambia como se lee el numero: de los 117
nombres consumidos, el esquema por defecto emite 74 y **43 no los emite nunca**,
de modo que para esos el fallback del CSS ES el valor de diseno. (La particion
que yo habia dado, 75/42, era la resta equivocada: suponia que lo emitido es
subconjunto de lo consumido, y `--palabras-scheme-mark-highlight-bg` se emite y
ninguna receta lo lee.)
FICHAS NO REGENERADAS a proposito: `--only` se parsea pero `writeReport()` lo
ignora, asi que regenerar reescribiria las 171 fichas + README — 172 ficheros
mezclando todos los carriles. Las de split-button y palabras quedan desfasadas
hasta que alguien corra `--report` sobre un arbol quieto.
VERIFICADO: censo antes/despues byte a byte IDENTICO · `component:audit`
PASS 161 / NEEDS-WORK 5 / BROKEN 0, con `tmp/component-audit.md` byte a byte
salvo la linea `Date:` autogenerada · `theming-reach-floor` 5/5 verde · ningun
fichero bajo `web/` tocado (regla del autor: ese arbol se reconstruye).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* THE WIP TRACKS ARE IN — `palabras` (272 global + 86 literal + 1 private) and
|
feat(theming)!: SS16 - el guard vive donde NACE el valor, y el velo del drawer vuelve a pintar
Firma SS16, quinta aplicacion de la doctrina "la capa sostiene la pluma, no es
la dueña". El censo, el ledger y la ley del espacio cerrado auditaban SOLO
quien LEE (recetas de eidos); quien ESCRIBE la custom property por instancia
vive en soma/arts y ningun instrumento del eje lo habia enumerado jamas.
EL BUG VIVO QUE ESTO DESTAPO — y no se parcheo, se diagnostico
--drawer-overlay-opacity era DOS especies bajo un nombre: el knob de tema (el
contrato dice 62%) y el canal del arrastre (0..1). soma escribia el canal SIN
UNIDAD sobre el nombre del knob; color-mix() exige porcentaje, la funcion caia
invalida y el velo computaba rgba(0,0,0,0): NO PINTABA. Y el inline dejaba el
knob inalcanzable para cualquier tema. Se separan: el publico se queda como
knob (nadie lo escribe en runtime), el arrastre pasa a
--_drawer-overlay-progress (sin unidad, que para un multiplicador es lo
correcto) y la receta los COMPONE - calc(knob * progress) -, asi que el
arrastre ATENUA el tema en vez de destruirlo.
Medido en Chrome: reposo 0.408471 (antes rgba 0,0,0,0) - el tema LLEGA (20%
-> 0.1318, 62% -> 0.4085, 100% -> 0.6588; antes ninguno movia nada) - el
arrastre sigue (Escape real -> alpha 0; 0/0.25/0.5/1 lineal) - control
negativo: reinyectando la escritura vieja el velo vuelve a caer, o sea que la
unidad era el SINTOMA y las dos especies la enfermedad.
⚠ Estaba adjudicado EN PROSA en theming-sentinel-exceptions.ts:815 desde hacia
dias: la excepcion se trago el bug.
LOS 18 NOMBRES A SU SITIO
Clase B (11 en command/dialog/scroll-area/toast + 4 del drawer): forma publica
sin contrato y sin UN SOLO lector en el repo - una API publicada que el
framework no consume. A --_{c}-*, y los README de soma dejan de enseñarlos
como API del consumidor: ahora enseñan LA PARTE, con la formulacion verbatim
que SS15 ya habia verificado. Clase D (tree-view, gradient-picker): tenian
lector, verificados en navegador. --scrollbar-width NO se renombro por
inercia: es una escritura sobre el unico <body>, la doctrina no le llega, y
queda REGISTRADA con su razon en vez de inventarle un dueño.
LA AGUJA - src/uix/value-channels.test.ts (fichero propio, 6 tests)
Vitest y no script, porque el gate termina en la suite y eso es lo que
convierte la doctrina en ley. Deriva el vocabulario de sistema RESTANDO el
contrato a lo que emite el generador (lista derivada, nunca a mano). Barre
NUEVE raices - las siete nuevas verificadas a cero ANTES de asertarlas - y el
quinto test asserta que cada raiz declarada se anduvo de verdad: una raiz que
resuelve a cero ficheros es la puerta que nadie habria visto.
Dos correcciones al dimensionado, por medida: el arbol tiene SEIS formas de
escribir, no cuatro, y una de las que faltaban era LA CANONICA (la
--_${component}-... que SS14 y SS15 firmaron) - un guard ciego a ella habria
dado verde sobre su propio destino. Y un barrido mas ancho marcaba en rojo un
anchor-name, que en gramatica es identico a un nombre de propiedad: probado y
REVERTIDO. El instrumento miente primero.
Mutaciones: cinco, con el arbol byte a byte identico. Incluyen las dos que
prueban lo que las correcciones añaden (una clave _ DEL contrato pasa de verde
a rojo; un --_ legitimo en blocks pasa de rojo a verde).
LO QUE EL ADVERSARIAL CORRIGIO DE MI PROPIA LEY
Dictamen: "es LEY sobre la mitad que barre, y sigue siendo PROSA sobre el
absoluto que enuncia". Cierto: decia "toda escritura por instancia" y la aguja
no mira eidos, donde viven ONCE escrituras de nombres contratados. Corregido -
el enunciado nombra sus nueve raices y DECLARA sus dos fronteras (eidos, con
su expediente abierto; web/routes, congelado); las salidas son CUATRO y no
tres (la cuarta, sistema, es verde); y el registro se queda con cuatro campos
por entrada (since, reason, destination, heldBecause) con un test que exige
los cuatro - la diferencia entre un registro y un cajon.
Y la relectura con ojo de abogado encontro DOS absolutos mas, en direccion
contraria, escritos bajo "WHAT THE GUARD DOES NOT CHECK": "por instancia" no
es decidible estaticamente (el antecedente del guard es MAS ANCHO que el de la
doctrina), y el {c} de --_{c}-* no lo comprueba nadie, solo el guion bajo.
SS18 ABIERTO, y es la respuesta medida a "¿puede volver a nacer un nombre sin
dueño sin que nadie se entere?": SI, desde eidos. 11 contratadas + 18 sin
dueño, partidas en dos especies (la fundacion generando su vocabulario, que es
legitima, y las props ergonomicas del consumidor, que no es lo mismo).
dialog-overlay-opacity es el GEMELO EXACTO del velo del drawer y sigue vivo.
No es "añadir el root": distinguir las dos especies EXIGE FIRMA.
Guards: value-channels 6/6 - recipe-css-contract + reach-floor + generated-css
55/55 - docs:check 0/0 sobre 819 - --debt 1148/0/0 - tsc 0 propios - prettier
limpio.
BREAKING: los 18 nombres publicos ya no existen; el canal se lee --_{c}-* y
sigue sin ser de nadie para fijarlo. Y consumir un --{c}-* del contrato desde
un provider es ROJO desde hoy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* `chronos` (198 global + 11 literal + 14 private) are 582 of the 1148 keys, and they
|
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
|
|
|
|
* 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.
|
fix(scripts): la estela de M0 — habia OCHO agujas ciegas al corte de Prettier, no una
M0 (`830cd7671`) curo cinco agujas del censo de theming y su cuerpo dejo tres
cabos anotados. Al tirar de ellos aparece que el defecto era mucho mas ancho:
un barrido de `scripts/` entero, con TRES ortografias de la aguja (literal
`var\(--`, cadena `'var\\(--'` y grupo `var\((--`), encuentra SEIS mas. Se
corrigen cinco y se declara la sexta.
POR QUE IMPORTA MAS QUE EN EL CENSO. La aguja del censo produce una MALA
CLASIFICACION, y una mala clasificacion al menos se cuenta en algun sitio.
Estas producen sobre todo FALSOS NEGATIVOS: el guard deja de mirar y PASA en
silencio. Cinco de las seis son de ese sentido.
LAS AGUJAS (todas con CERO victimas hoy, medido antes de tocar; se corrigen por
la misma razon que M0 escribio para las suyas sin victima: dejarlas ciegas deja
el bug armado para la proxima linea que Prettier rompa):
- `theming-census.ts:1267` `scopeFor` — LA DE CLASE VIVA, y esta EN EL FICHERO
QUE M0 DECLARO CURADO, comiendo de la MISMA tuberia (`knob.value`,
normalizado a espacios simples en :579). Escribiria alcance `root` donde la
verdad es `host`. Medido el catalogo: 5187 knobs + 1497 privados, 12 valores
llevan hoy `var( --` y ninguno contiene `palette-`.
- `theming-census.ts:2244` `valenced` y `:2246` el rol neutro — el segundo mata
el clasificador `state-layer` entero: sin match, el knob nunca se encola.
Su entrada es `base.ts`, que NADIE normaliza, y el lector de PRODUCCION de
esos mismos valores ya es tolerante (`render-css.ts` VAR_REF_REGEX).
- `theming-sentinel.ts:867` `kindOfTerm` y `:884` los operandos de
`calc/min/max/clamp` — el segundo es el caso que el propio comentario de
arriba documenta (22 longitudes leidas como numeros). Probado por
EQUIVALENCIA sobre las 4566 entradas de base.ts: 0 diferencias de kind ni de
sentinel entre HEAD y la version tolerante.
- `component-audit.ts:957 / :1137 / :1329` (R-2.6, R-4.3, R-4.6) — la 4.3 era
la peor del lote: opera sobre un valor SIN normalizar, tomado directo del
fuente, y su error se INVIERTE (falso positivo: acusa de «capa de estado
artesanal» a una declaracion que lee la del sistema).
- `__statelayer-analysis.ts:28` — NO TOCADA y declarada: su lector es POR
LINEA, asi que un corte trunca el valor ANTES de que la aguja corra. Anadir
tolerancia daria falsa sensacion de cobertura mientras la limitacion real
sigue en pie. (De paso, defecto preexistente NO tocado en :32: un
`new RegExp` con comillas DOBLES hace que su `\s` sea solo `s` y esa regex no
case nunca.)
`\s*` va a AMBOS lados donde la aguja cierra parentesis, porque el corte produce
`var( --x )`; solo a la izquierda donde no lo cierra. La tolerancia esta COPIADA
del hermano de la casa (`recipe-css-contract.test.ts:150`), no inventada.
DOS CORRECCIONES DOCUMENTALES que el pase adversarial caza:
- `component-audit.ts` ≈:1154 justificaba no usar `/g` con un mecanismo FALSO
(«lastIndex viaja entre llamadas»). Medido: un literal inline se re-crea en
cada evaluacion (`true,true,true`) y sobrevive a la bandera POR ACCIDENTE de
donde esta escrito; el arrastre es del OBJETO regex izado a const de modulo
(`true,FALSE,true`). La decision de no usar `/g` sigue siendo buena y ahora
se sostiene en su razon verdadera. El acta del censo queda como esta: sus
agujas SI estan izadas y alli el arrastre es real.
- `theming-census-debt.ts:58-59` se contradecia con su propia linea :96 tras
la reescritura de la caveat: `87 literal` -> `86` y `583 of the 1154 keys` ->
`582 of the 1150`. Verificado contando el ledger (palabras 272+86+1=359 ·
chronos 198+11+14=223 · 582 de 1150) y con `--debt` («1150 registered, 0 new,
0 stale»). La aritmetica cierra con las actas del propio fichero:
1154 −2 (`8ac23047f`) = 1152 −2 (`830cd7671`) = 1150.
CAVEAT DEL LEDGER reescrita: las claves `--palabras-*` ya NO estan «EN
CUESTION» — la clasificacion esta ADJUDICADA (canal de valor del scheme del
documento) y lo que queda pendiente de firma es la EJECUCION, no el veredicto.
Se anade el dato que faltaba y que cambia como se lee el numero: de los 117
nombres consumidos, el esquema por defecto emite 74 y **43 no los emite nunca**,
de modo que para esos el fallback del CSS ES el valor de diseno. (La particion
que yo habia dado, 75/42, era la resta equivocada: suponia que lo emitido es
subconjunto de lo consumido, y `--palabras-scheme-mark-highlight-bg` se emite y
ninguna receta lo lee.)
FICHAS NO REGENERADAS a proposito: `--only` se parsea pero `writeReport()` lo
ignora, asi que regenerar reescribiria las 171 fichas + README — 172 ficheros
mezclando todos los carriles. Las de split-button y palabras quedan desfasadas
hasta que alguien corra `--report` sobre un arbol quieto.
VERIFICADO: censo antes/despues byte a byte IDENTICO · `component:audit`
PASS 161 / NEEDS-WORK 5 / BROKEN 0, con `tmp/component-audit.md` byte a byte
salvo la linea `Date:` autogenerada · `theming-reach-floor` 5/5 verde · ningun
fichero bajo `web/` tocado (regla del autor: ese arbol se reconstruye).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* ⚠ ONE CAVEAT, MEASURED AND WRITTEN DOWN (2026-08-25, adversarial review of
|
|
|
|
|
|
* the debt-B axis) and ADJUDICATED SINCE (2026-08-27): for `palabras` the
|
|
|
|
|
|
* census's classification is wrong, and that is no longer in question. Its two
|
|
|
|
|
|
* recipes consume 117 distinct `--palabras-*` names (103 with a
|
|
|
|
|
|
* `var(…, fallback)`, 14 without — all 117 under `--palabras-scheme-*`) and
|
|
|
|
|
|
* declare ZERO of them; they are not a theme contract but the live projection
|
|
|
|
|
|
* of the document's `scheme-style`, written per instance as
|
|
|
|
|
|
* `--palabras-scheme-*` by `schemeCssVars` (`palabras-scheme.ts:327`). That is
|
|
|
|
|
|
* a VALUE channel — the axis the census's own `channel` class already names —
|
|
|
|
|
|
* so the knobs scored `public` there are misclassified and the «22 % reach» is
|
|
|
|
|
|
* not partial theme reach. What is adjudicated is the VERDICT; the EXECUTION
|
|
|
|
|
|
* is planned and still awaits the author's signature, so the census keeps
|
|
|
|
|
|
* scoring `palabras` the old way until that lands.
|
|
|
|
|
|
*
|
|
|
|
|
|
* ⚠ AND THE PARTITION IS NOT HOMOGENEOUS — measured 2026-08-27, the fact the
|
|
|
|
|
|
* original caveat never carried. Of the 117 names the recipes consume, the
|
|
|
|
|
|
* DEFAULT scheme emits only 74. The other 43 it never writes, so for those the
|
|
|
|
|
|
* FALLBACK in the CSS *is* the design value: nothing per-instance ever
|
|
|
|
|
|
* overrides them, and calling them a value channel would describe a channel
|
|
|
|
|
|
* that carries nothing. (`schemeCssVars` emits 75 names in all — the 74 plus
|
|
|
|
|
|
* `--palabras-scheme-mark-highlight-bg`, which no recipe reads. `117 − 75 = 42`
|
|
|
|
|
|
* is therefore the wrong subtraction; the measured split is 74 / 43.) The 43
|
|
|
|
|
|
* are not unreachable: the emitter is generic over route × prop, so a
|
|
|
|
|
|
* registered scheme could set any of them — they are simply absent from the
|
|
|
|
|
|
* shipped default. Which is why the execution cannot be one stroke over the
|
|
|
|
|
|
* `--palabras-scheme-*` prefix: the two halves are different objects and only
|
|
|
|
|
|
* the emitted half is the channel the verdict names.
|
|
|
|
|
|
*
|
|
|
|
|
|
* What none of that changes is the 359 keys below: they are literals, raw
|
|
|
|
|
|
* globals and one non-derived private (a `::before` inline-size) either way.
|
|
|
|
|
|
* They are frozen AS THE CENSUS MEASURES THEM, which is all a ledger ever
|
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
|
|
|
|
* 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
|
|
|
|
*
|
refactor(theming)!: MeasuredIndicator escribe en el namespace del HOST - la capa es la pluma, no la dueña
Firma SS14 (2026-08-26, nombre poseido tras rechazar el nombre generico de
capa: habria repetido el defecto un piso abajo). La capa compartida
publicaba el rect medido como --indicator-{x,y,w,h} - forma PUBLICA sin
dueño, invisible para la ley del espacio cerrado (que audita --{c}-*) y
para todos los guards. Tercera aplicacion de la doctrina del canal
(navigation-menu fue la segunda, tabs la habia firmado por escrito citando
a navmenu como precedente).
- MeasuredIndicatorOpts gana `component: string`; los DOS hosts (tabs,
radio-group - barrido completo, no hay mas) pasan xxxMorfo.kebab, NUNCA
un literal: el nombre del canal queda atado a la declaracion que lo posee.
- tabs.css lee el poseido directo; el css COMPARTIDO (sliding-indicator)
lee el alias local que cada receta declara (--_indicator-x:
var(--_radio-group-indicator-x)) - el cableado del puente THM-2, contrato
en el artefacto. --indicator-{duration,ease} INTACTOS a proposito: son
ranuras de FORMA, no canal - el _ separa las dos especies en el mismo
fichero; su falta de dueño queda flagged como especie pendiente.
- El censo aprende el CANAL TRANSITIVO (molde de derivesFromPublic,
memoizado, a prueba de ciclos, con la mutacion que impide que un alias
sobre un privado declarado clasifique canal). Efecto colateral MEDIDO con
acta: tooltip.css:27 pasa de exception a channel - su comentario firmado
ya decia "per-instance VALUE CHANNEL"; faltaba el mecanismo, no el
criterio.
- Ledger: la clave tabs RETIRADA entera (2 entradas global) con acta que
hace la lectura honesta - no se tokenizo nada ni se perdono deuda: se
corrigio una mala clasificacion en su fuente. 1154 -> 1152, 0/0.
- Numeros: tabs 97% -> 100% (global 2->0, channel 0->2, ni una clave
acunada) - atHundred 65 -> 66 - reach global 73% y public 3072 intactos.
- Dinamica verbatim en los dos hosts (radio-group manifiesta en segmented):
el canal poseido LLEVA el rect del item activo (x 784=784, w 71=71 /
x 793=793, w 102=102), el indicador desliza, los nombres viejos computan
vacio, control negativo quieto y positivo probando la CADENA del alias.
Re-verificado DESPUES de aterrizar el codemod del peer. Sonda estandar de
tabs 2528 valores x 10 estados a 0 diffs - dicho en voz alta: esa sonda
es CIEGA al canal; su 0 prueba lo circundante.
- Guards: 154 tests verdes - centinela tabs 70/79 identico (ninguna
adjudicacion citaba las medidas) - audit 162 PASS - docs:check 0/0 -
src/ sigue a 0 errores.
ATRIBUCION DECLARADA (acordada por canal entre sesiones): este commit CARGA
ademas la retirada de 5+5 `syncAttrs: true` en tabs-provider y
radio-group-provider - trabajo de "P0 fase C2c, audit 2026-08-26 - retirada
de syncAttrs, sesion de la auditoria" (vicen-63), que aterrizo en disco
durante esta construccion y cuya restauracion habria sido churn sin valor.
Su commit de C2c anota el viaje desde el otro lado.
BREAKING: --indicator-{x,y,w,h} ya no existen; el canal es
--_{c}-indicator-* del host y el css compartido lee el alias por receta.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* ── ACTA 2026-08-26 — the whole `tabs` key RETIRED, two entries ─────────────
|
|
|
|
|
|
* `global · tabs.css · [data-tabs-indicator] · {block-size, inline-size}` were
|
|
|
|
|
|
* the last two, and they left by exit 1 (TOKENIZED) read strictly, by exit 4
|
|
|
|
|
|
* (SYSTEM) read honestly: the declarations did not change shape, the NAME they
|
|
|
|
|
|
* read did. Firma §14 («MeasuredIndicator con nombre poseído»): the shared soma
|
|
|
|
|
|
* layer used to publish the measured rect as a bare `--indicator-{x,y,w,h}` —
|
|
|
|
|
|
* PUBLIC in shape and owned by nobody, which is why the census could only score
|
|
|
|
|
|
* it `global` and why the closed-namespace law never saw it (that law audits
|
|
|
|
|
|
* `--{c}-*`, and a name with no component prefix is foreign vocabulary). The
|
|
|
|
|
|
* layer now writes into the HOST's namespace, `--_tabs-indicator-*`, so the two
|
|
|
|
|
|
* knobs read as what they always were: the value CHANNEL, out of the ratio.
|
|
|
|
|
|
* Measured: `tabs` global 2 → 0, channel 0 → 2, reach 97 % → 100 %, knobs 77
|
|
|
|
|
|
* unchanged; catalogue `atHundred` 65 → 66. No key was tokenized away and no
|
|
|
|
|
|
* debt was forgiven — a misclassification was corrected at its source, which is
|
|
|
|
|
|
* exactly the reading the header's «renaming a selector reads as one STALE + one
|
|
|
|
|
|
* new key» paragraph anticipates, except here the new key belongs to a class
|
|
|
|
|
|
* this ledger does not register.
|
|
|
|
|
|
*
|
fix(theming): la aguja del censo dejaba de ver lo que Prettier partia en dos lineas
M0. `classify` decide la clase de cada knob con seis AGUJAS sobre su valor, y
cinco exigian `var(--` con nada entre el parentesis y los guiones. Pero el
valor llega normalizado a espacios simples, asi que una declaracion que
Prettier habia roto en dos lineas llegaba como `var( --x` y la aguja fallaba.
El censo clasificaba por ORTOGRAFIA: el mismo knob puntuaba distinto segun si
su linea cabia o no en 100 columnas.
DOS VICTIMAS en todo el catalogo, una por aguja, medidas y verificadas en el
fichero por el pase adversarial:
- palabras.css:227 (la zebra) — puntuaba `literal`, es `public`. Su hermana
de :220 ya puntuaba public solo por caber en la linea.
- split-button.css:66 (el `min-inline-size` del menu) — puntuaba `global`,
es `channel`: un canal de valor por instancia que el censo llamaba
primitivo crudo. Cumple los tres requisitos de la clase, verificados uno
a uno.
Las otras tres agujas (`SYSTEM`, `STYLE_LAYER` y el `var(--` pelado) llevaban
el MISMO defecto con cero victimas hoy. Se corrigen igual: dejarlas ciegas deja
el bug armado para la proxima linea que Prettier rompa, y esta medido que no
cuesta nada — las cifras salen identicas con y sin ellas (cuatro variantes
construidas y medidas por el adversarial). La tolerancia esta COPIADA, no
inventada: `recipe-css-contract.test.ts:150`, el instrumento hermano de esta
misma casa sobre este mismo constructo, ya la tenia.
LEDGER: dos filas quedan STALE y se retiran con acta en la CABECERA (dentro
del mapa las borraria la proxima regeneracion). NO es deuda perdonada: ninguna
receta cambio, se corrigio una misclasificacion en su origen. Verificado por
cuatro vias independientes, la ultima byte a byte contra lo que el generador
escribiria, que no se borra ni una fila de deuda VIVA.
SUELO: `minAtHundred` 66 -> 67, y el acta dice la verdad sobre el mecanismo
porque el pase adversarial cazo que no la decia. NO es un re-base — en un
re-base se mueve la PREGUNTA y una multitud se mueve con ella sin haber
avanzado (14->45 al corregir el criterio; 45->65 cuando 252 knobs salieron del
denominador). Aqui no se mueve ni el criterio ni la doctrina, pero el
DENOMINADOR SI se mueve, por exactamente un knob: split-button cruza al 100 %
porque su knob no alcanzado SALE del ratio (`global` -> `channel`, excluida por
diseno), no porque ninguno se volviera publico. Lo que gana el alza de todos
modos es que su receta YA era correcta y el censo puntuaba ese trabajo bueno
como primitivo crudo. Misma lectura que la entrada de `tabs`, un piso mas
arriba. `reachPct` deliberadamente INTACTO: la otra victima mueve el ratio
72,7273 % -> 72,7682 %, que sigue siendo 73 — un suelo que subiera con eso
estaria citando ruido.
CIFRAS, predichas -> medidas: public 3072 -> 3073 · literal 325 -> 324 ·
channel 41 -> 42 · global 761 -> 760 · themeable 4224 -> 4223 · atHundred
66 -> 67 · ledger 1152 -> 1150 registered, 0 NEW, 0 STALE. Sobre 5187 knobs
escaneados cambian de clase EXACTAMENTE dos, y son los dos anunciados: cero
sobre-captura, medido por sonda independiente. Suite `theming-reach-floor`
verde; scope `src/uix/eidos` verde.
ANOTADO, no tocado (pre-existente, no de este lote): `scripts/theming-census.ts`
ya venia sucio de Prettier en HEAD — probado formateando la version intacta de
HEAD y obteniendo los mismos hunks desplazados +38, que es el delta de este
commit. Y `scripts/component-audit.ts:1137` arrastra el MISMO defecto de aguja
(cero victimas hoy). Las fichas generadas de split-button y palabras quedan
desfasadas hasta la proxima corrida de `--report`.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* ── ACTA 2026-08-27 (M0) — two entries RETIRED: the CLASS they registered was
|
|
|
|
|
|
* false ─────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
* `literal · palabras.css · …table[data-palabras-table-zebra]… · background` and
|
|
|
|
|
|
* the whole `split-button` key (`global · split-button.css ·
|
|
|
|
|
|
* [data-dropdown-menu-content][data-split-button-menu] · min-inline-size`) were
|
|
|
|
|
|
* the two knobs the census misread because its needle demanded a literal
|
|
|
|
|
|
* `var(--` and prettier had broken both declarations across lines (`var( --`).
|
|
|
|
|
|
* The zebra always read the component's own public token; the split-button
|
|
|
|
|
|
* `min-inline-size` always read a per-instance value CHANNEL. This is NOT debt
|
|
|
|
|
|
* forgiven — nothing in either recipe changed — it is a misclassification
|
|
|
|
|
|
* corrected at its source, same reading as the `tabs` acta above. Detail and
|
|
|
|
|
|
* measurement: the ACTA over `classify` in `theming-census.ts`.
|
|
|
|
|
|
*
|
feat(theming)!: SS16 - el guard vive donde NACE el valor, y el velo del drawer vuelve a pintar
Firma SS16, quinta aplicacion de la doctrina "la capa sostiene la pluma, no es
la dueña". El censo, el ledger y la ley del espacio cerrado auditaban SOLO
quien LEE (recetas de eidos); quien ESCRIBE la custom property por instancia
vive en soma/arts y ningun instrumento del eje lo habia enumerado jamas.
EL BUG VIVO QUE ESTO DESTAPO — y no se parcheo, se diagnostico
--drawer-overlay-opacity era DOS especies bajo un nombre: el knob de tema (el
contrato dice 62%) y el canal del arrastre (0..1). soma escribia el canal SIN
UNIDAD sobre el nombre del knob; color-mix() exige porcentaje, la funcion caia
invalida y el velo computaba rgba(0,0,0,0): NO PINTABA. Y el inline dejaba el
knob inalcanzable para cualquier tema. Se separan: el publico se queda como
knob (nadie lo escribe en runtime), el arrastre pasa a
--_drawer-overlay-progress (sin unidad, que para un multiplicador es lo
correcto) y la receta los COMPONE - calc(knob * progress) -, asi que el
arrastre ATENUA el tema en vez de destruirlo.
Medido en Chrome: reposo 0.408471 (antes rgba 0,0,0,0) - el tema LLEGA (20%
-> 0.1318, 62% -> 0.4085, 100% -> 0.6588; antes ninguno movia nada) - el
arrastre sigue (Escape real -> alpha 0; 0/0.25/0.5/1 lineal) - control
negativo: reinyectando la escritura vieja el velo vuelve a caer, o sea que la
unidad era el SINTOMA y las dos especies la enfermedad.
⚠ Estaba adjudicado EN PROSA en theming-sentinel-exceptions.ts:815 desde hacia
dias: la excepcion se trago el bug.
LOS 18 NOMBRES A SU SITIO
Clase B (11 en command/dialog/scroll-area/toast + 4 del drawer): forma publica
sin contrato y sin UN SOLO lector en el repo - una API publicada que el
framework no consume. A --_{c}-*, y los README de soma dejan de enseñarlos
como API del consumidor: ahora enseñan LA PARTE, con la formulacion verbatim
que SS15 ya habia verificado. Clase D (tree-view, gradient-picker): tenian
lector, verificados en navegador. --scrollbar-width NO se renombro por
inercia: es una escritura sobre el unico <body>, la doctrina no le llega, y
queda REGISTRADA con su razon en vez de inventarle un dueño.
LA AGUJA - src/uix/value-channels.test.ts (fichero propio, 6 tests)
Vitest y no script, porque el gate termina en la suite y eso es lo que
convierte la doctrina en ley. Deriva el vocabulario de sistema RESTANDO el
contrato a lo que emite el generador (lista derivada, nunca a mano). Barre
NUEVE raices - las siete nuevas verificadas a cero ANTES de asertarlas - y el
quinto test asserta que cada raiz declarada se anduvo de verdad: una raiz que
resuelve a cero ficheros es la puerta que nadie habria visto.
Dos correcciones al dimensionado, por medida: el arbol tiene SEIS formas de
escribir, no cuatro, y una de las que faltaban era LA CANONICA (la
--_${component}-... que SS14 y SS15 firmaron) - un guard ciego a ella habria
dado verde sobre su propio destino. Y un barrido mas ancho marcaba en rojo un
anchor-name, que en gramatica es identico a un nombre de propiedad: probado y
REVERTIDO. El instrumento miente primero.
Mutaciones: cinco, con el arbol byte a byte identico. Incluyen las dos que
prueban lo que las correcciones añaden (una clave _ DEL contrato pasa de verde
a rojo; un --_ legitimo en blocks pasa de rojo a verde).
LO QUE EL ADVERSARIAL CORRIGIO DE MI PROPIA LEY
Dictamen: "es LEY sobre la mitad que barre, y sigue siendo PROSA sobre el
absoluto que enuncia". Cierto: decia "toda escritura por instancia" y la aguja
no mira eidos, donde viven ONCE escrituras de nombres contratados. Corregido -
el enunciado nombra sus nueve raices y DECLARA sus dos fronteras (eidos, con
su expediente abierto; web/routes, congelado); las salidas son CUATRO y no
tres (la cuarta, sistema, es verde); y el registro se queda con cuatro campos
por entrada (since, reason, destination, heldBecause) con un test que exige
los cuatro - la diferencia entre un registro y un cajon.
Y la relectura con ojo de abogado encontro DOS absolutos mas, en direccion
contraria, escritos bajo "WHAT THE GUARD DOES NOT CHECK": "por instancia" no
es decidible estaticamente (el antecedente del guard es MAS ANCHO que el de la
doctrina), y el {c} de --_{c}-* no lo comprueba nadie, solo el guion bajo.
SS18 ABIERTO, y es la respuesta medida a "¿puede volver a nacer un nombre sin
dueño sin que nadie se entere?": SI, desde eidos. 11 contratadas + 18 sin
dueño, partidas en dos especies (la fundacion generando su vocabulario, que es
legitima, y las props ergonomicas del consumidor, que no es lo mismo).
dialog-overlay-opacity es el GEMELO EXACTO del velo del drawer y sigue vivo.
No es "añadir el root": distinguir las dos especies EXIGE FIRMA.
Guards: value-channels 6/6 - recipe-css-contract + reach-floor + generated-css
55/55 - docs:check 0/0 sobre 819 - --debt 1148/0/0 - tsc 0 propios - prettier
limpio.
BREAKING: los 18 nombres publicos ya no existen; el canal se lee --_{c}-* y
sigue sin ser de nadie para fijarlo. Y consumir un --{c}-* del contrato desde
un provider es ROJO desde hoy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
|
* ── ACTA 2026-08-27 (SS16, clase D) — two `gradient-picker` entries RETIRED ──
|
|
|
|
|
|
* `global · gradient-picker.css · {.gradient-picker-trigger-swatch,
|
|
|
|
|
|
* [data-gradient-picker-value-swatch]} · background` left by exit 4 (SYSTEM)
|
|
|
|
|
|
* read honestly, exit 1 (TOKENIZED) read strictly: NOTHING changed shape in the
|
|
|
|
|
|
* recipe — the two `background` declarations read the same channel they always
|
|
|
|
|
|
* read, under a new NAME. Same animal as the `tabs` acta above, one floor down.
|
|
|
|
|
|
* Soma stamped the user's live gradient as `--gp-current-gradient`: public in
|
|
|
|
|
|
* shape, owned by nobody, and ABBREVIATED against theming §6 r5 — so the census
|
|
|
|
|
|
* could only score it `global` and the closed-namespace law never saw it (that
|
|
|
|
|
|
* law audits `--{c}-*`; a name with no component prefix is foreign vocabulary).
|
|
|
|
|
|
* It now writes `--_gradient-picker-current-gradient`, in the component's own
|
|
|
|
|
|
* namespace and unabbreviated, so the two knobs read as what they always were:
|
|
|
|
|
|
* the value CHANNEL, out of the ratio. Measured: `gradient-picker` global 2 → 0,
|
|
|
|
|
|
* channel 0 → 2, reach 96 %, 27 knobs unchanged. No debt was forgiven — a
|
|
|
|
|
|
* misclassification was corrected at its source. The sibling flip of the same
|
|
|
|
|
|
* firma, `--tree-depth` → `--_tree-view-depth`, retires NO entry here: that
|
|
|
|
|
|
* calc also reads `--tree-view-indent`, so the census already scored it
|
|
|
|
|
|
* `bridge` and the bare name never reached this ledger.
|
|
|
|
|
|
* ⚠ AND THE HEADER FIGURE MOVED WITH IT (corrected 2026-08-27, same firma,
|
|
|
|
|
|
* at its close): the WIP-track paragraph above said «582 of the 1150 keys»,
|
|
|
|
|
|
* which was the total before those two lines were retired. The tracks
|
|
|
|
|
|
* themselves did not move — `palabras` 359 + `chronos` 223 = 582 either way —
|
|
|
|
|
|
* so only the denominator was stale: `--debt` reports **1148 · 0 new · 0
|
|
|
|
|
|
* stale**. A total quoted in prose is not regenerated by anything, which is
|
|
|
|
|
|
* exactly why it went stale in the same pass that moved the list.
|
|
|
|
|
|
*
|
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': [
|
|
|
|
|
|
'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-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"
|
|
|
|
|
|
],
|
|
|
|
|
|
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'
|
|
|
|
|
|
],
|
|
|
|
|
|
'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'
|
|
|
|
|
|
]
|
|
|
|
|
|
};
|