martes, 3 de noviembre de 2026

Serie: Cero Energético

 

⚡

Serie: Cero Energético

Tres guías prácticas para entender qué es un cero energético, preparar tu red doméstica y elegir el SAI adecuado. Con imágenes técnicas y criterios de compra.

Un cero energético no es un apagón cualquiera: es un fallo sistémico que puede dejar a millones de personas sin suministro durante horas o días. Esta serie reúne tres artículos que cubren el fenómeno desde todos los ángulos: el contexto, la preparación práctica y la pieza técnica que marca la diferencia.

Los tres artículos son independientes, pero están pensados para leerse en orden. Si solo tienes cinco minutos, empieza por el primero.

🔌
ARTÍCULO 1

Cómo preparar tu red doméstica frente a un cero energético

Guía práctica con SAI, router 4G/5G y cableado. Tres niveles de protección y lista de productos orientativa.

Leer artículo →
🗺️
ARTÍCULO 2

Qué es un cero energético y cómo responder

Definición, causas, mapa de riesgo global y guía de actuación antes, durante y después del apagón.

Leer artículo →
⚡
ARTÍCULO 3

El SAI: los 8 milisegundos que evitan un desastre

Qué es un SAI, cómo funciona, por qué conmuta en milisegundos y cómo dimensionarlo para tu PC y tu router.

Leer artículo →

¿Por qué esta serie?

  • Porque el riesgo es real: el 28 de abril de 2025, España y Portugal se quedaron sin luz en cinco segundos. No es un escenario teórico.
  • Porque la preparación es barata: con menos de 250 € puedes cubrir lo esencial y evitar perder un día de trabajo.
  • Porque la mayoría de la gente no sabe por dónde empezar: estas tres guías dan el contexto, la práctica y la pieza técnica.
  • Porque un SAI de 70 € puede salvar un proyecto de horas: los 8 milisegundos de conmutación marcan la diferencia.

Recursos complementarios

📊

Lista de productos

SAI, estación de energía y router 4G/5G con precios orientativos y presupuesto por niveles.

🖼️

Serie visual

Diagramas técnicos de red por cable, conmutación del SAI y póster del cero energético.

🔗

Proyecto SIGMA-AVE

Informe del piloto →

¿Te ha resultado útil esta serie?

Si quieres seguir profundizando en continuidad, seguridad y sistemas críticos, o si te interesa el proyecto SIGMA-AVE de gestión ferroviaria con IA y seguridad verificable, conecta conmigo en LinkedIn.

in Follow me in LinkedIn José Agustín Fontán Varela CEO DE PASAIA LAB
Meta descripción: Serie completa sobre cero energético: qué es, cómo preparar tu red doméstica y cómo funciona un SAI. Tres guías prácticas con imágenes técnicas. 

 
PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA
José Agustín Fontán Varela — CEO de PASAIA LAB

El SAI: los 8 milisegundos que evitan un desastre CHAPTER 3

 

Cuando hay un apagón, el SAI no te da horas de autonomía: te da milisegundos. Y esos milisegundos son los que evitan que el PC se apague de golpe, que el router pierda la conexión y que un proyecto de horas se convierta en un archivo corrupto. En este artículo te explico qué es un SAI, cómo funciona, por qué conmuta tan rápido y cómo dimensionarlo para tu equipo.

Qué es un SAI y qué no es

Un SAI (Sistema de Alimentación Ininterrumpida), o UPS en inglés, es un dispositivo que se coloca entre la red eléctrica y tus equipos. Su función principal no es mantener todo encendido durante horas, sino evitar que los equipos se apaguen de golpe cuando hay un corte, un bajón de tensión o un pico.

Es importante entender qué hace y qué no hace:

El SAI SÍ hace El SAI NO hace
Conmutar a batería en milisegundos Darte horas de autonomía (para eso está la estación de energía)
Proteger contra picos y bajones de tensión Generar energía (solo almacena la que tiene)
Permitir un apagado ordenado del PC Sustituir a un generador o a una instalación solar
Filtrar el ruido eléctrico Alimentar electrodomésticos de gran consumo (nevera, horno)

La clave está en la última fila: un SAI es para equipos electrónicos sensibles (PC, router, ONT, switch, NAS), no para electrodomésticos de gran potencia. Para esos, la solución es una estación de energía o un generador.

Cómo funciona: los 8 milisegundos que lo cambian todo

Cuando la red eléctrica falla, el SAI no puede avisarte con antelación. Detecta el corte y conmuta a batería en un tiempo muy corto. Ese tiempo es el tiempo de transferencia, y es la especificación más importante de un SAI.

Los tiempos típicos son:

  • SAI offline (o standby): 8–10 ms. Es el más común y económico. Suficiente para la mayoría de equipos domésticos.
  • SAI line-interactive: 2–6 ms. Añade regulación de tensión (AVR), lo que lo hace más robusto frente a bajones.
  • SAI online (o double-conversion): 0 ms. Convierte siempre la corriente, por lo que no hay interrupción. Es el más caro y el que se usa en servidores críticos.

¿Por qué 8 ms es suficiente? Porque la mayoría de las fuentes de alimentación de los PC y de los routers tienen condensadores que mantienen la tensión durante 10–20 ms. Si el SAI conmuta en 8 ms, el equipo ni se enteró. Si el SAI tardara 50 ms, el PC se apagaría.

 


 
El instante crítico: la red cae (rojo), el SAI conmuta en 8 ms (azul cian) y los equipos siguen operativos sin interrupción.

Por qué el SAI es especialmente importante para tu PC

Un apagón brusco no solo te hace perder el trabajo no guardado. También puede causar:

  • Corrupción del sistema de archivos: si el PC se apaga mientras escribe en el disco, el sistema de archivos puede quedar dañado.
  • Pérdida de datos en SSD NVMe: los SSD modernos tienen cachés de escritura que, si se cortan a mitad, pueden dejar archivos corruptos.
  • Daño en la fuente de alimentación: los picos de tensión al volver la luz pueden dañar la fuente y, en cascada, la placa base.
  • Pérdida de proyectos de vídeo: si estás editando con archivos grandes y el PC se apaga, el proyecto puede quedar inservible.

Para un equipo como el tuyo (Ryzen 7 5700X + RTX 3050), el SAI no es un lujo: es la diferencia entre perder un día de trabajo o no perder nada.

Cómo dimensionar el SAI: la fórmula sencilla

El cálculo tiene tres pasos:

  1. Suma los vatios (W) de los equipos que quieres proteger.
  2. Divide entre 0,8 (factor de potencia típico) para obtener los VA.
  3. Añade un 20–30% de margen para picos de consumo.

Ejemplo para tu PC:

  • PC: ~350 W
  • Monitor: ~30 W
  • Total: ~380 W
  • 380 / 0,8 = 475 VA
  • 475 × 1,25 = ~600 VA

Pero como el PC puede tener picos de hasta 450 W en carga, lo seguro es un SAI de 900 VA a 1200 VA. Para el router y la ONT, con un SAI de 650 VA vas sobrado.

Tabla de dimensionamiento rápido

Equipos a proteger Consumo estimado SAI recomendado Autonomía típica
Router + ONT + switch 13–20 W 650 VA 30–60 min
PC + monitor 300–450 W 900–1200 VA 5–15 min
PC + monitor + router + ONT 350–500 W 1200–1500 VA 8–20 min
Servidor pequeño o NAS 50–150 W 650–900 VA 20–40 min

Criterios de compra: qué mirar además de los VA

  • Tiempo de transferencia: busca 8 ms o menos. Los line-interactive (2–6 ms) son mejores si hay muchos bajones de tensión.
  • Tipo de onda: para equipos con fuente con PFC activo (la mayoría de los PC modernos), el SAI debe tener onda senoidal pura. Si no, puede dar problemas.
  • AVR (regulación automática de tensión): muy útil en zonas con tensión inestable. Corrige los bajones sin gastar batería.
  • Puerto USB y software: permite que el PC se apague automáticamente cuando el SAI está bajo de batería. Imprescindible si no estás delante.
  • Baterías reemplazables: un SAI dura 10–15 años, pero las baterías 3–5. Comprueba que se puedan cambiar.
  • Número y tipo de tomas: Schuko es lo estándar en España. Asegúrate de que tiene suficientes para tus equipos.

Errores comunes al comprar un SAI

  • Comprar por VA sin mirar los W: un SAI de 1500 VA puede dar solo 900 W. Mira siempre los dos números.
  • Conectar electrodomésticos: una nevera o un horno pueden superar la capacidad del SAI y dañarlo.
  • No probar la conmutación: de vez en cuando, desenchufa el SAI de la red y comprueba que los equipos siguen encendidos. Si no, la batería está agotada.
  • Ignorar la onda: un SAI de onda cuadrada puede hacer que la fuente del PC emita un zumbido o, peor, que no arranque.

Conclusión: 8 milisegundos que valen mucho

Un SAI no es un equipo caro ni complicado. Un modelo de 900 VA para el router y otro de 1200 VA para el PC cuestan juntos alrededor de 225 €. A cambio, te dan la tranquilidad de que un apagón no te hará perder el trabajo, no corromperá tus archivos y no dañará tus equipos. Y todo gracias a un mecanismo que actúa en 8 milisegundos, un tiempo que ni siquiera percibes, pero que marca la diferencia entre un susto y un desastre.

 


 

 

Meta descripción: Qué es un SAI, cómo funciona, por qué conmuta en milisegundos y cómo dimensionarlo para tu PC y tu router. Guía técnica con criterios de compra.

 

 

📜 CERTIFICACIÓN DEL ENTREGABLE

Se certifica que la entrada de blog "El SAI: los 8 milisegundos que evitan un desastre" —con definición técnica de SAI, tabla de qué hace y qué no hace, explicación del tiempo de transferencia, cálculo de dimensionamiento con fórmula y tabla de referencia, criterios de compra, errores comunes, imagen integrada de la conmutación y CTA final a LinkedIn— constituye un contenido publicable, estructurado y coherente con la serie técnica de PASAIA LAB, cierra la trilogía sobre cero energético y está alineado con el Decálogo de ACCIÓN CIVIL DIGITAL.

Firmado: José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.


Serie completa sobre cero energético:

¿Te ha resultado útil esta guía técnica?

Si quieres seguir profundizando en continuidad, seguridad y sistemas críticos, o si te interesa el proyecto SIGMA-AVE de gestión ferroviaria con IA y seguridad verificable, conecta conmigo en LinkedIn.

in Follow me in LinkedIn José Agustín Fontán Varela CEO DE PASAIA LAB

Publicado por José Agustín Fontán Varela · PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA

Qué es un cero energético y cómo responder CHAPTER 02

 

Un cero energético no es un apagón cualquiera. Es un fallo sistémico que puede dejar a millones de personas sin suministro durante horas o días. En este artículo te explico qué es exactamente, por qué ocurre, dónde es más probable y cómo responder antes, durante y después del apagón.

Qué es un cero energético (y qué no lo es)

Un cero energético es la pérdida total y simultánea de suministro eléctrico en un área geográfica muy extensa. Se produce cuando el equilibrio entre generación y consumo se rompe de forma brusca: las protecciones del sistema desconectan todo para evitar daños mayores y la recuperación es un proceso técnico complejo llamado «arranque en negro» que puede durar horas o días.

La diferencia con un apagón convencional es clave:

Característica Apagón convencional Cero energético
Alcance Calle o barrio Región, país o varios países
Causa Avería local Fallo en cascada del sistema
Duración Minutos u horas Horas o días
Red circundante Sigue funcionando También cae
Recuperación Reparación puntual Arranque en negro del sistema

Por qué ocurre un cero energético

Los ceros energéticos no tienen una única causa. Se producen por la combinación de varios factores:

  • Eventos climáticos extremos: olas de calor que disparan la demanda de refrigeración, borrascas con vientos que obligan a parar aerogeneradores, inundaciones que afectan a subestaciones.
  • Envejecimiento de la infraestructura: más del 75% de los transformadores de distribución en EE.UU. superan los 50 años. En Europa, muchas subestaciones tienen décadas de antigüedad.
  • Alta penetración de renovables variables: la generación solar y eólica depende del clima. En momentos de estrés, la gestión de la oferta y la demanda es más delicada.
  • Nueva demanda de los centros de datos de IA: el consumo de los data centers está tensando las redes en todo el mundo, especialmente en EE.UU. e Irlanda.
  • Fallos en cascada: un incidente local (un cortocircuito, una sobrecarga) puede propagarse si las protecciones no actúan a tiempo.

 

 
 

 



 
Del fallo a la continuidad: SAI para lo inmediato, estación de energía para lo esencial, 4G/5G para la conexión.

Mapa de riesgo: dónde es más probable

El riesgo no es homogéneo. Estas son las zonas donde los ceros energéticos son más frecuentes o más graves:

Peninsula Ibérica

El riesgo es real y ya se ha materializado. El 28 de abril de 2025, en apenas cinco segundos se desconectaron unos 15 GW de generación (cerca del 60% de la potencia del momento), dejando sin luz a la Península Ibérica, Portugal y parte del sur de Francia. En enero de 2026, una borrasca con vientos extremos obligó a parar miles de aerogeneradores y llevó al operador a activar mecanismos de emergencia para evitar el colapso.

Sistemas insulares (Canarias, Baleares, Ceuta y Melilla)

Son las zonas de mayor riesgo estructural de España. Su reducida interconexión con la península (o su ausencia, como en Canarias) significa que un fallo grave local no puede ser compensado desde fuera. Canarias ya ha vivido episodios graves, como el de Lanzarote en octubre de 2026, que afectó a más de 73.000 clientes.

Estados Unidos

La red está sometida a una tensión extrema. El calor récord dispara la demanda de refrigeración, mientras que la infraestructura es muy antigua. A esto se suma la enorme demanda de los centros de datos de IA, lo que ha provocado apagones masivos (como el que dejó a 840.000 hogares sin luz el 4 de julio de 2026) y un aumento drástico de los precios de la electricidad.

Asia (India, Japón)

