La malla de TreeChain solía incluir un quinto nodo: una instancia de glyphjammer-api alojada en Render. Servía tráfico. Replicaba entradas. Era la última superficie gestionada por proveedor en el sistema.
La apagué esta semana.
La razón por la que existía era la inercia. Lanzamos en Render porque Render era fácil. Empuja a GitHub, obtén una API con TLS terminada en cinco minutos. Para un proyecto de investigación de una persona, esa es la herramienta correcta.
Deja de ser la herramienta correcta cuando el proyecto se convierte en infraestructura en la que se supone que otras personas confían.
Los términos de Render pueden cambiar. Su disponibilidad es su responsabilidad. Su centro de datos está en una sola jurisdicción. Si un tribunal obliga a Render a divulgar datos, mi consentimiento no está en el bucle. Si deciden que mi carga de trabajo viola alguna política que nadie puede encontrar por escrito, todo mi sistema se apaga.
Esas no son preocupaciones paranoicas — son riesgos normales de proveedor. También son incompatibles con el modelo de amenazas bajo el cual opera TreeChain.
La migración fue sencilla en teoría y tediosa en la práctica.
Levantar nginx con un certificado wildcard real de Let's Encrypt en Helsinki. Reapuntar el DNS apex a Helsinki. Quitar el nodo de Render de cada registro de pares. Actualizar la cabeza de la cadena. Verificar que la replicación todavía fluye a través de los cuatro nodos reales. Comprobar que los puntos finales públicos todavía resuelven.
La parte tediosa fue la limpieza. Los bucles de comprobación de salud hacían referencia a la URL de Render en tres servicios diferentes. Los paneles listaban cinco nodos. Las rutas de código asumían un fan-out de cinco nodos. Nada de esto fallaría ruidosamente cuando Render desapareciera — simplemente se degradaría silenciosamente.
Pasé por cada servicio, cada panel, cada archivo de configuración. Eliminé las referencias a Render. Probé la replicación después de cada eliminación. Observé cómo avanzaba la cadena.
Ahora hay cuatro nodos. Helsinki, Oregón, Singapur, Ashburn. Cuatro jurisdicciones legales. Cuatro sitios físicos. Un operador — yo. Sin proveedor en el bucle.
Si desaparezco mañana, la malla sigue replicando. Si una sola jurisdicción cita a un nodo, los otros tres siguen operando. Si Hetzner tiene una interrupción en una región, la cadena permanece consistente entre las otras tres.
La diversificación de proveedores todavía está en la lista — los cuatro están en Hetzner. Ese es el siguiente movimiento. Pero la superficie de proveedor que más importaba era la que acabo de eliminar.
Soberanía es una palabra fuerte. No la uso descuidadamente. Lo que he construido es más exactamente *independencia del operador*: puedo mantener TreeChain funcionando indefinidamente sin ninguna contraparte única. Esa es una condición previa para el modelo de confianza. No es la cosa completa.
Pero es una condición previa. Y a partir de esta semana, es real.