{
  "skill_name": "visual-director",
  "evals": [
    {
      "id": 10,
      "name": "pieza-audiovisual-master-inmutable",
      "prompt": "Usa la skill de dirección visual que te he indicado para esta prueba. Tengo una canción ficticia llamada «Respiro», con un máster de 28 s que no quiero tocar: nada de SFX ni voces añadidas, y el audio original se conserva tal cual. Como fuente te declaro solo la letra con rangos estimados: 1–5 «Salgo a la calle temprano», 5–9 «Todo corre, yo respiro», 9–15 «Nadie me espera en la esquina» y 15–20 «Todo corre, yo respiro», con un cierre instrumental de 20 a 28. Quiero que me propongas una pieza audiovisual para héroe en móvil y escritorio, sin interfaz y sin generación de vídeo obligatoria, con el texto normalmente como subtítulos y solo de vez en cuando en grande, incluyendo una vuelta del estribillo y un método abierto pero mínimo, sin motor impuesto. Había pensado si bastaba con un clip de 18 s, pero prefiero que la propuesta cubra la canción entera y respire con ella; me interesa que conecte significado, emoción y gesto, y que me expliques cómo se ordenan las señales visuales por importancia en lugar de animar cada pulso. Los derechos de fondo y audio están declarados por mi parte, aunque no te adjunto los archivos, así que déjalo anotado y sigue con la propuesta. Solo propuesta: no instales nada, no escribas código y no renderices.",
      "expected_output": "Contrato esperado: reconoce una pieza audiovisual sobre un máster de canción declarado, de 28 s e inmutable, y no altera, recorta, alarga ni reemplaza el audio original; conserva el máster y no añade SFX ni voz extra. Trabaja la letra y los rangos como fuente declarada y estimada del usuario, no como audio escuchado: no afirma haber oído la canción ni haber visto fotogramas, y no inventa medidas ni letras. Propone una secuencia con jerarquía de señales ligada al significado, la metáfora, la acción y la emoción, incluida al menos una vuelta del estribillo, y respeta la estructura declarada (1–5, 5–9, 9–15, 15–20, 20–28) y la repetición exacta de «Todo corre, yo respiro» en 5–9 y 15–20. Sitúa el texto normalmente como subtítulos y solo ocasionalmente en grande, para héroe en móvil y escritorio, sin interfaz de producto y sin depender de generación de vídeo; el método queda abierto y mínimo, sin motor, modelo ni algoritmo impuesto. Trata cámara y estilo tipográfico como abiertos (puede ser luminoso) sin copiar una receta cerrada de una referencia. Los derechos de fondo y audio quedan como declarados por el usuario sin archivos entregados, de modo que la verificación real sigue pendiente. Se queda en propuesta: no instala, no escribe código y no renderiza.",
      "files": [],
      "assertions": [
        "Conserva el máster de 28 s sin SFX ni voz extra, sin regenerar ni alterar el audio original.",
        "Cubre la canción completa, incluido el cierre instrumental de 20 a 28, sin recortarla a 18 s ni rellenar silencios.",
        "Usa la letra y los rangos como fuente declarada y estimada del usuario, sin presentarlos como transcripción o precisión de palabra y sin afirmar que ha escuchado el audio.",
        "Incluye la vuelta del estribillo como motivo con cambio de significado, emoción o metáfora, no como un fundido repetido idéntico; el contrato verifica la decisión semántica, no la calidad artística.",
        "Sitúa el texto como subtítulos con ocasionales en grande y jerarquía móvil/escritorio, sin convertir cada pico de cámara en texto ni añadir interfaz no pedida."
      ]
    },
    {
      "id": 11,
      "name": "plan-dibujo-js-clip-generado",
      "prompt": "Usa la skill de dirección visual que te he indicado para esta prueba. Tengo un clip generado de 5 s que produje antes, con permiso propio, donde la figura baila con oclusión y cambios de cámara, pero no te paso el archivo ni el enlace al modelo. El servicio solo entrega el archivo RGB, sin rig ni metadatos adicionales. Lo que quiero es una pieza final dibujada en JS, sin mostrar el clip base: me valdría un tratamiento de croquis o pixelado si encaja, con Canvas y RGBA, no un SVG forzado. Antes de lanzar un lote de unos 12 clips tengo 60 € autorizados solo para futuras generaciones, no para las herramientas actuales, y el audio congelado dura 30 s; no hace falta sincronía labial ni canto explícito. Dame solo un plan: cómo lo harías y qué probarías primero, sin instalar nada ni llamar a proveedores, y si el estilo o el encargo tienen ambigüedad, pregúntame antes de decidir.",
      "expected_output": "Contrato esperado: entiende el clip generado de 5 s como material declarado y propio del usuario, no inspeccionado. El servicio solo entrega un archivo RGB sin rig ni metadatos adicionales: eso describe los datos entregados, no una prohibición absoluta, así que el agente no debe afirmar que el RGB contiene vectores, rig o metadatos numéricos estables, y distingue los datos realmente entregados (que no ha recibido) de los datos que podrían estimarse o escribirse a mano más adelante. Propone una pieza final dibujada en JS/Canvas con RGBA (croquis o pixelado), sin mostrar el clip base, sin imponer SVG ni un motor o modelo concreto, y concreta qué puente o tratamiento funciona en lugar de una QA genérica de «renderizar primero». Trata el seguimiento manual, la inferencia y el proxy previo como opciones legítimas pendientes de calidad y capacidades, sin prohibir intentar extraer o seguir bajo un permiso futuro, y plantea la oclusión y el cambio de cámara como el riesgo a descubrir en un prototipo, no como algo ya resuelto por palabras. Presenta un plan antes del lote, distingue los 60 € autorizados solo para futuras generaciones de las herramientas actuales, mantiene el audio congelado de 30 s con sincronía labial opcional y sin canto explícito, no instala ni llama a proveedores y pregunta ante ambigüedad; no declara cerrado nada sin archivos.",
      "files": [],
      "assertions": [
        "Trata el RGB como único dato entregado, sin afirmar que incluya rig, poses o vectores, y admite estimación o seguimiento manual como legítimos condicionados a incertidumbre, sin inventar datos.",
        "Elige un puente compatible con el dibujo JS declarado en Canvas/RGBA y aclara su encaje, sin imponer SVG ni un motor o proveedor concreto.",
        "Propone un prototipo representativo antes del lote que pruebe oclusión, cambio de cámara e identidad con sincronía, sin declarar un éxito mágico.",
        "Mantiene el alcance del audio congelado de 30 s y no extiende el lote de 12×5 s ni lo convierte en una pista silenciosa.",
        "Distingue los 60 € autorizados solo para futuras generaciones de llamadas actuales, no instala ni llama a proveedores, no finge inspección visual y no exige comprobar un saldo real de cuenta."
      ]
    },
    {
      "id": 12,
      "name": "revision-export-cache-fps",
      "prompt": "Usa la skill de dirección visual que te he indicado para esta prueba. Estoy cerrando la exportación de una pieza programática y quiero tu revisión sin que ejecutes nada: el productor reporta jitter de 12 Hz y que la estilización y los seeks se asignaron a 24 FPS, mientras que el JPEG anterior quedó cacheado a 24. Hemos cambiado código y estilo y ahora pedimos 30 FPS, y el archivo que reporta el productor quedó a 24. En la última salida, la consola decía «wrote», pero el proceso hijo terminó con estado distinto de cero y el archivo quedó parcial. No te paso el archivo ni la traza real, solo los estados reportados. ¿Puedo darlo por cerrado y reutilizar el JPEG, o qué revisarías primero? Quiero una propuesta de revisión y qué habría que comprobar más adelante, sin implementar un renderizador nuevo.",
      "expected_output": "Contrato esperado: deduce que no puede dar el cierre por bueno ni aprobar reutilizar el JPEG, porque el estado de salida distinto de cero y el archivo parcial invalidan la prueba de salida, y el mensaje de consola («wrote») no es evidencia. Como no hay archivo ni traza real, no existe un estado medido que comparar con el objetivo de 30 FPS: la verificación queda pendiente y no pasada, sin afirmar una cadencia real y sin forzar 12 FPS. Protege el mapa de FPS, la coherencia de caché y la invalidación: el caché a 24 frente a los 30 pedidos obliga a invalidar fotogramas y estilo tras el cambio de código y estilo, sin exigir un hash obligatorio por fuente. Una vista previa no es el resultado real y un error de código no permite aprobar; la respuesta deduce esto en lugar de repetir una lección del usuario. Propone la revisión sin ejecutar y distingue estados reportados de hechos verificados.",
      "files": [],
      "assertions": [
        "No acepta el cierre ni reutiliza el JPEG con «wrote» más salida distinta de cero y archivo parcial.",
        "Invalida los conjuntos afectados al cambiar código o estilo y la identidad de parámetro 24→30, permitiendo opcionalmente firma/hash o ajuste de configuración, sin exigir un libro de hashes obligatorio ni reconstrucción total si los conjuntos son separables.",
        "Distingue los 12 Hz de estilo de los FPS entregados (24) y del objetivo (30), y no usa interpolación para simular calidad de captura.",
        "Antes de un cierre futuro, propone comprobar salida completa decodificable, continuidad de frames/stream, duración y FPS esperados. El mapeo de audio se comprueba cuando el encargo incluye audio; no se exige para aprobar la propuesta de un encargo que no lo especifica.",
        "Separa estados reportados de hechos comprobados, sin inspeccionar un archivo real ni implementar un renderizador nuevo."
      ]
    }
  ]
}
