tsconfig tiene noUncheckedIndexedAccess -- promoRoots[promoIndex % promoRoots.length] tipa como Category | undefined aunque en runtime siempre es valido (promoRoots.length > 0 ya se verifico antes de este punto). Extraido a una constante con guard explicito para que TS angoste el tipo. Sin cambio de comportamiento. Detectado por el build real en main tras el merge de #41 -- no se puede correr tsc localmente en esta maquina (ver notas de sesiones anteriores), asi que esto solo lo valida el CI post-merge.