---
name: E2ECheck
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type E2ECheck struct {
      ID                   string `json:"id"`
      Cmd                  string `json:"cmd,omitempty"`
      Health               string `json:"health,omitempty"`
      Ref                  string `json:"ref,omitempty"`
      TimeoutS             int    `json:"timeout_s,omitempty"`
      ExpectExit           *int   `json:"expect_exit,omitempty"`
      ExpectStdoutContains string `json:"expect_stdout_contains,omitempty"`
      ExpectStdoutJSON     string `json:"expect_stdout_json,omitempty"`
      Severity             string `json:"severity,omitempty"`
  }
description: "Describe una validacion individual declarada en app.md::e2e_checks. Cada check especifica un comando a ejecutar, un endpoint de health a sondear, o una referencia a otro servicio. Ejecutados secuencialmente por E2ERunChecks."
tags: [e2e, check, validation, infra, testing]
uses_types: []
file_path: "functions/infra/e2e_check.go"
---

## Campos

- `id`: identificador unico del check, usado en el resultado.
- `cmd`: comando de shell a ejecutar (via `bash -c`). Si termina con `&`, se lanza en background.
- `health`: URL HTTP para sondear despues de `cmd`. Se usa `HealthCheckHTTP` con el timeout configurado.
- `ref`: referencia a otro artefacto en formato `<servicio>:<path>`. Por ahora produce `skip`.
- `timeout_s`: timeout en segundos para `cmd` y `health`. Default 60.
- `expect_exit`: codigo de salida esperado. Default 0.
- `expect_stdout_contains`: substring que debe aparecer en stdout para que el check sea pass.
- `expect_stdout_json`: campo JSON del stdout que debe existir (reservado para implementacion futura).
- `severity`: `critical` (default) o `warning`. Determina el `kind` de la proposal si falla.

## Notas

Tipo de datos usado como input de `e2e_run_checks_go_infra`.
Se serializa/deserializa desde el frontmatter YAML de `app.md` via campos `e2e_checks`.
