TasteForge Video
Para el pipeline creativo independiente completo, usa taste-distillation y luego
taste-application. Esas habilidades de ECC incluyen sus propios scripts de Python directamente:
medir referencias, generar o pasar tomas existentes, etalonar, cortar,
componer, verificar y entregar a Blender y Resolve. No se requiere un repositorio de video
separado para ese flujo. Esta habilidad documenta el motor offline empaquetado de ECC y su estricto contrato de evidencia.
TasteForge convierte "haz que se sienta como esta referencia" en un flujo de trabajo repetible
e inspeccionable: entrevistar el gusto, destilarlo en un paquete de estilo
estructurado, validar el paquete, aplicar su cadencia y aspecto medidos al material local
y exportar una línea de tiempo editable. La implementación canónica es el
paquete tasteforge enviado dentro de ECC en
skills/taste-application/scripts/tasteforge/. Ito-Markets/ito-video es un
proyecto de ejemplo que consume el motor ECC empaquetado.
Cuándo Usar
- El usuario pide entrevistar para gusto de video antes de que se haga cualquier material ("pregúntame sobre el aspecto", "entrevístame sobre la dirección estética").
- El usuario quiere destilar una estética en restricciones estructuradas — un paquete de estilo reutilizable en lugar de sensaciones ("convierte estas referencias en un paquete").
- El usuario quiere validar un paquete de estilo (¿están los metadatos completos, esquema válido, cadencia medida, especificación destilada?).
- El usuario quiere aplicar un paquete de estilo a material local — planificar un corte a partir de la cadencia medida del paquete sobre los clips locales, de manera determinista.
- El usuario quiere exportar EDL/FCPXML — una entrega editable y exacta en fotogramas a DaVinci Resolve / Premiere / Final Cut.
- El usuario pide una auditoría de procedencia de medios generados — de dónde vino este paquete, especificación o corte; qué se midió localmente versus qué fue generado por un proveedor; qué fue una prueba en seco.
- El usuario pide descubrir o planificar salidas de activos multimodales de imágenes, video o 3D a partir de archivos de referencia locales, incluidos manifiestos separados, efectos de CV anclados al sujeto o recetas de efectos de Resolve.
- El usuario menciona TasteForge, paquetes de estilo, flashethereal, destilación de gusto, planificación de cadencia/ritmo, descubrimiento multimodal, flujos de trabajo de destilación/aplicación o una entrevista de gusto para video.
Operaciones Deterministas Locales vs Generación del Proveedor
Este límite es el núcleo de esta habilidad de compatibilidad. Sus operaciones son locales, deterministas y offline:
| Operación | ¿Determinista? | ECC puede ejecutar |
|---|---|---|
| Entrevista de gusto → perfil | sí (offline) | sí |
| Inspeccionar/validar paquete contra esquemas | sí | sí |
| Destilar perfil (+ base medida) → especificación | sí (semántica de prueba en seco) | sí |
| Aplicar cadencia del paquete a material local → informe + línea de tiempo | sí | sí |
| Exportar EDL (CMX3600) / FCPXML 1.9 | sí | sí |
| Procedencia / informe de linaje | sí | sí |
| Destilación de imágenes por modelo de visión | generación del proveedor | no |
| De referencia a video, imagen a 3D, composición alojada | generación del proveedor | no |
La generación del proveedor debe fallar cerrada en ECC. Cualquier llamada en vivo a Fal (u otro
proveedor) — generación de tomas, creación de mallas de accesorios, destilación VLM
alojada — requiere una ejecución explícita y separada autorizada bajo un
carril separado con su propia revisión. En este carril de compatibilidad, ECC nunca llama a Fal, nunca lee ninguna clave
API u otras credenciales (incluyendo FAL_KEY), no sube ningún medio y no muta
ningún estado de cuenta del proveedor. Cuando una solicitud necesita generación del proveedor, indica
exactamente ese límite, ejecuta la mitad local (entrevista, validación de paquete,
planificación, exportación) y detente.
Nunca afirmes que un flujo de trabajo de Fal está guardado. Una referencia local a un endpoint de Fal, ID de modelo o URL de prueba en seco (aparecen dentro de los metadatos del paquete) es solo de referencia: nunca significa que se haya guardado, persistido o autorizado un flujo de trabajo del lado del proveedor. Cualquier cosa producida offline tiene semántica de prueba_en_seco/dry_run — di "especificación de prueba en seco" o "plan determinista", nunca "generado por el modelo".
Implementación Canónica
- Repositorio:
affaan-m/ECC; distribución de Pythonecc-tasteforge, directorio del paqueteskills/taste-application/scripts/tasteforge/. Instala desde el paquete ECC extraído conpython3 -m pip install ./skills/taste-application/scripts. El proyecto de ejemploIto-Markets/ito-videofija un commit específico de ECC. - CLI:
python3 -m tasteforge <comando>—provenance,inspect,validate,interview,distill,apply,export,multimodal. Las banderas--livesalen con código 2 y se niegan. - Los esquemas son el contrato: perfil de gusto, manifiesto del paquete, etalonaje, cadencia,
especificación, eventos de línea de tiempo, informes de aplicación (
providerestá bloqueado por enum a"none";dry_runatrue). - El linaje de fuente recuperada y las exclusiones deliberadas viven en
skills/taste-application/SOURCE.mddel repositorio. Ejecutapython3 -m tasteforge provenancepara la versión legible por máquina.
Usa el motor ECC instalado para comandos deterministas locales e interpreta
su JSON. Instala el motor empaquetado si está ausente; no reconstruyas su lógica
en línea. taste.resolve es una importación de compatibilidad de tasteforge.resolve, por lo que
los scripts creativos y el proyecto de ejemplo comparten un adaptador de Resolve verificado.
La CLI python3 -m tasteforge usa la distribución ecc-tasteforge instalada. Los scripts independientes taste-distillation y taste-application
se envían en el módulo opcional de generación de medios de ECC con sus propios requisitos
de Python. Ninguna de las rutas requiere publicar el repositorio o los medios del usuario.
Antes de reanudar un checkout guardado, registra su commit e inspecciona las ramas locales
y los árboles de trabajo para futuras correcciones de implementación. Ejecuta las pruebas del paquete canónico
y python3 -m tasteforge apply --help; las pruebas de texto y fixture de ECC no
prueban que el checkout de Python seleccionado implemente este contrato.
Encadenando las Habilidades Creativas
| Etapa | Propietario | Resultado revisable |
|---|---|---|
| Dirección creativa | taste | Géneros nombrados, observaciones de referencia, lista de aspecto elegido y evitar |
| Destilación y planificación | tasteforge-video | Evidencia medida, especificaciones de género separadas, manifiestos de prueba en seco y plan de cadencia |
| Edición y efectos | video-editing, con el renderizador elegido como Remotion, Manim o Fusion | Material aplicado, pistas reales, efectos editables y línea de tiempo |
| Activos o voz generados opcionalmente | fal-ai-media o el flujo de trabajo de audio seleccionado, bajo su propia autorización | Recibo del proveedor y salida inspeccionada |
| Entrega | Flujo de trabajo de edición, luego content-engine cuando se solicite | Copia de exportación exacta revisada y distribuida |
Usa solo las etapas que el proyecto necesite. La paleta angelcore/cloud-trance histórica de la habilidad taste y su gramática de ritmo son ejemplos creativos opcionales;
no deben anular el briefing actual ni fusionar géneros numerados distintos.
Usa las referencias reales de cada género para su dirección, incluyendo 3D Cyber Glitch
y Fluid Sketch. TasteForge no reemplaza estas habilidades ni requiere cada renderizador.
Mantén los materiales 3D, la geometría, el comportamiento de la malla,
el movimiento y la composición explícitos en la firma del género. Un manifiesto de solicitud 3D
es un plan para un activo; no es una malla. Un descriptor de anclaje del sujeto nombra un
requisito de seguimiento; no es evidencia de que se haya detectado o rastreado a un sujeto.
Inspecciona las pistas reales, el comportamiento de pérdida de pista y los fotogramas renderizados del sujeto antes de
afirmar que los efectos CV se han aplicado de manera confiable.
Flujo de Trabajo
- Entrevista (
interview): recopila respuestas para los ejes de aspecto — paleta, grano, iluminación, distancia focal, movimiento de cámara, encuadre del sujeto, etalonaje, adjetivos de estado de ánimo, lista de evitar — y por separado el briefing de contenido. Mantén el aspecto y el contenido separados; fusionarlos es el fallo clásico. - Destilar (
distill): mapea el perfil en el esquema de especificación offline, incrustando la base medida del paquete (punto negro/blanco, contraste, croma por zona, paleta, ritmo de corte) cuando se suministra un paquete. El resultado es una especificación de prueba en seco: determinista, proveedor"none". - Validar (
validate/inspect): verifica el paquete contra sus esquemas; informa errores vs advertencias (faltan imágenes fijas en un paquete solo de metadatos son una advertencia, no un error). - Aplicar (
apply): planifica las duraciones de las tomas a partir de la cadencia medida del paquete (sembrada, determinista) sobre los clips locales del usuario; produce el informe de aplicación y los eventos de línea de tiempo exactos en fotogramas. - Exportar (
export): escribe EDL CMX3600 + FCPXML 1.9 con tiempos racionales, seguros para NTSC para su importación en un NLE real. - Auditar (
provenance): informa el linaje — resúmenes de fuente recuperada, historial de generación, procedencia de fixtures, referencias de proveedores como registros solo de puntero.
Aplicando Material Real Sin Fuentes Repetidas
Cuando el briefing requiere que no haya clips repetidos, usa un checkout canónico que admita
apply --no-repeat --fps y establece la velocidad de fotogramas de salida explícitamente. Si esas banderas
están ausentes, informa la brecha de implementación en lugar de usar silenciosamente la
selección round-robin heredada. El modo estricto usa cada ruta de origen normalizada como máximo
una vez en el orden del manifiesto y rechaza fuentes insuficientes o demasiado cortas.
Prepara suficientes selecciones revisadas para llenar el plan de cadencia. Esto es unicidad
a nivel de fuente, no soporte para rangos de entrada/salida distintos de la misma grabación.
El informe de aplicación es un plan de corte. No realiza clasificación visual de tomas, etalonaje de material, aplicación de LUT, renderizado de superposiciones ni importación de un proyecto de Resolve. Mantén la cadencia de referencia medida del paquete separada de la velocidad de fotogramas de salida.
La CLI de exportación espera {"clips": [...]}. Envuelve los
eventos de línea de tiempo de la aplicación bajo clips antes de exportar y pasa el mismo --fps
utilizado para la aplicación; la velocidad de fotogramas predeterminada de exportación no debe reconformar el plan.
Verifica el recuento de eventos emitidos, los fotogramas totales, las fuentes únicas y el enlace de medios
antes de entregar la línea de tiempo al flujo de trabajo de edición.
Cuando ese flujo de trabajo aplica efectos superpuestos en un NLE, asigna pistas
compatibles y lee cada inicio, fin y duración solicitados. Un elemento devuelto
o una llamada de append exitosa por sí sola no prueba que cada efecto programado
se haya colocado; rechaza colocaciones faltantes, desplazadas o truncadas antes de renderizar.
Contrato Multimodal Basado en Archivos
Usa esta ruta cuando las referencias locales deben impulsar planes de generación de prueba en seco para salidas de imágenes, videos y activos 3D mientras se preserva la separación de géneros:
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
El config nombra géneros numerados y archivos de evidencia locales. Mantén estos géneros candidatos distintos en lugar de fusionarlos en una estética genérica:
- Flash Ethereal
- 3D Cyber Glitch
- Fluid Sketch
El comando mide las referencias locales con ffprobe/ffmpeg y emite una especificación de estilo
por género, manifiestos separados de imágenes, videos y activos 3D, procedencia y
una receta de efectos de Resolve. La programación de efectos debe ser sembrada aperiódica. Los efectos
CV requieren un anclaje de sujeto real cuya política exacta de pérdida de pista sea
disable_effect_until_track_recovers; continue_without_anchor y todas las demás
políticas fallan cerradas. Cada efecto lleva restricciones de colocación que
preservan los rostros y el texto legible y evitan que las mallas de esquina decorativas
reemplacen el trabajo 3D a fotograma completo.
El recibo devuelto es el límite del paquete. Vincula cada artefacto de evidencia emitido
por ruta relativa, tamaño en bytes, SHA-256, género, modalidad,
provider_execution:false y procedencia exacta de referencia/tiempo. El recibo
requiere provider_calls:0 como un entero exacto (el booleano JSON false no es
válido), provider_execution:false y dry_run:true. Cada especificación de género también
requiere dry_run:true explícito. La receta de efectos de Resolve requiere ese mismo
entero exacto provider_calls:0, provider_execution:false y dry_run:true.
Cada manifiesto de modalidad y cada solicitud anidada debe contener los cuatro campos exactos de
fallo cerrado: entero provider_calls:0, provider_execution:false,
dry_run:true y submit:false; cada solicitud también requiere
provider_call_mode:"disabled". Un campo faltante es un rechazo, no un valor predeterminado,
y dry_run:false debe ser rechazado antes de que se escriba la salida.
Trata los booleanos como números inválidos en todos los datos de línea de tiempo, evidencia, sonda y
duración de fuente. Cada valor numérico de ese tipo debe ser un real finito: rechaza
true, false, NaN, infinitos, inicios de evento negativos, duraciones no positivas,
tiempos de evidencia fuera de rango y eventos que terminan más allá de la línea de tiempo positiva finita
declarada. La evidencia de archivo completo usa una base de tiempo de archivo completo explícita
y nunca inventa marcas de tiempo.
Las referencias del recibo son la autoridad de duración. Clave cada duración de referencia validada
por su SHA-256 citado; las ocurrencias duplicadas de un resumen deben coincidir en
la duración o el paquete no es válido. Cada source_duration de evidencia de efecto
cada source_duration de anclaje de sujeto debe ser igual a la duración del recibo validado
de ese resumen, no solo contener su tiempo citado. La duración de la sonda y todas las mediciones de la sonda
deben describir los mismos bytes estables utilizados para el recuento de bytes y el SHA-256.
Si la fuente muta durante la sonda o se rehace de manera diferente mientras aún
está disponible, falla cerrado en lugar de emitir o aceptar un recibo.
Siempre ejecuta la validación del paquete después de la creación. Un manifiesto faltante de imagen, video o activo 3D
debe fallar cerrado. Géneros genéricos o duplicados, programaciones periódicas, efectos CV
sin anclaje, restricciones de colocación faltantes, banderas de ejecución del proveedor,
archivos de salida no vinculados, desviación de tamaño de bytes o manipulación de SHA-256 deben fallar
cerrado. Rechaza raíces de salida, intermediarios o artefactos que sean enlaces simbólicos,
y rechaza archivos especiales (incluyendo FIFOs y dispositivos); las salidas deben permanecer como archivos
regulares bajo un árbol de directorios real. Si ffmpeg o ffprobe local no está disponible, la
CLI debe devolver su error acotado no nulo de procesamiento de medios local sin un
traceback de Python. No repares un recibo fallido eliminando evidencia o
debilitando la validación.
Sesión de Ejemplo
# después de instalar el motor ECC; las rutas a continuación son tus entradas del proyecto
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashetherea
…
[truncado para la traducción]