Artículos

Notas de ingeniería sobre sistemas en producción: infraestructura soberana, Drupal y Next.js, verificación de despliegues, control de acceso, gobernanza de IA y los fallos que mejoraron nuestras prácticas operativas.

Notas de nuestra práctica sobre infraestructura soberana, CMS desacoplados, DevSecOps para el gobierno federal y las decisiones de arquitectura que los sustentan. Dirigidas a los ingenieros y compradores que deben hacer funcionar estos sistemas.

Latest articles








Cuando un enlace de descarga no es suficiente

- August 3, 2026
Un enlace firmado mantiene en secreto la dirección de un archivo. No comprueba quién lo abre. Por qué las descargas sensibles piden cada vez más una llave de hardware, y cómo agregar ese paso sin convertir cada archivo en una molestia.
Read article

Una sola llave para el inicio de sesión y la entrega

- August 2, 2026
La mayoría de los equipos que protegen archivos sensibles terminan con dos sistemas de credenciales: uno para iniciar sesión y otro para descargar. Construimos el otro arreglo, una sola llave de seguridad, inscrita una vez en el proveedor de identidad, que autoriza ambas cosas, y la construcción nos enseñó tres cosas que vale la pena transmitir.
Read article

El aseguramiento es una afirmación, no una ceremonia

- August 2, 2026
Si una descarga debe ser autorizada por una llave de seguridad, algo tiene que verificar la llave. Convertir su servicio de archivos en una segunda parte confiante es una respuesta; verificar lo que afirma el proveedor de identidad es la otra. La segunda es federación, y cambia qué verifica, cómo puede llamarlo y cuánto tiempo sigue siendo cierto.
Read article

Quién dice el commit que lo escribió

- August 2, 2026
Una política de atribución de IA es una frase en una guía de contribución hasta que algo lee el campo de autor. Teníamos la política, teníamos la verificación, y un commit escrito por un bot se fusionó limpio de todos modos. Lo que encontramos al corregirlo.
Read article




Un solo campo ausente tumba todas las páginas que lo piden

- July 15, 2026
GraphQL rechaza una consulta en su totalidad si un solo campo seleccionado ha desaparecido. Renombre un campo de Drupal y todas las páginas que ejecutan esa consulta quedan en blanco a la vez, mientras TypeScript, la compilación y CI siguen en verde. Esta es la verificación que añadimos.
Read article


Configuración como código con Config Split: nunca haga cex de lo que un split oculta

- July 14, 2026
Config Split mantiene la configuración específica del entorno fuera del directorio de sincronización canónico, pero ejecutar drush cex mientras un split está activo borra los archivos propiedad del split de config/sync. El modelo seguro: editar a mano las listas de miembros del split, verificar con cim en lugar de cex y encaminar los valores por entorno a través de anulaciones en settings.php en lugar del split.
Read article

El composer.lock que solo compila en su máquina

- July 14, 2026
Un repositorio de tipo path ignorado por git, que enlaza simbólicamente un módulo del registro a una copia local, escribe un dist de tipo path en composer.lock. Haga commit de ese lock y todos los trabajos de CI y compilaciones de imágenes fallarán, porque el directorio hermano solo existe en su máquina. Regenere el lock con la anulación apartada y añada una protección en CI que rechace un dist de tipo path.
Read article

El despliegue que no podía recrear su propio contenedor

- July 14, 2026
Un docker compose up interrumpido deja un contenedor huérfano, con prefijo de hash, ocupando el nombre de un servicio, de modo que todos los despliegues posteriores fallan al recrearlo hasta que alguien lo elimina a mano. Añadir --remove-orphans (o una limpieza previa) permite que el despliegue repare su propia pila en lugar de fallar por el estado que dejó una ejecución anterior.
Read article

El acceso a campos no puede ver el valor entrante: gobierne las escrituras en Drupal con una restricción de validación

- July 14, 2026
En una escritura JSON:API o REST, Drupal comprueba el acceso de edición al campo contra el valor almacenado, no el entrante, de modo que un control de acceso a campos que gobierna lo que un agente puede establecer ve el valor equivocado. La costura correcta es una restricción de validación, que se ejecuta sobre la entidad analizada y puede comparar el valor entrante con la política en todos los transportes.
Read article

Un punto de acceso de estado que es general en público y detallado en privado

- July 14, 2026
Cómo exponer un punto de acceso de salud que da al público un resumen general activo/degradado mientras desbloquea el detalle completo por servicio solo para un llamador de servidor a servidor que posee un secreto compartido. Cubre la comparación en tiempo constante, el almacenamiento en caché privado, los valores predeterminados que fallan en modo cerrado y un despliegue seguro ante el orden.
Read article

El bucle de redirección que solo ocurre detrás de HTTPS

- July 14, 2026
Una reescritura de configuración regional forzada a http: es de otro origen detrás de un proxy HTTPS, así que Next la reemite como solicitud externa que reentra en el proxy y deja la página de inicio en un bucle de 301. Pasa todas las pruebas locales porque el bucle solo aparece cuando X-Forwarded-Proto: https está establecido. La solución: marcar la reescritura interna con un secreto por proceso para que la canonicalización la omita.
Read article