{
  "ts": "2026-10-11T07:36:59.944Z",
  "motor": "bucle_darwiniano_v1",
  "umbrales": {
    "MIN_SIGNAL": 3,
    "ROJO_RET_D1": 0.05,
    "VERDE_RET_D1": 0.3,
    "VERDE_KFACTOR": 1,
    "AMARILLO_MIN_N": 20,
    "AMARILLO_KFACTOR_MAX": 0.5
  },
  "apps": [
    {
      "app": "gaming-forum",
      "total": 4925,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 74,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de gaming-forum, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "m3u-player",
      "total": 662,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 662,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de m3u-player, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "hub",
      "total": 57,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de hub, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "radio-browser",
      "total": 37,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 37,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de radio-browser, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "snapdrop",
      "total": 34,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 34,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de snapdrop, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "kit-fabs-demo",
      "total": 28,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 28,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de kit-fabs-demo, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "youtube-test",
      "total": 12,
      "sessions": 5,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 4,
      "shares_total": 6,
      "kfactor_total": 1.5,
      "videos": [
        {
          "videoId": "dQw4w9WgXcQ",
          "n": 7,
          "likes": 3,
          "shares": 3,
          "kfactor": 1,
          "verdict": "VERDE",
          "reason": "k-factor >= 1: viral, el mercado lo aprueba solo"
        },
        {
          "videoId": "metrics-domain",
          "n": 3,
          "likes": 1,
          "shares": 1,
          "kfactor": 1,
          "verdict": "VERDE",
          "reason": "k-factor >= 1: viral, el mercado lo aprueba solo"
        },
        {
          "videoId": "e2e-prod",
          "n": 2,
          "likes": 0,
          "shares": 2,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "VERDE",
      "reason": "k-factor >= 1: viral, el mercado lo aprueba solo → bancarrota técnica",
      "action": {
        "tipo": "bancarrota_tecnica",
        "comando_sugerido": "Redactar specs y andamiaje de youtube-test en stack central (React + FastAPI + PostgreSQL)",
        "detalle": "Congelar mutaciones del trash code; reescribir bajo Clean Architecture."
      }
    },
    {
      "app": "voz-emoji",
      "total": 8,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de voz-emoji, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "jumper",
      "total": 3,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "jumper",
          "n": 3,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de jumper, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "kit-chat-demo",
      "total": 3,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 3,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de kit-chat-demo, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "meeting-express",
      "total": 3,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 3,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de meeting-express, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "zipcall",
      "total": 3,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 3,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "AMARILLO",
          "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear"
        }
      ],
      "verdict": "AMARILLO",
      "reason": "con datos pero sin señal fuerte ni de muerte ni de ascenso → monitorear",
      "action": {
        "tipo": "ab_test",
        "comando_sugerido": "Mutar el componente problemático de zipcall, desplegar versión B y enrutar 50%",
        "detalle": "Al día siguiente evaluar cuál convirtió mejor y descartar la perdedora."
      }
    },
    {
      "app": "cytu-be",
      "total": 2,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 2,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "NEUTRO",
      "reason": "sin señal (total < 3)",
      "action": {
        "tipo": "esperar",
        "comando_sugerido": "Sembrar tráfico a cytu-be y medir 72h antes de decidir",
        "detalle": "Sin datos no hay veredicto. El QA es el mercado."
      }
    },
    {
      "app": "jitsi",
      "total": 2,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 2,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "NEUTRO",
      "reason": "sin señal (total < 3)",
      "action": {
        "tipo": "esperar",
        "comando_sugerido": "Sembrar tráfico a jitsi y medir 72h antes de decidir",
        "detalle": "Sin datos no hay veredicto. El QA es el mercado."
      }
    },
    {
      "app": "swisstransfer",
      "total": 2,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 2,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "NEUTRO",
      "reason": "sin señal (total < 3)",
      "action": {
        "tipo": "esperar",
        "comando_sugerido": "Sembrar tráfico a swisstransfer y medir 72h antes de decidir",
        "detalle": "Sin datos no hay veredicto. El QA es el mercado."
      }
    },
    {
      "app": "wbo",
      "total": 2,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 2,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "NEUTRO",
      "reason": "sin señal (total < 3)",
      "action": {
        "tipo": "esperar",
        "comando_sugerido": "Sembrar tráfico a wbo y medir 72h antes de decidir",
        "detalle": "Sin datos no hay veredicto. El QA es el mercado."
      }
    },
    {
      "app": "excalidraw",
      "total": 1,
      "sessions": 1,
      "returning_sessions": 0,
      "retention_d1_proxy": null,
      "retention_nota": "PROXY: sesiones que reaparecen en otro día / sesiones totales (el esquema no guarda alta de usuario)",
      "likes_total": 0,
      "shares_total": 0,
      "kfactor_total": 0,
      "videos": [
        {
          "videoId": "hub",
          "n": 1,
          "likes": 0,
          "shares": 0,
          "kfactor": 0,
          "verdict": "NEUTRO",
          "reason": "señal insuficiente (n < 3)"
        }
      ],
      "verdict": "NEUTRO",
      "reason": "sin señal (total < 3)",
      "action": {
        "tipo": "esperar",
        "comando_sugerido": "Sembrar tráfico a excalidraw y medir 72h antes de decidir",
        "detalle": "Sin datos no hay veredicto. El QA es el mercado."
      }
    }
  ]
}