Files
outiline-mcp/openspec/changes/split-main-into-files/specs/code-structure/spec.md
T
Carlos Sandoval 55eff5df89 feat: agregar auto update
spec: separar responsabilidades
feat: agregra pipeline de construccion en gitea
2026-09-02 20:01:35 +00:00

1.9 KiB

ADDED Requirements

Requirement: Organización del código fuente por archivos

El código fuente del proyecto SHALL estar distribuido en múltiples archivos dentro del paquete único main, agrupando cada archivo una única responsabilidad: entrypoint (main.go), cliente HTTP de Outline (client.go), handlers de tools MCP (tools.go) y auto-update (updater.go).

Scenario: Distribución de archivos

  • WHEN se revisa la raíz del módulo outline-mcp
  • THEN existen los archivos main.go, client.go, tools.go y updater.go, todos declarando package main

Scenario: Contenido del entrypoint

  • WHEN se revisa main.go
  • THEN contiene únicamente la función main(), las variables de build inyectadas por -ldflags (Version, GiteaURL, RepoOwner, RepoName) y el registro de tools en el servidor MCP

Scenario: Aislamiento del auto-update

  • WHEN se revisa updater.go
  • THEN contiene giteaRelease, parseVersion, versionNewer y doUpdate, sin referencias al cliente de Outline ni a los handlers de tools MCP

Requirement: Refactor sin cambio de comportamiento

La distribución del código en archivos SHALL preservar íntegramente el comportamiento observable del servidor: nombres y esquemas de las tools MCP, manejo de errores de configuración, protocolo MCP y lógica de auto-update.

Scenario: El servidor funciona tras el refactor

  • WHEN se compila el binario resultante y se ejecuta el handshake MCP por stdio seguido de una petición tools/list
  • THEN el servidor responde correctamente y lista las mismas tools con los mismos esquemas que antes del refactor

Scenario: Sin cambios en dependencias ni pipeline

  • WHEN se compara el estado del repositorio antes y después del refactor
  • THEN go.mod, go.sum, .gitea/workflows/release.yml y el contrato de nombres de assets (outline-mcp_{GOOS}_{GOARCH}) permanecen inalterados