astra
alpha-0.1-background
alpha-0.1-dir-prefs
alpha-0.1-sec-dom
menubar-v4-safe
active-uix
morfo-runtime
morfo-driven-soma
semantuix
glm-5
main
sium-v1.0
${ noResults }
712 Commits (c482fc7a28b8e23c5493cc774b524483f9e091d5)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
c482fc7a28 |
docs(process): handoff — (c') ejecutada f875f60b9, adversarial SANO, gate verde; queda #5, esbuild devDep y .prettierignore de generated/
Reescribe el bloque «PRIMERO» de CONTINUE-audit-p0.md como spec cerrada de (c') (pines · sources por eje fuera · sin throw · visual-preference.ts compartida · delta cero x5 · guard revocado retirado · ledger +22), con las dos decisiones del constructor (D1 dos parámetros, D2 pines en el envoltorio), las cifras del adversarial independiente y sus tres observaciones (standalone clavado ahora suscrito; .prettierignore sin generated/ desde e3c0899dd; render.ts sin test). Actualiza la fila 5 de «Qué queda». Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
4 weeks ago |
|
|
f875f60b97 |
feat(eidos)!: un escalar es una instancia CLAVADA — mueren el throw de la puerta 2 y las fuentes por eje (c')
Cierra el estado INTERINO de
|
4 weeks ago |
|
|
9c465a8445 |
docs(process): handoff — e3c0899dd es interino, (c') firmada para manana y el brief de #5
CONTINUE-audit-p0.md: bloque «PRIMERO MAÑANA» (el throw uix+escalar rompe todas las demos; forma firmada (c'): pines si, sources reactivas fuera, sin throw, pines en el boot; orden del dia con el adversarial cortado que hay que relanzar entero, el guard de contracts.test que codifica la doctrina revocada, y la decision de esbuild como devDependency), el acta de P2 #2 en el cuerpo y el brief completo de #5 al final. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
4 weeks ago |
|
|
e3c0899dd8 |
feat(prefs)!: un motor, un sobre, un codigo — mode/theme/density/scaling son prefs, sobre canonico y boot compilado
Auditoria P2 #2: los attrs de preferencias se estampaban solo en cliente tras hidratar (app.html sin script, build estatico sin servidor) — flash claro para todo usuario dark — y no podia existir un script de arranque porque no habia contrato de persistencia (PrefsIntentStorage lo aporta cada app) y eidos llevaba un SEGUNDO motor de preferencias (theme / modeSource / densitySource / scalingSource por opciones, sin persistir), por doctrina escrita en arts/prefs/README.md («UIX does not turn it into prefs.theme»). El autor REVOCA esa doctrina. UN MOTOR. `mode` es una dimension de prefs junto a `motion` (mismo patron, `resolveTheme` de $libs/theme, que ya existia como gemelo de `resolveMotion`); `theme` (id de familia), `density` y `scaling` las declara la RAIZ en un modulo PURO (src/uix/active-uix/prefs-schema.ts) — arts/prefs no importa src/uix. Eidos lee `uix.prefs` por su puerto `ActiveEidosPreferenceSource` (src/uix/eidos/prefs-source.ts), como ya consume uix.langs / uix.dom / uix.motion. El resolver de tema baja a una funcion pura `resolveThemeId(theme, mode, isRegistered)` (src/uix/eidos/lib/theme-id.ts); los cuatro nombres de attr de eidos a src/uix/eidos/lib/attrs.ts y los de la proyeccion a src/arts/prefs/dom-attrs.ts: modulos sin Svelte, porque el boot los comparte. UN SOBRE. src/libs/prefs/document.ts: `uix.prefs-intent` v1 bajo la clave `uix.prefs`, espejo del documento de eidos (kind + version estrictos, version desconocida se RECHAZA). Solo intencion — nunca efectivo ni entorno. Adaptador localStorage canonico creado en la raiz standalone (`prefs.storage`: propio gana, `false` desactiva). HIDRATACION SINCRONA: el bridge awaitea `load()` aunque sea sincrono y produciria una primera resolucion con defaults y un salto un tick despues — el flash movido de sitio; la raiz lee el sobre ANTES de crear el motor y lo pasa como `intent`; el bridge queda solo para persistir (skipHydrate). UN CODIGO. El boot no se escribe: se COMPILA con esbuild desde los mismos modulos puros (src/uix/active-uix/boot/boot.ts → generated/boot.js, 15.009 bytes / 5.625 gzip, IIFE sin globales, cero Svelte; test de sincronia, precedente generated/base.css). `renderUixBootScript(params)` (boot/render.ts) es Kit-agnostico: el framework entrega el string; el hook de Kit son tres lineas de la app (receta en docs/theming/guide.md, NO cableada: el layout congelado lleva persistencia propia). Estampa los NUEVE attrs (dir lang data-motion data-sound data-haptic data-theme data-mode data-density data-scaling) → DELTA CERO al hidratar, probado por integracion con la raiz REAL (boot/boot-delta.test.ts, tres casos) y por tres mutaciones (sin hidratacion sincrona → rojo; constante de attr cambiada en un solo lado → rojo; boot compilado con `data-modo` → los tres casos rojos). Hallazgo del test de delta cero: la raiz no aplicaba el entorno del navegador (esperaba que el app llamara detectBrowserEnvironment en onMount) — ahora lo siembra ella (guardado por `document`) y observa sus cambios (watchBrowserEnvironment → patchEnvironment), sustituyendo el listener que eidos tenia en createSystemColorSchemeSource. Cifras: vitest prefs+libs/prefs+active-uix+eidos+value-channels 57/593 · suite completa 453/5306 · check 73 (src/ a cero; ledger intacto) · check:gate OK · eidos:lint 0 · docs:check 0/0 · morfo:vocabulary, arts/blocks/packs/rtl/translations/agent:check OK. ESTADO INTERINO, firmado para manana (acta en CONTINUE-audit-p0.md): `resolvePreferences` LANZA con `uix` + escalar/source (forma firmada originalmente); medido despues, `ActiveEidos.create()` inyecta `uix` SIEMPRE y todas las demos pasan escalares o sources (>=12 sitios, incluido web/routes/uix/+layout@.svelte:511) → el sitio de demos lanza al arrancar hasta la forma (c'): pines si (escalar explicito gana, precedente `options.dom ?? options.uix?.dom`), sources reactivas por eje FUERA, sin throw, pines en el boot. Pendientes anotados: contracts.test.ts:1270-1276 codifica la doctrina revocada; esbuild no es dependencia declarada (transitiva de vite) — decision del autor con servidores parados. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
4 weeks ago |
|
|
3fba26e235 |
docs(process): la costura de la apariencia queda cerrada — e2c37f892, con lo que enseño
CONTINUE-audit-p0.md: la costura pasa de «a firma» a CERRADA con la forma
ejecutada, las cifras del adversarial (LOTE SANO EN CODIGO, 5 defectos de
docs/informe corregidos antes de commitear), las tres latentes anotadas
(el ledger enmascara la deuda de appearance en dos ficheros de rutas; la
render cruda sobre config no validada; el donante resuelto dos veces) y
dos lecciones: routes es provisional y NO puede condicionar el diseño (mi
(a) inicial rebajaba el campo a opcional por no tocar routes), y un agente
cortado a mitad de una mutacion se revisa entero antes de reanudarlo.
CONTINUE-theming.md, bloque «LO PRIMERO»: desde
|
4 weeks ago |
|
|
e2c37f8920 |
feat(eidos)!: un tema DICE lo que es — appearance obligatorio en ThemeDefinition, una sola fuente de verdad
|
4 weeks ago |
|
|
6505a0e095 |
docs(process): P2 eidos ejecutado — tres lotes, cuatro defectos del adversarial y la costura que va a firma
CONTINUE-audit-p0.md registra los hashes ( |
4 weeks ago |
|
|
bd7b9ba3ef |
docs(process): fila 15 — axe-core no es «instalar o no», es CUÁNDO
Deliberacion a tres bandas. La instalacion se RETIRO antes de tocar el lock: meterla en una ventana de coordinacion habria BLANQUEADO una decision que espera firma — el hecho consumado disfrazado de logistica. La objecion «viola la dependencia cero» quedo retirada al medir (2 dependencias embarcadas, 23 de andamio: la regla gobierna lo que se embarca). Y el argumento que decide es el TIMING: axe mide el DOM MONTADO, que vive en el arbol congelado que se reconstruye, y sin conduccion de estados solo veria el REPOSO — daria verde sobre lo que nadie ha mirado, y ese verde se cita como evidencia. Forma recomendada de la firma: «si, pero no ahora», con condicion de entrada escrita. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
4040bacc67 |
docs(process): P2 arrancado y tres leyes de coordinacion que costaron sangre ajena
La regla de las dos manos NO escala a tres (hoy dos carriles tocaron el mismo fichero con un commit de diferencia y se salvaron por zonas disjuntas, no por protocolo) · el acoplamiento puede ser por DERIVACION y no por fichero (un guard que deriva su vocabulario restando el contrato a lo que emite el generador enrojece si cambias QUE emite o EN QUE ORDEN, aunque no escribas un nombre nuevo) · y la ley del «se anduvo»: al declarar que algo se emite UNA vez, asertar tambien que cada raiz declarada resolvio a ficheros — un contador a cero se lee igual de verde estando roto, que es la familia del continue mudo de nuestro propio morfo-check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
f1f686d097 |
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 |
|
|
839f79eeb7 |
docs(theming): el registro dice la verdad de hoy - y los DOS expedientes que faltaban existen
El handoff describia un arbol de hace horas y apuntaba a dos expedientes que
NO EXISTIAN, justo en los dos items que declaraba prioritarios: el instrumento
era el propio handoff. Reparado, con su adversarial detras.
LOS DOS EXPEDIENTES, escritos con el dimensionado medido (aguja propia sobre
2014 ficheros de soma+arts):
- next-features SS16 - A-1 "el guard vive donde NACE el valor": el censo, el
ledger y la ley del espacio cerrado leen SOLO recetas de eidos; quien
ESCRIBE la custom property por instancia vive en soma/arts y nadie lo
enumero jamas. 49 nombres en 76 escrituras: 1 token que MIENTE, 15 de forma
publica sin contrato y con CERO lectores en todo el repo (API publicada que
el framework no consume), 3 sin dueño, 30 ya --_*. Quince README de soma
llevan "## CSS Variables": cinco publican los crudos y OTROS CINCO publican
--_{host}-floating-* diciendo "esto es interno" - la misma casa hace las dos
cosas, es el acta de una migracion a medias. Es la aplicacion al eje de la
ley que HEAD
|
1 month ago |
|
|
05dcb4db79 |
docs(process): LEY — web/routes congelado, y la consecuencia: el guard vive donde NACE el valor
El arbol de rutas se reconstruira, asi que escribir ahi es trabajo que se tira. Leerlo como evidencia sigue valiendo. La consecuencia mayor no es de alcance sino de METODO: morfo-check, permutation-check y component-audit validan NAVEGANDO a web/routes/uix/components/<kebab>/+page.svelte, de modo que el 161/161 que este handoff cita mide un arbol que se va — no es evidencia sobre el contrato. Lo construido en src/ sobrevive; lo apoyado en la ruta, no. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
22278ee7d4 |
docs(process): P1 CERRADO — kinds de foco, server-only y el gate en 5239 verde
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
35d0005de4 |
docs(focus): las seis especies se RENDERIZAN, y añadir una séptima romperá al compilar
- FocusPolicyTable ensancha de 2 a 6 especies, cada una con las columnas que
su forma tiene y una frase que dice qué SIGNIFICA para quien lee la demo
(el lector de esa pestaña quiere saber cómo se comporta el foco, no ver el
tipo). De paso muere el `{:else}` desnudo que renderizaba la tabla de
roving para CUALQUIER kind — el mismo bug que, al ensanchar la unión, dio
6 errores de tipo.
- Cableada en las 9 páginas declarantes (las 2 que el lote no alcanzó —
command y combobox — cableadas aquí con el patrón de la casa).
- morfo.md: la fila de runtime nombra las SEIS especies con su ejecutor, y la
convergencia queda escrita como doctrina: la declaración de foco nombra la
ESPECIE y el primitivo de teclado la EJECUTA.
EL `<h4>` HUÉRFANO, cerrado por el TIPO y no por una rama muerta (hallazgo
del adversarial): el encabezado vive fuera de la cadena de ramas, así que una
séptima especie sin rama imprimiría un título con nada debajo. Un fallback en
runtime NO puede expresar eso — TypeScript demuestra que la cadena es
exhaustiva HOY y la rama sería código muerto (medido: `Property 'kind' does
not exist on type 'never'`). En su lugar queda una prueba EN EL TIPO: añadir
un kind deja de compilar. Es la ley de la casa — lo que se añade rompe al
compilar, no deriva.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
062384ccaa |
docs(morfo)!: filas 13 y 14 — los TRES estados de una entrada sin fuente, y la regla de alpha deja de vivir solo en prosa
FILA 13(c), firmada: una entrada declarada sin `value` tiene tres estados y la diferencia era invisible. (1) con value: la emite la bolsa y la verifican compilador, resolver e instrumento. (2) sin value, required, sin condición: la emite el PROVIDER y morfo-check EXIGE el attr en el elemento — la única forma sin fuente que alguien verifica. (3) sin value con optional o con condición: CONTRATO-ONLY — nadie la emite y nadie la exige; legitima el attr cuando aparece y documenta que el provider puede emitirlo, nada más. El tercer estado se QUEDA porque es la única forma de decir «el provider lo posee Y es condicional» — descartadas (a) exigir siempre (pondría rojo el caso legítimo) y (b) prohibir la condición (quita expresividad honesta). Se escribe donde se lee: el JSDoc del campo, el comentario del pase (d) que prometía más de lo que el código hace, y una tabla en morfo.md. Dato para no optimizar lo minúsculo: en ese pase `severity` es el filtro DOMINANTE y `condition` el marginal. FILA 14(a), firmada: `web/routes/alpha` (TERMINATED) pasa de doctrina en prosa a entrada de .gitignore con su acta. La lección que la motiva es del peer vicen-e1: `git add <directorio>` consulta .gitignore, JAMÁS doctrina — una regla que solo vive en prosa no la hace cumplir nadie, y anoche entró en un commit por eso. De paso deja de ensuciar el status de las tres sesiones. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
482bb5cd94 |
docs(process): la bolsa de 12 ejecutada — 8 lotes anclados, gate 5224 verde, y la fila 13 que nació de la 7
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
7e23fe53be |
docs(process): C+ COMPLETO Y VERIFICADO — gate 5207 verde, morfo-check 161/161 con el gate ARIA dentro
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
0da97636bd |
docs(morfo): la fila keyboard dice la arquitectura C+ — declaración única, ejecución por especies, dispatcher como conveniencia de hoja
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
39f7dd1ed3 |
docs(process): C+ tanda de especies completa (4 primitivos, 4 commits) — bolsa de decisiones de autor consolidada
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
9cca75a3ef |
docs(process): fila cero CERRADA (4 commits, cosecha a CERO, pase ARIA gatea) — cola descongelada, C+ arranca
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
3fa4b7954f |
docs(process): hotfix f48acab37 + dossier unificado COMPLETO y presentado — ley de wave en cabecera
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
c8db4c8d64 |
docs(process): gobernanza unificada confirmada por el autor — wave 1 anclado, cola en pausa hasta el dossier
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
d1e955eef7 |
feat(soma)!: la GRIETA cierra — states/parts rompen en el tipo y el censo de fuentes vigila el resto
Firma C del autor (2026-08-27), ciclo completo con agentes Opus ultra
(expediente + C1 censo + C2 tipos + adversarial + C1-fix), sesion
coordinando y supervisando.
LAS DOS MITADES. (1) TIPOS: StateNameOf<M> desde part.states[] (terminador
de profundidad con su consecuencia escrita; degrada a string sobre el Morfo
ancho, jamas colapsa a never) y PartKebabOf<M>, estrictos en nivel
componente y nivel parte, con la clausula [Names] extends [never] ? never
(molde de dir?: never) — que cazo en compilacion un QUINTO defecto que
ningun censo podia contar: knob registraba states:{} sobre un morfo sin
estados. props queda SourceMap CON ACTA en el propio tipo (v.propRef tira
el literal; generificar arrastra 3 builders en fichero de otro eje) y un
type-test con 4 @ts-expect-error como guard permanente — el negativo de A1
reproducido en compilacion. (2) CENSO source-census.test.ts: 2 GATES
(huerfana nueva - fuente muerta per-parte nueva) + 78 filas advisory
c1a/c1b/c2 nominales para adjudicacion del autor + excepciones-vivas +
negativos PROBADOS en rojo.
Defectos REALES retirados (cada uno verificado sin regresion en navegador
real por el adversarial): button states.loading (error de CUBO — el morfo
lee loading como PROP; vivia de la duplicacion; data-loading intacto,
SSR incluido por curl) - tabs states.value y radio-group states.value
(huerfanos: nada los consumia) - media-player rate-button props.label
(fuente muerta con comentario falso; el aria-label resuelve por
translationRef) - knob states:{}.
Adversarial: 5 CONFIRMADOS + 2 parciales. El material: el descubrimiento
del censo ignoraba los .part() con parte por VARIABLE (9 sitios, no los 5
que el propio adversarial conto) => >=4 filas falsas en advisory y un
unreadable=0 que mentia. C1-fix con CONVERGENCIA contra el censo
independiente del adversarial: keys 729==729, props 602==602, orphans
20==20 fila a fila; el delta restante 100% definicional nombrado; las
filas alimentadas por spreads opacos se estampan UNCERTAIN en vez de
afirmarse. Mordidas verificadas con plantado y restauracion por sha256
(typo nuevo => check lo nombra con linea exacta; check en los 71 de linea
base EXACTOS, todos en web/).
TRES COMPROMISOS vigentes (acta en el tipo y en next-features):
(i) generificacion de stateRef/propRef/mapRef como eje propio al liberarse
types.ts — cierra props (594/729); (ii) flip del censo a gate BIDIRECCIONAL
cuando el autor adjudique las 78 filas (el tooltip deshabilitado mudo esta
ahi); (iii) wave c1b->bolsa (36 escrituras manuales) bajo la ley de
unica-tuberia de P0. Deudas nombradas: keyboard[]-deps invisibles a
CompiledPart.deps (poblacion CRECIENTE, dato vicen-42; el censo las une por
AST con retirada fechada; secuenciar con el dueño de compile.ts) -
StateNameOf en runtime (casa natural morfo/selectors.ts) - label del
rate-button huerfano (anotado) - MediaPlayer.RateButton no se renderiza en
ningun sitio del repo (hallazgo lateral).
Convivencia: types/schema/compile/resolver INTACTOS (wave ARIA del peer
aterrizado antes,
|
1 month ago |
|
|
b54bb3ad0c |
docs(process): las 3 decisiones de arquitectura FIRMADAS por el autor — cola de waves fijada
1/3 keyboard C+: declaración = contrato único; ejecución converge en PRIMITIVOS POR ESPECIE (grid-walk, segment-walk, highlight-typeahead, value-step) + actions por registración. 2/3 server-only: *.server.ts nativo en la PUERTA de cada motor svrs, alias absorbe el rename, censo como segunda capa, ley del tier. 3/3 foco: la unión gana walk / activedescendant / slider / segments — la taxonomía de foco CALCA la de los primitivos C+ (dos contratos, una taxonomía). Premisa que rige las tres: «lo mejor para la arquitectura, coherencia y diseño INDEPENDIENTEMENTE de lo que cueste». Cola: cosecha ARIA → C+ → kinds → server-only, cada wave sobre árbol asentado. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
f00d1fc10e |
docs(process): P1 — cosecha ARIA advisory FIRMADA: 258 hallazgos en 32 morfos, byte-idéntica entre pasadas
161/161 PASS en caliente (los 2 fríos = clase documentada). Dossier de 5 clases en el handoff; chronos concentra 120/258 (roledescription ×59 + dropeffect deprecado ×42). El wave de adjudicación es el siguiente ejecutable y ESPERA al C2 de vicen-e1 (orden por canal); el flip del pase a gate va al final de ese wave. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
17c6adddcb |
feat(morfo)!: P1 — split attrs[]/aria[] y vocabulario ARIA cerrado: cada cubo su territorio
El cubo aria[] mentía un 13,5 %: 989 entradas medidas — 847 aria-*, 8 role, y 134 impostores (type ×130, tabindex ×2, for, contenteditable). - MorfoPart.attrs[]: cubo nuevo para atributos HTML genéricos, misma forma de entrada y mismo compilado (un solo builder para ambos cubos). - aria[] se CIERRA por tipo: MorfoAriaAttr = 'role' | unión del spec (53 nombres, DERIVADA del array ARIA_ATTR_VOCABULARY — nunca lista paralela, la lección MorfoElement). aria-grabbed/aria-dropeffect deprecados-en-1.2 con acta (verdad embarcada de drag-drop); braille*/description son 1.3 y entran anotados. Un typo muere en el tipo. - Esquema guarda el territorio en AMBAS direcciones: aria[] con no-aria LANZA sugiriendo attrs[]; attrs[] con aria-*/role o data-* LANZA. - Codemod: 134 entradas movidas en 62 morfos (133 bloques). Orden de emisión MEDIDO y conservado: data → attrs → aria (132/133 bloques declaraban el impostor como prefijo contiguo de aria[]); snapshot de los 921 parts × 168 morfos: 920/921 byte-idénticos — la única divergencia (breadcrumb.ellipsis, type tras un aria-label consumerWins) no cambia la bolsa renderizada. - Consumidores de part.aria censados: compile/resolver/schema actualizados; morfo-check pierde un filtro MUERTO (el cubo ya llega cerrado por tipo+schema); landmark-census y tests de la mitad aria sin cambio. - morfo.md documenta los dos cubos. 13 tests nuevos (8 schema territorio + 5 compile paridad). morfo 262/262 · soma entera 1314/1314 · check 71. Nota de árbol compartido: src/uix/morfo/source-census.test.ts (sin trackear) es el eje SourceMap de vicen-e1 y NO viaja aquí (add -u); su censo re-medirá sobre este árbol asentado, orden acordado por canal. Ejecutado por agente Opus 5, sesión coordinando y verificando (guardas de territorio probadas en vivo, suite re-corrida). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
da9f342c61 |
feat(scripts): P1·A11Y — morfo-check gana el pase ARIA en modo ADVISORY
Presencia de entradas aria required SIN condición · role declarado vs renderizado · aria-* sin declarar (tría A-85 del consumidor exenta: aria-label/labelledby/describedby). Imprime y cuenta APARTE, no gatea: la cosecha se adjudica primero y entonces se voltea a gate (la lección de P0 — medir, adjudicar, y solo después armar). El handoff registra el estado P1 completo con deudas nombradas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
b549cfee59 |
docs(theming): el hash del cableado motion en el handoff - e16c14dec
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
e16c14dec7 |
feat(eidos): el ritmo de revelado sube a config — primitives.motion.staggerViewport, y su regla emigra a la foundation
Firma opción 1 del autor (cableado EidosConfig.motion → CSS, la última entrada de PENDING_PRIVATE_RENAME). Ejecutada con el esquema completo: expediente + dos constructores en serie + adversarial, todos Opus en ultra, coordinación y supervisión de la sesión. El gancho --motion-stagger-each-default era FICCIÓN: nadie lo declaraba y su único consumo (motion.css:42) resolvía siempre al literal 70ms. Ahora: primitives.motion.staggerViewport: '70ms' (tipo + default + validación + contrato + emisión --motion-stagger-viewport en :root, molde floating-gap verbatim) y la regla [data-stagger] > [data-animation-trigger='viewport'] EMIGRA a renderMotionBlocks — donde vive la máquina entera del stagger. Con ello motion.css queda en sus dos gates de opacity (su veredicto structural, más verdadero), la entrada del registro cayó STALE POR MECÁNICA y el registro, a cero, se DESMONTA con acta (un guard que inspecciona el vacío es un falso verde); la historia completa cierra en canon/recipe-contract.md. E14 (70→20ms) queda APLAZADA con nombre: firma de diseño propia, mueve 8 blocks. Adversarial 9/9 CONFIRMADO: neutralidad término a término contra la línea base histórica en Chrome real con el IntersectionObserver disparando (0/0.07/0.14/0.21/0.28/0.35s en /blocks/team/preview) - override 999ms reescribe la cascada - nombre muerto inerte (5s en :root, cero efecto) - <Cascade> intacto con control positivo quirúrgico (solo el hijo estampado toma el token) - cero empates de hoja posibles (tres escritores en .css, especificidad decide) - el guard del espacio cerrado muerde por mutación - 126 tests, censo 73%/66/1152-0-0, docs 0/0. Sus reservas, con acta en changelog §57: el contrato gana DOS filas (--motion-stagger-each entra como (derived) al emitirse — clase preexistente de index/index-rev) - gates divergentes latentes - path del contrato sin pin. Correcciones del adversarial incluidas: dos citas muertas del ledger de blocks anotadas, el presente falso de component-audit.ts, y el absoluto de canon matizado. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
ab54a8821b |
docs+fix: correcciones del pase adversarial (3 Opus, refutar) sobre las firmas del dia
Las tres firmas SE SOSTIENEN (A1 7/7 con 4 refutaciones fracasadas; A2 8/8; A3 8/8). Toda refutacion aceptada era de PROSA y cae aqui: fechas 2026-08-27 -> 2026-08-26 en 17 sitios (los commits son del 26; deriva de sesion) - la promesa API-frozen del CONTINUE del floating layer enmendada (los --floating-* salieron de la lista congelada con la firma SS15; era la fuente del claim de vicen-41) - CONTINUE-direction anotado al alias vivo - el absoluto falso de 5 READMEs corregido (un !important de autor SI gana al inline, congelando la geometria - medido por A2) - precision del positivo de combobox (dependiente de viewport; exacto a 1440x620) - paridad ARIA completada (aria-hidden de los dos indicadores) - ficha de radio-group: seis alias, dos regimenes - residuos de prosa del item 2 anotados - fe de erratas precisada (
|
1 month ago |
|
|
0e63de76fd |
docs(process): cierre del eje focus-first en el handoff — morfo-check 161/161 caliente, perm-check 447/454 con los 10 adjudicados ajenos (2 chips lanzados)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
b00544be5e |
docs(focus): la política de foco se RENDERIZA — morfo.md/eidos.md corregidos + 27 páginas
- morfo.md: fila runtime de focus reescrita (FocusScope.use({policy}) +
RovingFocusGroup + censo), ejemplo dialog con kind:'trap', paso 5 con las
dos familias comentadas, fila 2-de-3 de focus firmada (executor + censo +
render en docs: guard más fuerte que la clase grandfather).
- eidos.md: fila FALSA «focus.trap = layout hint» retirada (nunca fue
cierto; eidos no lee focus).
- FocusPolicyTable.svelte (web/routes/uix/lib): renderiza morfo.focus —
tabla trap (kind/atrapa-Tab/initial/return/restore) y roving
(kind/parts/eje/loop/ejecutor compartido vs custom firmado).
- Cableada en 27 páginas de demo tras el h2 de Accessibility (25 por
agente + dialog/toolbar de referencia). chronos NO tiene sección
Accessibility en su página: hueco anotado en el handoff, no inventado.
- PLAN-focus-first.md: el plan del eje con sus leyes.
- CONTINUE-audit-p0.md: sección del eje ejecutado.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
53810cb5ec |
refactor(eidos): item 2 - los slots de forma de la capa deslizante llevan el _ del alias
Firma (a) del autor: --indicator-duration/-ease eran el ALIAS de la capa (la especie de --_indicator-x, opcionales-con-fallback), no un pomo de tema - la ortografia bare prometia una superficie que la cascada negaba. Flip a --_indicator-{duration,ease} (1 escritor radio-group.css alimentando desde sus claves de CONTRATO segmented-transition-*, 1 lector lib/sliding-indicator.css); reparto de propiedad escrito: la capa posee QUE propiedades deslizan (y su colapso reduced-motion), el anfitrion A QUE VELOCIDAD via contrato. Contrafactico MEDIDO pre-flip: bare en :root a 9s = 0.18s intacto (no se retira superficie); post 4/4: pixel identico, bare inerte y vacio en el pill, contrato alcanza (7s), alias en :root inerte. Comentarios themeable-so-bare reescritos; prosa del sentinel al nombre vivo (clave intacta). Lint 0 invalid, reach-floor 5/5, censo neutro.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
3eb819e7d5 |
docs(uix): tanda 2 del contraste con el corpus — el modelo de los capitulos alcanza a la tuberia unica
La lectura completa del corpus (6 lectores Opus, 6/6 censos, ~4,5M tokens) destapo lo que la tanda 1 no vio, y esta tanda lo cierra: - El modelo «Effects sync attrs» — repetido VERBATIM en cuatro capitulos (morfo, soma-architecture, overview, active-architecture), en sus tablas de piezas, en los cuatro pasos de trigger y en las dos frases-resumen — muere: la pieza es la bolsa de render; ADom aplica solo el prewrite. - morfo.md: partProps re-descrito (bolsa completa), la cadena causal de commits, y las filas de la tabla de ejecutores (data/aria/role → bolsa). - coincident: los DOS docstrings que ensenaban «in-flight» (types.ts y morfo.md) se alinean con la equivalencia FIRMADA de sema.md §slider («emit-then-handler, like pre; declared indivisible») — el hallazgo del informe queda refutado como defecto de runtime y reducido a esto. - glossary: el kind fantasma `internal` (la clase exacta que docs-check:422 mata y su regex no ve en tablas markdown) → `public|private|virtual` real. - El gate entra en la doctrina: check:gate/gate en el loop de verificacion (testing-and-tooling y getting-started), eidos:lint como script npm en su fila, y la tabla de Commands de morfo.md. - Mi propia sobreafirmacion de ayer, calificada: el test SSR es un CANARIO de dos representantes sobre mecanismo compartido, no un censo — el censo por provider queda encolado (P1). morfo:check en getting-started declara su alcance real (data-*; role/aria sin validador DOM). - Supervivientes de C2c: el assert-vacio de cropper (la clase «guard sobre VACIO pasa») retirado con acta; sticky/README deja de citar syncAttrs. - gradient-builder/README: fila data-kind del Track + acotacion mesh v1. - Handoff: DOS fe de erratas — «nunca los vio nadie» era falso (vistos y reducidos 12→3 en cb554ae2e; lo que faltaba era la puerta) y la ley del escritor imperativo gana su excepcion abierta (textarea autosize, con su cierre correcto encolado). Verificacion: docs:check 0/817 · cropper 19/19 · morfo schema+compile 133/133. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
6c0bc69284 |
docs(theming): fe de erratas de c494fb395 - los tres hunks de soma-architecture eran de vicen-41 (P0-docs, 70c01870a), no de vicen-42
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
70c01870a0 |
docs(uix): la doctrina alcanza a la bolsa única — el corpus deja de enseñar la API muerta
La clase exacta que la auditoría flagueó (doc↔código), producida esta vez por NUESTROS propios cambios de P0 fase C y sin corregir hasta ahora: - component-guide §«two sanctioned ways»: reescrita a UNA vía (la bolsa .props resuelve el contrato entero; extras solo lo que el morfo no puede expresar; valores CRUDOS; la inversa «morfo sin value ⇒ soma escribe»). Los 4 snippets con syncAttrs: true, limpiados. - soma-architecture: partProps re-descrito como LA bolsa (identidad + contrato completo, SSR incluido); el párrafo del flag sustituido por «el único escritor imperativo es el prewrite»; snippet limpiado. - soma.md: snippet de accordion sin el flag. - morfo.md §naming: el «(SSR included)» dejó de ser contraste — desde la tubería única TODO plan viaja en la bolsa; lo que distingue a los naming es la PRECEDENCIA (consumer-first via mergeProps). - testing-and-tooling: la postura SSR gana el canario ssr-contract.test, y nace «The gate» (check:gate + ledger menguante, gate, hook — los instrumentos de fase B no estaban documentados). - CLAUDE.md: el paso 4 de trigger ya no dice «effect-driven» (prettier normalizó de paso el fichero entero — solo whitespace, contenido intacto, declarado aquí para que el diff ancho no sea silencioso). Lo histórico (changelog, old-deprecated, audit de julio, process/) se queda como historia. Verificación: docs:check 0 errores sobre 817 docs; cero menciones normativas de la API muerta fuera de referencias históricas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
c494fb3952 |
refactor(soma)!: §15 — la geometría del posicionador es canal del ANFITRIÓN
Firma A del autor (§14 literal, cuarta aplicación de «la capa es la pluma,
no la dueña»): FloatingContentOpts gana `component` (kebab del morfo, nunca
literal — 11 hilos de creación en 9 anfitriones) y las medidas por instancia
del posicionador aterrizan como `--_{host}-floating-{transform-origin,
available-width,available-height,anchor-width,anchor-height}`. El sexto
nombre que el expediente no contaba (`--floating-native-offset`, rama
nativa) queda canal INTERNO de capa (`--_floating-native-offset`: lo escribe
la capa en su propio wrapper, lo leen solo sus reglas foundation). El lector
COMPARTIDO (preset scale-fade de motion) lee el alias neutro
`--_floating-transform-origin` que cada receta anfitriona declara desde su
canal — cableado sliding-indicator, 9 declaraciones. getFloatingContentCSSVars
(export muerto, next-features §13.ii) MUERE con la firma.
Matiz que la ejecución destapó: el content de MENUBAR compone DropdownMenu —
su canal es --_dropdown-menu-floating-* y el alias de menubar se acota al
PANEL (el canal sigue al componente que POSEE la composición flotante);
split-button y palabras leen el canal ajeno de su composición en el punto de
composición, anotado en cada sitio.
Verificado: suites 96+60+78 en verde - eidos-lint x10 con 0 invalid -
reach-floor 5/5 (ledger 0 NEW / 0 STALE) - component:audit 162 PASS / 4
NEEDS-WORK idéntico - check 0 atribuibles POR FICHERO - dinámica CDP 9/9
anfitriones: canal vivo con px por instancia, los nombres VIEJOS computan
VACÍO en todos, positivo exacto (tooltip max-block-size 525.033px == canal
525.0326px; combobox ídem; panel de menubar anchor-width 886px = la barra;
sidebar popout ENGANCHADO 720px/35px), negativo fijando los viejos en :root
= nada se mueve. Trampa reconfirmada: el popout SIN ANCLAR da undefinedpx —
comprobar que la superficie estaba abierta.
Viaja con atribución declarada (acuerdo por canal con la sesión P0
vicen-42, precedente
|
1 month ago |
|
|
7730f033fa |
docs(process): handoff P0 al dia — 8 guards adjudicados, politica de flakies firmada, hook armado
Items 1 y 2 del handoff ejecutados ( |
1 month ago |
|
|
860ad2a911 |
docs(theming): item 0 ejecutado - data-ready es contrato (1cb07c1e1), acta en el handoff; header-z objetado y revertido, el peldano espera firma
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
43bb676d48 |
docs(process): fe de erratas del handoff P0 — la proveniencia de data-ready
El eje theming la midió (`git show`): los dos hand-writes de `data-ready` los introdujo `76f18a5e8` (cuyo mensaje ya avisaba del punto ciego del guard), no `8ac23047f`. Quedan aceptados en su cola como item 0 con la adjudicación pre-masticada: contrato real (tabs.css:329 + sliding-indicator.css, puerta anti-flash) → declarar en ambos morfos. Error con alcance, jamás repudio. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
e8a54ac455 |
docs(theming): item 0 de mañana - los dos guards de data-ready son preexistentes (76f18a5e8, no de SS14) y la adjudicacion es DECLARAR en los morfos (lo leen tabs.css y sliding-indicator.css como puerta anti-flash); el hook sigue sin armar por los 8 rojos historicos de la suite del peer P0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
b01646cfd8 |
feat(soma)!: fase C2c — el efecto syncAttrs muere; una tubería, cero ambigüedad
Cierre de la fase C del P0: tras C2a (la bolsa resuelve el contrato) y C2b (una sola computación), el efecto era doble-escritura idempotente sin función. Se retira entero: `syncPartAttrs`, el flag del tipo y las ~71 registraciones que lo pasaban (tabs-provider y radio-group-provider viajaron en `8ac23047f` del eje theming con la retirada declarada en su cuerpo — coordinación por canal entre sesiones, historia completa desde ambos lados). El único escritor imperativo sancionado que queda es el prewrite de `trigger` (un commit que el morfo declara). La PRIMERA pasada de la suite completa de la historia (nadie la corría — el hallazgo original del informe demostrándose solo) destapó la cola: ~258 asserts en 34 ficheros de test de provider (jsdom, elementos sueltos) ejercitaban las escrituras DOM del efecto retirado, no el contrato. Todos re-firmados a asserts de bolsa, con tres leyes que salieron del trabajo: - la bolsa entrega valores CRUDOS (número 20, no '20'; booleans donde el getter los produce) — Svelte stringifica al render, el DOM no cambia; - una AUSENCIA se aserta contra la bolsa del PART (`'x' in props === false`), no contra un getter de provider que añada la clave explícita `undefined`; - el prewrite (`data-last-action`) SIGUE siendo assert de DOM — es el escritor imperativo que sobrevive. De la misma pasada: `skin-media-player` entra en `COMPETING_ROOTS` de lint.test (viste el contrato de media-player, clase audio-player — nació sin registrarse y nada lo corría), y los ~10 comentarios que describían el efecto (dialog-001, sticky, knob, field, media-player, editable, anchor-nav) pasan a describir la bolsa, verificados spread a spread antes de tocar nada. Verificación: runtime 49/49 · ssr-contract 6/6 · morfo:check 161/161 post-strip («All routed morfos validate» — el detector definitivo) · los 34 ficheros re-firmados en verde · suite completa con únicos rojos residuales los flaky de carga ya adjudicados (timeouts que pasan en solitario) · svelte-check src/ a 0 (71 = ledger exacto de web/). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
613215fe7c |
docs(theming): el dia queda cerrado - handoff 2026-08-26, causa corregida y suelo en 66
Cierre documental tras el adversarial de SS14 (firma sostenida; un claim de
ACTA cayo y se corrige aqui):
- La causa de la extension transitiva del censo era CONTRAFACTUAL en tres
sitios (census.ts, next-features, CONTINUE): el alias de SS14 no lleva
prefijo propio y el censo lo descarta antes - clasifica global con la
razon CORRECTA (medido construyendolo: 1 new, rojo). La extension se
justifica por tooltip (alias propio sobre canal propio), no por el alias.
Reescrita con el contrafactico medido.
- El suelo sube a minAtHundred 66 - SS14 llevo a tabs al 100% y el
adversarial cazo el suelo rezagado de su propia ley ("only moves up").
- SS15 NUEVO en next-features, redactado por el adversarial: el GEMELO un
piso arriba - floating.svelte.ts publica cinco medidas de instancia como
--floating-* (publico sin dueño, ~8 recetas lectoras); mas grande que SS14
porque el posicionador sirve a muchos hosts. Dimensionar antes de firmar.
- Handoff 2026-08-26: las cinco firmas del dia con sus adversariales, lo
primero de mañana por orden de valor (SS15 - la especie de forma sin dueño
- cableado motion - palabras/timeline), el estado de la rama compartida
(peer vicen-63 con su C2c/hook, que push falta) y las leyes nuevas del dia
(el nombre dice la verdad en las dos direcciones; grep ciego a llaves;
sonda ciega a canales; una causa sin contrafactico acaba corregida).
Suelo 5/5 con 66 - docs:check 0/0.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
8ac23047f1 |
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 |
|
|
b7808fbe66 |
docs(theming): puntero de linea de SS14 corregido (radio-group new MeasuredIndicator en :353, no :337) - nit del adversarial; fe de erratas del commit de2e136a0: el ejemplo 1 del README y el control positivo son dos escrituras distintas (el ejemplo mide 2->3px via --border-width-thick; el 9px/rgb(1,2,3) era el probe de valor forzado)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
de2e136a0f |
refactor(theming)!: el indicador de navigation-menu es CANAL - y el consumidor estiliza la PARTE
Firma "(a) completada" (2026-08-26), cerrada tras rechazar la especie
`output` por abrir excepciones (clase barata - frontera de prosa - patron ya
rechazado dos veces): las cuatro hermanas --navigation-menu-indicator-
{x,y,w,h} pasan a --_ (la adjudicacion que tabs ya firmo citando a ESTE
componente como precedente), indicator-w se RETIRA del contrato, y el README
de soma deja de enseñar a saltarse la composicion.
- Flip atomico escritor+lectores. Trampa del barrido, medida: el grep del
nombre LITERAL es ciego a la forma con llaves {x,y,w,h} - escondia tres
menciones. Barrido final: 0 consumos vivos de los nombres viejos.
- indicator-w retirada con acta MEDIDA (y una auto-correccion: la primera
acta decia "con la barra cerrada" y era falso - el indicador se monta
condicional y hay 0 nodos; lo real, con transiciones CONGELADAS: solo una
regla !important de autor le llegaba, y la unica ventana donde asomaba
era el indicador montado sin rect - un subrayado de ancho cero). Contrato
44 -> 43, generated -1 linea, ningun ledger rancio.
- README de soma: las medidas siguen tabuladas como canales privados "not
consumer API"; la seccion nueva enseña la PARTE ([data-navigation-menu-
indicator] + data-state + los tres pomos thickness/bg/radius) con
ejemplos VERIFICADOS POR MEDICION (el ejemplo 1 es literalmente el
control positivo: block-size 2 -> 9px). Hueco FLAGGED sin acuñar: el
ejemplo viejo de pildora no tiene traduccion - falta un eje de forma en
la parte; en SS13.
- Registro PENDING_PRIVATE_RENAME -> UNA entrada (motion). SS14 NUEVO en
next-features: unificar tabs (--indicator-* SIN prefijo, MeasuredIndicator
:80-83, 2 claves global en el ledger) - con el hallazgo de que ningun
guard los caza HOY porque no llevan prefijo: el espacio cerrado premio al
que nombraba mejor.
- Numeros: public 3073->3072, channel 37->38, reach 73% y atHundred 65
intactos (ningun redondeo cayo), --names 4566 con 0 desviadas, centinela
nav-menu 42/43 con la misma unica adjudicacion, --debt identico.
- Dinamica verbatim: el indicador DESLIZA (left 0 -> 111px, ancho 107 ->
108.56 = rect del trigger, canal w/h == triggerRect), los nombres viejos
computan vacio en el elemento (control negativo 777/333: nada se mueve).
Guards: 78 tests verdes + soma 9/9 + mutacion por las dos caras + audit
162 PASS + docs:check 0/0.
BREAKING: los cuatro nombres publicos del indicador ya no existen y
--navigation-menu-indicator-w sale del contrato; el indicador se estiliza
por su parte y sus pomos.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
b9339633f0 |
docs(theming): los residuos que midio el adversarial del codemod de canales
El flip fue ATOMICO (13/13 con escritor y lector vivos, control negativo en los siete componentes, ni un canal muerto en silencio) y lo refutado fue documental: - STUMBLES.md SS7 entra por fin al arbol: la anotacion existia sin commitear (fallo de staging del coordinador - la raiz del repo no estaba en las rutas). Deja escrito lo importante: el renombre no rompio nada por DISCIPLINA de procedimiento (git ls-files por nombre), no porque un guard cruce escrituras del provider contra lecturas de receta - S5 sigue abierto. - PLAN-background: la anotacion decia "las nueve menciones de aqui abajo" y tres quedaban arriba - ahora dice su alcance exacto. - next-features SS13 gana las dos deudas del adversarial: la sonda estandar es CIEGA a 12 de los 13 canales (PROPS sin translate/rotate/ gridTemplateColumns/animationDuration - el control positivo dio 0 diffs con el canal roto a proposito) y el export muerto getFloatingContentCSSVars que construye por plantilla el nombre publico retirado de menubar. Fe de erratas del commit e100ea520: son 31 ficheros, no 32. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
1 month ago |
|
|
e100ea5209 |
refactor(theming)!: trece canales de valor hablan como lo que son - privados
Eje-codemod firmado 2026-08-26 (destino firmado dos veces: los 318 y la ley
del espacio cerrado). Flip atomico escritor+lectores por nombre, barrido por
git ls-files (94 ocurrencias en 36 ficheros; el barrido destapo lectores que
ninguna lista traia: el comentario del morfo de knob, dos demos, y PLAN-
background). 32 ficheros.
- background pointer-{x,y,px,py} + progress · color-swatch fill ·
emoji-picker columns · knob {angle,progress,start-angle,sweep} · menubar
panel-anchor-width · text-gradient duration -> --_{c}-*. El nombre viejo
computa vacio en los siete componentes.
- PARADO con expediente: --navigation-menu-indicator-h NO se renombra - es
una de CUATRO hermanas escritas en un literal, el README de soma las
enseña como API del consumidor (dos ejemplos de CSS de app leen -h) y -w
es clave DECLARADA del contrato. Privatizar una de cuatro parte una API
documentada. Tres opciones redactadas en next-features SS13, sin elegir;
el registro PENDING_PRIVATE_RENAME queda con DOS entradas (esta + motion),
cada una con su razon.
- La trampa del censo NO mordio y la prediccion estaba mal por un orden de
magnitud: UNA reclasificacion (color-swatch.background), no ~15 - el censo
cuenta knobs de APARIENCIA y doce canales viven en geometria o conservan
un publico hermano. public 3074->3073, channel 36->37, reach 73%,
atHundred 65: el suelo no se toca.
- Verificacion dinamica de los SIETE canales vivos por CDP (verbatim en el
acta de la sesion): el parallax sigue al puntero con la privada (translate
-28,-24 -> 32,28 = x*depth), el knob rota por teclado (-27deg -> 0deg,
arco 108 -> 135 = progress*sweep), el chip pinta su prop, columns 9/6/12
tracks (control negativo: el nombre viejo a 3 no mueve nada), el panel
toma 886px del anchor, text-gradient 8s. Estatica: sonda 7/7 a 0 diffs
reales (el unico diff, un velo de emoji-picker, reproducido 2/2 = ruido);
color-swatch sin ruta de demo declarado en voz alta (la sonda con 0 nodos
es un guard que no inspecciona nada) y medido donde monta.
- Guard mutado por sus dos caras: entrada retirada reintroducida -> STALE;
nombre viejo devuelto a una receta -> missing. Docs ANOTADOS con fecha
(la adjudicacion medida de color-swatch del 23-08 intacta), volcados solo
donde describen codigo vivo. audit 162 PASS - docs:check 0/0 - --debt
1154/0/0 sin una clave movida - --names 0 - check 0 atribuibles.
Deuda menor anotada: la fila generada de audit/theming/background.md:72 la
regenerara el --report supervisado pendiente.
BREAKING: los trece nombres publicos viejos ya no existen; el canal se lee
--_{c}-* y sigue sin ser tuyo para fijarlo.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
6499eb2a4c |
feat(theming)!: la ley del espacio cerrado - un --{c}-* existe si y solo si base.ts lo declara
Firma 2026-08-26. El espacio de nombres publico queda CERRADO sobre el
contrato: no hay tercer estado. El fallback es seguridad de VALOR, no
escapatoria de contrato; declarada la clave, el fallback inline muere (el
default vive en UN sitio, base.ts).
- El barrido real del catalogo: 25 nombres propios con fallback fuera de
contrato en 10 componentes (la prosa decia 13 en 2). ONCE eran knobs de
tema y quedan DECLARADOS con su default verbatim, scope root medido:
mockup 9 (con --mockup-phone-shadow ACUNADA - un nombre cargaba shadow-4
en el marco y shadow-5 en el bisel: un nombre con dos defaults es la
mentira que la ley mata) y text-scramble 2. Fallbacks inline retirados.
- Los otros QUINCE no son knobs: 14 canales de VALOR que soma/envoltorio
escriben por instancia (destino ya firmado por la firma de los 318:
--_{c}-*; el codemod es un eje propio) y el default de motion cuyo hogar
es EidosConfig.motion (su entrada structural queda intacta). Viven en el
registro PENDING_PRIVATE_RENAME del guard - nombrados, fechados, con
destino escrito y STALE simetrico: contarlos, no bendecirlos. La firma
medida de color-swatch.fill (2026-08-23) queda INTACTA y citada.
- El guard de fantasmas endurecido al "si y solo si": un --{c}-* del propio
componente fuera de contrato es ROJO con o sin fallback; el prestamo
ajeno y el sistema conservan sus reglas. Mutaciones: var inventado con
fallback -> rojo nombrado; prestamo ajeno -> verde; entrada de registro
rancia -> rojo STALE.
- Neutralidad PROBADA: generated/base.css = +11 lineas y nada mas; computed
A/B en navegador reconstruyendo el mundo viejo inline sobre el mismo nodo
- mockup 3 nodos x 2 cromos x 6 propiedades identicos (el bisel conserva
shadow-5), text-scramble identico. mockup se midio donde monta de verdad
(/blocks/feature-split): no tiene demo propia.
- Numeros: solo no-contract 18 -> 16. El suelo NO sube y la razon importa:
la ley cerraba un hueco de CONTRATO, no de alcance - esas declaraciones
ya puntuaban public; lo que faltaba era declarar el NOMBRE.
- Efecto lateral anotado en la clave, el handoff y next-features: el crudo
var(--primitive-neutral-12) migro verbatim a base.ts y R-4.6 (que escanea
CSS) ya no lo ve - la deuda sigue, ahora nombrada en el contrato.
- docs: recipe-contract SS4 reescrito con la ley y sus corolarios (el
value-reference con-fallback queda acotado a vocabulario ajeno/sistema);
CONTINUE y next-features al dia - pendientes del eje: el codemod de los
14 canales, el cableado del canal de motion, palabras y timeline.
BREAKING: consumir un --{c}-* propio no declarado es rojo desde hoy, con o
sin fallback.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
1 month ago |
|
|
cc2894b36f |
docs(theming): el corpus derivado recoge la clase structural y la firma de los 318
Regeneracion tras |
1 month ago |