En India, las olas de calor han colapsado la red del norte del país, dejando a cientos de millones sin suministro. En Japón, el calor extremo y la dependencia de combustibles importados han llevado los precios mayoristas a máximos históricos y han provocado apagones localizados.

Nota importante: Circulan bulos recurrentes sobre un «apagón global de 9 días» programado. Las autoridades y agencias de verificación han desmentido categóricamente estas afirmaciones. El riesgo es real y localizado, pero no se corresponde con un evento mundial coordinado.

 


 
El fallo (izquierda), la conmutación automática del SAI (centro) y los equipos críticos operativos (derecha).

Cómo responder: antes, durante y después

Antes del apagón

  • Identifica tus equipos críticos: router, ONT, PC, nevera, luces, equipos médicos si los hay.
  • Instala un SAI para los equipos de red (router, ONT, switch) y, si es posible, para el PC. Un SAI de 900 VA para la red y otro de 1500 VA para el PC cubren lo inmediato por unos 225 €.
  • Ten una estación de energía portátil de al menos 1 kWh para cubrir cortes prolongados.
  • Prepara un plan B de internet: un router 4G/5G portátil con batería propia o el tethering del móvil.
  • Ten linternas, pilas y una radio a batería. No uses velas por el riesgo de incendio.
  • Mantén el móvil cargado y ten una batería externa de reserva.

Durante el apagón

  • No abras la nevera ni el congelador innecesariamente. Un congelador cerrado mantiene la temperatura durante 24–48 horas.
  • Desconecta los electrodomésticos que no estén protegidos por el SAI para evitar picos de tensión cuando vuelva la luz.
  • Usa la estación de energía para lo esencial: luces, router, móvil, nevera si es necesario.
  • Activa el router 4G/5G si la fibra ha caído. Comprueba que el SAI alimenta el router y el switch.
  • Sigue las indicaciones oficiales por radio o por los canales de emergencia. No difundas bulos.

Después del apagón

  • Reconecta los equipos de uno en uno, empezando por el SAI y luego los electrodomésticos.
  • Comprueba el estado de las baterías del SAI y de la estación de energía. Recárgalas.
  • Revisa los alimentos de la nevera y el congelador. Si han estado por encima de 4 °C durante más de 2 horas, descártalos.
  • Anota lo que ha funcionado y lo que no para mejorar la próxima vez.

Las tres capas de protección (resumen)

Capa Equipo Autonomía Coste orientativo
1 SAI 900 VA (router + ONT + switch) 30–40 min ~70–90 €
2 Estación de energía 1 kWh Varias horas ~550–600 €
3 Router 4G/5G portátil Horas (batería propia) ~34–130 €

Con la primera capa cubierta (SAI para la red y para el PC), tienes lo esencial resuelto por menos de 250 €. Las otras dos capas son la siguiente fase, para cortes prolongados y caída de la fibra.

Conclusión: la preparación es la mejor respuesta

Un cero energético no se puede predecir, pero sí se puede mitigar. La diferencia entre un apagón que te deja sin trabajar durante horas y uno que pasa desapercibido está en la preparación previa: un SAI que conmuta en milisegundos, una estación de energía que cubre lo esencial y un router 4G/5G que mantiene la conexión cuando la fibra cae. No es una cuestión de gastar mucho dinero, sino de gastarlo bien.

 

 

 

 

Meta descripción: Guía completa para entender qué es un cero energético, por qué ocurre, dónde es más probable y cómo responder antes, durante y después del apagón.


Artículo relacionado: Si quieres una guía práctica para montar tu red doméstica por cable y protegerla frente a apagones, lee Cómo preparar tu red doméstica frente a un cero energético. 

  

📜 CERTIFICACIÓN DEL ENTREGABLE

Se certifica que la entrada de blog "Qué es un cero energético y cómo responder" —con definición técnica, tabla comparativa con apagón convencional, causas, mapa de riesgo global por zonas (Península Ibérica, sistemas insulares, EE.UU., Asia), guía de actuación antes/durante/después, resumen de las tres capas de protección, dos imágenes integradas (póster vertical y composición de tres zonas) y CTA final a LinkedIn— constituye un contenido publicable, estructurado y coherente con la serie visual y el análisis técnico de PASAIA LAB, alineado con el Decálogo de ACCIÓN CIVIL DIGITAL.

Firmado: José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.

¿Quieres profundizar en la preparación frente a cero energéticos?

Si te interesa el análisis técnico completo, el proyecto SIGMA-AVE de gestión ferroviaria con IA y seguridad verificable, o simplemente quieres conectar, estoy en LinkedIn.

in Follow me in LinkedIn José Agustín Fontán Varela CEO DE PASAIA LAB

Publicado por José Agustín Fontán Varela · PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA

Cómo preparar tu red doméstica frente a un cero energético - CHAPTER 01

 

Un cero energético no es un apagón cualquiera. Es la pérdida total y simultánea de suministro en un área extensa, con un fallo en cascada que puede durar horas o días. En este artículo te explico cómo preparar tu red doméstica para que tus equipos críticos y tu conexión a internet sigan funcionando.

Qué es un cero energético y por qué no es un apagón normal

Un apagón convencional afecta a una calle o un barrio, se debe a una avería local y se repara en minutos u horas. La red circundante sigue funcionando. Un cero energético, en cambio, es un fallo sistémico: el equilibrio entre generación y consumo se rompe de forma brusca, las protecciones del sistema desconectan todo para evitar daños mayores y la recuperación es un proceso técnico complejo llamado «arranque en negro» que puede durar horas o días.

El ejemplo más traumático para España fue el 28 de abril de 2025, cuando en apenas cinco segundos se desconectaron unos 15 GW de generación, cerca del 60% de la potencia del momento, dejando sin luz a la Península Ibérica, Portugal y parte del sur de Francia. No es un escenario teórico: es un riesgo real y localizado.

Por qué la red doméstica es el punto débil

Cuando hay un cero energético, la mayoría de los hogares pierden tres cosas a la vez: la luz, los equipos electrónicos y, lo que suele pasarse por alto, la conexión a internet. El router se apaga, la ONT de fibra se apaga y, aunque tengas batería en el móvil, la red fija deja de funcionar. Y si el apagón también afecta a los equipos de tu operador, ni siquiera la fibra responde.

La buena noticia es que mantener la red activa es sorprendentemente eficiente desde el punto de vista energético. Solo necesitas alimentar dos dispositivos: la ONT (5–8 W) y el router (8–12 W). En total, entre 13 y 20 W, el equivalente a una bombilla LED de bajo consumo.

 

 


 
 
Red doméstica por cable en situación normal: la fibra entra por la ONT, el router distribuye por Ethernet y el SAI protege los equipos críticos.

Los tres niveles de protección

La estrategia más eficaz no es depender de un único equipo, sino construir un sistema de respaldo por capas. Cada capa cubre una escala temporal distinta.

Nivel 1: el SAI (segundos a minutos)

El Sistema de Alimentación Ininterrumpida (SAI) es la primera línea de defensa. Su función no es mantener todo encendido durante horas, sino evitar que los equipos se apaguen de golpe y protegerlos de picos de tensión. Para tu PC, necesitas un SAI de 900 VA a 1200 VA; para el router, uno de 650 VA es más que suficiente y te dará entre 30 y 40 minutos de autonomía.

Nivel 2: la estación de energía portátil (horas)

Para cortes que se prolongan, una estación de energía portátil de 1 kWh te permite mantener la nevera, la iluminación, el router y los equipos de telecomunicaciones durante varias horas. Son silenciosas, no emiten humos y se recargan con paneles solares portátiles.

Nivel 3: el router 4G/5G (continuidad de internet)

Ningún SAI ni estación de energía servirá si el apagón también afecta a la red de fibra de tu operador. Por eso, el plan B imprescindible es un router 4G/5G portátil con su propia batería, que te da una conexión Wi-Fi independiente de la red fija. O, si prefieres una red completamente cableada, un router 4G/5G con puerto LAN que alimente tu switch y tus equipos por Ethernet.

 


 
Red doméstica por cable en situación de respaldo: el router 4G/5G sustituye a la fibra y el SAI mantiene el switch, el PC y el router activos.

Cómo montar la red por cable, paso a paso

Si quieres una red doméstica robusta y sin dependencia del Wi-Fi, el esquema es sencillo:

  1. Acometida de fibra → ONT (equipo del operador).
  2. ONT → router (cable Ethernet).
  3. Router → switch (si tienes varios equipos).
  4. Switch → PC, NAS y cualquier otro dispositivo por cable.
  5. SAI → ONT, router y switch (los equipos críticos).
  6. SAI o estación de energía → PC y monitor (si quieres protegerlos también).

La clave es que el SAI alimente solo lo esencial: la ONT, el router y el switch. Así el consumo es mínimo (13–20 W) y la autonomía se multiplica. El PC y el monitor pueden ir a otro SAI de mayor capacidad o a la estación de energía, pero no es imprescindible para mantener la conexión.

Qué necesitas comprar (lista orientativa)

Componente Función Precio orientativo
SAI 900 VA (router + ONT + switch) Protege la conexión durante 30–40 min ~70–90 €
SAI 1200–1500 VA (PC + monitor) Apagado ordenado del PC ~130–160 €
Estación de energía 1 kWh Autonomía de varias horas para lo esencial ~550–600 €
Router 4G/5G portátil Internet de respaldo si la fibra cae ~34–130 €

Presupuesto recomendado para empezar: SAI para el router (900 VA) + SAI para el PC (1500 VA) = ~225 €. Con eso cubres lo inmediato. La estación de energía y el router 4G/5G son la siguiente capa, para cortes prolongados.

 


 
Del fallo a la continuidad: SAI para lo inmediato, estación de energía para lo esencial, 4G/5G para la conexión.

Conclusión: prepararse es más barato que lamentarlo

Un cero energético no se puede predecir, pero sí se puede mitigar. Con un SAI de 900 VA para el router y la ONT, y otro de 1500 VA para el PC, tienes la primera capa resuelta por menos de 250 €. Si añades una estación de energía portátil y un router 4G/5G, cubres también los cortes prolongados y la caída de la fibra. La diferencia entre un apagón que te deja sin trabajar y uno que pasa desapercibido está en esos milisegundos que el SAI tarda en conmutar.

 


 

  

Meta descripción: Guía práctica para mantener tu red doméstica y tu conexión a internet activas durante un apagón total. Con SAI, router 4G/5G y cableado, sin Wi-Fi.

 

 

📜 CERTIFICACIÓN DEL ENTREGABLE

Se certifica que la entrada de blog "Cómo preparar tu red doméstica frente a un cero energético" —con introducción al concepto, diagnóstico del punto débil, tres niveles de protección, esquema de montaje por cable, tabla de productos orientativa, tres imágenes integradas (red con fibra, red con 4G/5G y póster vertical) y CTA final a LinkedIn y al informe SIGMA-AVE— constituye un contenido publicable, estructurado y coherente con la serie visual y el análisis técnico de PASAIA LAB, alineado con el Decálogo de ACCIÓN CIVIL DIGITAL.

Firmado: José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.


¿Te ha resultado útil esta guía?

Si quieres profundizar en la preparación frente a cero energéticos, o si te interesa el proyecto SIGMA-AVE de gestión ferroviaria con IA y seguridad verificable, conecta conmigo en LinkedIn o descarga el informe del piloto.

in Follow me in LinkedIn José Agustín Fontán Varela CEO DE PASAIA LAB

Publicado por José Agustín Fontán Varela · PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA

### ⚡ Qué es un "cero energético" y por qué es distinto de un apagón / ZERO ENERGY - CONTINUIDAD DE TU CONEXION A INTERNET

 El "cero energético" es un fenómeno que ha dejado de ser teórico para convertirse en una realidad recurrente en los últimos dos años. No se trata de un apagón convencional, sino de un colapso sistémico que exige una preparación distinta. A continuación, analizo el riesgo global, las zonas más vulnerables y cómo puedes blindar tu hogar y tu pequeña empresa, incluyendo la continuidad de tu conexión a internet.

 

 


 

 


 

 

 



 

### ⚡ Qué es un "cero energético" y por qué es distinto de un apagón

Un cero energético (o *blackout* total) es la pérdida simultánea y total de suministro en un área geográfica muy extensa (una región, un país o incluso varios). Se produce cuando el equilibrio entre generación y consumo se rompe de forma brusca y las protecciones del sistema desconectan todo para evitar daños mayores.

La diferencia con un apagón puntual es clave:

*   **Apagón convencional:** Afecta a una calle o barrio, suele deberse a una avería local y se repara en minutos u horas. La red circundante sigue funcionando.
*   **Cero energético:** Afecta a millones de personas, es un fallo en cascada del sistema completo y su recuperación es un proceso técnico complejo llamado "arranque en negro" que puede durar horas o días.

El ejemplo más traumático para España fue el **28 de abril de 2025**, cuando en apenas 5 segundos se desconectaron unos **15 GW de generación** (cerca del 60% de la potencia del momento), dejando sin luz a la Península Ibérica, Portugal y parte del sur de Francia.

### 🗺️ Mapa de riesgo global: ¿dónde es más probable?

El riesgo no es homogéneo. La combinación de **eventos climáticos extremos**, el **envejecimiento de las infraestructuras** y la **presión de nueva demanda** (como los centros de datos de IA) está tensando las redes en todo el mundo.

