chore: auto-commit (129 archivos)
- .claude/agents/fn-analizador/SKILL.md - .claude/agents/fn-constructor/SKILL.md - .claude/agents/fn-executor/SKILL.md - .claude/agents/fn-mejorador/SKILL.md - .claude/agents/fn-orquestador/SKILL.md - .claude/agents/fn-recopilador/SKILL.md - .claude/commands/app.md - .claude/commands/compile.md - .claude/commands/cpp-app.md - .claude/commands/create_functions.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -239,7 +239,7 @@ def extract_triples_spacy_es_v2(text: str, nlp: Any, resolve_pronouns: bool = Tr
|
||||
`.ipython/profile_default/startup/00_fn_registry.py` añade cada subdir de `python/functions/` al sys.path top-level. Como hay un `bigquery/datasets.py` en el registry, **shadows** el paquete `datasets` de HuggingFace que `transformers` necesita. Resultado: en cada notebook hay que aplicar un workaround:
|
||||
|
||||
```python
|
||||
_pf = '/home/lucas/fn_registry/python/functions'
|
||||
_pf = '$HOME/fn_registry/python/functions'
|
||||
sys.path = [p for p in sys.path if not p.startswith(_pf + '/')]
|
||||
if _pf not in sys.path: sys.path.insert(0, _pf)
|
||||
```
|
||||
|
||||
@@ -693,7 +693,7 @@ Eres `agent-home-wsl`, un agente operativo conectado al PC `home-wsl` del operad
|
||||
por que. El operador vera la respuesta en `#home-wsl` cuando el sudo agent termine.
|
||||
4. **Proyectos**: para crear un proyecto nuevo, prefiere `project.create` antes que componer
|
||||
`exec mkdir + fs.write + ...`. Es mas rapido y deja entrada en `memory.projects`.
|
||||
5. **Registry**: el operador mantiene un registry de funciones en /home/lucas/fn_registry. Si la tarea
|
||||
5. **Registry**: el operador mantiene un registry de funciones en $HOME/fn_registry. Si la tarea
|
||||
parece composicion de funciones (ETL, scraping, parsing), pregunta al operador si ya hay algo en el
|
||||
registry antes de codear desde cero. (No tienes herramienta para consultar el registry directamente;
|
||||
pidele al operador que ejecute `mcp__registry__fn_search` por ti).
|
||||
@@ -818,7 +818,7 @@ Flujo:
|
||||
3. Si operador → "delega":
|
||||
- `delegate_sudo task="registrar /home/lucas/projects/scraper-precios como app en fn_registry"`.
|
||||
4. sudo agent ejecuta:
|
||||
- `cd /home/lucas/fn_registry && ./fn run init_some_pipeline scraper-precios ...` (o similar — depende del scaffolder).
|
||||
- `cd $HOME/fn_registry && ./fn run init_some_pipeline scraper-precios ...` (o similar — depende del scaffolder).
|
||||
- Cada paso = approval individual o pre-approved si operator activo `!preapprove fn-* 10m`.
|
||||
|
||||
Esto evita que el user agent toque `fn_registry` directamente — el registry es del operador, no del agent. El agent solo orquesta cuando le piden.
|
||||
|
||||
@@ -21,7 +21,7 @@ tags: []
|
||||
|
||||
`jupyter_discover.py` reporta el campo `analysis` incorrecto. Con Jupyter corriendo desde `analysis/estudio_mercados/`, el discover devolvió `"analysis": "estudio_embeddings"`.
|
||||
|
||||
El proceso real tenía `--ServerApp.root_dir=/home/lucas/fn_registry/analysis/estudio_mercados` en su cmdline, pero el discover no lo parsea.
|
||||
El proceso real tenía `--ServerApp.root_dir=$HOME/fn_registry/analysis/estudio_mercados` en su cmdline, pero el discover no lo parsea.
|
||||
|
||||
## Solución propuesta
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ deferred -> Deferred
|
||||
|
||||
- Frontmatter mal formado (yaml invalid): card aparece con badge `parse-error` + tooltip detalle. NO crashea backend.
|
||||
- Cambios concurrentes: humano edita `.md` con vim mientras agente lo PATCHea via API. Usar lock file `.md.lock` corto + retry.
|
||||
- `fsnotify` no funciona bien en WSL para `/mnt/c/` paths. Backend corre en WSL, lee paths nativos (`/home/lucas/fn_registry/dev/...`). Verificar.
|
||||
- `fsnotify` no funciona bien en WSL para `/mnt/c/` paths. Backend corre en WSL, lee paths nativos (`$HOME/fn_registry/dev/...`). Verificar.
|
||||
- Issue / flow grandes (>500 lineas body): NO mandar full body en `/cards` (lento). Devolver solo frontmatter + primeras 5 lineas. Body completo via `/cards/<id>` on demand.
|
||||
- Cards sin `status` (frontmatter incompleto): default `pendiente`.
|
||||
- Reordenamiento manual: drag-and-drop en UI cambia status (cruzar columna) PERO no orden vertical persistente — no hay campo `order` en frontmatter. Decision: orden por `updated` desc dentro de cada columna.
|
||||
|
||||
@@ -55,7 +55,7 @@ e2e_checks:
|
||||
2. Lanzar `/autonomous-task 0120 --dry-run` para audit.
|
||||
3. Lanzar `/autonomous-task 0120 --max-iterations 5 --max-minutes 30`.
|
||||
4. Recoger output: `task_run_id`, branch `auto/0120-*`, log de iteraciones, proposals aplicadas/skipped, URL del PR draft.
|
||||
5. Verificar `git -C /home/lucas/fn_registry status --short` igual a baseline (regla 11 sandbox breach).
|
||||
5. Verificar `git -C $HOME/fn_registry status --short` igual a baseline (regla 11 sandbox breach).
|
||||
6. Post-mortem: si fallo en alguna iteracion, anotar en seccion `## Hallazgos` y refinar `fn-orquestador/SKILL.md` o `autonomous_loop.md` si corresponde.
|
||||
|
||||
## Acceptance
|
||||
@@ -64,7 +64,7 @@ e2e_checks:
|
||||
- [ ] `apps/chart_demo/app.md` contiene bloque `e2e_checks:` con al menos `build` + `binary_exists`.
|
||||
- [ ] `fn-analizador` corrida sobre `chart_demo` reporta `checks_pass=checks_total` (todo verde).
|
||||
- [ ] PR draft existe en Gitea con branch `auto/0120-*` apuntando a `master`.
|
||||
- [ ] `git -C /home/lucas/fn_registry status --short` antes/despues del piloto identico (excluyendo solo este `.md` cerrado).
|
||||
- [ ] `git -C $HOME/fn_registry status --short` antes/despues del piloto identico (excluyendo solo este `.md` cerrado).
|
||||
- [ ] Documento de post-mortem en `## Hallazgos` con: iteraciones totales, tiempo total, proposals creadas, decisiones del orquestador.
|
||||
|
||||
## DoD
|
||||
|
||||
@@ -69,7 +69,7 @@ Acciones tomadas:
|
||||
- Clonado `apps/pipeline_launcher` desde Gitea en aurgi-pc para la investigacion; `pc_locations` pasa de `missing` a `active` tras `fn sync` futuro.
|
||||
|
||||
Pendiente fuera de scope:
|
||||
- `apps/pipeline_launcher/go.mod` tiene `replace fn-registry => /home/lucas/fn_registry` hardcoded — el build solo funciona en home-wsl. Issue aparte si se quiere cross-PC build.
|
||||
- `apps/pipeline_launcher/go.mod` tiene `replace fn-registry => $HOME/fn_registry` hardcoded — el build solo funciona en home-wsl. Issue aparte si se quiere cross-PC build.
|
||||
- `fn_operations/project_template/operations.db` tiene migraciones aplicadas hasta v5, falta v6. Stale template — issue aparte.
|
||||
|
||||
Acceptance:
|
||||
|
||||
@@ -65,9 +65,9 @@ e2e_checks:
|
||||
# reconfiguracion).
|
||||
- id: cmake_configure_linux
|
||||
cmd: >
|
||||
test -f /home/lucas/fn_registry/cpp/build/linux/build.ninja ||
|
||||
cmake -S /home/lucas/fn_registry/cpp
|
||||
-B /home/lucas/fn_registry/cpp/build/linux
|
||||
test -f $HOME/fn_registry/cpp/build/linux/build.ninja ||
|
||||
cmake -S $HOME/fn_registry/cpp
|
||||
-B $HOME/fn_registry/cpp/build/linux
|
||||
-DFN_BUILD_TESTS=OFF
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
timeout_s: 60
|
||||
@@ -77,13 +77,13 @@ e2e_checks:
|
||||
# y el linkado con fn_framework (app_base.cpp, GLFW, OpenGL) tiene exito.
|
||||
# Este es el check de compilacion base que corre en cualquier entorno.
|
||||
- id: build_linux
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build/linux --target altsnap_jitter_test -j4"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build/linux --target altsnap_jitter_test -j4"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
|
||||
# Verifica que el binario Linux existe tras el build.
|
||||
- id: binary_exists_linux
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/linux/apps/altsnap_jitter_test/altsnap_jitter_test"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/linux/apps/altsnap_jitter_test/altsnap_jitter_test"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -95,7 +95,7 @@ e2e_checks:
|
||||
cmd: >
|
||||
xvfb-run -a -s "-screen 0 1280x800x24"
|
||||
env LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=llvmpipe
|
||||
/home/lucas/fn_registry/cpp/build/linux/apps/altsnap_jitter_test/altsnap_jitter_test
|
||||
$HOME/fn_registry/cpp/build/linux/apps/altsnap_jitter_test/altsnap_jitter_test
|
||||
timeout_s: 60
|
||||
severity: critical
|
||||
|
||||
@@ -103,7 +103,7 @@ e2e_checks:
|
||||
# add_imgui_app genera altsnap_jitter_test_appicon.rc; si el .ico falta el build
|
||||
# mingw pasa pero el .exe Windows queda sin icono embebido.
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/altsnap_jitter_test/appicon.ico"
|
||||
cmd: "test -f $HOME/fn_registry/apps/altsnap_jitter_test/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
@@ -124,9 +124,9 @@ e2e_checks:
|
||||
# real bajo Win32 que xvfb no puede cubrir.
|
||||
- id: windows_run
|
||||
cmd: >
|
||||
FN_REGISTRY_ROOT=/home/lucas/fn_registry
|
||||
FN_REGISTRY_ROOT=$HOME/fn_registry
|
||||
bash -c '
|
||||
source /home/lucas/fn_registry/bash/functions/infra/e2e_run_cpp_windows.sh
|
||||
source $HOME/fn_registry/bash/functions/infra/e2e_run_cpp_windows.sh
|
||||
e2e_run_cpp_windows altsnap_jitter_test
|
||||
'
|
||||
timeout_s: 300
|
||||
|
||||
@@ -35,7 +35,7 @@ e2e_checks:
|
||||
# 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"
|
||||
cmd: "cd $HOME/fn_registry/cpp && cmake --build build/windows --target app_hub_launcher -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
|
||||
@@ -44,7 +44,7 @@ e2e_checks:
|
||||
# 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"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/windows/apps/app_hub_launcher/app_hub_launcher.exe"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -53,7 +53,7 @@ e2e_checks:
|
||||
# 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"
|
||||
cmd: "test -f $HOME/fn_registry/apps/app_hub_launcher/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ e2e_checks:
|
||||
# 2026-05-16 en app.md). Arreglar antes de promover a critical.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: build_frontend
|
||||
cmd: "cd /home/lucas/fn_registry/apps/dag_engine/frontend && pnpm install --frozen-lockfile && pnpm build"
|
||||
cmd: "cd $HOME/fn_registry/apps/dag_engine/frontend && pnpm install --frozen-lockfile && pnpm build"
|
||||
timeout_s: 180
|
||||
severity: warning
|
||||
# NOTA: severity warning porque pnpm build falla por API drift conocido.
|
||||
@@ -51,7 +51,7 @@ e2e_checks:
|
||||
# de trabajo (idempotente, no afecta al binario productivo).
|
||||
# -----------------------------------------------------------------------
|
||||
- id: build_backend
|
||||
cmd: "cd /home/lucas/fn_registry/apps/dag_engine && CGO_ENABLED=1 go build -tags fts5 -o /tmp/dag_engine_e2e_bin ."
|
||||
cmd: "cd $HOME/fn_registry/apps/dag_engine && CGO_ENABLED=1 go build -tags fts5 -o /tmp/dag_engine_e2e_bin ."
|
||||
timeout_s: 120
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
@@ -64,7 +64,7 @@ e2e_checks:
|
||||
# NO hay flag --migrate-only en el binario actual.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: migrations_apply
|
||||
cmd: "rm -f /tmp/dag_engine_e2e.db /tmp/dag_engine_e2e.db-shm /tmp/dag_engine_e2e.db-wal && /tmp/dag_engine_e2e_bin list --db /tmp/dag_engine_e2e.db /home/lucas/fn_registry/apps/dag_engine/dags_migrated/"
|
||||
cmd: "rm -f /tmp/dag_engine_e2e.db /tmp/dag_engine_e2e.db-shm /tmp/dag_engine_e2e.db-wal && /tmp/dag_engine_e2e_bin list --db /tmp/dag_engine_e2e.db $HOME/fn_registry/apps/dag_engine/dags_migrated/"
|
||||
timeout_s: 15
|
||||
expect_exit: 0
|
||||
# NOTA: depende de check build_backend (usa /tmp/dag_engine_e2e_bin).
|
||||
@@ -80,7 +80,7 @@ e2e_checks:
|
||||
# mal referenciados, etc.).
|
||||
# -----------------------------------------------------------------------
|
||||
- id: dag_parse_fn_backup
|
||||
cmd: "/tmp/dag_engine_e2e_bin validate /home/lucas/fn_registry/apps/dag_engine/dags_migrated/fn_backup.yaml"
|
||||
cmd: "/tmp/dag_engine_e2e_bin validate $HOME/fn_registry/apps/dag_engine/dags_migrated/fn_backup.yaml"
|
||||
timeout_s: 10
|
||||
expect_exit: 0
|
||||
expect_stdout_contains: "Validation: PASS"
|
||||
@@ -93,7 +93,7 @@ e2e_checks:
|
||||
# topo_sort sobre un grafo no trivial.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: dag_parse_daily_audit
|
||||
cmd: "/tmp/dag_engine_e2e_bin validate /home/lucas/fn_registry/apps/dag_engine/dags_migrated/daily-registry-audit.yaml"
|
||||
cmd: "/tmp/dag_engine_e2e_bin validate $HOME/fn_registry/apps/dag_engine/dags_migrated/daily-registry-audit.yaml"
|
||||
timeout_s: 10
|
||||
expect_exit: 0
|
||||
expect_stdout_contains: "Validation: PASS"
|
||||
@@ -108,7 +108,7 @@ e2e_checks:
|
||||
# health endpoint /api/dags declarado en service.health_endpoint.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: smoke_server
|
||||
cmd: "/tmp/dag_engine_e2e_bin server --port 8195 --db /tmp/dag_engine_e2e.db --dags-dir /home/lucas/fn_registry/apps/dag_engine/dags_migrated/ &"
|
||||
cmd: "/tmp/dag_engine_e2e_bin server --port 8195 --db /tmp/dag_engine_e2e.db --dags-dir $HOME/fn_registry/apps/dag_engine/dags_migrated/ &"
|
||||
health: "http://127.0.0.1:8195/api/dags"
|
||||
timeout_s: 10
|
||||
# NOTA: sin flag --scheduler para no disparar jobs reales.
|
||||
@@ -132,6 +132,6 @@ e2e_checks:
|
||||
# Cuando se añadan tests: descomentar y ajustar.
|
||||
# -----------------------------------------------------------------------
|
||||
# - id: tests
|
||||
# cmd: "cd /home/lucas/fn_registry/apps/dag_engine && go test -tags fts5 -count=1 ./..."
|
||||
# cmd: "cd $HOME/fn_registry/apps/dag_engine && go test -tags fts5 -count=1 ./..."
|
||||
# timeout_s: 120
|
||||
# OMITIDO: sin *_test.go
|
||||
|
||||
@@ -15,7 +15,7 @@ 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 ."
|
||||
cmd: "cd $HOME/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.
|
||||
|
||||
@@ -30,8 +30,8 @@ e2e_checks_suggested:
|
||||
# No conecta a Metabase — solo resuelve imports.
|
||||
- id: import
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/metabase_registry &&
|
||||
/home/lucas/fn_registry/python/.venv/bin/python3 -c
|
||||
cd $HOME/fn_registry/apps/metabase_registry &&
|
||||
$HOME/fn_registry/python/.venv/bin/python3 -c
|
||||
"import sys, os;
|
||||
sys.path.insert(0, os.path.join(os.getcwd(), '..', '..', 'python', 'functions'));
|
||||
from metabase import MetabaseClient, metabase_create_card, metabase_create_dashboard, metabase_update_dashboard;
|
||||
@@ -49,8 +49,8 @@ e2e_checks_suggested:
|
||||
# argparse imprime usage sin necesitar credenciales ni conexion.
|
||||
- id: cli_help
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/metabase_registry &&
|
||||
/home/lucas/fn_registry/python/.venv/bin/python3 main.py --help
|
||||
cd $HOME/fn_registry/apps/metabase_registry &&
|
||||
$HOME/fn_registry/python/.venv/bin/python3 main.py --help
|
||||
expect_stdout_contains: "metabase_registry"
|
||||
expect_exit: 0
|
||||
timeout_s: 10
|
||||
@@ -62,8 +62,8 @@ e2e_checks_suggested:
|
||||
# Detecta SyntaxError y NameError de nivel modulo antes de cualquier deploy.
|
||||
- id: syntax_check
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/metabase_registry &&
|
||||
/home/lucas/fn_registry/python/.venv/bin/python3 -m py_compile
|
||||
cd $HOME/fn_registry/apps/metabase_registry &&
|
||||
$HOME/fn_registry/python/.venv/bin/python3 -m py_compile
|
||||
main.py create_registry_dashboard.py create_apps_dashboard.py
|
||||
create_script_navegador_dashboard.py &&
|
||||
echo "syntax OK"
|
||||
@@ -82,11 +82,11 @@ e2e_checks_suggested:
|
||||
# severity: warning porque el fallo esperado viene de red, no del codigo.
|
||||
- id: dry_run_parser
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/metabase_registry &&
|
||||
cd $HOME/fn_registry/apps/metabase_registry &&
|
||||
METABASE_URL=http://127.0.0.1:19999
|
||||
METABASE_ADMIN_EMAIL=test@example.com
|
||||
METABASE_ADMIN_PASSWORD=fake_password_for_e2e
|
||||
/home/lucas/fn_registry/python/.venv/bin/python3 main.py
|
||||
$HOME/fn_registry/python/.venv/bin/python3 main.py
|
||||
--url http://127.0.0.1:19999
|
||||
--admin-email test@example.com
|
||||
--admin-password fake_password_for_e2e
|
||||
|
||||
@@ -48,7 +48,7 @@ e2e_checks:
|
||||
# y hacer el check idempotente.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: build
|
||||
cmd: "cd /home/lucas/fn_registry/apps/pipeline_launcher && CGO_ENABLED=1 go build -tags fts5 -o /tmp/pipeline_launcher_e2e_bin ."
|
||||
cmd: "cd $HOME/fn_registry/apps/pipeline_launcher && CGO_ENABLED=1 go build -tags fts5 -o /tmp/pipeline_launcher_e2e_bin ."
|
||||
timeout_s: 120
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
@@ -61,7 +61,7 @@ e2e_checks:
|
||||
# config/ y views/ que el build check no ejercita separadamente.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: vet
|
||||
cmd: "cd /home/lucas/fn_registry/apps/pipeline_launcher && CGO_ENABLED=1 go vet -tags fts5 ./..."
|
||||
cmd: "cd $HOME/fn_registry/apps/pipeline_launcher && CGO_ENABLED=1 go vet -tags fts5 ./..."
|
||||
timeout_s: 60
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
@@ -78,7 +78,7 @@ e2e_checks:
|
||||
# -----------------------------------------------------------------------
|
||||
- id: pipelines_list_loads
|
||||
cmd: >
|
||||
COUNT=$(sqlite3 /home/lucas/fn_registry/registry.db
|
||||
COUNT=$(sqlite3 $HOME/fn_registry/registry.db
|
||||
"SELECT COUNT(*) FROM functions WHERE kind='pipeline' AND tags LIKE '%launcher%';");
|
||||
[ "$COUNT" -ge 1 ] && echo "launcher_pipelines=$COUNT OK" || { echo "FAIL: no launcher pipelines found in registry.db"; exit 1; }
|
||||
timeout_s: 10
|
||||
|
||||
@@ -48,7 +48,7 @@ e2e_checks:
|
||||
# rompe su API de compilacion, este check lo detecta antes de que otro app falle.
|
||||
# Actua como build gate del registry de funciones C++.
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build/windows --target primitives_gallery -j"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build/windows --target primitives_gallery -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
|
||||
@@ -56,7 +56,7 @@ e2e_checks:
|
||||
# El build puede reportar exit 0 con -j en builds parciales sin producir binario.
|
||||
# Sin este check, capture_mode fallaria con un mensaje de error menos claro.
|
||||
- id: binary_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/windows/apps/primitives_gallery/primitives_gallery.exe"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/windows/apps/primitives_gallery/primitives_gallery.exe"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -78,7 +78,7 @@ e2e_checks:
|
||||
- id: capture_mode
|
||||
cmd: >
|
||||
mkdir -p /tmp/primitives_gallery_e2e &&
|
||||
/home/lucas/fn_registry/cpp/build/windows/apps/primitives_gallery/primitives_gallery.exe
|
||||
$HOME/fn_registry/cpp/build/windows/apps/primitives_gallery/primitives_gallery.exe
|
||||
--capture /tmp/primitives_gallery_e2e
|
||||
timeout_s: 120
|
||||
severity: warning
|
||||
@@ -108,7 +108,7 @@ e2e_checks:
|
||||
# como recurso (.rsrc) en el .exe. Si appicon.ico falta, el build pasa
|
||||
# pero el .exe queda sin icono embebido (visible en Explorer + taskbar).
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/primitives_gallery/appicon.ico"
|
||||
cmd: "test -f $HOME/fn_registry/apps/primitives_gallery/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
@@ -121,7 +121,7 @@ e2e_checks:
|
||||
# Referencia esperada: 43 entradas (conteo manual de k_demos[] en main.cpp L37-84).
|
||||
- id: demos_count_static
|
||||
cmd: >
|
||||
count=$(grep -c '^\s*{"' /home/lucas/fn_registry/apps/primitives_gallery/main.cpp);
|
||||
count=$(grep -c '^\s*{"' $HOME/fn_registry/apps/primitives_gallery/main.cpp);
|
||||
echo "DemoEntry count in source: $count";
|
||||
test "$count" -ge 43
|
||||
timeout_s: 5
|
||||
|
||||
@@ -32,7 +32,7 @@ e2e_checks:
|
||||
# apunta a ../../ (raiz del registry), por lo que el build debe lanzarse
|
||||
# desde dentro del directorio de la app.
|
||||
- id: build
|
||||
cmd: "cd /home/lucas/fn_registry/apps/registry_api && CGO_ENABLED=1 go build -tags fts5 -o registry_api ."
|
||||
cmd: "cd $HOME/fn_registry/apps/registry_api && CGO_ENABLED=1 go build -tags fts5 -o registry_api ."
|
||||
timeout_s: 120
|
||||
severity: critical
|
||||
# por que: sin binario el resto de checks no tiene sentido; fallo de build
|
||||
@@ -43,7 +43,7 @@ e2e_checks:
|
||||
# /api/status. Puerto 8521 (!=8420 prod, !=8420 dev) para no colisionar.
|
||||
# El proceso en background se mata al terminar la suite por fn-analizador.
|
||||
- id: smoke
|
||||
cmd: "/home/lucas/fn_registry/apps/registry_api/registry_api -port 8521 -db /tmp/registry_api_e2e.db &"
|
||||
cmd: "$HOME/fn_registry/apps/registry_api/registry_api -port 8521 -db /tmp/registry_api_e2e.db &"
|
||||
health: "http://127.0.0.1:8521/api/status"
|
||||
timeout_s: 10
|
||||
severity: critical
|
||||
@@ -91,7 +91,7 @@ e2e_checks:
|
||||
- id: auth_check
|
||||
cmd: >
|
||||
REGISTRY_API_TOKEN=real-secret
|
||||
/home/lucas/fn_registry/apps/registry_api/registry_api -port 8522 -db /tmp/registry_api_e2e_auth.db &
|
||||
$HOME/fn_registry/apps/registry_api/registry_api -port 8522 -db /tmp/registry_api_e2e_auth.db &
|
||||
sleep 1 &&
|
||||
STATUS=$(curl -s -o /dev/null -w '%{http_code}'
|
||||
-X POST http://127.0.0.1:8522/api/sync
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
# (antes del primer "##" de prosa).
|
||||
# 2. El check 'build' asume que el directorio cpp/build/linux existe y cmake
|
||||
# fue configurado previamente. Si no: anteponer
|
||||
# "cmake -B /home/lucas/fn_registry/cpp/build/linux -S /home/lucas/fn_registry/cpp &&"
|
||||
# "cmake -B $HOME/fn_registry/cpp/build/linux -S $HOME/fn_registry/cpp &&"
|
||||
# al cmd o usar el check 'build_configure' (opcional, ver abajo).
|
||||
# 3. El check 'integration_sqlite_direct' requiere que registry.db exista en
|
||||
# la raiz del repo. En CI, puede copiarse de un fixture o generarse con
|
||||
@@ -62,7 +62,7 @@ e2e_checks:
|
||||
# CGO no aplica (es C++, no Go). FTS5 se compila via SQLITE_ENABLE_FTS5
|
||||
# en la amalgamation vendoreada (CMakeLists.txt lo setea).
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build/linux --target registry_dashboard -j$(nproc)"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build/linux --target registry_dashboard -j$(nproc)"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
# por que: la app enlaza ~20 funciones del registry C++ + sqlite + ws_client.
|
||||
@@ -74,7 +74,7 @@ e2e_checks:
|
||||
# Confirma que el binario existe y es ejecutable tras el build.
|
||||
# Tambien verifica la version de symbols minimos esperados (sin linkage roto).
|
||||
- id: verify_binary
|
||||
cmd: "test -x /home/lucas/fn_registry/cpp/build/linux/apps/registry_dashboard && /home/lucas/fn_registry/cpp/build/linux/apps/registry_dashboard --help 2>&1 || true"
|
||||
cmd: "test -x $HOME/fn_registry/cpp/build/linux/apps/registry_dashboard && $HOME/fn_registry/cpp/build/linux/apps/registry_dashboard --help 2>&1 || true"
|
||||
expect_exit: 0
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
@@ -93,8 +93,8 @@ e2e_checks:
|
||||
- id: integration_sqlite_direct
|
||||
cmd: >
|
||||
DISPLAY="" timeout 3
|
||||
/home/lucas/fn_registry/cpp/build/linux/apps/registry_dashboard
|
||||
/home/lucas/fn_registry/registry.db
|
||||
$HOME/fn_registry/cpp/build/linux/apps/registry_dashboard
|
||||
$HOME/fn_registry/registry.db
|
||||
2>&1 | head -5
|
||||
expect_exit: 1
|
||||
timeout_s: 10
|
||||
@@ -116,7 +116,7 @@ e2e_checks:
|
||||
# Actua como pre-condicion para integration_sqlite_direct.
|
||||
- id: data_schema_check
|
||||
cmd: >
|
||||
sqlite3 /home/lucas/fn_registry/registry.db
|
||||
sqlite3 $HOME/fn_registry/registry.db
|
||||
"SELECT COUNT(*) FROM sqlite_master WHERE type='table'
|
||||
AND name IN ('functions','types','apps','analysis','proposals','unit_tests');"
|
||||
expect_stdout_contains: "6"
|
||||
@@ -133,7 +133,7 @@ e2e_checks:
|
||||
# via HTTP, pero aqui queremos detectar schema drift independientemente.
|
||||
- id: call_monitor_schema_check
|
||||
cmd: >
|
||||
sqlite3 /home/lucas/fn_registry/projects/fn_monitoring/apps/call_monitor/operations.db
|
||||
sqlite3 $HOME/fn_registry/projects/fn_monitoring/apps/call_monitor/operations.db
|
||||
"SELECT COUNT(*) FROM sqlite_master WHERE type='table'
|
||||
AND name IN ('calls','violations','sessions');"
|
||||
expect_stdout_contains: "3"
|
||||
@@ -151,7 +151,7 @@ e2e_checks:
|
||||
# WsClient sin actualizar todos los call sites.
|
||||
- id: ws_client_compile_check
|
||||
cmd: >
|
||||
cmake --build /home/lucas/fn_registry/cpp/build/linux
|
||||
cmake --build $HOME/fn_registry/cpp/build/linux
|
||||
--target registry_dashboard -j$(nproc) -- --warn-undefined-functions
|
||||
2>&1 | grep -i "ws_client" | grep -i "error" || true
|
||||
expect_stdout_contains: ""
|
||||
|
||||
@@ -50,7 +50,7 @@ e2e_checks:
|
||||
# -------------------------------------------------------------------
|
||||
- id: build
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/registry_mcp &&
|
||||
cd $HOME/fn_registry/apps/registry_mcp &&
|
||||
CGO_ENABLED=1 go build -tags fts5 -o registry_mcp .
|
||||
timeout_s: 120
|
||||
severity: critical
|
||||
@@ -64,7 +64,7 @@ e2e_checks:
|
||||
# -------------------------------------------------------------------
|
||||
- id: tests
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/registry_mcp &&
|
||||
cd $HOME/fn_registry/apps/registry_mcp &&
|
||||
CGO_ENABLED=1 go test -tags fts5 -count=1 -timeout 60s ./...
|
||||
timeout_s: 90
|
||||
severity: critical
|
||||
@@ -80,7 +80,7 @@ e2e_checks:
|
||||
# -------------------------------------------------------------------
|
||||
- id: naming_reject
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/registry_mcp &&
|
||||
cd $HOME/fn_registry/apps/registry_mcp &&
|
||||
CGO_ENABLED=1 go test -tags fts5 -count=1 -run TestValidateName -v 2>&1 |
|
||||
grep -q "PASS"
|
||||
timeout_s: 30
|
||||
@@ -98,10 +98,10 @@ e2e_checks:
|
||||
# -------------------------------------------------------------------
|
||||
- id: mcp_handshake_stdio
|
||||
cmd: |
|
||||
BINARY=/home/lucas/fn_registry/apps/registry_mcp/registry_mcp
|
||||
BINARY=$HOME/fn_registry/apps/registry_mcp/registry_mcp
|
||||
PAYLOAD='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"e2e_probe","version":"0"}}}'
|
||||
RESPONSE=$(echo "$PAYLOAD" | timeout 5 "$BINARY" \
|
||||
--registry-root /home/lucas/fn_registry \
|
||||
--registry-root $HOME/fn_registry \
|
||||
--log-level error \
|
||||
2>/dev/null | head -n1)
|
||||
echo "response: $RESPONSE"
|
||||
|
||||
@@ -21,12 +21,12 @@ e2e_checks:
|
||||
# -----------------------------------------------------------------------
|
||||
# CHECK 1: build
|
||||
# Por que: verifica que el modulo Go compila con CGO (go-sqlite3) y las
|
||||
# dependencias del registry (replace fn-registry => /home/lucas/fn_registry).
|
||||
# dependencias del registry (replace fn-registry => $HOME/fn_registry).
|
||||
# Sin esto nada funciona. El binario se deja en /tmp para no contaminar el dir.
|
||||
# -----------------------------------------------------------------------
|
||||
- id: build
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/script_navegador &&
|
||||
cd $HOME/fn_registry/apps/script_navegador &&
|
||||
CGO_ENABLED=1 go build -tags fts5 -o /tmp/script_navegador_e2e .
|
||||
timeout_s: 120
|
||||
|
||||
@@ -52,7 +52,7 @@ e2e_checks:
|
||||
- id: syntax_yaml
|
||||
cmd: >
|
||||
/tmp/script_navegador_e2e
|
||||
--script /home/lucas/fn_registry/apps/script_navegador/examples/busqueda_google.yaml
|
||||
--script $HOME/fn_registry/apps/script_navegador/examples/busqueda_google.yaml
|
||||
--port 19222
|
||||
2>&1 || true
|
||||
expect_stdout_contains: "busqueda_google"
|
||||
@@ -84,7 +84,7 @@ e2e_checks:
|
||||
# -----------------------------------------------------------------------
|
||||
- id: ops_schema
|
||||
cmd: >
|
||||
sqlite3 /home/lucas/fn_registry/apps/script_navegador/operations.db
|
||||
sqlite3 $HOME/fn_registry/apps/script_navegador/operations.db
|
||||
"SELECT name FROM sqlite_master WHERE type='table'
|
||||
AND name IN ('entities','relations','executions','logs','assertions','assertion_results')
|
||||
ORDER BY name;" 2>/dev/null
|
||||
@@ -116,6 +116,6 @@ e2e_checks:
|
||||
# No hay archivos *_test.go en el directorio. Si se anaden en el futuro,
|
||||
# agregar:
|
||||
# - id: tests
|
||||
# cmd: "cd /home/lucas/fn_registry/apps/script_navegador && go test -count=1 ./..."
|
||||
# cmd: "cd $HOME/fn_registry/apps/script_navegador && go test -count=1 ./..."
|
||||
# timeout_s: 60
|
||||
# -----------------------------------------------------------------------
|
||||
|
||||
@@ -33,7 +33,7 @@ e2e_checks:
|
||||
# pero el flag no rompe nada y evita confusion futura si se añade FTS).
|
||||
# -----------------------------------------------------------------------
|
||||
- id: build
|
||||
cmd: "cd /home/lucas/fn_registry/apps/services_api && CGO_ENABLED=1 go build -o services_api ."
|
||||
cmd: "cd $HOME/fn_registry/apps/services_api && CGO_ENABLED=1 go build -o services_api ."
|
||||
timeout_s: 120
|
||||
severity: critical
|
||||
# por que: si no compila no hay nada que probar
|
||||
@@ -47,11 +47,11 @@ e2e_checks:
|
||||
# -----------------------------------------------------------------------
|
||||
- id: smoke_once
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/services_api &&
|
||||
FN_REGISTRY_ROOT=/home/lucas/fn_registry
|
||||
cd $HOME/fn_registry/apps/services_api &&
|
||||
FN_REGISTRY_ROOT=$HOME/fn_registry
|
||||
./services_api
|
||||
--once
|
||||
--registry /home/lucas/fn_registry
|
||||
--registry $HOME/fn_registry
|
||||
--db /tmp/services_api_e2e.db
|
||||
--bind 127.0.0.1:8585
|
||||
timeout_s: 45
|
||||
@@ -67,10 +67,10 @@ e2e_checks:
|
||||
# -----------------------------------------------------------------------
|
||||
- id: smoke_health
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry/apps/services_api &&
|
||||
cd $HOME/fn_registry/apps/services_api &&
|
||||
./services_api
|
||||
--bind 127.0.0.1:8585
|
||||
--registry /home/lucas/fn_registry
|
||||
--registry $HOME/fn_registry
|
||||
--db /tmp/services_api_e2e_http.db
|
||||
--interval 300s &
|
||||
health: "http://127.0.0.1:8585/api/health"
|
||||
@@ -124,7 +124,7 @@ e2e_checks:
|
||||
# No existen *_test.go en apps/services_api. Activar cuando se añadan.
|
||||
#
|
||||
# - id: tests
|
||||
# cmd: "cd /home/lucas/fn_registry/apps/services_api && CGO_ENABLED=1 go test -count=1 ./..."
|
||||
# cmd: "cd $HOME/fn_registry/apps/services_api && CGO_ENABLED=1 go test -count=1 ./..."
|
||||
# timeout_s: 120
|
||||
# severity: critical
|
||||
# -----------------------------------------------------------------------
|
||||
|
||||
@@ -30,7 +30,7 @@ e2e_checks:
|
||||
# (data_table::render, issue 0097) y ws2_32 en WIN32.
|
||||
# Detecta regresiones de API en data_table o cambios de firma en http_client.h.
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build/windows --target services_monitor -j"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build/windows --target services_monitor -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
|
||||
@@ -39,7 +39,7 @@ e2e_checks:
|
||||
# (ha ocurrido con fn_module_data_table cuando el target es condicional via
|
||||
# if(TARGET fn_module_data_table) sin hacer REQUIRED).
|
||||
- id: binary_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/windows/apps/services_monitor/services_monitor.exe"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/windows/apps/services_monitor/services_monitor.exe"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -48,7 +48,7 @@ e2e_checks:
|
||||
# si el .ico falta el build pasa pero el .exe queda sin icono (phosphor=pulse
|
||||
# accent=#10b981 segun app.md). Visible al copiar a Desktop/apps/.
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/services_monitor/appicon.ico"
|
||||
cmd: "test -f $HOME/fn_registry/apps/services_monitor/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ e2e_checks:
|
||||
# Es el check mas valioso: detecta regresiones de API en cualquiera de las
|
||||
# 19 funciones del registry que usa la app.
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build/windows --target shaders_lab -j"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build/windows --target shaders_lab -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
|
||||
@@ -33,7 +33,7 @@ e2e_checks:
|
||||
# Detecta casos donde cmake reporta exit 0 pero el linker no produjo binario
|
||||
# (muy raro con mingw-w64 pero ha ocurrido en builds parciales con -j).
|
||||
- id: binary_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/windows/apps/shaders_lab/shaders_lab.exe"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/windows/apps/shaders_lab/shaders_lab.exe"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -42,6 +42,6 @@ e2e_checks:
|
||||
# si el .ico falta el build pasa pero el .exe queda sin icono embebido
|
||||
# (visible al deploy a /mnt/c/.../Desktop/apps/).
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/shaders_lab/appicon.ico"
|
||||
cmd: "test -f $HOME/fn_registry/apps/shaders_lab/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
@@ -20,7 +20,7 @@ e2e_checks:
|
||||
# El binario resultante es el mismo que usa el systemd unit.
|
||||
# Correr desde la raiz del repo porque go.mod vive ahi.
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry &&
|
||||
cd $HOME/fn_registry &&
|
||||
CGO_ENABLED=1 go build -tags fts5
|
||||
-o projects/fn_monitoring/apps/sqlite_api/sqlite_api
|
||||
./projects/fn_monitoring/apps/sqlite_api/
|
||||
@@ -35,7 +35,7 @@ e2e_checks:
|
||||
# DiscoverDatabases, /tables, /schema, 404 para DB inexistente.
|
||||
# Usan DB en t.TempDir() — totalmente efimeros.
|
||||
cmd: >
|
||||
cd /home/lucas/fn_registry &&
|
||||
cd $HOME/fn_registry &&
|
||||
CGO_ENABLED=1 go test -tags fts5 -count=1 -v
|
||||
./projects/fn_monitoring/apps/sqlite_api/
|
||||
timeout_s: 60
|
||||
@@ -48,8 +48,8 @@ e2e_checks:
|
||||
# encuentre registry.db real (necesario para /api/databases).
|
||||
# El proceso queda en background; fn-analizador lo mata al terminar.
|
||||
cmd: >
|
||||
FN_REGISTRY_ROOT=/home/lucas/fn_registry
|
||||
/home/lucas/fn_registry/projects/fn_monitoring/apps/sqlite_api/sqlite_api
|
||||
FN_REGISTRY_ROOT=$HOME/fn_registry
|
||||
$HOME/fn_registry/projects/fn_monitoring/apps/sqlite_api/sqlite_api
|
||||
--bind 127.0.0.1:8684
|
||||
--data-factory-db /tmp/sqlite_api_e2e_df.db &
|
||||
health: "http://127.0.0.1:8684/api/databases"
|
||||
|
||||
@@ -57,7 +57,7 @@ e2e_checks:
|
||||
# los tabs, (c) ninguna TU del modulo rompe ODR.
|
||||
# Es el build gate de data_table v2.0+ para issue 0081 BeginTable migration.
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build --target tables_qa -j"
|
||||
cmd: "cmake --build $HOME/fn_registry/cpp/build --target tables_qa -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
# Nota: si fn_module_data_table aun no esta buildado, cmake lo buildara como
|
||||
@@ -67,7 +67,7 @@ e2e_checks:
|
||||
# cmake --build puede retornar exit 0 en rebuilds parciales sin producir binario
|
||||
# si el target ya esta up-to-date pero el archivo fue borrado manualmente.
|
||||
- id: binary_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/apps/tables_qa/tables_qa"
|
||||
cmd: "test -f $HOME/fn_registry/cpp/build/apps/tables_qa/tables_qa"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
@@ -80,7 +80,7 @@ e2e_checks:
|
||||
# implemente --self-test real con imgui_test_engine, ascender a critical y
|
||||
# añadir expect_stdout_contains para verificar resultados concretos.
|
||||
- id: self_test_stub
|
||||
cmd: "/home/lucas/fn_registry/cpp/build/apps/tables_qa/tables_qa --self-test"
|
||||
cmd: "$HOME/fn_registry/cpp/build/apps/tables_qa/tables_qa --self-test"
|
||||
timeout_s: 15
|
||||
expect_exit: 0
|
||||
expect_stdout_contains: "SKIPPED"
|
||||
@@ -94,7 +94,7 @@ e2e_checks:
|
||||
# Windows queda sin icono embebido. Fallo aqui detecta borrado accidental
|
||||
# del .ico antes de cross-compile.
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/tables_qa/appicon.ico"
|
||||
cmd: "test -f $HOME/fn_registry/apps/tables_qa/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
@@ -107,7 +107,7 @@ e2e_checks:
|
||||
# Cuenta "render_" en tabs.h como proxy del numero de tabs declarados.
|
||||
- id: tabs_declared
|
||||
cmd: >
|
||||
count=$(grep -c 'render_' /home/lucas/fn_registry/apps/tables_qa/tabs.h 2>/dev/null);
|
||||
count=$(grep -c 'render_' $HOME/fn_registry/apps/tables_qa/tabs.h 2>/dev/null);
|
||||
echo "render_ declarations in tabs.h: $count";
|
||||
test "$count" -ge 10
|
||||
timeout_s: 5
|
||||
@@ -121,7 +121,7 @@ e2e_checks:
|
||||
# Este check estático es mas rapido que el build completo y da feedback antes.
|
||||
- id: cmakelists_tab_srcs
|
||||
cmd: >
|
||||
count=$(grep -c '^ tab_' /home/lucas/fn_registry/apps/tables_qa/CMakeLists.txt 2>/dev/null);
|
||||
count=$(grep -c '^ tab_' $HOME/fn_registry/apps/tables_qa/CMakeLists.txt 2>/dev/null);
|
||||
echo "tab_*.cpp in CMakeLists: $count";
|
||||
test "$count" -ge 10
|
||||
timeout_s: 5
|
||||
|
||||
Reference in New Issue
Block a user