# 2026-05-17

## 17:46 — issue 0105 + 0106 — bloque service: estandarizado + services_api Go + services_monitor C++ ImGui desplegado Windows

- Hecho: bloque `service:` (port, health_endpoint, systemd_unit, systemd_scope, restart_policy, runtime, pc_targets, is_local_only) anadido al frontmatter de las 11 apps con `tag: service`. Schema canonico en `.claude/rules/function_tags.md`.
- Hecho: migration `registry/migrations/014_service_metadata.sql` (8 cols en `apps` + tabla `service_targets`). `App.Service *ServiceSpec` + parser `rawService` + `InsertApp`/`scanApps`/`Purge`/`PurgeLocalOnly` cubriendo persistencia y limpieza. `db.GetServicePCTargets(appID)` API publica.
- Hecho: funcion `audit_services_spec_go_infra` + subcomando `fn doctor services-spec` (tabwriter + `--json`). Salida actual: 11/11 OK.
- Hecho: app `services_api` (`apps/services_api/`, Go) en `127.0.0.1:8485`. Loop paralelo 15s (max 8, timeout 20s/probe), local vs SSH segun selfPC (`~/.fn_pc`=`home-wsl`). Tablas `service_state` + `service_transition`. Endpoints `/api/health`, `/api/services`, `POST /api/check`, `/api/pcs`. systemd `~/.config/systemd/user/services_api.service` `Restart=always`.
- Hecho: app `services_monitor` (`apps/services_monitor/`, C++ ImGui). Scaffolded via `init_cpp_app_bash_pipelines`. Tabla 9-col agrupada por app, color por overall (`ok|degraded|down|no-route`), auto-refresh 5s, boton Force-check. JSON via `vendor/nlohmann/json.hpp` + HTTP socket TCP `http_client.{cpp,h}` (ambos copiados de data_factory). Build linux + windows (mingw + ws2_32). Deployado a `C:\Users\lucas\Desktop\apps\services_monitor\` via `redeploy_cpp_app_windows_bash_pipelines` y arrancado (PID=12864).
- Hecho: fix regresion `sqlite_api.service` muerta 20h sin alerta. Raiz: `Restart=on-failure` no reinicia tras `SIGTERM` (exit success). Fix: `Restart=always`. Mismo patron al unit nuevo `services_api.service`.
- Hecho: `sqlite_api/app.md` `health_endpoint` corregido `/api/status` (404) → `/api/databases` (200). Detectado por el propio services_api en el primer ciclo.
- Hecho: memoria persistente `feedback_ask_stack_first` (preguntar SIEMPRE stack antes de empezar app) + `project_services_monitor` (snapshot de la arquitectura issue 0105+0106).
- Hecho: issues `0105` + `0106` creados (`dev/issues/`), filas en `dev/issues/README.md`. `.claude/CLAUDE.md` y `.claude/rules/function_tags.md` actualizados con el bloque `service:` + nuevo subcomando.
- Pendiente: anadir `aurgi-pc` a `~/.ssh/config` para que sus 6 targets dejen `no-route` y reporten estado real.
- Pendiente: arrancar services locales muertos (`kanban`, `deploy_server`, `call_monitor`, `registry_mcp`) y verificar `element_matrix_chat` (endpoint health puede ser otro).
- Pendiente: pipeline `regenerate_app_icons` falla en SyntaxError al pasar args al heredoc — generar icon de `services_monitor` queda bloqueado hasta arreglar el wrapper.
