{
  "flow_id": "TEST_RESCUE_LADDER",
  "created_at": "2026-05-09T21:19:54.885185+00:00",
  "input_start": {
    "product": "TestRescue",
    "video_url": "https://example.com/fake.mp4",
    "timestamp": "2026-05-09T21-30-00Z",
    "flow": "escalado_formatos"
  },
  "sections": {
    "descargar": {
      "dry_run": true,
      "url": "https://example.com/fake.mp4",
      "video_path": "C:\\Users\\ferna\\proyecto cero\\_factory_3d_demo\\_runs\\TEST_RESCUE_LADDER\\video_FAKE.mp4",
      "size_kb": 1234,
      "note": "DRY · no se descargó archivo real",
      "retry_feedback_applied": "\n[RESCUE MASTER-H3 · descargar] Las 3 hipótesis QC fallaron. Break inicial: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis cross-flow 3: el contrato del supervisor de la estación está roto vs la realidad del input concreto. Re-lee el PDF base de la estación y la sección de la caja, decide si el output actual realmente cumple el espíritu del PDF, y si sí, marca la sección con override_supervisor_reason=\"<por qué pasa el espíritu del PDF aunque no la letra>\" para que el supervisor apruebe."
    },
    "_rescue_descargar": {
      "level_resolved": null,
      "winning_hypothesis": null,
      "initial_break": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca",
      "qc_attempts": [
        {
          "hypothesis": {
            "id": "qc_descargar_1",
            "level": "qc",
            "idea": "[QC raíz 1] PARÁMETROS — descargar con valores demasiado agresivos",
            "feedback": "\n[RESCUE QC-H1 · descargar] El intento estándar falló: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis raíz 1 (PARÁMETROS): los parámetros usados son demasiado agresivos. Reintenta con valores conservadores y timeout x2 sobre el default. NO cambies de herramienta, NO cambies de input — solo afloja parámetros."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        },
        {
          "hypothesis": {
            "id": "qc_descargar_2",
            "level": "qc",
            "idea": "[QC raíz 2] HERRAMIENTA — la herramienta usada en descargar no aplica al caso",
            "feedback": "\n[RESCUE QC-H2 · descargar] El intento estándar falló: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis raíz 2 (HERRAMIENTA): la herramienta primaria no aplica a este caso concreto. Cambia a la alternativa documentada en el PDF de la estación (segundo método declarado). NO toques parámetros — solo cambia de método."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        },
        {
          "hypothesis": {
            "id": "qc_descargar_3",
            "level": "qc",
            "idea": "[QC raíz 3] INPUT — el input que recibe descargar está mal formateado",
            "feedback": "\n[RESCUE QC-H3 · descargar] El intento estándar falló: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis raíz 3 (INPUT): el input que recibe la estación viene mal formateado / con caracteres raros / encoding inconsistente. Normaliza/valida input (strip, ASCII safe, schema check) ANTES de invocar la herramienta. Mismo método y parámetros que el intento estándar."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        }
      ],
      "master_attempts": [
        {
          "hypothesis": {
            "id": "master_descargar_1",
            "level": "master",
            "idea": "[MASTER raíz 1] CROSS-FLOW — el fallo no está en descargar, viene de aguas arriba",
            "feedback": "\n[RESCUE MASTER-H1 · descargar] Las 3 hipótesis QC fallaron. Break inicial: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis cross-flow 1: el problema NO es de esta estación, viene de una estación previa que dejó datos malos en la caja. Lee caja.sections completa, identifica qué sección previa parece corrupta, y rehaz descargar usando un input reconstruido a partir de input_start (no de la sección previa)."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        },
        {
          "hypothesis": {
            "id": "master_descargar_2",
            "level": "master",
            "idea": "[MASTER raíz 2] FALLBACK GLOBAL — saltar descargar con modo degradado",
            "feedback": "\n[RESCUE MASTER-H2 · descargar] Las 3 hipótesis QC fallaron. Break inicial: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis cross-flow 2: usa el FALLBACK a nivel flow para esta estación. Genera el output mínimo viable de la sección (cache previo, mock canónico, valores por defecto razonables) marcado con flag degraded_mode=True para que estaciones siguientes lo sepan, y sigue."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        },
        {
          "hypothesis": {
            "id": "master_descargar_3",
            "level": "master",
            "idea": "[MASTER raíz 3] CONTRATO — el supervisor de descargar aplica criterios incorrectos",
            "feedback": "\n[RESCUE MASTER-H3 · descargar] Las 3 hipótesis QC fallaron. Break inicial: SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca.\nHipótesis cross-flow 3: el contrato del supervisor de la estación está roto vs la realidad del input concreto. Re-lee el PDF base de la estación y la sección de la caja, decide si el output actual realmente cumple el espíritu del PDF, y si sí, marca la sección con override_supervisor_reason=\"<por qué pasa el espíritu del PDF aunque no la letra>\" para que el supervisor apruebe."
          },
          "result": "FAIL",
          "detail": "SUP_BREAK · BREAK_FORCED_FOR_TEST · monkeypatch · simula sub-agente que no resuelve nunca"
        }
      ],
      "fer_pinged": true,
      "ts": "2026-05-09T21:19:54.925183+00:00"
    }
  },
  "history": [
    {
      "ts": "2026-05-09T21:19:54.890202+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 260
    },
    {
      "ts": "2026-05-09T21:19:54.898122+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 623
    },
    {
      "ts": "2026-05-09T21:19:54.904118+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 628
    },
    {
      "ts": "2026-05-09T21:19:54.909210+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 674
    },
    {
      "ts": "2026-05-09T21:19:54.914238+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 721
    },
    {
      "ts": "2026-05-09T21:19:54.919362+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 692
    },
    {
      "ts": "2026-05-09T21:19:54.925183+00:00",
      "actor": "descargador-video",
      "section": "descargar",
      "mode": "replace",
      "bytes_after": 808
    },
    {
      "ts": "2026-05-09T21:19:54.925183+00:00",
      "actor": "rescue-ladder",
      "section": "_rescue_descargar",
      "mode": "replace",
      "bytes_after": 4564
    }
  ]
}