# app_id: deploy_server
# lang: go (CGO, sin fts5)
# stack: net/http + go-sqlite3 (CGO) + multi-strategy deployer (systemd/systemd-remote/docker-compose)
# deteccion automatica fn-recopilador 2026-05-19, issue 0121a
#
# Notas de deteccion:
#   - go.mod usa github.com/mattn/go-sqlite3 (CGO=1) pero NO usa fts5 tags
#   - sin *_test.go en el directorio -> check tests OMITIDO
#   - server.go confirma: --port flag con default 9090, GET /api/health handler
#   - puerto e2e: 9190 (+100 sobre puerto productivo 9090)
#   - operations.db presente con tablas propias (deploy_targets, deploy_logs) -> ops_audit incluido
#   - BD e2e en /tmp/ para idempotencia; binario en /tmp/ para no contaminar el directorio de la app

e2e_checks:
  # build: compila el binario con CGO habilitado. Sin -tags fts5 (no lo usa el modulo).
  # Valida que el modulo go-sqlite3 linkea correctamente en el entorno local.
  - id: build
    cmd: "cd /home/lucas/fn_registry/apps/deploy_server && CGO_ENABLED=1 go build -o /tmp/deploy_server_e2e_bin ."
    timeout_s: 180

  # cli_help: verifica que el binario arranca y responde sin crashear ni pedir args obligatorios.
  # Captura el caso de init() con side effects o missing assets.
  - id: cli_help
    cmd: "/tmp/deploy_server_e2e_bin help"
    expect_exit: 0
    expect_stdout_contains: "deploy_server"
    timeout_s: 10

  # migrations: arranca el servidor con la BD de prueba y lo cierra inmediatamente.
  # El servidor abre la BD al arrancar y aplica migraciones automaticamente (sqlite_apply_migrations).
  # Usamos --port 0 no esta soportado (flag es int sin port-0), asi que usamos puerto alto efimero.
  # Tras el health check, el proceso se mata automaticamente por fn-analizador.
  - id: smoke
    cmd: "/tmp/deploy_server_e2e_bin serve --port 9190 --db /tmp/deploy_server_e2e.db &"
    health: "http://127.0.0.1:9190/api/health"
    timeout_s: 15

  # ops_audit: fn-recopilador audita operations.db de la app.
  # Verifica integridad referencial, schema completo, ausencia de datos corruptos.
  # La BD tiene tablas propias (deploy_targets, deploy_logs) + tablas del ciclo reactivo.
  - id: ops_audit
    ref: "fn-recopilador:apps/deploy_server"
    severity: warning