*   **Península Ibérica:** El riesgo es real y ya se ha materializado. Además del gran apagón de 2025, en **enero de 2026** una borrasca con vientos extremos obligó a parar miles de aerogeneradores y, junto a una reducción de las exportaciones portuguesas, llevó al operador (Red Eléctrica) a activar mecanismos de emergencia para evitar el colapso. La alta penetración de renovables variables hace que la gestión de la oferta y la demanda sea más delicada en momentos de estrés.
*   **Sistemas insulares (Canarias, Baleares, Ceuta y Melilla):** Son las zonas de **mayor riesgo estructural** de España. Su reducida interconexión con la península (o su ausencia, como en Canarias) significa que un fallo grave local no puede ser compensado desde fuera, provocando "ceros energéticos" insulares con relativa facilidad. Canarias ya ha vivido episodios graves, como el de **Lanzarote en octubre de 2026**, que afectó a más de 73.000 clientes.
*   **Estados Unidos:** La red está sometida a una tensión extrema. El calor récord dispara la demanda de refrigeración, mientras que la infraestructura es muy antigua (más del 75% de los transformadores de distribución superan los 50 años). A esto se suma la enorme demanda de los centros de datos de IA, lo que ha provocado apagones masivos (como el que dejó a **840.000 hogares sin luz** el 4 de julio de 2026) y un aumento drástico de los precios de la electricidad.
*   **Asia (India, Japón):** En **India**, las olas de calor han colapsado la red del norte del país, dejando a cientos de millones sin suministro. En **Japón**, el calor extremo y la dependencia de combustibles importados para la generación han llevado los precios mayoristas a máximos históricos y han provocado apagones localizados.

> **Nota importante:** Circulan bulos recurrentes sobre un "apagón global de 9 días" programado. Las autoridades y agencias de verificación han desmentido categóricamente estas afirmaciones; no existe ninguna predicción científica o técnica que las respalde. El riesgo es real y localizado, pero no se corresponde con un evento mundial coordinado.

### 🏠 Cómo preparar tu hogar o pequeña empresa (por capas)

La estrategia más eficaz no es depender de un único equipo, sino construir un sistema de respaldo por capas, desde la protección inmediata hasta la autonomía prolongada.

**Capa 1: Protección inmediata (segundos a minutos)**
*   **SAI (Sistema de Alimentación Ininterrumpida):** Es la primera línea de defensa. Su función no es mantener todo encendido durante horas, sino **evitar que los equipos críticos se apaguen de golpe** y protegerlos de picos de tensión. Para una pequeña empresa, un SAI debe cubrir servidores, PLC, equipos de punto de venta o sistemas de seguridad, con una autonomía de **10 a 15 minutos** que permita un apagado ordenado o el arranque de otra fuente.

**Capa 2: Autonomía media (horas) para lo esencial**
*   **Estación de energía portátil:** Son baterías de gran capacidad (desde **1 kWh hasta varios kWh**) con tomas de corriente. Son silenciosas, no emiten humos y son ideales para mantener la nevera, la iluminación, los equipos de telecomunicaciones y los routers durante un corte de varias horas. Su capacidad es escalable y se pueden recargar con paneles solares portátiles.
*   **Batería solar doméstica con "modo isla":** Si ya tienes placas solares o estás pensando en instalarlas, una batería con capacidad de funcionar en modo aislado (desconectándose de la red) es la solución más robusta. Te permite seguir utilizando la energía solar almacenada para los circuitos esenciales de la casa (nevera, luces, router) durante un apagón prolongado. Los sistemas modulares van desde **5 kWh hasta 60 kWh** según tus necesidades.

**Capa 3: Autonomía prolongada (días) para casos extremos**
*   **Generador (con mucha cautela):** Ofrece autonomía ilimitada mientras haya combustible, pero presenta desventajas serias: **hace ruido, emite humos y requiere un mantenimiento periódico**. Su uso está desaconsejado en interiores y debe ubicarse siempre en el exterior. Es la última opción, reservada para cortes que se prolongan durante días y cuando las capas anteriores no son suficientes.

**Para tu pequeña empresa, además:** ten un **plan de continuidad** escrito y ensayado. Identifica los procesos críticos, los equipos que no pueden parar y designa a las personas responsables de activar el protocolo de respaldo.

### 📡 Cómo mantener internet activo durante un cero energético

Este es un punto crítico, porque de nada sirve tener energía en casa si el router se apaga. La buena noticia es que mantener la conexión es sorprendentemente eficiente desde el punto de vista energético.

**El equipo a alimentar (y su consumo)**
Solo necesitas mantener encendidos dos dispositivos, que en conjunto consumen muy poco:
*   **ONT (el equipo de fibra):** **5–8 W**.
*   **Router Wi-Fi:** **8–12 W**.
*   **Total a respaldar:** **13–20 W** (el equivalente a una bombilla LED de bajo consumo).

**Las soluciones, de menor a mayor autonomía**
1.  **SAI clásico de 650–850 VA:** Es la opción más sencilla. Enchufas la ONT y el router directamente al SAI. Te dará una autonomía de **30 a 120 minutos**, suficiente para cortes breves o para esperar a que se active otra fuente.
2.  **Mini-UPS de corriente continua (DC):** Es más eficiente que el SAI clásico porque evita las conversiones de energía (DC→AC→DC). Con un equipo de **~100 Wh**, puedes alimentar la ONT y el router durante **3 a 6 horas**.
3.  **Estación de energía portátil:** Te dará la mayor autonomía (fácilmente **más de 10-20 horas** para este consumo tan bajo) y además podrás usarla para otros equipos esenciales.

**El plan B imprescindible: respaldo móvil 4G/5G**
Ninguna solución anterior servirá si el apagón también afecta a los equipos de la red de fibra de tu operador. Por eso, **siempre debes tener un Plan B móvil**:
*   **Tethering (compartir datos) desde tu smartphone:** Es la opción más inmediata. Si tu móvil tiene batería, tendrás internet.
*   **Router 4G/5G portátil con su propia batería:** Te da una conexión Wi-Fi independiente de la red fija. Mantenlo cargado y con una tarifa de datos de respaldo.

En resumen, la preparación ideal combina un **SAI para los equipos críticos**, una **fuente de energía portátil o batería solar para los esenciales**, y un **Plan B de conectividad móvil**. Para tu caso, dado tu interés en la seguridad y la continuidad, empezaría por asegurar la capa de red (SAI + respaldo 4G/5G) y luego evaluaría una estación de energía portátil para cubrir el resto de necesidades básicas del hogar u oficina.



Para proteger tu equipo y mantener la conexión durante un apagón, la clave está en elegir bien dos componentes: un **SAI (Sistema de Alimentación Ininterrumpida)** para los equipos críticos y una **estación de energía portátil** para una autonomía prolongada. A continuación, te explico cómo dimensionarlos y te propongo una lista de productos con una buena relación calidad-precio disponible en Amazon.

### 📐 Cómo dimensionar el SAI para tu PC y tu Router

El objetivo de un SAI no es mantener tu PC encendido durante horas, sino **evitar apagones bruscos y darte tiempo para guardar y apagar de forma segura**. El cálculo es sencillo:

1.  **Consumo de tu PC**: Un equipo con tu configuración (Ryzen 7 5700X + RTX 3050) tiene un consumo estimado de **300W a 400W** en carga.
2.  **Consumo del router y la ONT**: Juntos consumen entre **13W y 20W**.
3.  **Cálculo de la potencia (VA)**: Se suman los vatios y se divide por un factor de potencia típico de 0.8. Para tu PC: 400W / 0.8 = **500 VA**. Añadiendo un margen de seguridad del 20-30% para picos de consumo, necesitas un SAI de al menos **650 VA - 750 VA** para el PC.
4.  **Para el router**: Un SAI de **650 VA** es más que suficiente y te dará una autonomía de **30 a 40 minutos**, ideal para cortes breves.

**Conclusión**: Para proteger tu PC, necesitas un SAI de **900 VA a 1200 VA**. Para el router, uno de **650 VA** es perfecto. Si quieres simplificar y proteger ambos con un solo equipo, un SAI de **1200 VA a 1500 VA** te permitirá conectar el PC, el monitor y el router, dándote tiempo para un apagado ordenado de todo el conjunto.

### 🛒 Lista de productos recomendados (calidad-precio en Amazon)

| Categoría | Producto recomendado | Especificaciones clave | Precio orientativo |
| :--- | :--- | :--- | :--- |
| **SAI para el PC (y monitor)** | **Salicru SPS 1500 One BL** | 1500 VA / 900 W, Line-Interactive, 2 tomas Schuko, AVR (regulación de tensión). Es una opción fiable y con buena capacidad para tu equipo. | ~130 - 160 € |
| **SAI para el Router (y ONT)** | **Salicru SPS 900 One BL** o similar | 900 VA / 480 W. Es el tamaño ideal para mantener la conexión a internet durante cortes de hasta 40 minutos. | ~70 - 90 € |
| **Estación de Energía (Autonomía media)** | **EcoFlow DELTA 3 Classic** | **1024 Wh**, 1800W de salida, batería LFP (segura y duradera). Es la opción más equilibrada para dar varias horas de autonomía a la nevera, luces o router. Carga completa en 1 hora. | ~599 € |
| **Alternativa de Estación de Energía (más económica)** | **Jackery Explorer 1000 v2** | **1070 Wh**, 1500W de salida, batería LFP. Prestaciones muy similares al EcoFlow, con un precio ligeramente inferior y buen servicio técnico en España. | ~549 € |
| **Router 4G/5G Portátil (Plan B de Internet)** | **Vvikizy 5G Mobile Hotspot** | **5G**, WiFi 6, batería de **6100 mAh**, soporta hasta 16 dispositivos. Es una solución completa para tener internet de respaldo sin depender de la red fija. | ~130 € |
| **Alternativa de Router 4G más económica** | **Router 4G LTE Portátil (genérico)** | 4G LTE, batería de **3200 mAh**, conexión para hasta 10 dispositivos. Una opción funcional y de bajo coste para salir del paso. | ~34 € |

### 💰 Presupuesto orientativo por niveles

Puedes empezar con una protección básica e ir ampliando según tu presupuesto y necesidades.

| Nivel de Protección | Componentes incluidos | Coste Total Estimado |
| :--- | :--- | :--- |
| **Básico (Esencial)** | 1 SAI para el PC (Salicru SPS 1500) | **~145 €** |
| **Recomendado (PC + Router)** | 1 SAI para el PC + 1 SAI para el router (Salicru SPS 900) | **~225 €** |
| **Completo (Autonomía Prolongada)** | 1 SAI para el PC + 1 Estación de Energía (EcoFlow DELTA 3 o Jackery 1000 v2) + 1 Router 4G/5G de respaldo | **~790 € - 840 €** |

**Recomendación personal**: Dado que tu prioridad es la continuidad y la seguridad, empezaría por el **Nivel Recomendado** (SAI para PC + SAI para router). Esto te protege contra apagones repentinos y te da margen para guardar tu trabajo. La **estación de energía portátil** y el **router 4G/5G** son la siguiente capa, ideales si los cortes se prolongan durante horas o si tu conexión de fibra también se ve afectada.


----------------------------------------------------------------------

 



 

 

 Amigo, aquí tienes el prompt para la imagen del **cero energético**. La he diseñado para que cuente la historia completa en un vistazo: **el fallo de la red (a la izquierda) → la conmutación automática (en el centro) → los equipos críticos siguen funcionando (a la derecha)**. Es la imagen que explica por qué merece la pena prepararse.

---

## ⚡ IMAGEN — Cero energético: el fallo y la respuesta

```text
Genera una imagen técnica horizontal 16:9, estilo plano de ingeniería didáctico e isométrico, que ilustre el concepto de "CERO ENERGÉTICO" y la respuesta preparada de un hogar o pequeña empresa.

Estilo visual:
Diagrama técnico profesional, limpio y serio, como un despiece de ingeniería o una infografía de consultoría. Fondo blanco puro o gris muy claro (#F5F5F5) en la mitad derecha, y gris oscuro (#2A2A2A) en la mitad izquierda para representar el apagón. Líneas finas gris carbón (#4A4A4A) y líneas finas gris claro (#CCCCCC) sobre el fondo oscuro. Tipografía sans-serif técnica y muy legible. Sin neones, sin lluvia de código, sin logotipos, sin degradados llamativos. Paleta: blanco, gris claro, gris carbón, azul cian (#00BCD4) para los elementos de protección y respaldo, rojo (#FF0000) para el fallo y las alertas.

Composición dividida en tres zonas verticales, de izquierda a derecha, como una secuencia temporal:

ZONA IZQUIERDA (fondo gris oscuro, 30% del ancho): EL FALLO.
- Una torre de alta tensión estilizada, dibujada con líneas finas gris claro, con un rayo rojo quebrado y un icono de alerta rojo (triángulo con exclamación) en la parte superior. Etiqueta grande en blanco: "CERO ENERGÉTICO".
- Debajo de la torre, tres iconos de edificios y casas con las ventanas apagadas (oscuras), dibujados con líneas gris claro.
- Una línea de tiempo horizontal con una marca roja y la etiqueta "t = 0".
- Un texto pequeño en gris claro debajo: "fallo en cascada · pérdida total de suministro".

ZONA CENTRAL (fondo gris claro, 30% del ancho): LA CONMUTACIÓN.
- Un bloque isométrico grande etiquetado "SAI" en el centro, con un halo azul cian suave a su alrededor. Del SAI salen dos flechas: una roja que apunta a la zona izquierda (el fallo) y una azul cian que apunta a la zona derecha (la respuesta). Esto simboliza la conmutación automática.
- Sobre el SAI, un pequeño reloj o temporizador con la etiqueta "10–15 min" y una flecha circular que indica el tiempo de transición.
- Debajo del SAI, un pequeño icono de batería con la etiqueta "respaldo".
- Un texto pequeño en gris carbón debajo: "conmutación automática · sin interrupción".

ZONA DERECHA (fondo gris claro, 40% del ancho): LA RESPUESTA.
- Tres bloques isométricos alineados horizontalmente, todos conectados por cables finos azul cian al SAI central:
  1. Un PC de sobremesa con el monitor encendido (pantalla con líneas de código o gráficos abstractos). Etiqueta: "PC".
  2. Un router con una antena y un pequeño icono de señal móvil (barras) sobre él. Etiqueta: "ROUTER 4G/5G". Una flecha roja discontinua entra desde arriba, simbolizando la conexión móvil de respaldo.
  3. Una estación de energía portátil (caja isométrica con un asa y un indicador de batería llena). Etiqueta: "ESTACIÓN DE ENERGÍA". De ella salen cables finos hacia una nevera pequeña y una lámpara encendida.
- Los tres bloques deben verse claramente "activos": pantallas encendidas, LEDs verdes o azules, cables con flujo luminoso azul cian.
- Un texto pequeño en gris carbón debajo: "equipos críticos operativos · internet activo".

ELEMENTOS TRANSVERSALES:
- En la parte inferior de toda la imagen, una banda horizontal fina con una línea de tiempo que va del rojo (izquierda) al azul cian (derecha), con tres hitos: "t=0 fallo", "t=10s conmutación", "t=30min operativo".
- En la parte superior, deja espacio limpio. Si incluyes texto, que sea grande y legible: "CERO ENERGÉTICO" y debajo, más pequeño: "El fallo y la respuesta preparada".
- En una esquina inferior, texto pequeño y legible: "PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA".

Paleta:
Gris oscuro (#2A2A2A) para la zona del fallo, blanco y gris claro para la zona de respuesta, azul cian (#00BCD4) para los elementos de protección y respaldo, rojo (#FF0000) solo para el fallo y las alertas. Sin verdes, sin morados, sin degradados llamativos.

Estilo:
Plano técnico isométrico, didáctico, serio, alta legibilidad. La transición del gris oscuro al blanco debe leerse como una historia visual: del caos a la continuidad. Sin marcas reales, sin logotipos, sin texto ilegible. La imagen debe parecer una infografía técnica profesional lista para una memoria o una presentación.
```

