Auditoría multi-agente (hallazgos verificados adversarialmente). Arreglos:
- CRÍTICO: insertLineBreak detectaba code/table solo en el bloque TOP-LEVEL, así
que un code block ANIDADO (dentro de una columna o callout) recibía un nodo
break (ilegal en code text-only — validate lo rechaza) en vez de un \n literal.
Ahora camina el container path: el code block es la hoja, la table un ancestro
de la celda.
- El parser de NOTACIÓN (parsePalabrasScheme) no conocía marks/blocks, así que un
esquema en forma de notación no podía gobernar (marks=/blocks= caían en el
scale-shortcut como NaN y se descartaban). Añadido el parseo (coma-lista; vacío
= ninguno), restaurando la paridad notación<->objeto (ESQUEMA §9).
- Bubble: el Select de familia se renderizaba VACÍO cuando el esquema declara
fonts:[] (dropdown muerto). showFamily ahora exige allFonts.length > 0.
- Doc: marks NO gobierna color/background (el color va por editable + la paleta)
— corregido en types.ts + ESQUEMA §6b, que lo documentaban por error.
Tests nuevos: parseo de notación marks/blocks + lock-down (marks:[]/blocks:[] =
nada permitido, que sobrevive al merge).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>