Lab Notes
Operations

Health Checks

El sistema de verificación de health. Los liveness probes, los correctness checks, los performance checks y las alertas.

Propósito

Esta página documenta los health checks del lab: los liveness probes, los correctness checks, los performance checks y la alerting policy.

Los health checks son parte de la cadencia operacional (Operations) y del runbook (Runbook).

Categorías

Los health checks del lab se dividen en tres categorías:

CategoríaPregunta que responde
Liveness¿El componente está up?
Correctness¿El componente se está comportando correctamente?
Performance¿El componente está cumpliendo sus targets de performance?

Un fallo en cualquier categoría es un hallazgo. La severidad depende de la categoría y del componente.

Liveness probes

Los liveness probes son chequeos HTTP o de proceso simples.

Coordinator gateway

curl -s http://localhost:18789/health

Esperado: {"status": "ok", "uptime_s": N} con HTTP 200.

Scout gateway

curl -s http://localhost:18790/health

Esperado: {"status": "ok", "uptime_s": N} con HTTP 200.

Browser CDP

lsof -nP -iTCP:18800 -sTCP:LISTEN

Esperado: el comando devuelve un PID.

Media Lab Server

curl -s http://127.0.0.1:8765/api/status

Esperado: {"status": "ok", "server": "DevClaw Media Lab v2"} con HTTP 200.

Coding sub-agent

El coding sub-agent es una herramienta CLI, no un proceso de larga duración. El liveness check es la presencia del binario:

which codex

Esperado: una ruta al binario.

Correctness checks

Los correctness checks verifican que el componente se está comportando correctamente, no solo que está up.

Correctness del Coordinator

CheckEsperado
El memory layer es legibleLeer MEMORY.md devuelve el contenido esperado.
El skill loader activa un skill conocidoActivar browser-automation devuelve el skill.
El session store acepta una sesión nuevaSe crea y lista una sesión nueva.
El routing al Research Worker funcionaUna research request se dispatcha y devuelve un resultado.

Correctness del Research Worker

CheckEsperado
La inicialización de misión funcionaSe crea una misión nueva en la raíz de research.
La fase F0 corre y produce task.jsonEl artefacto se escribe y valida.
La fase F1 corre y produce candidates.jsonEl artefacto se escribe y valida.
El orquestador puede reanudar una misión pausadaSe carga el estado y corre la siguiente fase.

Correctness del Media Agent

CheckEsperado
El device discovery funciona (cuando hay devices)Se devuelve una device list no vacía.
Una playback request se aceptaEl agent devuelve un resultado sin error.
El media backend selector escoge el backend correctoEl backend seleccionado matchea las reglas.

Correctness del Web Agent

CheckEsperado
Se puede abrir una URLLa página carga y se devuelve un snapshot.
Se puede rellenar un formulario fillableLos campos del form se rellenan y el form se puede submitir.
Un snapshot devuelve elementos accionablesEl snapshot tiene al menos un elemento clickable.

Correctness del Coding Assistant

CheckEsperado
Una task simple produce códigoEl sub-agent devuelve código que pasa los tests.
La review rechaza código maloSe rechaza un código con un bug claro.
La integración coloca los ficheros en la ubicación correctaLos ficheros están en las rutas esperadas del proyecto.

Performance checks

Los performance checks verifican que el componente cumple sus targets de performance.

Performance del Coordinator

CheckTarget
duration_ms.p50< 5,000 ms
duration_ms.p95< 15,000 ms
duration_ms.p99< 30,000 ms
Tokens por request (avg)< 5,000
Uso de memoria< 2 GB
Uso de CPU (por request)< 50% de un core (avg)

Performance del Research Worker

CheckTarget
Duración de misión (típica)< 5 minutos
F1_candidates.duration_ms.p50< 30,000 ms
F2_reviews.duration_ms.p50< 30,000 ms
F4_price.duration_ms.p50< 30,000 ms
F6_report.duration_ms.p50< 5,000 ms
Uso de memoria< 1 GB

Performance del Media Agent

CheckTarget
Inicio de reproducción< 5,000 ms
Selección de backend< 100 ms
Device discovery (cached)< 50 ms
Device discovery (cold)< 5,000 ms

Performance del Web Agent

CheckTarget
act.duration_ms.p50< 1,000 ms
snapshot.duration_ms.p50< 2,000 ms

Cómo correr los health checks

Los health checks se pueden correr individualmente (como en los probes de arriba) o como un script. El lab tiene un script en {workspace-root}/ops/cheatsheets/health-check.sh que corre todos los checks en orden y produce un report.

El output del script es un documento JSON con una entrada por check:

{
  "timestamp": "2026-06-10T20:00:00Z",
  "checks": [
    {"name": "coordinator.liveness", "status": "ok", "duration_ms": 12},
    {"name": "scout.liveness", "status": "ok", "duration_ms": 8},
    {"name": "browser.liveness", "status": "ok", "duration_ms": 5},
    {"name": "media-lab.liveness", "status": "ok", "duration_ms": 23},
    {"name": "research.correctness.f1", "status": "ok", "duration_ms": 4123}
  ]
}

El report se escribe a {workspace-root}/logs/health-check-<timestamp>.json.

Alerting

El lab no tiene un sistema de alerting. El operator es el sistema de alerting.

El operator comprueba los health checks:

  • Diario. Durante los daily checks.
  • On heartbeat. Si el heartbeat probe detecta un issue.
  • On user request. Cuando el usuario pregunta "¿está todo OK?".

Cuando un check falla, el operator sigue el procedimiento de runbook relevante. El runbook está en Runbook.

Failure modes

FailureSeveridadAcción
Coordinator gateway está caídoCriticalAplicar Worker recovery.
Scout gateway está caídoHighAplicar Worker recovery.
Browser CDP está detachedHighAplicar Browser CDP target detached.
Media Lab Server está caídoMediumAplicar Media Lab Server not responding.
Model quota exhaustedHighAplicar Model quota exhausted.
Token pool exhaustedHighAplicar Token pool: all tokens exhausted.
Misión stuck en estado no-terminalHighReanudar o cancelar la misión.
Memory layer no es escribibleCriticalInvestigar los permisos del filesystem.
Audit log creciendo demasiado rápidoLowAplicar la retention policy.

El failure catalog completo está en Catálogo de fallos.

Ver también