chore: auto-commit (97 archivos)

- .claude/CLAUDE.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- bash/functions/infra/build_cpp_windows.sh
- cpp/CMakeLists.txt
- cpp/PATTERNS.md
- cpp/framework/app_base.cpp
- cpp/framework/app_base.h
- dev/issues/README.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-09 18:11:24 +02:00
parent 852322a708
commit 750b7abcd5
99 changed files with 7879 additions and 73 deletions
@@ -0,0 +1,48 @@
---
name: e2e_run_cpp_windows
lang: bash
domain: infra
description: "Cross-compila una app C++ del registry para Windows con mingw-w64, deploy al Desktop\\apps de Windows (matando instancia previa con taskkill.exe), lanza el .exe nativamente desde WSL y devuelve stdout + exit code. Pensado para tests headless tipo altsnap_jitter_test."
tags: [windows, e2e, cross-compile, test, mingw]
purity: impure
kind: function
signature: "e2e_run_cpp_windows(target string, --no-build, --no-deploy) int"
params:
- name: target
desc: "Nombre del target CMake del registry (ej. altsnap_jitter_test)"
- name: --no-build
desc: "Saltar cross-compile (usa el .exe ya construido en cpp/build/windows/)"
- name: --no-deploy
desc: "Saltar copia a Desktop\\apps (asume que ya esta deployed)"
output: "Exit code del .exe (0 = pass, no-cero = fail). stdout/stderr del .exe se imprimen tal cual."
uses_functions:
- build_cpp_windows_bash_infra
uses_types: []
returns: ""
returns_optional: false
error_type: "exit_code_bash_core"
imports: []
example: |
source bash/functions/infra/e2e_run_cpp_windows.sh
e2e_run_cpp_windows altsnap_jitter_test
# cross-compila, taskkill previo, copia a /mnt/c/Users/lucas/Desktop/apps/altsnap_jitter_test/
# ejecuta y devuelve exit code
tested: false
file_path: "bash/functions/infra/e2e_run_cpp_windows.sh"
---
Lanzador para tests e2e de apps C++ en Windows desde WSL. Workflow:
1. **Cross-compile** via `build_cpp_windows_bash_infra` (skipable con `--no-build`).
2. **Localiza** `${target}.exe` bajo `cpp/build/windows/apps/<target>/` o el arbol completo de build.
3. **Mata instancia previa** con `taskkill.exe /IM <target>.exe /F` (evita `Permission denied` al copiar el exe).
4. **Deploy** a `/mnt/c/Users/lucas/Desktop/apps/<target>/` con sidecars (`assets/`, `runtime/`, `enrichers/`, `*.dll`).
5. **Run** nativamente desde WSL (`./target.exe` con cwd en deploy_dir, asi `local_files/` se crea ahi).
6. **Exit code** del .exe propaga al return de la funcion.
Variables de entorno:
- `FN_REGISTRY_ROOT` — raiz del registry (auto-detectado).
- `BUILD_WIN` — directorio de build cross (default `cpp/build/windows`).
- `WIN_DESKTOP_APPS` — root de deploy en Windows (default `/mnt/c/Users/lucas/Desktop/apps`).
Requiere WSL2 con interop a Windows (cmd.exe, taskkill.exe en PATH) y mingw-w64.