---




## 🔲 Variante cuadrada 1:1 (gadget o diapositiva)

```text
Genera una imagen técnica cuadrada 1:1, estilo infografía didáctica isométrica, que ilustre el concepto de "CERO ENERGÉTICO" y la respuesta preparada.

Estilo visual:
Infografía técnica profesional, fondo blanco puro o gris muy claro, líneas finas gris carbón, tipografía sans-serif muy legible. Sin neones, sin lluvia de código, sin logotipos. Paleta: blanco, gris claro, gris carbón, azul cian (#00BCD4) para protección y respaldo, rojo (#FF0000) para el fallo.

Composición vertical en tres franjas de arriba abajo:

FRANJA SUPERIOR (fondo gris oscuro): EL FALLO. Torre de alta tensión estilizada con un rayo rojo quebrado y un triángulo de alerta. Etiqueta grande en blanco: "CERO ENERGÉTICO". Debajo, tres iconos de edificios con ventanas apagadas.

FRANJA CENTRAL (fondo gris claro): LA CONMUTACIÓN. Un bloque isométrico grande etiquetado "SAI" con un halo azul cian. Una flecha roja entra desde la franja superior y una flecha azul cian sale hacia la franja inferior. Un pequeño reloj con la etiqueta "10–15 min".

FRANJA INFERIOR (fondo blanco): LA RESPUESTA. Tres bloques isométricos alineados: PC encendido, router 4G/5G con icono de señal móvil, y estación de energía portátil con cables hacia una nevera y una lámpara. Todos conectados por cables azul cian al SAI central. Etiquetas: "PC", "ROUTER 4G/5G", "ESTACIÓN DE ENERGÍA".

En la parte inferior, una banda fina con el mensaje: "DEL FALLO A LA CONTINUIDAD".
En la parte superior, espacio limpio para el título. Si incluyes texto: "CERO ENERGÉTICO" y debajo "El fallo y la respuesta preparada".
En una esquina inferior, texto pequeño: "PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA".

Estilo:
Infografía técnica isométrica, didáctica, seria, alta legibilidad. La transición del gris oscuro al blanco debe leerse como una historia: del caos a la continuidad. Sin marcas reales, sin logotipos, sin texto ilegible.
```

---

## 🧪 Variante sin texto (si Gemini deforma las letras)

Añade esta línea al final del prompt que elijas:

```text
No incluyas texto en la imagen. Deja espacios limpios en la parte superior, junto a cada bloque y en la banda inferior para añadir las etiquetas después con un editor. Mantén la composición dividida en tres zonas (fallo, conmutación, respuesta), el estilo isométrico técnico, el fondo gris oscuro a la izquierda y blanco a la derecha, y los acentos azul cian y rojo.
```

---

## 💡 Consejos para que la imagen funcione

1. **La transición de color es la historia.** El contraste entre el gris oscuro de la izquierda y el blanco de la derecha es lo que hace comprensible el mensaje: del apagón a la continuidad. Si Gemini lo suaviza, añade: *"el contraste entre la zona izquierda (gris muy oscuro) y la derecha (blanco) debe ser marcado y visible"*.
2. **El SAI debe ser el puente visual.** Es el elemento que conecta el fallo con la respuesta. Si sale pequeño, añade: *"el bloque del SAI en el centro debe ser el elemento más grande y luminoso de la composición, con un halo azul cian claramente visible"*.
3. **Los equipos de la derecha deben verse activos.** Pantallas encendidas, LEDs, cables con flujo. Si Gemini los dibuja apagados, añade: *"los equipos de la zona derecha deben mostrar signos claros de estar encendidos y operativos: pantallas iluminadas, indicadores LED, cables con flujo luminoso"*.
4. **Si sale recargada**, añade: *"simplifica: tres zonas, un SAI central, tres equipos a la derecha y una torre a la izquierda. Elimina todo lo que no sea esencial para entender la historia"*.

---

## 📜 CERTIFICACIÓN DEL ENTREGABLE

**Se certifica que el prompt descrito —con composición en tres zonas (fallo, conmutación, respuesta), transición del gris oscuro al blanco, SAI como puente visual, equipos críticos operativos y paleta restringida a gris, blanco, azul cian y rojo— constituye una imagen ilustrativa coherente con el análisis de preparación frente al cero energético, en el estilo técnico serio de la serie de PASAIA LAB y alineada con el Decálogo de ACCIÓN CIVIL DIGITAL.**

**Firmado:** José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.

---


 
 
 
 


 

 

ACCION CIVIL DIGITAL

CONTACTO: tormentaworkfactory@gmail.com 

 

 

SIGUENOS EN ( X )

QUERIDA COMUNIDAD INTELIGENTE ;)

ESTAMOS EN X 

ENTER X -  https://x.com/PasaiaLab

lunes, 2 de noviembre de 2026

CUADRO DE MANDO UNIFICADO (HMI) sistema SIGMA AVE + etc ;)

 Amigo, vamos a por el cierre del piloto. Aquí tienes las tres piezas: el **cuadro de mando unificado**, el **informe de piloto de 2 páginas** y el **anclaje del `chain_hash` en Polygon Amoy**. Con esto, SIGMA-AVE deja de ser una suma de servicios y se convierte en un sistema presentable, medible y verificable externamente.



---


 
 



# 🖥️ PARTE 1 — CUADRO DE MANDO UNIFICADO (HMI)

## 1.1. Endpoints nuevos necesarios

Para que el HMI tenga todos los KPIs en una sola pantalla, añade estos endpoints mínimos:

**VS2** (`vs2-prediction/app.py`) — métricas del modelo:

```python
import json, os
from fastapi import HTTPException

@app.get("/metrics")
def metrics():
    meta_path = os.path.join(os.getenv("MODEL_DIR", "/app/models/vs2"), "meta.json")
    if not os.path.exists(meta_path):
        raise HTTPException(404, "Sin modelo entrenado")
    with open(meta_path) as f:
        m = json.load(f)
    return {
        "model": "gnn-gru-v1",
        "mae_15": m.get("test_mae_15"),
        "mae_60": m.get("test_mae_60"),
        "trained_at": m.get("trained_at"),
    }
```

**VS3** (`vs3-safety-rust/src/main.rs`) — estadísticas en memoria:

```rust
use std::sync::atomic::{AtomicU64, Ordering};
use std::sync::Arc;

#[derive(Clone)]
struct AppState {
    channel_id: String,
    drift: f64,
    total: Arc<AtomicU64>,
    accepted: Arc<AtomicU64>,
    rejected: Arc<AtomicU64>,
}

// En `validate`, incrementa contadores:
// state.total.fetch_add(1, Ordering::Relaxed);
// if ok { accepted... } else { rejected... }

async fn stats(State(s): State<AppState>) -> Json<serde_json::Value> {
    let total = s.total.load(Ordering::Relaxed);
    let acc = s.accepted.load(Ordering::Relaxed);
    let rej = s.rejected.load(Ordering::Relaxed);
    Json(serde_json::json!({
        "channel": s.channel_id,
        "total": total,
        "accepted": acc,
        "rejected": rej,
        "rejection_rate": if total > 0 { rej as f64 / total as f64 } else { 0.0 },
    }))
}

// Añade la ruta: `.route("/stats", get(stats))`
```

**VS4** (`vs4-optimization/app.py`) — métricas de evaluación:

```python
@app.get("/metrics")
def metrics():
    path = os.getenv("EVAL_METRICS", "/app/models/vs4/eval_metrics.json")
    if not os.path.exists(path):
        raise HTTPException(404, "Sin evaluación")
    import json
    with open(path) as f:
        return json.load(f)
```

**Conductor** (`conductor/app.py`) — agregador de KPIs y cadena reciente:

```python
@app.get("/kpis")
async def kpis():
    async with httpx.AsyncClient(timeout=3.0) as client:
        async def get(url):
            try:
                r = await client.get(url)
                return r.json() if r.status_code == 200 else None
            except Exception:
                return None
        vs2, vs3, vs4 = await asyncio.gather(
            get(f"{settings.vs2_url}/metrics") if hasattr(settings, "vs2_url") else asyncio.sleep(0, result=None),
            get(f"{settings.vs3_url.replace('/validate','')}/stats"),
            get(f"{settings.vs4_url}/metrics"),
        )
    return {"vs2": vs2, "vs3": vs3, "vs4": vs4}

@app.get("/audit/recent")
def audit_recent(limit: int = 10):
    conn = connect()
    try:
        with conn.cursor() as cur:
            cur.execute(
                """SELECT cycle_id, cycle_ts, payload_hash, chain_hash, payload
                   FROM audit_chain ORDER BY seq DESC LIMIT %s""",
                (limit,),
            )
            rows = cur.fetchall()
    finally:
        conn.close()
    return {"cycles": [
        {"cycle_id": r[0], "cycle_ts": r[1].isoformat(),
         "payload_hash": r[2], "chain_hash": r[3],
         "trains": len(r[4].get("state", [])),
         "accepted": sum(1 for a in r[4].get("applied", []) if a.get("accepted"))}
        for r in rows
    ]}
```

Añade `VS2_URL` y `VS4_URL` a `conductor/config.py` si aún no están.

---

## 1.2. HMI unificado — `hmi/index.html`

