UStackUStack
Rosentic icon

Rosentic

Rosentic revisa cada PR frente a todas las ramas activas antes de fusionar en tu CI para detectar conflictos de compatibilidad como schema drift y desajustes.

Rosentic

¿Qué es Rosentic?

Rosentic es una verificación determinista de CI que escanea un pull request (PR) contra ramas activas para encontrar conflictos de compatibilidad antes de la fusión. Se centra en casos que rompen el comportamiento entre ramas, incluyendo schema drift, rupturas de API y desajustes de firmas.

El flujo de trabajo se centra en la verificación automatizada: para un evento de PR, Rosentic se ejecuta en tu CI, produce un desglose de cambios rompientes y reporta ubicaciones específicas (rutas de archivos y números de línea) asociadas con los conflictos detectados.

Características clave

  • Escanea PRs contra cada rama activa antes de la fusión para captar incompatibilidades entre ramas, no solo problemas dentro del diff del PR.
  • Ejecución determinista para resultados consistentes en las ejecuciones de CI.
  • Se ejecuta en tu CI/runner (“el código nunca sale de tu runner”), manteniendo el análisis en tu entorno de compilación existente.
  • Cobertura de idiomas en 12 lenguajes, según el alcance de escaneo declarado en el sitio.
  • Proporciona desgloses a nivel de línea (rutas de archivos y números de línea) para conflictos, para que los equipos aborden los sitios de llamada e interfaces exactos involucrados.
  • Usa fixtures de regresión para proteger cambios en el motor subyacente.

Cómo usar Rosentic

  1. Agrega el workflow de GitHub Actions de Rosentic a tu repositorio (el sitio proporciona un ejemplo en .github/workflows/rosentic.yml).
  2. Configura el workflow para que se ejecute en eventos pull_request dirigidos a ramas (el ejemplo muestra branches: [main]).
  3. Asegúrate de que tu workflow haga checkout del repositorio con fetch-depth: 0 (como en el ejemplo) para que Rosentic pueda inspeccionar lo necesario para comparaciones de ramas.
  4. El workflow ejecuta Rosentic/rosentic-action@v1. Después de que termine el job, revisa los conflictos “Breaking” reportados por Rosentic y las ubicaciones a nivel de línea en la salida.

Para ejecutarlo en un workflow basado en agentes, el sitio también sugiere instalar Rosentic en el repo y luego que tu agente de codificación siga esa instrucción.

Casos de uso

  • Prevenir fallos en tiempo de ejecución o de integración antes de la fusión: Un PR cambia la firma de una función (p. ej., agrega argumentos requeridos), y Rosentic identifica llamadores restantes en otras ramas que aún invocan la firma antigua.
  • Detectar schema drift entre ramas: Cuando las actualizaciones de código afectan definiciones de esquemas (p. ej., cambia un resolver o forma de contrato), Rosentic reporta “Schema drift” y señala archivos/líneas afectados.
  • Captar cambios en tipos de retorno de API o contratos: Si cambia el tipo de retorno de una función (por ejemplo, de Promise<void> a una forma Promise<Result> diferente), Rosentic lista llamadores que podrían no manejar la nueva estructura de resultado.
  • Proteger contra interfaces no coincidentes entre código backend y frontend: Cuando un PR actualiza interfaces compartidas, Rosentic puede marcar conflictos de estilo “signature mismatch” donde sitios de llamada en otras ramas no coinciden.
  • Estandarizar verificaciones de compatibilidad para múltiples ramas de agentes: Si tu equipo usa múltiples ramas y flujos de trabajo automatizados, Rosentic verifica la compatibilidad entre ramas para que el PR sea menos propenso a conflictos con desarrollo paralelo.

Preguntas frecuentes

¿Rosentic requiere una clave API o registro?
El sitio indica: “No signup” y “No API key.”

¿Dónde se ejecuta Rosentic?
El sitio indica que se ejecuta en tu CI/runner, y que el código “never [leaves] your runner.”

¿Cuándo verifica Rosentic los conflictos?
El ejemplo de workflow proporcionado se ejecuta en eventos pull_request (con branches: [main] en el ejemplo), y Rosentic verifica el PR contra ramas activas antes de la fusión.

¿Qué tipos de conflictos reporta Rosentic?
Los ejemplos de la página mencionan categorías como schema drift, ruptura de API y signature mismatch, con un desglose de cambios rompientes específicos y ubicaciones afectadas.

¿Qué información obtengo de Rosentic?
El sitio indica que los resultados incluyen rutas de archivos y números de línea, y proporciona un “full breakdown” y conteos de conflictos encontrados en el PR.

Alternativas

  • Suites de pruebas automatizadas en CI: En lugar de comparar proactivamente un PR contra otras ramas, las pruebas unitarias/de integración validan el comportamiento en tiempo de ejecución. Esto difiere porque las pruebas verifican escenarios específicos en lugar de enumerar conflictos de interfaz entre ramas.
  • Comprobación estática de tipos y linting (específicos del lenguaje): Los verificadores de tipos y linters pueden detectar desajustes de firmas y tipos dentro de lo que el compilador puede analizar, pero pueden no identificar problemas de compatibilidad que surgen de cambios relativos a otras ramas activas.
  • Detección convencional de conflictos de fusión basada en Git: Git puede mostrar conflictos textuales durante la fusión, pero no verifica inherentemente la compatibilidad semántica como schema drift o desajustes de contratos de API entre ramas.
  • Herramientas de análisis de impacto de cambios para CI: Las herramientas en la categoría de análisis de dependencias/impacto se centran en cómo los cambios afectan a los consumidores downstream; en comparación con Rosentic, pueden depender más de gráficos de dependencias o cobertura en lugar de verificación explícita entre ramas.