service:
  name: brain-watchdog
  owner_node: piha
  exposure: private
  description: >
    External watchdog for the control-plane on VPS. Queries /summary over
    Tailscale and alerts via Telegram Bot API directly — no dependency on the
    control-plane itself. Freshness is computed locally from last_update epoch.

  dependencies:
    - control-plane   # external — on VPS; deliberately untrusted for liveness

  healthcheck:
    type: docker
    interval: 60s
    timeout: 10s
    retries: 3
    start_period: 30s

  restart_policy: unless-stopped

  persistence:
    paths:
      - /data   # state.json: fail_count, alerted, last_ok

  runtime:
    env_vars:
      - CONTROL_PLANE_URL     # Tailscale IP + port of operator-ui (required)
      - STALE_THRESHOLD       # seconds before brain is considered stale (default: 600)
      - INTERVAL              # poll interval seconds (default: 60)
      - FAILS_BEFORE_ALERT    # consecutive failures before Telegram alert (default: 3)
      - TG_TOKEN              # Telegram Bot API token (required)
      - TG_CHAT_ID            # Telegram chat/user ID (required)
      - HEALTHCHECKS_URL      # optional healthchecks.io ping URL
      - PROMETHEUS_URL        # optional Prometheus URL for polling firing alerts
