


Añade módulos a un servicio de red modular sin romper sus límites
Úsala cuando una IA cambie o amplíe un servicio de red hecho de módulos. Une los módulos solo por interfaces compartidas, usa la compilación y las pruebas del repositorio, devuelve errores seguros para el cliente y no comparte estado entre solicitudes.
Para usar estas reglas de IA
## Conecta los módulos por interfaces compartidas, no por sus detalles internos
- Trata el sistema de módulos como el límite central de extensión. La autenticación, el almacenamiento, la validación, la transformación, el enrutamiento y los extremos de protocolo deben implementar interfaces compartidas del framework en lugar de invocar directamente los detalles internos de otros componentes.
- Mantén las interfaces estables, las primitivas de configuración, el manejo de direcciones, los tipos de error y los contratos de registro en una capa reutilizable del framework. Coloca las implementaciones concretas en paquetes internos organizados por función.
- Mantén ligero el punto de entrada del ejecutable. Debe cargar el paquete del servicio, garantizar que los módulos incorporados estén registrados e iniciar la secuencia de arranque.
- Conecta los módulos de nivel superior mediante la configuración y un registro con inicialización diferida. Encauza cada solicitud o mensaje por una canalización explícita de validadores, modificadores y destinos seleccionados según reglas de coincidencia.
- Evita las dependencias circulares haciendo que las implementaciones dependan de interfaces estables y no de implementaciones hermanas.
## Compila con el envoltorio de compilación del repositorio y ejecuta las pruebas afectadas
- Usa el envoltorio de compilación del repositorio como ruta canónica, incluidas las etiquetas de compilación u opciones de funcionalidad que admita. No lo sustituyas por un comando de compilador improvisado que omita metadatos de versión o indicadores obligatorios.
- Ejecuta la suite completa de pruebas unitarias para los cambios transversales. Cuando el comportamiento cruce límites de protocolo, almacenamiento o entrega, ejecuta el entorno de pruebas de integración desde el directorio de trabajo documentado.
- Conserva la inyección de versión realizada por el sistema de compilación. Si el entorno de ejecución utiliza una dependencia respaldada por código nativo, comprueba que el compilador y las bibliotecas nativas necesarios estén disponibles antes de diagnosticar el código fuente.
- Durante la iteración, da preferencia a una prueba centrada en el paquete afectado y, antes de terminar, ejecuta la ruta de integración directamente afectada. Informa de cualquier prueba omitida y del motivo ambiental concreto.
## Añade un módulo nuevo en la carpeta de su función y regístralo
1. Coloca la implementación en el directorio interno correspondiente a su función, como validación, destino, autenticación, almacenamiento, consulta, transformación o manejo de extremos.
2. Implementa tanto la interfaz común del ciclo de vida de los módulos como la interfaz específica de la función. Mantén los contratos de cada función en la capa estable del framework.
3. Registra la fábrica durante la inicialización del paquete mediante la convención establecida de nombres con prefijo de función.
4. Incorpora la implementación al ensamblado de módulos incluidos del servicio mediante la importación de registro o el manifiesto designado por el repositorio. Si el patrón establecido realiza el registro mediante efectos secundarios, el código de registro debe limitarse a ese efecto secundario.
5. Parte de un esqueleto o auxiliar existente para esa función cuando esté disponible. Usa el auxiliar sin estado solo si el módulo no conserva realmente ningún estado mutable entre solicitudes.
6. Añade pruebas específicas para la configuración, el registro, el comportamiento satisfactorio, los fallos temporales y la correspondencia de errores en los límites.
## Devuelve errores que indiquen si se puede reintentar y oculten los detalles internos
- Usa el paquete de errores estructurados del framework para los errores que atraviesen los límites entre módulos. No devuelvas un error con formato pero sin clasificar cuando quien realiza la llamada necesite el estado del protocolo, el comportamiento de reintento o la atribución del módulo.
- Incluye el código de estado externo, el estado ampliado o subtipo cuando se admita, un mensaje genérico seguro para el cliente y el nombre de la comprobación o el destino responsable.
- Marca explícitamente los fallos transitorios para que los distribuidores puedan distinguir las condiciones reintentables de los rechazos permanentes.
- Evita que los mensajes visibles para el cliente contengan la configuración del servidor, rutas internas, credenciales o detalles de implementación.
- Añade campos de diagnóstico estructurados a los fallos internos inesperados y regístralos mediante el registrador del framework. Conserva la causa original sin exponerla a clientes remotos.
## No compartas estado entre solicitudes y recupera los panics en tareas en segundo plano
- Nunca compartas entre solicitudes o mensajes un estado mutable perteneciente a una solicitud. Supón que las comprobaciones y transformaciones se ejecutan de forma concurrente, salvo que el contrato del framework las serialice explícitamente.
- Toda goroutine o tarea en segundo plano que se inicie debe recuperarse de los pánicos en su límite, registrar el fallo e impedir que una tarea bloquee todo el servicio.
- Normaliza los identificadores externos antes de compararlos o almacenarlos. Para los identificadores similares a dominios, aplica la representación Unicode, la forma de normalización y el plegado de mayúsculas y minúsculas exigidos por el framework, en lugar de inventar una limpieza local.
- Analiza la configuración de los módulos mediante el mapa de configuración compartido y el método del ciclo de vida. Rechaza los ajustes desconocidos o no válidos de forma coherente con los módulos existentes.
- Usa el registrador del framework en lugar del registrador global del lenguaje. Cuando el framework los proporcione, crea registradores con ámbito de operación o de entrega para que los eventos relacionados conserven su contexto.
- Antes de integrar los cambios, verifica mediante pruebas el registro, el análisis de la configuración, la ejecución concurrente, la normalización, los fallos estructurados y los registros en el límite más estrecho que demuestre cada comportamiento.
