La homonimia muere: `primary`/`secondary` significan JERARQUIA DE MARCA en el
catalogo ENTERO, tambien dentro de los seis primitivos de tinta (text, heading,
display, code, label, s-text). El paso de tinta del 82 % se llama `subtle` -
PROP y TOKEN, sin excepcion: el nombre es el contrato en el artefacto (la misma
ley que la FIRMA B' y la 12.9; se rechazo por escrito la via "solo el prop con
tabla de traduccion" - las excepciones legitimas son las FIRMADAS con razon,
no las inventadas al decidir para abaratar).
- Los seis CONTENT_INK, IDENTICOS: {subtle, muted, disabled, on-solid}; el
nivel-1 es el DEFAULT sin prop. `label` gana `on-solid` (cierra la
divergencia de familia registrada en e4fa616e5).
- Renombre completo: --color-content-secondary -> --color-content-subtle y la
clave de config content.secondary -> content.subtle (RUPTURA de API de
tema). 355 referencias por patrones acotados; la raiz SIN prefijo
(cssVar('color-content-secondary'), render-css.ts) incluida; en grafito.ts
conviven tres claves `subtle` (content/border/shadow) y solo cambio content.
El generado, reproducido BYTE A BYTE aplicando solo el renombre al anterior.
- Codemod value-preserving: 11 call sites (6 secondary->subtle incl.
expresiones y ternarias; 5 primary->fuera, incl. TRES defaults de prop) con
la condicion ROJA caracterizada (--style-caption-color es el UNICO estilo
cuya tinta default no es primary; los 5 sitios caen en ramas body). alpha/
(untracked, TERMINATED) fuera.
- Las 6 demos migradas al vocabulario nuevo (s-text: CERO cambios, no tiene
lista de tinta); label arranca en el default y pinta IDENTICO (contrafactual
medido: el estado viejo habria pintado el morado de marca).
- Neutra en pixel, MEDIDO: nivel 1 ESTRICTO CERO en 71.200 valores (blocks
enteros, s-text entero, subarboles data-*); nivel 2: 31 diffs, todos
trazados a las ediciones firmadas del harness (anchos de chips, reindexado
de la lista de label con las tintas supervivientes byte a byte). Total
171.712 valores + 59.072 de re-corridas a 0 de ruido.
- Guards: CONTENT_INK identicos entre los seis y sin nombres de rol (mutacion:
muerde), y el generado sin rastro del token viejo con las 6 definiciones del
nuevo. Dos cronicas fechadas en docs/old-deprecated, intactas a proposito.
- Docs: changelog 54 - reference (eje de tinta) - next-features 13 (divergencia
de label RESUELTA).
Supervision: verificador independiente pre-firma (dos claims MURIERON en
verificacion antes de tocar codigo), tres agentes en fases (censo+baseline ->
implementacion+codemod -> demos -> verificacion de dos niveles -> docs).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>