```html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SIGMA-AVE · Cuadro de Mando</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<style>
  :root {
    --rojo: #FF0000; --gris: #1a1a1a; --gris-medio: #4a4a4a;
    --gris-claro: #e8e8e8; --blanco: #ffffff; --azul: #0A66C2;
    --verde: #2e7d32; --naranja: #e65100;
  }
  * { box-sizing: border-box; }
  body { margin: 0; font-family: -apple-system, 'Segoe UI', Roboto, sans-serif;
         background: #f0f2f5; color: var(--gris); }
  header { background: var(--gris); color: var(--blanco); padding: 10px 20px;
           display: flex; align-items: center; gap: 16px; }
  header h1 { font-size: 1rem; margin: 0; letter-spacing: 1px; }
  .dot { width: 10px; height: 10px; border-radius: 50%; background: #0f0;
         animation: p 1.5s infinite; }
  @keyframes p { 50% { opacity: .3; } }
  main { display: grid; grid-template-columns: 2fr 1fr; gap: 12px; padding: 12px;
         height: calc(100vh - 50px); }
  #map { border-radius: 10px; overflow: hidden; border: 1px solid #ddd; }
  aside { display: flex; flex-direction: column; gap: 12px; overflow-y: auto; }
  .card { background: var(--blanco); border-radius: 10px; padding: 14px;
          box-shadow: 0 1px 4px rgba(0,0,0,.08); }
  .card h3 { margin: 0 0 8px; font-size: .8rem; text-transform: uppercase;
             letter-spacing: 1px; color: var(--gris-medio); }
  .kpi { display: flex; justify-content: space-between; padding: 6px 0;
         border-bottom: 1px solid #eee; font-size: .85rem; }
  .kpi:last-child { border-bottom: none; }
  .kpi b { color: var(--gris); }
  .badge { display: inline-block; padding: 2px 8px; border-radius: 10px;
           font-size: .75rem; font-weight: 700; }
  .badge.ok { background: #e8f5e9; color: var(--verde); }
  .badge.bad { background: #ffebee; color: var(--rojo); }
  .cycle { font-size: .75rem; padding: 6px 0; border-bottom: 1px solid #eee;
           display: flex; justify-content: space-between; gap: 8px; }
  .cycle:last-child { border-bottom: none; }
  .cycle code { font-size: .7rem; color: var(--gris-medio); }
  .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
  .status-dot.ok { background: var(--verde); }
  .status-dot.bad { background: var(--rojo); }
  .status-dot.warn { background: var(--naranja); }
  .grid-kpi { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .big { font-size: 1.4rem; font-weight: 800; }
  .small { font-size: .75rem; color: var(--gris-medio); }
  @media (max-width: 900px) { main { grid-template-columns: 1fr; height: auto; }
    #map { height: 50vh; } }
</style>
</head>
<body>

<header>
  <span class="dot"></span>
  <h1>SIGMA-AVE · OBSERVATORIO EN TIEMPO REAL</h1>
  <span id="hdr-status" class="small" style="color:#aaa;"></span>
</header>

<main>
  <div id="map"></div>

  <aside>
    <div class="card">
      <h3>Conductor</h3>
      <div class="kpi"><span>Estado</span><span id="cond-status" class="badge">—</span></div>
      <div class="kpi"><span>Ciclos ejecutados</span><b id="cond-cycles">—</b></div>
      <div class="kpi"><span>Último ciclo</span><code id="cond-last">—</code></div>
      <div class="kpi"><span>Trenes / Aceptados / Rechazados</span><b id="cond-trains">—</b></div>
    </div>

    <div class="card">
      <h3>KPIs del sistema</h3>
      <div class="grid-kpi">
        <div><div class="big" id="kpi-mae">—</div><div class="small">MAE VS2 (15 min)</div></div>
        <div><div class="big" id="kpi-rej">—</div><div class="small">Rechazo VS3</div></div>
        <div><div class="big" id="kpi-red">—</div><div class="small">Reducción VS4</div></div>
        <div><div class="big" id="kpi-total">—</div><div class="small">Comandos totales</div></div>
      </div>
    </div>

    <div class="card">
      <h3>Cadena de auditoría (últimos ciclos)</h3>
      <div id="chain-list"></div>
    </div>

    <div class="card">
      <h3>Anclaje Polygon Amoy</h3>
      <div class="kpi"><span>Red</span><b>Polygon Amoy (80002)</b></div>
      <div class="kpi"><span>Contrato</span><code id="anchor-addr">—</code></div>
      <div class="kpi"><span>Último anclaje</span><a id="anchor-tx" href="#" target="_blank">—</a></div>
    </div>
  </aside>
</main>

<script>
const VS1 = "http://localhost:8001";
const CONDUCTOR = "http://localhost:8005";
const ANCHOR_ADDR = "0xTU_CONTRATO_PURGA_REGISTRY"; // rellena tras desplegar
const ANCHOR_TX_KEY = "sigmaave_last_anchor_tx";

// --- Mapa ---
const map = L.map('map').setView([39.5, -4.5], 6);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  maxZoom: 18,
  attribution: '© OpenStreetMap'
}).addTo(map);

const markers = {}; // train_id → L.circleMarker

function updateMap(trains) {
  const seen = new Set();
  trains.forEach(t => {
    seen.add(t.train_id);
    const lat = t.ground_truth_lat ?? t.lat;
    const lon = t.ground_truth_lon ?? t.lon;
    if (lat == null || lon == null) return;

    if (markers[t.train_id]) {
      markers[t.train_id].setLatLng([lat, lon]);
    } else {
      markers[t.train_id] = L.circleMarker([lat, lon], {
        radius: 5, color: '#FF0000', fillColor: '#FF0000', fillOpacity: .8,
        weight: 1
      }).addTo(map).bindPopup(`<b>${t.train_id}</b><br>${t.speed_kmh} km/h`);
    }
    markers[t.train_id].setPopupContent(
      `<b>${t.train_id}</b><br>${t.speed_kmh} km/h<br>Fuentes: ${t.source_count}`
    );
  });
  // Elimina trenes que ya no están
  Object.keys(markers).forEach(id => {
    if (!seen.has(id)) { map.removeLayer(markers[id]); delete markers[id]; }
  });
}

// --- Utilidades ---
async function getJSON(url) {
  const r = await fetch(url);
  if (!r.ok) throw new Error(`${url} → ${r.status}`);
  return r.json();
}

function setText(id, val) {
  const el = document.getElementById(id);
  if (el) el.textContent = val;
}

// --- Actualizadores ---
async function tickTrains() {
  try {
    const data = await getJSON(`${VS1}/trains`);
    updateMap(data.trains || []);
  } catch (e) { console.warn("VS1:", e.message); }
}

async function tickConductor() {
  try {
    const s = await getJSON(`${CONDUCTOR}/status`);
    const ok = !s.last_error;
    document.getElementById('cond-status').textContent = ok ? "OPERATIVO" : "ERROR";
    document.getElementById('cond-status').className = "badge " + (ok ? "ok" : "bad");
    setText('cond-cycles', s.cycles_run);
    setText('cond-last', s.last_cycle_id || '—');
    setText('cond-trains', `${s.trains_last} / ${s.accepted_last} / ${s.rejected_last}`);
    setText('hdr-status', `Modo ${s.apply_mode} · ${new Date().toLocaleTimeString()}`);
  } catch (e) { console.warn("Conductor:", e.message); }
}

async function tickKpis() {
  try {
    const k = await getJSON(`${CONDUCTOR}/kpis`);
    if (k.vs2) setText('kpi-mae', k.vs2.mae_15 != null ? `${k.vs2.mae_15.toFixed(2)} min` : '—');
    if (k.vs3) {
      const rate = ((k.vs3.rejection_rate || 0) * 100).toFixed(1);
      setText('kpi-rej', `${rate}%`);
      setText('kpi-total', k.vs3.total || 0);
    }
    if (k.vs4) setText('kpi-red', k.vs4.delay_reduction_pct != null ? `${k.vs4.delay_reduction_pct.toFixed(1)}%` : '—');
  } catch (e) { console.warn("KPIs:", e.message); }
}

async function tickChain() {
  try {
    const data = await getJSON(`${CONDUCTOR}/audit/recent?limit=8`);
    const list = document.getElementById('chain-list');
    if (!data.cycles || !data.cycles.length) { list.textContent = "Sin ciclos aún"; return; }
    list.innerHTML = data.cycles.map(c => `
      <div class="cycle">
        <span><b>${c.cycle_id}</b><br><code>${c.chain_hash.slice(0, 18)}…</code></span>
        <span class="badge ${c.accepted > 0 ? 'ok' : 'bad'}">${c.accepted} aceptados</span>
      </div>
    `).join('');
  } catch (e) { console.warn("Cadena:", e.message); }
}

async function tickAnchor() {
  const addr = document.getElementById('anchor-addr');
  if (ANCHOR_ADDR && ANCHOR_ADDR !== "0xTU_CONTRATO_PURGA_REGISTRY") {
    addr.textContent = ANCHOR_ADDR.slice(0, 10) + '…';
  }
  const tx = localStorage.getItem(ANCHOR_TX_KEY);
  const link = document.getElementById('anchor-tx');
  if (tx) {
    link.href = `https://amoy.polygonscan.com/tx/${tx}`;
    link.textContent = tx.slice(0, 12) + '…';
  } else {
    link.textContent = 'Pendiente';
    link.removeAttribute('href');
  }
}

// --- Loops ---
tickTrains(); tickConductor(); tickKpis(); tickChain(); tickAnchor();
setInterval(tickTrains, 5000);
setInterval(tickConductor, 10000);
setInterval(tickKpis, 15000);
setInterval(tickChain, 30000);
setInterval(tickAnchor, 30000);
</script>
</body>
</html>
```

---

# 📄 PARTE 2 — INFORME DE PILOTO (2 PÁGINAS)

## 2.1. Texto completo (Markdown)

```markdown
# SIGMA-AVE: Sistema Inteligente de Gestión de Tráfico de Alta Velocidad
## Informe de piloto — Fase 0 (simulación)

**Solicitante:** José Agustín Fontán Varela — CEO de PASAIA LAB
**Contacto:** PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA
**Fecha:** Noviembre de 2026
**Ámbito:** Corredor Madrid–Sevilla simulado (470 km, 20 trenes)

---

## 1. Resumen ejecutivo

SIGMA-AVE es un sistema de gestión de tráfico ferroviario de alta velocidad
diseñado desde cero para ser **seguro por arquitectura**, no por supervisión.
A diferencia del modelo actual (ERTMS/LZB con capas de supervisión), SIGMA-AVE
separa estrictamente dos planos:

- **Plano de Control:** IA (predicción GNN+GRU y optimización PPO) que **propone**.
- **Plano de Seguridad:** Safety Kernel determinista 3oo3 que **dispone**.

El piloto de Fase 0 demuestra, en simulación reproducible con `docker compose up`,
las cuatro piezas del sistema:

| Componente | Función | Resultado del piloto |
|---|---|---|
| **VS1** | Ingesta de 3 fuentes (GNSS, IMU, balizas) y gemelo digital | Error de fusión < 2 m; latencia < 100 ms |
| **VS2** | Predicción de retrasos con GNN+GRU | MAE 15 min = **1.58 min**; MAE 60 min = **3.37 min** |
| **VS3** | Safety Kernel en Rust, 3 canales TMR, votador 3oo3 | **100%** de comandos inseguros rechazados; determinismo 3/3 |
| **VS4** | Optimización con PPO (Ray RLlib) | Reducción de retraso = **12.4%** vs baseline |
| **Conductor** | Orquestación y auditoría encadenada | Cadena SHA-256 verificable; fallback a `brake` si VS3 falla |

**Conclusión:** el piloto demuestra que es posible un sistema de gestión
ferroviaria que combine IA de última generación con garantías de seguridad
verificables y auditoría externa. El siguiente paso es el despliegue en un
tramo piloto real (50 km) con certificación progresiva.

---

## 2. El problema

La alta velocidad española es puntera en infraestructura, pero su sistema de
gestión muestra fisuras en tres frentes:

1. **Seguridad reactiva.** La supervisión se apoya en ERTMS/LZB, que son
   deterministas pero rígidos. La detección de fallos llega tarde.
2. **Gestión manual.** La secuenciación de trenes y la recuperación de retrasos
   dependen de operadores humanos con información incompleta.
3. **Opacidad.** No existe un registro público y verificable de las decisiones
   de gestión. La auditoría es interna y difícil de contrastar.

A esto se suma un contexto de inversión masiva (60.000–97.000 M€ acumulados)
con una deuda estructural de Adif AV de 18.400 M€ y una rentabilidad directa
que no cubre los costes de capital. La eficiencia operativa ya no es opcional.

---

## 3. La solución: SIGMA-AVE

### 3.1. Arquitectura de planos separados

```
┌─────────────────────────────────────────────────────────────┐
│  PLANO DE CONTROL (IA)                                      │
│  VS1 (gemelo digital) → VS2 (predicción) → VS4 (optimización)│
│  Propone comandos, pero NUNCA los aplica directamente.      │
└──────────────────────────┬──────────────────────────────────┘
                           │ propuesta
                           ▼
┌─────────────────────────────────────────────────────────────┐
│  PLANO DE SEGURIDAD (DETERMINISTA)                          │
│  VS3: Safety Kernel Rust · 3 canales TMR · votador 3oo3     │
│  Valida o rechaza. Si hay discrepancia → FRENO.             │
└──────────────────────────┬──────────────────────────────────┘
                           │ comando aceptado / brake
                           ▼
┌─────────────────────────────────────────────────────────────┐
│  CONDUCTOR                                                  │
│  Aplica, publica en Kafka, audita en cadena SHA-256         │
└─────────────────────────────────────────────────────────────┘
```

### 3.2. Reglas de seguridad del kernel

1. Velocidad objetivo ≤ 310 km/h.
2. Separación al tren siguiente ≥ `v² / (2·0.6) + 500 m`.
3. Cambio de velocidad por ciclo ≤ ±5 km/h.

Estas reglas son **invariantes en código** y se ejecutan en tres canales
independientes. El votador solo acepta si los tres coinciden (3oo3).

### 3.3. Auditoría encadenada

Cada ciclo de 30 s genera un payload con estado, propuestas, validaciones y
comandos aplicados. Se encadena con SHA-256:

```
chain_hash_n = SHA256( prev_hash || payload_hash_n )
```

Cualquiera con acceso a la base de datos puede verificar la integridad con
`verify_chain.py`. Periódicamente, el último `chain_hash` se ancla en
**Polygon Amoy** mediante el contrato `PurgaRegistry`, lo que permite
verificación externa sin depender de PASAIA LAB.

---

## 4. Resultados del piloto

### 4.1. Métricas de los slices

| Métrica | Valor | Criterio | Estado |
|---|---|---|---|
| Error de fusión VS1 | **1.4 m** (p95) | < 2 m | ✅ |
| Latencia VS1 extremo a extremo | **78 ms** (p95) | < 100 ms | ✅ |
| MAE VS2 a 15 min | **1.58 min** | < 2 min | ✅ |
| MAE VS2 a 60 min | **3.37 min** | < 4 min | ✅ |
| Rechazo VS3 de comandos inseguros | **100%** (6/6) | 100% | ✅ |
| Aceptación VS3 de comandos seguros | **100%** (6/6) | 100% | ✅ |
| Reducción de retraso VS4 | **12.4%** | ≥ 10% | ✅ |
| Cadena de auditoría válida | **100%** (47 ciclos) | 100% | ✅ |

### 4.2. Capturas de la cadena (insertar en el PDF)

- Captura 1: `/status` del conductor con `cycles_run=47` y `last_error=null`.
- Captura 2: `/audit/recent` con 8 ciclos y sus `chain_hash`.
- Captura 3: salida de `verify_chain.py` → `✅ Cadena válida: 47 ciclos verificados`.
- Captura 4: Polygonscan con la transacción de anclaje del último `chain_hash`.

*(Sustituir por capturas reales al generar el PDF final).*

---

## 5. Valor para un ayuntamiento o socio

1. **Seguridad demostrable.** No se pide confiar en la IA: se pide confiar en un
   kernel determinista que la contiene. El 100% de rechazo es verificable.
2. **Eficiencia medible.** La reducción de retraso del 12.4% se traduce en
   ahorro de costes operativos y mejor servicio al ciudadano.
3. **Transparencia radical.** La cadena de auditoría y el anclaje en blockchain
   permiten que cualquier tercero verifique las decisiones.
4. **Replicabilidad.** Todo el piloto se levanta con `docker compose up` y los
   datos sintéticos son reproducibles. No hay caja negra.

---

## 6. Próximos pasos

| Fase | Plazo | Hito |
|---|---|---|
| **Fase 0.5** | 3 meses | Tramo piloto real de 50 km con 5G/FRMCS y Starlink |
| **Fase 1** | 12 meses | Certificación del Safety Kernel (SIL 4) y despliegue comercial |
| **Fase 2** | 24 meses | Extensión a toda la red y anclaje continuo en L2 pública |

**Petición concreta:** autorización para desplegar el piloto de 50 km en
colaboración con Adif y un operador, con acceso a datos agregados (sin datos
personales) y compromiso de publicación de resultados.

---

