# e2e_checks proposal — app_hub_launcher
# app_id:   app_hub_launcher
# lang:     cpp
# stack:    imgui hub — lista y lanza apps C++ Windows desde Desktop/apps/
# date:     2026-05-19
# issue:    0121a wave 3
# author:   fn-recopilador (design-e2e)
#
# Diagnostico:
#   lang=cpp, framework=imgui, entry_point=main.cpp
#   NO tiene tests/ propios, NO tiene operations.db
#   Binario en: cpp/build/windows/apps/app_hub_launcher/app_hub_launcher.exe
#   Target CMake: app_hub_launcher  (registrado via add_subdirectory en cpp/CMakeLists.txt:497)
#   Runtime deps en local_files/:
#     - local_files/hub_manifest.tsv    (regenerable con refresh_app_hub)
#     - local_files/icons/*.png         (regenerable con refresh_app_hub)
#   Sin --self-test implementado en el binario (no aplica el check de smoke headless)
#   Sin health endpoint HTTP (app GUI pura, no service)
#   NO tag 'service' -> sin smoke check de puerto
#   NO operations.db -> sin ops_audit
#
# Justificacion de cada check:
#   build          -> gate primario: garantiza que el target compila sin errores
#   binary_exists  -> verifica que el .exe existe en la ruta de deploy Windows esperada
#   appicon_exists -> appicon.ico en la fuente es requerido por add_imgui_app para
#                     embeber el recurso RC en el .exe; si falta el icono no compila en WIN32
#   manifest_present -> hub_manifest.tsv en local_files/ es la fuente de descripcion +
#                       accent de cada tarjeta; su ausencia degrada el hub (cards grises sin
#                       descripcion) pero NO crashea; severity: warning porque es regenerable
#   icons_cache_present -> local_files/icons/ con al menos 1 PNG indica que refresh_app_hub
#                          se ha corrido; su ausencia es operacional, no de build; warning

e2e_checks:
  # Check 1: compilacion del target CMake
  # Por que: gate esencial — si el target no compila, nada mas tiene sentido.
  # Corre sobre el build de Windows via mingw toolchain (cross-compile desde WSL).
  - id: build
    cmd: "cd /home/lucas/fn_registry/cpp && cmake --build build/windows --target app_hub_launcher -j"
    timeout_s: 300
    severity: critical

  # Check 2: binario Windows presente en la ruta de deploy
  # Por que: el pipeline redeploy_cpp_app_windows copia el .exe al Desktop.
  # Este check verifica que el binario existe y es un archivo regular.
  # Si el build cross no produjo el .exe o el cp falló, este check lo detecta.
  - id: binary_exists
    cmd: "test -f /home/lucas/fn_registry/cpp/build/windows/apps/app_hub_launcher/app_hub_launcher.exe"
    timeout_s: 5
    severity: critical

  # Check 3: appicon.ico presente en el directorio fuente
  # Por que: add_imgui_app auto-genera el .rc solo si appicon.ico existe en CMAKE_CURRENT_SOURCE_DIR.
  # Si se borra el ico, el .exe no tiene icono embebido (no falla el build, pero rompe el
  # contrato visual de la suite). El .ico es artefacto versionado en el sub-repo.
  - id: appicon_exists
    cmd: "test -f /home/lucas/fn_registry/apps/app_hub_launcher/appicon.ico"
    timeout_s: 5
    severity: critical

  # Check 4: hub_manifest.tsv presente en la ruta de deploy Windows
  # Por que: sin manifest, el hub arranca pero todas las tarjetas muestran nombre snake_case
  # y sin descripcion ni accent correcto. Degradacion funcional significativa pero no crash.
  # Regenerable con: ./fn run refresh_app_hub --no-restart
  # Path esperado tras deploy: Desktop/apps/app_hub_launcher/local_files/hub_manifest.tsv
  - id: manifest_present
    cmd: "test -f /mnt/c/Users/lucas/Desktop/apps/app_hub_launcher/local_files/hub_manifest.tsv"
    timeout_s: 5
    severity: warning

  # Check 5: cache de iconos PNG presente (al menos 1 archivo)
  # Por que: sin iconos PNG en local_files/icons/, las tarjetas del hub no muestran imagen
  # (degradacion visual). El directorio se crea/puebla con refresh_app_hub.
  # Regenerable con: ./fn run refresh_app_hub --no-restart
  # Se verifica que el directorio existe y tiene al menos 1 .png (no validamos cada app).
  - id: icons_cache_present
    cmd: "test -d /mnt/c/Users/lucas/Desktop/apps/app_hub_launcher/local_files/icons && ls /mnt/c/Users/lucas/Desktop/apps/app_hub_launcher/local_files/icons/*.png >/dev/null 2>&1"
    timeout_s: 5
    severity: warning

# Acciones sugeridas si los checks de warning fallan:
#   manifest_present / icons_cache_present:
#     ./fn run refresh_app_hub
#   o si el hub está cerrado:
#     ./fn run refresh_app_hub --no-restart
