Files
outiline-mcp/openspec/changes/create-outline-mcp-server/specs/self-update/spec.md
T

2.6 KiB

Spec: self-update

ADDED Requirements

Requirement: Consulta de la última release de Gitea

El sistema SHALL consultar el endpoint /api/v1/repos/{owner}/{repo}/releases/latest de la instancia de Gitea configurada para obtener la última release disponible.

Scenario: Consulta exitosa de última release

  • WHEN se ejecuta la lógica de auto-actualización y la API de Gitea responde correctamente
  • THEN el sistema obtiene el tag de la release y la lista de assets publicados

Scenario: Gitea no accesible

  • WHEN la instancia de Gitea no es accesible o responde con error
  • THEN el sistema finaliza con un mensaje de error sin modificar el binario actual

Requirement: Comparación de versiones

El sistema SHALL comparar la versión actual del binario (Version inyectada vía ldflags) con el tag de la última release de Gitea, y MUST omitir la actualización si la versión actual es igual o superior.

Scenario: Versión actualizada disponible

  • WHEN el tag de Gitea indica una versión superior a la versión actual
  • THEN el sistema procede a descargar el asset correspondiente

Scenario: Versión ya actualizada

  • WHEN la versión actual es igual o superior al tag de la última release
  • THEN el sistema informa que no hay actualizaciones y no realiza cambios en el binario

Requirement: Descarga del asset compatible

El sistema SHALL seleccionar el asset de la release cuyo nombre corresponda al sistema operativo y arquitectura actuales (runtime.GOOS, runtime.GOARCH), y MUST descargarlo antes de aplicar la actualización.

Scenario: Asset compatible disponible

  • WHEN la release contiene un asset que coincide con el GOOS/GOARCH actuales
  • THEN el sistema descarga dicho asset para aplicar la actualización

Scenario: Asset compatible no disponible

  • WHEN la release no contiene un asset para la plataforma actual
  • THEN el sistema finaliza con un error indicando que no existe binario para la plataforma

Requirement: Aplicación del binario descargado

El sistema SHALL aplicar el binario descargado utilizando selfupdate.Apply (github.com/minio/selfupdate), reemplazando el binario en ejecución.

Scenario: Actualización aplicada correctamente

  • WHEN el asset descargado es un binario válido
  • THEN el sistema reemplaza el binario actual mediante selfupdate.Apply e informa el éxito de la operación

Scenario: Asset corrupto o inválido

  • WHEN el asset descargado no es un binario válido
  • THEN el sistema aborta la actualización e informa el error sin dejar el binario en estado inconsistente