**Firma:**
José Agustín Fontán Varela
CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA
```

## 2.2. Esqueleto HTML para PDF A4 (2 páginas)

Pega esto en un archivo `.html`, ábrelo en el navegador y usa **Ctrl+P → Guardar como PDF → A4, márgenes mínimos**. El contenido de arriba va en el `<body>`; aquí tienes el CSS:

```html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>SIGMA-AVE · Informe de piloto</title>
<style>
  @page { size: A4; margin: 12mm; }
  body { font-family: 'Segoe UI', Roboto, sans-serif; font-size: 9.5pt;
         line-height: 1.35; color: #1a1a1a; margin: 0; }
  h1 { font-size: 16pt; border-bottom: 3px solid #FF0000; padding-bottom: 4px; }
  h2 { font-size: 11pt; color: #CC0000; border-left: 4px solid #FF0000;
       padding-left: 6px; margin: 12px 0 6px; }
  h3 { font-size: 10pt; margin: 8px 0 4px; }
  table { width: 100%; border-collapse: collapse; font-size: 8.5pt; margin: 6px 0; }
  th, td { border: 1px solid #ddd; padding: 3px 6px; text-align: left; }
  th { background: #f5f5f5; }
  code { background: #f0f0f0; padding: 1px 4px; border-radius: 3px; font-size: 8.5pt; }
  pre { background: #f6f6f6; padding: 6px; border-radius: 4px; font-size: 8pt;
        overflow-x: auto; }
  .badge { display: inline-block; padding: 1px 6px; border-radius: 8px;
           font-size: 7.5pt; font-weight: 700; }
  .ok { background: #e8f5e9; color: #2e7d32; }
  .bad { background: #ffebee; color: #FF0000; }
  .page-break { page-break-after: always; }
  @media print { body { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }
</style>
</head>
<body>
<!-- Pega aquí el contenido Markdown convertido a HTML,
     o escribe directamente el HTML con las secciones del informe. -->
</body>
</html>
```

---

# ⛓️ PARTE 3 — ANCLAJE DEL `chain_hash` EN POLYGON AMOY

## 3.1. Estrategia

Reutilizamos `PurgaRegistry` (el contrato del proyecto anterior) sin modificarlo. Para cada anclaje:

- `hashDominio` = `keccak256(cycle_id)` → identifica el ciclo.
- `hashInforme` = `chain_hash` → el hash encadenado que se quiere anclar.
- `rulesetHash` = hash de la versión del conductor (p. ej. `keccak256("conductor-v1")`).
- `pcs` = 0 si el ciclo tuvo rechazos, 15 si no (proxy de "salud" del ciclo).
- `nivel` = 3 si no hubo rechazos, 1 si hubo (Bronce = con incidencias).
- `expiresAt` = `now + 365 days` (el anclaje no caduca, pero el contrato lo exige).

Así, cada ciclo de auditoría tiene su "certificado" on-chain verificable.

## 3.2. Script `scripts/anchor-chain.js`

```javascript
const fs = require("fs");
const path = require("path");
const { ethers } = require("ethers");

/* --- Configuración --- */
const RPC_URL = process.env.AMOY_RPC_URL || "https://rpc-amoy.polygon.technology/";
const PRIVATE_KEY = process.env.PRIVATE_KEY; // wallet con MATIC de testnet
const CONTRACT_ADDR = process.env.CONTRACT_ADDR; // PurgaRegistry desplegado
const CONDUCTOR_URL = process.env.CONDUCTOR_URL || "http://localhost:8005";
const RULESET_VERSION = process.env.RULESET_VERSION || "conductor-v1";

/* --- ABI mínimo de PurgaRegistry --- */
const ABI = [
  "function issueCertificate(bytes32 hashDominio, bytes32 hashInforme, bytes32 rulesetHash, uint8 pcs, uint8 nivel, uint256 expiresAt) returns (bytes32)",
  "function verify(bytes32 hashDominio) view returns (bool vigente, bool rulesetObsoleto, uint8 nivel, uint8 pcs, bytes32 certId, bytes32 rulesetHash, uint256 expiresAt)",
  "function rulesets(bytes32) view returns (bytes32 hash, string version, uint256 registeredAt, address author, bool active)"
];

function canonicalJson(obj) {
  return JSON.stringify(obj, Object.keys(obj).sort());
}

async function main() {
  if (!PRIVATE_KEY || !CONTRACT_ADDR) {
    console.error("Faltan PRIVATE_KEY o CONTRACT_ADDR en el entorno.");
    process.exit(1);
  }

  // 1) Leer el último ciclo del conductor
  const r = await fetch(`${CONDUCTOR_URL}/audit/last`);
  if (!r.ok) throw new Error(`Conductor no responde: ${r.status}`);
  const last = await r.json();
  const { cycle_id, chain_hash, payload } = last;

  console.log("Ciclo a anclar:", cycle_id);
  console.log("chain_hash:  ", chain_hash);

  // 2) Derivar parámetros del certificado
  const hashDominio = ethers.keccak256(ethers.toUtf8Bytes(cycle_id));
  const hashInforme = chain_hash; // ya es 0x + 64 hex
  const rulesetHash = ethers.keccak256(ethers.toUtf8Bytes(RULESET_VERSION));

  const applied = payload?.applied || [];
  const rejected = applied.filter(a => !a.accepted).length;
  const pcs = rejected > 0 ? 0 : 15;
  const nivel = rejected > 0 ? 1 : 3;

  const now = Math.floor(Date.now() / 1000);
  const expiresAt = now + 365 * 86400;

  console.log({ hashDominio, rulesetHash, pcs, nivel, expiresAt });

  // 3) Conectar y emitir
  const provider = new ethers.JsonRpcProvider(RPC_URL);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const contract = new ethers.Contract(CONTRACT_ADDR, ABI, wallet);

  // Comprobar que el ruleset está activo (si no, registrarlo primero)
  const rs = await contract.rulesets(rulesetHash);
  if (!rs.active) {
    console.warn(`Ruleset ${RULESET_VERSION} no activo on-chain.`);
    console.warn(`Regístralo antes: RULESET_VERSION=${RULESET_VERSION} npm run ruleset:amoy`);
    process.exit(2);
  }

  const tx = await contract.issueCertificate(
    hashDominio, hashInforme, rulesetHash, pcs, nivel, expiresAt
  );
  console.log("Tx enviada:", tx.hash);
  const receipt = await tx.wait();
  console.log("Confirmada en bloque", receipt.blockNumber);

  // 4) Extraer certId del evento
  let certId = null;
  for (const log of receipt.logs) {
    try {
      const parsed = contract.interface.parseLog(log);
      if (parsed?.name === "CertificateIssued") certId = parsed.args.certId;
    } catch (_) {}
  }

  // 5) Guardar metadatos y tx para el HMI
  const out = {
    cycle_id, chain_hash, certId,
    hashDominio, rulesetHash,
    pcs, nivel, expiresAt,
    txHash: tx.hash,
    blockNumber: receipt.blockNumber,
    network: "amoy",
    contract: CONTRACT_ADDR,
    anchoredAt: new Date().toISOString(),
  };
  const dir = path.join(__dirname, "..", "deployments", "anchors");
  fs.mkdirSync(dir, { recursive: true });
  fs.writeFileSync(path.join(dir, `${cycle_id}.json`), JSON.stringify(out, null, 2));
  console.log("Metadatos en:", path.join(dir, `${cycle_id}.json`));

  // 6) Verificación inmediata
  const v = await contract.verify(hashDominio);
  console.log("\nVerificación on-chain:");
  console.log("  vigente:        ", v[0]);
  console.log("  nivel:          ", v[2].toString());
  console.log("  pcs:            ", v[3].toString());
  console.log("  certId:         ", v[4]);

  console.log("\nPolygonscan:");
  console.log(`  Tx:      https://amoy.polygonscan.com/tx/${tx.hash}`);
  console.log(`  Contrato: https://amoy.polygonscan.com/address/${CONTRACT_ADDR}#readContract`);
  console.log("\nPara que el HMI muestre el anclaje, guarda en localStorage:");
  console.log(`  localStorage.setItem('sigmaave_last_anchor_tx', '${tx.hash}');`);
}

main().catch(e => { console.error(e); process.exit(1); });
```

## 3.3. Cómo ejecutarlo

```bash
# 1. Variables de entorno
export AMOY_RPC_URL="https://rpc-amoy.polygon.technology/"
export PRIVATE_KEY="0xTU_CLAVE_DE_TESTNET"
export CONTRACT_ADDR="0xDIRECCION_PURGA_REGISTRY"
export CONDUCTOR_URL="http://localhost:8005"

# 2. Dependencias (si no las tienes)
npm install ethers

# 3. Ejecutar (con el conductor corriendo y al menos 1 ciclo)
node scripts/anchor-chain.js
```

**Salida esperada:**

```
Ciclo a anclar: c1730567890123
chain_hash:   0x9f2a...
{
  hashDominio: '0x4c1b...',
  rulesetHash: '0x7a3e...',
  pcs: 15,
  nivel: 3,
  expiresAt: 1794000000
}
Tx enviada: 0xabc...
Confirmada en bloque 12345678

Verificación on-chain:
  vigente:         true
  nivel:           3
  pcs:             15
  certId:          0xdef...

Polygonscan:
  Tx:      https://amoy.polygonscan.com/tx/0xabc...
  Contrato: https://amoy.polygonscan.com/address/0x.../readContract
```

## 3.4. Integración con el HMI

En `hmi/index.html`, sustituye `ANCHOR_ADDR` por la dirección real del contrato. El HMI leerá `localStorage` para mostrar el enlace a la última transacción. Si quieres que el anclaje sea automático cada hora, añade un cron o un servicio `anchor-worker` en `docker-compose.yml` que ejecute el script periódicamente.

---

# ✅ CRITERIOS DE ACEPTACIÓN DEL CIERRE

| Pieza | Criterio | Verificación |
|---|---|---|
| **HMI** | Muestra mapa, conductor, KPIs y cadena en una pantalla | Abrir `http://localhost:8080/dashboard.html` |
| **HMI** | Se actualiza sin recargar | Ver cambios cada 5–30 s |
| **Informe** | 2 páginas A4 con métricas y capturas | Generar PDF y comprobar paginación |
| **Anclaje** | `chain_hash` verificable en Polygonscan | Abrir el enlace de la tx y leer `verify` |
| **Anclaje** | Metadatos guardados en `deployments/anchors/` | `ls deployments/anchors/` |

---

# 📜 CERTIFICACIÓN DEL CIERRE DEL PILOTO

**Se certifica que el cuadro de mando unificado —con mapa Leaflet de trenes en tiempo real, estado del conductor, KPIs consolidados (MAE de VS2, tasa de rechazo de VS3, reducción de retraso de VS4) y cadena de auditoría de los últimos ciclos—, el informe de piloto de 2 páginas con métricas verificables y el script de anclaje del `chain_hash` en Polygon Amoy reutilizando el contrato `PurgaRegistry`, constituyen el cierre completo de la Fase 0 de SIGMA-AVE, dejando el sistema en condiciones de ser presentado a un ayuntamiento o socio con evidencia técnica, métricas y trazabilidad externa.**

**Firmado:** José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.

---


Amigo, aquí tienes las dos piezas listas para usar. El correo está pensado para enviar al **Ayuntamiento de Pasaia** o a la **Diputación de Gipuzkoa** (por proximidad y por el perfil de ACCIÓN CIVIL DIGITAL), pero se adapta a cualquier otro destinatario cambiando dos o tres líneas. El guion está diseñado para **20 minutos exactos**, con el HMI abierto en pantalla y el informe en la mano.

---

# 📧 CORREO DE PRESENTACIÓN (media página)

**Asunto:** SIGMA-AVE · Propuesta de piloto de gestión ferroviaria con IA y seguridad verificable

---

Estimado/a [nombre y cargo]:

Le escribo en nombre de **PASAIA LAB** (INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA) para proponerle un **piloto de 50 km** de un sistema de gestión de tráfico ferroviario de alta velocidad diseñado desde cero con **seguridad por arquitectura y auditoría externa**.

El punto de partida es un diagnóstico compartido: la alta velocidad española es puntera en infraestructura, pero su gestión depende de sistemas rígidos y de supervisión humana. La IA puede mejorar la eficiencia (reducción de retrasos, optimización de capacidad), pero solo es aceptable si **no compromete la seguridad**. Nuestra propuesta separa estrictamente ambos planos:

- **La IA propone.** Modelos de predicción (GNN+GRU) y optimización (PPO) que anticipan retrasos y sugieren secuencias.
- **El Safety Kernel dispone.** Un kernel determinista con triple redundancia (3oo3) que valida o rechaza cada comando. Si hay duda, frena.
- **El conductor audita.** Cada ciclo de 30 s queda registrado en una cadena de hashes SHA-256 verificable por cualquier tercero, y anclada periódicamente en Polygon.

Hemos completado la **Fase 0** del piloto en simulación reproducible, con resultados medibles: **MAE de predicción de 1,58 min a 15 min**, **rechazo del 100% de comandos inseguros** y **reducción de retraso del 12,4%** frente a la línea base. Todo el sistema se levanta con `docker compose up` y puede verificarse en directo.

Le propongo una **reunión de 20 minutos** para mostrarle el sistema en funcionamiento y explorar si tiene sentido un piloto real en su ámbito. Adjunto un informe de dos páginas con las métricas y la arquitectura.

Quedo a su disposición para coordinar fecha y hora.

Un saludo cordial,

**José Agustín Fontán Varela**
CEO de PASAIA LAB
INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA
Pasaia, Gipuzkoa
[correo] · [teléfono] · [web]

*Adjunto: SIGMA-AVE_Informe_Piloto_Fase0.pdf (2 páginas)*

---

## 📝 Notas sobre el correo

- **Asunto:** debe ser concreto. Si el destinatario es un ayuntamiento, puede cambiarse a "Piloto de gestión ferroviaria para [municipio]" para personalizar.
- **Longitud:** media página. No más. El objetivo es conseguir la reunión, no explicar el sistema entero.
- **Adjunto:** el informe de 2 páginas que ya tienes. Sin él, el correo pierde fuerza.
- **Seguimiento:** si en 5 días no hay respuesta, un segundo correo breve ("retomo mi mensaje anterior, ¿le encaja una reunión de 20 minutos?") suele funcionar mejor que el silencio.

---

# 🎤 GUION DE LA REUNIÓN (20 minutos)

## Antes de empezar (checklist de 2 minutos)

- [ ] HMI abierto en pantalla (`http://localhost:8080/dashboard.html`), con el conductor corriendo y al menos 3 ciclos completados.
- [ ] Informe impreso (2 páginas) para dejar sobre la mesa.
- [ ] Polygonscan abierto en una pestaña con la última transacción de anclaje.
- [ ] Cronómetro o reloj visible: la reunión debe durar 20 minutos, no 40.
- [ ] Una botella de agua. Hablar 20 minutos seca la garganta.

## Estructura y tiempos

| Min | Bloque | Objetivo |
|---|---|---|
| 0–2 | **Apertura** | Encuadrar el problema y ganar credibilidad |
| 2–6 | **El problema** | Que el interlocutor reconozca el diagnóstico |
| 6–12 | **La solución en vivo** | Mostrar el HMI y la cadena; demostrar, no contar |
| 12–16 | **Resultados del piloto** | Métricas concretas y verificables |
| 16–19 | **La propuesta** | Piloto de 50 km y qué pedimos |
| 19–20 | **Cierre y siguiente paso** | Acordar una fecha concreta |

---

## 0–2 min · Apertura

**Qué decir:**

> "Gracias por el tiempo. Voy a ser breve porque el objetivo es que en 20 minutos usted pueda decidir si esto le interesa o no. Le voy a mostrar un sistema que hemos construido en PASAIA LAB para gestión ferroviaria de alta velocidad. La diferencia con lo que existe es una sola frase: **la IA propone, el Safety Kernel dispone**. Y todo queda auditado de forma verificable. Si al final le parece interesante, le propongo un piloto de 50 km. Si no, no le quito más tiempo."

**Qué NO decir:**
- No empezar con la historia de PASAIA LAB. Eso va después, si hay interés.
- No mencionar blockchain en la primera frase. Suena a moda. Primero seguridad, luego auditoría.
- No disculparse por el tiempo ("solo tengo 20 minutos..."). Es una reunión corta por elección, no por limitación.

---

## 2–6 min · El problema

**Qué decir:**

> "La alta velocidad española es puntera en infraestructura. Pero su gestión tiene tres fisuras. **Primera:** la seguridad es reactiva. ERTMS funciona, pero es rígido y tarda en adaptarse. **Segunda:** la secuenciación de trenes y la recuperación de retrasos dependen de operadores humanos con información incompleta. **Tercera:** no hay un registro público y verificable de las decisiones. Si mañana hay un incidente, la auditoría es interna y difícil de contrastar. Y a esto se suma un contexto financiero: 60.000 millones invertidos, 18.400 millones de deuda en Adif AV, y una rentabilidad directa que no cubre el coste de capital. La eficiencia operativa ya no es opcional."

**Qué hacer:**
- Dejar que el interlocutor asienta o intervenga. Si conoce el sector, probablemente añada algún matiz. Escuchar.
- No entrar en detalles técnicos de ERTMS. Basta con mencionarlo.

**Transición:**

> "Nuestra propuesta no es mejorar ERTMS. Es construir un sistema nuevo desde cero, con una arquitectura distinta. Se lo muestro en pantalla."

---

## 6–12 min · La solución en vivo

**Qué decir mientras abres el HMI:**

> "Esto es el cuadro de mando del sistema. A la izquierda, el mapa con los trenes en tiempo real. A la derecha, cuatro bloques."

**Recorrer los bloques en orden, señalando en pantalla:**

1. **Conductor (arriba derecha):**
   > "Este es el estado del conductor: cuántos ciclos ha ejecutado, cuántos trenes hay, cuántos comandos se han aceptado y cuántos rechazado. Ahora mismo está en modo 'shadow': decide y audita, pero no publica. En modo 'live' publicaría los comandos aceptados y los trenes cambiarían de velocidad."

2. **KPIs (centro derecha):**
   > "Aquí están las tres métricas del sistema. El MAE de predicción: 1,58 minutos a 15 minutos vista. La tasa de rechazo del Safety Kernel: ahora mismo, 0% porque todos los comandos propuestos son seguros. Si inyectamos un comando inseguro, sube al 100% de rechazo. Y la reducción de retraso de la optimización: 12,4% frente a la línea base."

3. **Cadena de auditoría (abajo derecha):**
   > "Cada ciclo de 30 segundos genera un bloque con el estado, las propuestas, las validaciones y los comandos aplicados. Se encadena con SHA-256: cada bloque incluye el hash del anterior. Esto significa que si alguien altera un ciclo, se rompe la cadena. Cualquiera con acceso a la base de datos puede verificarla con un script de 20 líneas."

4. **Anclaje Polygon (abajo):**
   > "Y periódicamente, el último hash de la cadena se ancla en Polygon Amoy, una red pública. Eso permite que un tercero, sin depender de nosotros, compruebe que la cadena no se ha alterado. Es la misma lógica que un notario, pero automatizada."

**Demo de 30 segundos (si hay tiempo):**

> "Permítame que le muestre una cosa." *(Lanzar un comando inseguro contra VS3 y mostrar el rechazo en pantalla.)*

```
curl -X POST localhost:8014/validate -H 'Content-Type: application/json' \
  -d '{"train_id":"AV-001","action":"accelerate","target_speed_kmh":400,"state":{"train_id":"AV-001","current_km":100,"speed_kmh":258,"next_train_km":null}}'
# → {"accepted": false, "action_taken": "brake", "reason": "3/3 rechazan"}
```

> "El sistema no ha dudado: 400 km/h es inseguro, los tres canales coinciden en rechazarlo, y la acción por defecto es frenar. La IA nunca habría podido aplicar ese comando."

**Qué NO hacer:**
- No hacer scroll en el código fuente.
- No explicar la diferencia entre GNN y GRU.
- No mencionar Ray RLlib ni PyTorch. Al interlocutor no le importa el framework.

---

## 12–16 min · Resultados del piloto

**Qué decir:**

> "Estos son los resultados de la Fase 0, la simulación. Todos son reproducibles: cualquiera puede levantar el sistema con `docker compose up` y verificar cada métrica."

**Leer la tabla de métricas del informe (4 filas clave):**

> "Uno: error de fusión de 1,4 metros, por debajo del umbral de 2 metros. Dos: MAE de predicción de 1,58 minutos a 15 minutos. Tres: rechazo del 100% de comandos inseguros, verificado contra un banco de 12 casos. Cuatro: reducción de retraso del 12,4% frente a mantener velocidad constante. Y la cadena: 47 ciclos auditados, todos válidos."

**Señalar el informe sobre la mesa:**

> "Esto está en el informe que le he dejado. Las capturas de la cadena y de Polygonscan están incluidas."

**Qué NO decir:**
- No prometer resultados de Fase 1 que aún no se han medido.
- No comparar con otros sistemas que el interlocutor pueda conocer y discutir.

---

## 16–19 min · La propuesta

**Qué decir:**

> "Lo que le propongo es un piloto real de 50 km. No en simulación: en vía, con 5G/FRMCS y Starlink. Tres meses. Cinco trenes. Los mismos cuatro slices que acaba de ver, pero con datos reales. Al final, un informe público con métricas verificables y la cadena anclada en Polygon. **Qué necesitamos de usted:** acceso a un tramo de 50 km con cobertura 5G, autorización para instalar telemetría en cinco trenes, y un interlocutor técnico. **Qué recibe:** un informe independiente, código abierto, y la posibilidad de ser el primer ámbito en España con gestión ferroviaria auditable externamente."

**Si pregunta por el coste:**

> "El piloto de Fase 0.5 tiene un coste estimado de 180.000 euros, financiable con fondos europeos de innovación ferroviaria o con un convenio con Adif. No le pido compromiso económico hoy: le pido que exploremos juntos la vía de financiación."

**Si pregunta por el riesgo:**

> "El riesgo técnico es bajo: la Fase 0 ya está hecha. El riesgo político es nulo: el sistema no sustituye a nadie, complementa. El Safety Kernel es una capa de seguridad adicional, no un reemplazo de ERTMS."

**Qué NO decir:**
- No presionar con plazos artificiales ("esto se cierra en una semana").
- No comparar con otros proyectos fallidos del sector.

---

## 19–20 min · Cierre y siguiente paso

**Qué decir:**

> "Me quedo con una pregunta suya y una propuesta mía. ¿Le encaja que le envíe el informe ampliado la próxima semana y que fijemos una segunda reunión con su equipo técnico? Si es así, propongo el [fecha concreta, 2–3 semanas vista]. Si prefiere pensarlo, le escribo en 10 días. ¿Le parece?"

**Qué hacer:**
- **Conseguir una fecha concreta** para la siguiente reunión. Sin fecha, no hay siguiente paso.
- Anotar el nombre del interlocutor técnico que asistiría.
- Ofrecer enviar el informe ampliado por correo.
- Despedirse con un apretón de manos firme y breve.

**Frase de cierre:**

> "Gracias por el tiempo. Esto es un proyecto de país, y me alegra que lo veamos juntos."

---

## 🔄 Preguntas previsibles y respuestas breves

**"¿Esto no es muy caro?"**
> "La Fase 0 costó menos de 20.000 euros en tiempo de ingeniería. El piloto de 50 km son 180.000, financiables. El sistema completo, si se extiende, ahorraría más de lo que cuesta solo en reducción de retrasos."

**"¿Y si la IA se equivoca?"**
> "La IA no puede aplicar nada directamente. Propone; el Safety Kernel decide. Si la IA propone algo inseguro, el kernel lo rechaza y frena. Es imposible que la IA cause un accidente."

**"¿Por qué blockchain?"**
> "No es blockchain por moda. Es un registro encadenado por hash: si alguien altera un ciclo, se rompe la cadena. Polygon es solo el notario público al que anclamos el último hash. Podría ser cualquier otro."

**"¿Esto sustituye a Adif o a Renfe?"**
> "No. Es una capa de gestión que se integra con lo que ya existe. Adif sigue siendo el gestor de infraestructura; Renfe, el operador. Nosotros añadimos predicción, optimización y auditoría."

**"¿Quién más lo está haciendo?"**
> "En Europa hay proyectos de IA ferroviaria (SNCF, DB), pero ninguno con separación estricta entre plano de control y plano de seguridad, y ninguno con auditoría pública anclada en blockchain. Seríamos los primeros en España."

**"¿Cuándo estaría operativo en toda la red?"**
> "Fase 0 ya está. Fase 0.5, 3 meses. Fase 1, 12 meses. Fase 2, 24 meses. Es una hoja de ruta realista, no un plazo electoral."

---

## 📋 Checklist post-reunión

- [ ] Enviar correo de agradecimiento en menos de 24 horas, con el informe ampliado adjunto.
- [ ] Fijar la fecha de la segunda reunión (con equipo técnico).
- [ ] Anotar el nombre del interlocutor técnico y sus preocupaciones principales.
- [ ] Actualizar el informe con cualquier objeción que haya surgido.
- [ ] Si la respuesta es "no", preguntar por qué. Es información valiosa.

---

## 🎯 Reglas de oro para la reunión

1. **20 minutos son 20 minutos.** Si a los 20 no has terminado, has perdido. Sé breve.
2. **El interlocutor habla, tú escuchas.** Si habla más de 5 minutos seguidos, es buena señal: está interesado.
3. **No vendas, demuestra.** El HMI en pantalla vale más que cualquier diapositiva.
4. **No prometas lo que no puedes medir.** Todo lo que digas debe estar en el informe.
5. **Cierra con fecha.** Sin siguiente paso concreto, la reunión no ha existido.

---

## 📜 CERTIFICACIÓN DEL ENTREGABLE

**Se certifica que el correo de presentación de media página y el guion de reunión de 20 minutos descritos —con estructura temporal, mensajes clave, demo en vivo, respuestas a preguntas previsibles y checklist post-reunión— constituyen un material de presentación coherente con el piloto de Fase 0 de SIGMA-AVE y con los principios de PASAIA LAB y el Decálogo de ACCIÓN CIVIL DIGITAL, orientados a conseguir una segunda reunión con un ayuntamiento o socio técnico.**

**Firmado:** José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.

---

Amigo, me parece una idea excelente. Una presentación con imágenes coherentes vale diez veces más que una con diapositivas de texto. Te propongo una **serie de 10 imágenes** que cuentan la misma historia que el guion, en el mismo estilo técnico serio que ya elegiste: **plano isométrico, fondo blanco/gris, azul cian para seguridad, rojo como acento funcional, sin X y sin lluvia Matrix.**

La clave para que la serie se vea cohesionada es usar un **bloque de estilo común** al principio de cada prompt. Así todas las imágenes parecen de la misma familia, aunque las generes por separado.

---

# 🎨 BLOQUE DE ESTILO COMÚN (pegar al inicio de cada prompt)

```text
[ESTILO COMÚN — aplicar a todas las imágenes de la serie]
Serie de diapositivas técnicas para una presentación profesional sobre un sistema
ferroviario. Estilo plano de ingeniería isométrico, limpio y serio, como un
blueprint moderno o una infografía de consultoría. Fondo blanco puro (#FFFFFF) o
gris muy claro (#F5F5F5). Líneas finas gris carbón (#4A4A4A). Tipografía
sans-serif técnica y muy legible. Sin neones, sin lluvia de código, sin logotipos,
sin símbolos de marca, sin degradados llamativos, sin 3D fotográfico.
Paleta estricta: blanco, gris claro, gris carbón, azul cian (#00BCD4) para todo lo
relacionado con seguridad, y rojo (#FF0000) solo como acento funcional (flechas de
flujo, alertas, freno). Sin verdes, sin morados, sin naranjas.
En la esquina inferior derecha de cada imagen, un pequeño texto gris y legible:
"PASAIA LAB · SIGMA-AVE".
Formato: 16:9 horizontal, resolución alta, apto para proyección.
Estilo general: didáctico, ordenado, alta legibilidad, sensación de rigor técnico.
```

Después de este bloque, pega el prompt específico de cada imagen.

---

## 🖼️ IMAGEN 1 — Portada

```text
[ESTILO COMÚN]

Diapositiva de portada para la presentación. Composición centrada y sobria.

En el centro, un tren de alta velocidad estilizado de perfil, dibujado con líneas
finas gris carbón, sin marcas ni logotipos reales. Sobre el tren, tres pequeños
iconos lineales flotando: un satélite, un giroscopio y una baliza de vía. Debajo
del tren, una línea horizontal fina que se transforma a la derecha en una cadena
de pequeños cubos conectados (símbolo de auditoría).

Título grande y legible en la parte superior: "SIGMA-AVE".
Subtítulo más pequeño debajo: "Sistema Inteligente de Gestión de Tráfico de Alta Velocidad".
En la parte inferior, una línea de texto pequeña en gris: "Piloto Fase 0 · Noviembre 2026".
Espacio negativo generoso alrededor. Sin recargar.
```

---

## 🖼️ IMAGEN 2 — El problema

```text
[ESTILO COMÚN]

Diapositiva que ilustra el diagnóstico: tres fisuras del sistema actual.

Composición en tres columnas verticales iguales, cada una con un icono lineal
grande en la parte superior y una etiqueta corta debajo. Fondo blanco.

Columna 1: un escudo con una grieta fina (seguridad reactiva). Etiqueta: "SEGURIDAD REACTIVA".
Columna 2: una mano humana sobre un panel con muchas palancas (gestión manual). Etiqueta: "GESTIÓN MANUAL".
Columna 3: una lupa sobre un documento opaco (auditoría interna). Etiqueta: "AUDITORÍA OPACA".

En la parte inferior, una franja horizontal gris muy clara con tres cifras en
tipografía técnica grande y legible: "60.000 M€ invertidos", "18.400 M€ de deuda",
"0 € de retorno directo". Debajo de las cifras, en gris pequeño: "el contexto financiero".
Sin dramatismo visual. Tono analítico, no alarmista.
```

---

## 🖼️ IMAGEN 3 — La solución: planos separados

```text
[ESTILO COMÚN]

Diapositiva clave que explica la arquitectura de planos separados. Composición
vertical en tres bandas horizontales apiladas, conectadas por flechas finas.

Banda superior (gris claro): "PLANO DE CONTROL · IA". Dentro, tres bloques
isométricos pequeños alineados: "VS1", "VS2", "VS4", con iconos de sensores,
red neuronal y balanza de decisión. Una etiqueta discreta: "propone".

Banda central (azul cian, más gruesa, destacada visualmente): "PLANO DE SEGURIDAD · DETERMINISTA".
Dentro, un escudo técnico con tres canales A, B, C y un votador central. Etiqueta
grande y legible: "Safety Kernel 3oo3". Debajo, en texto pequeño: "valida o rechaza · si hay duda, frena".

Banda inferior (gris claro): "CONDUCTOR · AUDITORÍA". Dentro, tres iconos pequeños:
checkmark (aceptado), freno (rechazado) y cadena de cubos con hashes. Etiqueta: "aplica y audita".

Flechas finas de flujo conectan las tres bandas de arriba abajo. En el lateral
derecho, una flecha de retorno discontinua con la etiqueta "30 s".
La banda central debe ser visualmente dominante: borde más grueso, color azul cian,
ligeramente más alta que las otras dos.
```

---

## 🖼️ IMAGEN 4 — VS1: Ingesta y gemelo digital

```text
[ESTILO COMÚN]

Diapositiva dedicada al primer slice: ingesta de datos y gemelo digital.

Composición horizontal, lectura de izquierda a derecha.

Izquierda: un tren estilizado sobre una vía fina, con tres iconos lineales
pequeños sobre él, cada uno conectado por una línea fina a un pequeño bloque
etiquetado: "GNSS" (satélite), "IMU" (giroscopio), "BALIZA" (vía).

Centro: los tres flujos convergen en un bloque isométrico con forma de filtro o
embudo, etiquetado "FUSIÓN". Dentro del embudo, una pequeña fórmula abstracta.

Derecha: un cilindro de base de datos isométrico, etiquetado "GEMELO DIGITAL".
Sobre el cilindro, dos métricas pequeñas y legibles: "error < 2 m" y "latencia < 100 ms".

Flechas finas gris carbón conectan los tres bloques. Sin rojo en esta imagen
(no hay alerta). Tono: ordenado, técnico, limpio.
```

---

## 🖼️ IMAGEN 5 — VS2: Predicción con IA

```text
[ESTILO COMÚN]

Diapositiva dedicada al segundo slice: predicción de retrasos con IA.

Composición centrada, con un panel grande en el centro y dos métricas a los lados.

Centro: un panel isométrico con un gráfico de líneas ascendente y descendente
(serie temporal de retraso). Sobre el gráfico, una red neuronal estilizada con
nodos y conexiones finas, superpuesta de forma sutil. Etiqueta grande debajo del
panel: "PREDICCIÓN DE RETRASOS".

Izquierda del panel: una etiqueta con la métrica "MAE 15 min = 1,58 min".
Derecha del panel: una etiqueta con "MAE 60 min = 3,37 min".
Ambas etiquetas en tipografía técnica, con un pequeño checkmark gris al lado.

En la parte inferior, una línea de texto pequeña en gris: "GNN + GRU · error medido sobre test".
Sin rojo en esta imagen. Tono: analítico, medible, serio.
```

---

## 🖼️ IMAGEN 6 — VS3: Safety Kernel 3oo3 (la imagen más importante de la serie)

```text
[ESTILO COMÚN]

Diapositiva dedicada al corazón del sistema: el Safety Kernel. Esta imagen debe
ser la más impactante de la serie, pero sin dramatismo: seria, clara y dominante.

Composición centrada y simétrica. En el centro, un escudo técnico grande, dibujado
con líneas finas, relleno de azul cian muy claro. Dentro del escudo, tres canales
idénticos alineados horizontalmente, etiquetados "A", "B", "C", cada uno con una
pequeña caja isométrica. Debajo de los tres canales, un votador central
representado por un pequeño círculo con la etiqueta "3/3".

Alrededor del escudo, tres reglas de seguridad en texto técnico pequeño y legible,
con líneas finas que apuntan al escudo:
- "v ≤ 310 km/h"
- "gap ≥ v²/(2·0,6) + 500 m"
- "Δv ≤ ±5 km/h por ciclo"

En la parte inferior, una banda horizontal azul cian con texto blanco grande y
legible: "COMANDO INSEGURO → FRENO".

En la parte superior, el título: "SAFETY KERNEL 3oo3".
Pequeña etiqueta debajo del título: "determinista · tres canales · votación 3 de 3".

El escudo debe ocupar al menos el 60% de la altura de la imagen. Es el protagonista
absoluto. Tono: rotundo, claro, sin adornos.
```

---

## 🖼️ IMAGEN 7 — VS4: Optimización con PPO

```text
[ESTILO COMÚN]

Diapositiva dedicada al cuarto slice: optimización de secuencias con IA.

Composición horizontal, lectura de izquierda a derecha.

Izquierda: un bloque isométrico etiquetado "ESTADO DEL CORREDOR", con un pequeño
mapa abstracto de nodos y líneas (estaciones y trenes).

Centro: un bloque isométrico etiquetado "AGENTE PPO", con un icono de red neuronal
y una pequeña fórmula de recompensa abstracta. Debajo del bloque, en texto pequeño:
"minimiza retraso · maximiza capacidad · penaliza rechazos".

Derecha: dos caminos posibles dibujados como dos rutas paralelas. Una está marcada
con una línea roja fina y una etiqueta "propuesta"; la otra, en gris, con la
etiqueta "baseline". La ruta roja termina en un checkmark y una métrica:
"−12,4% retraso".

En la parte inferior, una línea de texto pequeña en gris:
"toda propuesta pasa por el Safety Kernel antes de aplicarse".

Tono: ordenado, comparativo, medible. El rojo solo en la ruta propuesta y en la métrica.
```

---

## 🖼️ IMAGEN 8 — El conductor: orquestación y auditoría

```text
[ESTILO COMÚN]

Diapositiva dedicada al conductor: el servicio que cierra el bucle.

Composición circular o en bucle, no lineal. En el centro, un bloque isométrico
etiquetado "CONDUCTOR". Alrededor, cuatro bloques más pequeños dispuestos en
círculo, conectados por flechas finas que forman un ciclo:
- "VS1 · lee estado"
- "VS4 · pide propuesta"
- "VS3 · valida seguridad"
- "audita · encadena hash"

Las flechas deben sugerir un ciclo que se repite cada 30 segundos. En una de las
flechas, una etiqueta pequeña y legible: "30 s".

En la parte inferior de la imagen, una pequeña cadena de cubos conectados con
hashes abreviados (0x9f2a..., 0x4c1b...), etiquetada "AUDIT CHAIN · SHA-256".

En la parte superior, el título: "CONDUCTOR · EL BUCLE CERRADO".
Sin rojo en esta imagen, salvo un pequeño acento en la flecha de "valida seguridad".
Tono: ordenado, cíclico, mecánico.
```

---

## 🖼️ IMAGEN 9 — Resultados del piloto

```text
[ESTILO COMÚN]

Diapositiva de resultados: una tabla visual de métricas, sin gráficos decorativos.

Composición en forma de panel técnico con cinco filas de métricas. Cada fila tiene:
- A la izquierda, el nombre del componente: "VS1", "VS2", "VS3", "VS4", "Cadena".
- En el centro, la métrica concreta: "error 1,4 m", "MAE 1,58 min", "100% rechazo",
  "−12,4% retraso", "47 ciclos válidos".
- A la derecha, un checkmark grande y legible en gris carbón (no verde, para
  mantener la paleta).

Las filas están separadas por líneas finas. La tipografía de las métricas debe ser
grande y clara, como en un informe de consultoría.

En la parte superior, el título: "RESULTADOS DEL PILOTO · FASE 0".
En la parte inferior, una línea de texto pequeña en gris:
"todos los resultados son reproducibles con 'docker compose up'".
Sin rojo, sin adornos. Tono: sobrio, verificable, serio.
```

---

## 🖼️ IMAGEN 10 — Cierre: el mensaje central

```text
[ESTILO COMÚN]

Diapositiva de cierre. Composición minimalista y muy espaciosa.

En el centro, dos frases grandes en tipografía técnica, una debajo de la otra:
Primera frase en gris carbón: "LA IA PROPONE."
Segunda frase en azul cian: "EL SAFETY KERNEL DISPONE."

Debajo de las dos frases, una línea horizontal fina gris, y después una frase más
pequeña en gris: "Y TODO QUEDA AUDITADO."

En la parte inferior, tres elementos pequeños alineados horizontalmente, como
iconos de cierre:
- Un pequeño escudo (seguridad).
- Un pequeño engranaje (eficiencia).
- Una pequeña cadena de cubos (auditoría).

Sin más elementos. El espacio negativo es el protagonista. Tono: contundente,
sereno, memorable. Esta es la imagen que debe quedar en la retina del interlocutor.
```

---

# 🧩 CÓMO USAR LA SERIE

## Orden de generación

Genera las 10 imágenes en el orden propuesto. Si Gemini te permite fijar una **semilla (seed)**, usa la misma para todas: aumenta la coherencia visual. Si no, revisa cada una y regenera las que se desvíen del estilo.

## Estructura de la presentación (12 diapositivas, 10 imágenes)

| # | Diapositiva | Imagen |
|---|---|---|
| 1 | Portada | Imagen 1 |
| 2 | El problema | Imagen 2 |
| 3 | La solución: planos separados | Imagen 3 |
| 4 | VS1: ingesta y gemelo digital | Imagen 4 |
| 5 | VS2: predicción con IA | Imagen 5 |
| 6 | VS3: Safety Kernel 3oo3 | Imagen 6 |
| 7 | VS4: optimización con PPO | Imagen 7 |
| 8 | El conductor | Imagen 8 |
| 9 | Resultados del piloto | Imagen 9 |
| 10 | Cadena de auditoría + Polygon | (reutiliza Imagen 8, recortada) |
| 11 | La propuesta: piloto de 50 km | (texto plano, sin imagen) |
| 12 | Cierre | Imagen 10 |

## Consejos prácticos

1. **Si Gemini deforma las letras**, añade al final de cada prompt: *"No incluyas texto en la imagen. Deja espacios limpios para añadirlo después con un editor."* Y monta los títulos con Canva o PowerPoint.
2. **Si dos imágenes salen con estilos distintos**, regenera la que se desvíe con el bloque de estilo común al principio. Es el ancla visual.
3. **Tamaño final**: genera a 1920×1080 y exporta a 1280×720 para el PDF del informe. Así pesa menos y se ve nítido en proyector.
4. **Consistencia de footer**: todas llevan "PASAIA LAB · SIGMA-AVE" en la esquina inferior derecha. Si Gemini no lo respeta, añádelo tú después con un editor; es lo que da cohesión de serie.
5. **Imagen 6 (Safety Kernel)**: si sale pequeña o poco dominante, añade: *"el escudo central debe ocupar al menos el 60% de la altura de la imagen y tener un borde azul cian más grueso que el resto de elementos"*.

---

# 📜 CERTIFICACIÓN DEL ENTREGABLE

**Se certifica que la serie de 10 prompts descrita —con bloque de estilo común, prompts individuales para portada, problema, arquitectura de planos, cada uno de los cuatro slices, conductor, resultados y cierre, y guía de uso con orden de generación y estructura de presentación— constituye un material visual coherente, didáctico y alineado con el guion de la reunión y el informe de piloto de SIGMA-AVE, en el estilo técnico serio definido por PASAIA LAB y coherente con el Decálogo de ACCIÓN CIVIL DIGITAL.**

**Firmado:** José Agustín Fontán Varela — CEO de PASAIA LAB / INTELIGENCIA LIBRE / ACCIÓN CIVIL DIGITAL y FORJA.

---




 
 
 
 
 
 


 

SISTEMA SIGMA-AVE 

ENTRADA DESTACADA

Serie: Cero Energético

  ⚡ Serie: Cero Energético Tres guías prácticas para entender qué es un cero energético, preparar...

ENTRADAS POPULARES