


Crear una herramienta de contenedores sin root, con bloqueos y descargas de imágenes verificadas
Úsalo al crear una herramienta de contenedores sin root. La IA bloquea los contenedores al cambiarlos, verifica cada capa de imagen descargada, no copia el entorno del host, detiene árboles de procesos completos y rechaza rutas peligrosas al restaurar copias.
Para usar estas reglas de IA
## Usar solo la biblioteca estándar en el núcleo y detectar hosts móviles
Mantén el runtime principal libre de dependencias de terceros y prefiere las funciones nativas del lenguaje antes que invocar el shell para consultas del sistema, descargas, archivos y análisis de la plataforma.
### Política de dependencias
- Usa la biblioteca estándar para comprobar las capacidades del terminal, obtener datos de usuarios y grupos, inspeccionar binarios, detectar arquitecturas, trabajar con HTTP y manejar archivos.
- Ejecuta únicamente el runtime de contenedores necesario para el aislamiento real.
- Si falta ese runtime en un anfitrión compatible, ofrece instalarlo únicamente en un terminal interactivo y solo después de que el usuario lo acepte.
- Cuando corresponda, ejecuta el runtime mediante el reemplazo del proceso actual en vez de añadir una capa de shell.
- Mantén el manifiesto del paquete como fuente oficial de la versión, con una alternativa documentada para árboles de código fuente no instalados.
- Dirige todos los alias de comandos y puntos de entrada de consola a una única función principal canónica.
### Detección de la plataforma
- Detecta un anfitrión móvil especializado únicamente cuando coincidan al menos dos señales independientes: evidencias del sistema operativo, variables de entorno específicas y un prefijo de plataforma accesible.
- Calcula el resultado una sola vez y úsalo de forma coherente para las rutas, el entorno predeterminado, las opciones disponibles, los montajes y las extensiones del runtime.
- En los anfitriones ordinarios, usa de forma predeterminada las convenciones estándar de directorios base, sin montajes específicos para móviles.
## Identificar contenedores por el nombre de su carpeta y tratar aparte a los invitados especiales
Trata la identidad del directorio, la presencia de metadatos, la migración de formatos antiguos y el comportamiento del invitado como decisiones independientes.
### Modelo de almacenamiento
- Usa el nombre de directorio validado como único identificador del contenedor.
- Almacena el sistema de archivos ensamblado bajo ese directorio y conserva los metadatos de la imagen en un manifiesto separado.
- Permite que las instalaciones desde archivos simples omitan los metadatos de imagen cuando no exista una imagen de registro.
- Migra los diseños antiguos en la primera operación que necesite la nueva estructura y, después, vuelve a crear los enlaces de compatibilidad afectados.
- Deriva las ubicaciones del runtime, la caché, los contenedores, las sesiones, las capas y los manifiestos desde un único módulo de rutas que tenga en cuenta la plataforma.
- Valida los nombres de contenedores en cada punto de entrada, incluidos los alias derivados de imágenes y los nombres leídos de archivos.
### Clasificación del invitado
- Detecta un invitado especializado mediante un centinela que debe ser un archivo, no solo una ruta existente; las sesiones simultáneas pueden materializar como directorios los destinos de los montajes.
- Asigna a los invitados especializados sus propios valores base de directorio personal, ruta, prefijo y directorio temporal.
- Nunca montes los directorios privados ni el prefijo de instalación de la aplicación anfitriona sobre un invitado que proporcione los suyos.
- Desactiva para ese tipo de invitado la conversión de enlaces incompatible y las opciones que cambian la identidad.
- Aplica los montajes opcionales del sistema anfitrión únicamente fuera de los modos aislado y mínimo.
- Rechaza los invitados especializados de arquitectura cruzada cuando un prefijo compartido permita que los binarios del anfitrión oculten los binarios del invitado.
## Dirigir bien los comandos y proteger las escrituras con bloqueos y archivos temporales
El análisis de comandos y la propiedad de los bloqueos deben conservar su corrección durante interrupciones, reentradas, reemplazos de procesos, ejecuciones separadas y actividad simultánea de la caché.
### Flujo de la CLI
1. Dirige las señales secundarias de salida a la ruta normal de interrupción para que el progreso y los archivos parciales se limpien de forma coherente.
2. Advierte sobre la ejecución con privilegios elevados sin convertir la advertencia en un error fatal y rechaza la invocación anidada del runtime de contenedores.
3. Comprueba el runtime solo para los comandos que lo necesiten; permite que los comandos de inspección, procesos y operaciones exclusivas de imágenes definan condiciones más específicas.
4. Intercepta la ayuda del comando antes de validar los argumentos posicionales y rechaza los comandos desconocidos antes del análisis general.
5. Conserva los tokens posteriores al delimitador literal de opciones en los comandos que inicien un programa interno.
6. Exige los argumentos obligatorios de forma centralizada, excepto cuando el modo de entrada determine intencionadamente los requisitos.
7. Aplica el modo silencioso global antes del despacho, pero conserva los significados específicos de cada comando y muestra siempre los errores y las advertencias.
### Bloqueos y atomicidad
- Usa bloqueos compartidos para las sesiones de lectura y las copias de seguridad, y bloqueos exclusivos para instalar, eliminar, renombrar, restablecer, restaurar y escribir en destinos.
- Adquiere varios bloqueos de contenedores en el orden resultante de ordenar sus rutas.
- Asocia los bloqueos de compilación a la imagen de salida y la arquitectura, y protege los índices de caché compartidos con su propio bloqueo.
- Permite la reentrada de los bloqueos exclusivos en comandos que llamen a otro comando modificador sobre el mismo contenedor.
- Deja que los bloqueos de sesión sobrevivan al reemplazo de procesos y, cuando un descendiente separado herede su propiedad, desvincula su gestión del proceso en vez de liberarlos.
- Si hay un conflicto de bloqueo, falla de inmediato e informa de quién lo mantiene cuando sea posible identificarlo.
- Todo escritor de caché y centinelas debe crear un archivo temporal, efectuar después un reemplazo atómico y limpiar ante cualquier excepción.
## Verificar las capas de imagen descargadas y proteger las credenciales del registro
Trata las referencias del registro, la autenticación, las redirecciones, los resúmenes, las capas y los miembros de archivos como hostiles hasta que se validen.
### Descarga y caché
- Prefiere una caché completa y verificada para el uso sin conexión; si solo faltan capas, descarga únicamente esas capas.
- Calcula por streaming el hash de cada capa descargada y compara su resumen antes de promoverla.
- Valida la sintaxis del resumen antes de convertirlo en una ruta del sistema de archivos, para impedir que referencias manipuladas escapen de la raíz de la caché.
- Rechaza los formatos de compresión que la implementación de archivos no pueda decodificar de forma segura.
- Implementa whiteouts opacos y por entrada, filtra los destinos de enlaces físicos y rechaza el recorrido de rutas en los nombres de miembros.
### Autenticación y envío
- Exige un formato explícito de nombre de usuario y contraseña antes de reenviar credenciales Basic a un servicio de tokens.
- Elimina las cabeceras de autorización en las redirecciones entre anfitriones distintos.
- Limita los tokens obtenidos a las acciones de descarga o envío solicitadas.
- Antes del envío, convierte la configuración almacenada a su forma canónica y verifica su resumen con el manifiesto.
- Comprueba los blobs remotos y carga únicamente el contenido que falte.
- Mantén fuera del alcance los modos de carga y los índices de múltiples arquitecturas no compatibles, en vez de aproximarlos.
- Presenta los fallos de autorización como errores de permisos sin exponer las credenciales.
## Informar la arquitectura del invitado y crear desde cero el entorno del proceso hijo
Los informes de arquitectura y los entornos de procesos hijos deben describir al invitado, sin heredar por accidente al anfitrión.
### Arquitectura
- Detecta la arquitectura de un invitado instalado a partir de las cabeceras binarias de ejecutables conocidos.
- Normaliza mediante una única correspondencia los nombres de arquitectura nativos, del registro y con prefijo de plataforma.
- Selecciona un emulador solo cuando la ejecución nativa no esté disponible y monta únicamente las rutas del sistema que requiera su cargador.
- Informa de la arquitectura del invitado y de la identidad del kernel emulado, en vez de copiar el valor del anfitrión.
### Entorno del proceso hijo
- Construye el entorno del proceso hijo a partir de un mapa vacío y pásalo directamente al reemplazo del proceso.
- Aplica la precedencia de forma deliberada: valores base, variables de imagen filtradas, variables del anfitrión permitidas, sobrescrituras del usuario, variables de identidad y, por último, variables del terminal.
- Aplica las variables de imagen y de usuario en todos los modos, pero limita las variables del anfitrión móvil al modo ordinario no aislado.
- En el modo mínimo, omite la ruta base, las variables de integración con el anfitrión y la identidad del usuario, salvo que se exijan explícitamente.
- Valida los nombres de las variables antes de escribir un perfil de inicio de sesión y entrecomilla sus valores de forma segura.
- Excluye de los perfiles persistentes las variables por sesión, internas del runtime, del cargador y de identidad.
- Elimina las variables de precarga del cargador antes de la ejecución y mantén estables los directorios compartidos de compatibilidad durante las sesiones simultáneas.
## Ejecutar contenedores en segundo plano y detener todo su árbol de procesos
Las operaciones de ejecución, separación, terminación y compilación deben conservar el comportamiento del manifiesto, la duración de los bloqueos, la portabilidad y la propiedad de los procesos.
### Ejecución y separación
- Combina el punto de entrada y los valores de comando de la imagen según la semántica de las imágenes de contenedor.
- Respeta una sustitución explícita del directorio de trabajo y, en caso contrario, usa la configuración de la imagen o la raíz del sistema de archivos.
- Resuelve el modo de vista previa del comando antes de cualquier rama de separación.
- Separa la ejecución con una doble bifurcación y una nueva sesión, redirige los flujos estándar y registra el proceso final del runtime en el proceso nieto.
- Comunica el identificador del proceso final al primer plano y deja que el descendiente separado mantenga el bloqueo heredado del contenedor.
### Terminación y compilaciones seguras
- Resuelve los destinos de terminación únicamente a partir del registro de sesiones activas.
- Termina el árbol completo de descendientes, no solo el proceso raíz del runtime.
- Construye un mapa de procesos padre resistente a ciclos, nunca envíes señales al proceso actual ni a identificadores de procesos críticos del sistema y verifica el ejecutable raíz antes de recorrerlo.
- Usa de forma predeterminada una señal de terminación gradual y permite una sustitución explícita por nombre o número.
- Analiza las etapas de compilación y los argumentos globales antes de la ejecución, valida pronto los destinos y despacha las operaciones de metadatos, ejecución, copia y adición mediante controladores específicos.
- Ejecuta los pasos de compilación de forma aislada y no interactiva, salvo que un here-document proporcione la entrada.
- Asocia las entradas de la caché de compilación al estado padre, la instrucción y la entrada adicional pertinente; bloquea las actualizaciones del índice de caché.
- Excluye los metadatos de compatibilidad del runtime de las instantáneas portátiles de capas, pero conserva el contenido de los archivos referenciados.
## Hacer copias y restaurar contenedores rechazando entradas de archivo peligrosas
Los archivos y la salida del terminal atraviesan límites de confianza y no deben corromper el estado del contenedor ni los avisos interactivos.
### Copia de seguridad y restauración
- Almacena cada contenedor bajo una única raíz de archivo que contenga metadatos opcionales y el árbol del sistema de archivos.
- Haz accesibles para la copia de seguridad los subárboles no legibles, filtra los dispositivos y los extremos de comunicación y normaliza los metadatos de propiedad.
- Rechaza la salida de archivos binarios a un terminal interactivo, salvo que se proporcione un destino de salida explícito.
- Detecta la compresión a partir de los datos del archivo y de los formatos estándar, incluida la entrada transmitida.
- Vuelve a enraizar los diseños de archivo antiguos en la estructura actual del contenedor.
- Rechaza los miembros vacíos, del directorio actual, del directorio padre o con nombres de contenedor no válidos.
- Adquiere el bloqueo del destino y borra un sistema de archivos existente solo cuando el primer miembro válido para ese contenedor esté listo para restaurarse.
### Integración del terminal y los comandos
- Suprime las escrituras informativas del terminal mientras una solicitud hermana de contraseña o de pantalla completa controle el eco o el modo canónico del terminal.
- Mantén el contenido de la ayuda como datos y represéntalo de forma adaptable dentro de los límites de anchura documentados.
- Registra cada comando nuevo en el despacho, los metadatos de análisis, los argumentos obligatorios, los datos de ayuda y los mapas de alias.
- Conserva la cabecera de licencia del paquete y las convenciones de nombres en cada archivo fuente nuevo.
