03f3dca823
Implementa chapters/correlacion.py siguiendo el contrato de capítulos: build_correlacion(profile, ctx) -> Chapter|None, CHAPTER_VERSION="1.0.0". Consume profile['correlations'] (salida de association_matrix del grupo eda, sin recalcular estadística) y emite, como bloques del modelo: - Matriz de asociación (Figure/heatmap perezoso, RdBu_r, con signo en num-num y magnitud en métricas mixtas; etiquetas ordenadas por conectividad y recortadas a las 16 más conectadas para legibilidad). - TOP de pares POSITIVOS y TOP de pares NEGATIVOS en dos DataTable separadas (los negativos son por construcción num-num, único método con signo), con método, valor, p-valor corregido (FDR) y significancia. - Resumen FDR (multiple_testing) + leyenda de métodos. - Aviso de espuriedad por niveles no estacionarios (Granger-Newbold) cuando el profile lo marca. Lectura defensiva en todo (None si no hay pares; nunca lanza). Anti-cortes: sólo bloques del modelo, el paginador parte tablas repitiendo cabecera y escala la figura entera. Test self-contained (5 casos): golden a nivel de bloques + golden render PDF/PPTX, edge sin pares -> None, edge sólo positivos -> nota honesta, y anti-corte con matriz ancha + etiquetas largas (dato íntegro a nivel de bloque, ambos renderers sin reventar). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>