Compuertas externas abiertas y STOP gates
Compuertas externas abiertas y STOP gates
Sección titulada «Compuertas externas abiertas y STOP gates»Resumen
Sección titulada «Resumen»DockerSwarmInfrastrcture es “fail-closed”: mientras estas condiciones
externas no se cumplan, ciertos pasos productivos concretos quedan
bloqueados por diseño, y ningún script del repo acepta un valor inventado,
una credencial fabricada ni un flag de bypass para saltárselos. Esta página
resume esas compuertas tal y como están documentadas en el repo fuente; no
las reinterpreta ni las relaja.
Contexto
Sección titulada «Contexto»El propio repositorio lo dice sin margen de ambigüedad (README.md):
No se debe sustituir ninguna de estas entradas por valores inventados ni desactivar los gates para obtener una ejecución verde.
Y (CLAUDE.md, sobre las mismas compuertas):
None of these gates may be satisfied by inventing values, hardcoding a credential, or adding a bypass flag. If a task seems to require passing one of these gates, stop and surface that to the user rather than working around it.
CLAUDE.md advierte además que su propia lista “debe re-verificarse contra
el README.md, docs/TERRAFORM_STATE.md y docs/MIGRATION.md actuales
antes de tratarse como vigente — las compuertas se cierran con el tiempo”.
La lista siguiente es la versión de CLAUDE.md (más detallada, fechada
2026-07-27), que en algunos puntos ya incorpora avances no reflejados todavía
en el listado más breve de README.md.
Compuertas abiertas (estado a 2026-07-27)
Sección titulada «Compuertas abiertas (estado a 2026-07-27)»- Backend de state remoto (R2): hacen falta dos backends R2 independientes, con credenciales separadas, prueba de locking en vivo y snapshots cifrados.
- Identidades de firma: hacen falta identidades/firmas reales para planes y pruebas de locking, mantenidas fuera de git.
- Token Cloudflare Terraform / credencial ACME: el 2026-07-27 se
aprovisionó un token Cloudflare para Terraform con scope
Zone:DNSconfirmado contra la API real de Cloudflare para la zonaapptolast.com, guardado fuera de git en/etc/dockerswarm/terraform/dns-zone-api-token.txt. Su token ID (185f75d78a7b79a5b1d41e595fdaf90f, confirmado vía/user/tokens/verify) es el mismo que el Docker Secretcloudflare_dns_api_token_v2ya registrado (verdocs/EDGE.md, “Registro de secrets instalados”): es la misma credencial ACME/Traefik reutilizada para Terraform por decisión explícita del propietario, no una credencial nueva. La rotación de la credencial ACME originalmente solicitada sigue abierta y es independiente de esta reutilización. - Credenciales Netcup: hacen falta credenciales reales de SCP/import de Netcup si se activa ese root de Terraform.
- Custodio externo de la unlock key: hace falta un custodio externo antes de activar el autolock del Swarm.
- Aceptación OAuth/negocio de n8n: pendiente de aceptación explícita.
- Decisión sobre Minecraft: pendiente una decisión explícita sobre
online-mode=falseantes de publicar el servicio. - Snapshot de migración: hace falta prueba de que el snapshot staged es
final, o un refresh/promoción versionado vía
migration/scripts/promote_runtime_generation.py, antes de arrancar workloads. - Cutover DNS a la IP de plataforma: distinto de las anteriores, esta
compuerta no se desbloquea aportando ninguna credencial.
terraform-safety.pyrechaza de forma incondicional cualquier create/cambio de un registro Cloudflare hacia la IP de plataforma. El 2026-07-27 se añadió el coordinador de “host-readiness” firmado que esta compuerta necesitaba (scripts/host-readiness-probe.shy la cadena de verificación enscripts/terraform-safety.py), yplan-terraform.sh/apply-terraform.shya aceptan su prueba vía--host-readiness. La ausencia de esa prueba, o una prueba para el hostname equivocado, sigue fallando igual que antes. El coordinador nunca se ha ejecutado contra la plataforma real y no ha habido cutover — eso sigue siendo una decisión deliberada y separada que exige que la plataforma esté realmente lista (Traefik/ACME desplegados y sirviendo) más el visto bueno explícito del propietario del repositorio, no solo la existencia del código.
Revalidación completa — 2 de agosto de 2026
Sección titulada «Revalidación completa — 2 de agosto de 2026»CLAUDE.md fue revalidado por completo el 2026-08-02 contra el worktree en
el commit 8a76620 (48 commits después de d461e13, el commit que había
dejado el listado anterior desactualizado por construcción). Esta
revalidación numera explícitamente las nueve compuertas, con una etiqueta
por cada una (OPEN, CLOSED o PREMISE OBSOLETE), y advierte además que
no debe revalidarse contra README.md, docs/MIGRATION.md,
docs/BACKUP_RECOVERY.md ni migration/RUNTIME_GENERATION_PROMOTION.md:
ninguno de esos ficheros se ha tocado desde 63dd546 (2026-07-27) y hoy
contradicen el estado real (por ejemplo, README.md sigue afirmando
platform_minecraft_public_enabled: false mientras config/platform.yml
ya dice true).
Dos de las nueve compuertas cambian de estado respecto al listado de 2026-07-27 de la sección anterior — y una de ellas contradice directamente lo que esta misma página venía afirmando:
- Backend de state remoto (R2) — sigue OPEN. Ya no hace falta
“credenciales separadas”: el propietario autorizó una única credencial
R2 de cuenta que cubre los tres buckets
(
infra/terraform/backend-identities.json, mismoaccess_key_id_sha256en los tres roots). Faltan, verificado: el fichero realinfra/terraform/snapshot-recipients.json(solo existe su.example) y la prueba de locking en vivo contra R2 real. - Identidades de firma — sigue OPEN. Cuatro registros de confianza
(
*.allowed-signers) ya existen con clavesssh-ed25519reales y un namespace restringido. Faltan, no verificable desde el repo: las claves privadas (fuera de git, bajo/etc/dockerswarm/) y cualquier firma real de plan o de lock-proof observable. - Token Cloudflare Terraform / credencial ACME — sigue OPEN. Sin
cambio en la reutilización del token ya documentada. Novedad: la
condición que el propio repo fijaba para revocar
cloudflare_dns_api_token_v1(“revocar tras verificarv2en servicio”) ya se cumplió — 9 de 9 certificados emitidos por Let’s Encrypt producción (docs/DEPLOYMENT_STATUS.md) —, así que solo falta la revocación en sí, una acción del propietario en Cloudflare. - Credenciales Netcup — sigue OPEN, sin cambios de fondo.
- Custodio externo de la unlock key — sigue OPEN, sin cambios de fondo; el backup sigue bloqueado por esto (ver Estado observado).
- Aceptación OAuth/negocio de n8n — sigue OPEN, sin cambios de fondo. Matiz explícito de la revalidación: que n8n sirva tráfico real no cierra esta compuerta — la aceptación pendiente es sobre publicar los 46 workflows restaurados, no sobre levantar el servicio.
- Decisión sobre Minecraft (
online-mode=false) — pasa a CLOSED, cerrada por el commit08cace6(2026-07-28):config/platform.ymldeclaraplatform_minecraft_offline_public_accepted: truejunto conplatform_minecraft_public_enabled: true. Esto contradice la lista de 2026-07-27 de la sección anterior de esta misma página, que listaba esta decisión como pendiente — y coincide con lo que Topología de red ya documentaba desde su creación (2026-07-30) sin que esta página se hubiera actualizado en consecuencia. La compuerta en sí no se eliminó: su valor por defecto sigue siendofalsey sigue comprobándose en tres sitios distintos del repo; lo que cambió es que el riesgo ya fue aceptado explícitamente. - Snapshot de migración o promoción versionada — sigue OPEN, y su
premisa temporal (“antes de arrancar workloads”) ya se sobrepasó sin
cerrarse:
docs/DEPLOYMENT_STATUS.mdregistra 11 de 16 servicios Swarm en1/1desde el 2026-07-28, sin que se documentara ninguna de las dos condiciones que exigedocs/MIGRATION.md. Que los servicios ya estén corriendo no cierra esta compuerta. - Cutover DNS a la IP de plataforma — pasa a PREMISE OBSOLETE. El
cutover ya ocurrió, a mano en Cloudflare, no vía Terraform: el
commit
08cace6(2026-07-28) marcó las nueve etiquetasplatform_dns_cutoverrestantes atrue(edgeya lo estaba), y las diez resuelven hoy a159.195.156.57(confirmado condig +short <label>.apptolast.com Ael 2026-07-28); el servidor legado138.199.157.58fue borrado por el propietario. Esto también contradice la lista de 2026-07-27 de la sección anterior, que afirmaba que “no ha habido cutover”. Lo que no cambia: el coordinador de host-readiness sigue sin ejecutarse nunca contra la plataforma real, yscripts/terraform-safety.pysigue rechazando sin condiciones cualquier cambio Terraform hacia esa IP — de hecho el riesgo se invirtió: ahora es Terraform el que, en modoinitialize, devolvería por error los nueve registros no-edgeal servidor legado ya inexistente, porqueimports.tfno cubre el registroedgey el resto de la adopción manual en Cloudflare todavía no está reflejada en el árbol.
Ninguna de estas nueve compuertas se satisface inventando un valor, cableando una credencial o añadiendo un flag de bypass — la revalidación de 2026-08-02 lo repite en los mismos términos que la versión anterior.
Diferencia con el listado de README.md
Sección titulada «Diferencia con el listado de README.md»El listado de README.md (“Compuertas externas abiertas”) es una versión
anterior y más breve: menciona “token Cloudflare Terraform separado y
credencial ACME rotada” como una única compuerta pendiente, sin el matiz
—añadido después, según CLAUDE.md— de que el token Cloudflare ya se
aprovisionó reutilizando la credencial ACME/Traefik existente, dejando solo
la rotación ACME como pendiente real. Por eso esta página usa CLAUDE.md
(fechado 2026-07-27) como fuente principal, citando expresamente los dos
documentos.
Esta comparación queda a su vez superada por la revalidación de
2026-08-02 de la sección anterior: README.md no se ha tocado desde
63dd546 (2026-07-27) y hoy contradice el estado real en al menos el
gate de Minecraft, así que ya no es una fuente fiable ni siquiera para el
matiz que describe este apartado — se conserva aquí solo como registro
histórico de la comparación, no como estado vigente.
Cuándo escalar
Sección titulada «Cuándo escalar»Si una tarea parece requerir cruzar cualquiera de estas compuertas —incluida la de cutover DNS—, la actuación correcta (documentada en el propio repo fuente, ver Agentes operadores) es parar y reportarlo explícitamente al propietario, nunca inventar un valor, una credencial o un flag de bypass para forzar una ejecución en verde.
Histórico relevante
Sección titulada «Histórico relevante»- 2026-07-26 —
README.mddocumenta las compuertas externas abiertas. - 2026-07-27 — Token Cloudflare Terraform aprovisionado por reutilización de
credencial; coordinador de host-readiness añadido para el gate de cutover
DNS.
CLAUDE.mddocumenta el listado actualizado de “Open STOP gates”. - 2026-07-28 — Esta página creada, citando ambas fuentes.
- 2026-07-30 — Re-verificada contra el commit
45249ebbdeDockerSwarmInfrastrcture: el listado de “Open STOP gates” deCLAUDE.mdy la sección “Compuertas externas abiertas” deREADME.mdconservan el mismo contenido citado arriba, sin cambios. - 2026-08-02 —
CLAUDE.mdrevalida por completo las nueve compuertas contra el commit8a76620: dos cambian de estado (Minecraft pasa a CLOSED, cutover DNS pasa a PREMISE OBSOLETE), contradiciendo el listado de 2026-07-27 citado arriba en esta misma página. Añadida la sección “Revalidación completa — 2 de agosto de 2026” con el detalle de las nueve compuertas.