TasteForge Video
Para el pipeline creativo independiente completo, usa taste-distillation y luego
taste-application. Esos skills de ECC envían sus 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. Este skill 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 metraje 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 empaquetado de ECC.
Cuándo Usar
- El usuario pide entrevistar para el gusto de video antes de que se haya creado cualquier metraje ("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 (¿los metadatos están completos, el esquema es válido, la cadencia medida, la especificación destilada?).
- El usuario quiere aplicar un paquete de estilo al metraje local — planificar un corte a partir de la cadencia medida del paquete sobre clips locales, de forma determinista.
- El usuario quiere exportar EDL/FCPXML — una entrega editable y de fotograma exacto para DaVinci Resolve / Premiere / Final Cut.
- El usuario solicita 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 simulación.
- El usuario pide descubrir o planificar salidas de activos multimodales basadas en archivos para imágenes, video o 3D a partir de archivos de referencia locales, incluidos manifiestos separados, efectos CV anclados a sujetos 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 destilación/aplicación o una entrevista de gusto para video.
Operaciones Deterministas Locales vs Generación por Proveedor
Este límite es el núcleo de este skill de compatibilidad. Sus operaciones son locales, deterministas y offline:
| Operación | ¿Determinista? | ECC puede ejecutar |
|---|---|---|
| Entrevista de gusto → perfil | sí (offline) | sí |
| Inspección/validación de paquete contra esquemas | sí | sí |
| Destilación de perfil (+ base medida) → especificación | sí (semántica de simulación) | sí |
| Aplicar cadencia de paquete a medios locales → informe + línea de tiempo | sí | sí |
| Exportar EDL (CMX3600) / FCPXML 1.9 | sí | sí |
| Informe de procedencia/linaje | sí | sí |
| Destilación de imágenes por modelo de visión | generación por proveedor | no |
| Referencia a video, imagen a 3D, composición alojada | generación por proveedor | no |
La generación por proveedor debe fallar de forma cerrada en ECC. Cualquier llamada en vivo de Fal (u otro
proveedor) — generar tomas, crear mallas de accesorios, destilación VLM alojada
— requiere una ejecución explícita y autorizada por separado 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 (incluida FAL_KEY), no sube medios y no muta
el estado de la cuenta del proveedor. Cuando una solicitud necesita generación por 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 simulación (aparecen dentro de los metadatos del paquete) es solo referencia: nunca significa que un flujo de trabajo del lado del proveedor se haya guardado, persistido o esté autorizado para ejecutarse. Cualquier cosa producida offline lleva semántica de simulación — di "especificación de simulación" 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 de 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 residen 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 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 de generación de medios opt-in de ECC con sus propios
requisitos de Python. Ninguna de las dos 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
demuestran que el checkout de Python seleccionado implemente este contrato.
Encadenamiento de los Skills Creativos
| 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 simulación y plan de cadencia |
| Edición y efectos | video-editing, con el renderizador elegido como Remotion, Manim o Fusion | Metraje aplicado, pistas reales, efectos y línea de tiempo editables |
| Activos generados opcionales o voz | 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 exacta de exportación y distribución revisada |
Usa solo las etapas que el proyecto necesita. La paleta histórica angelcore/cloud-trance del skill taste y la gramática de ritmo son ejemplos creativos
opcionales; no deben anular el resumen 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 estos skills ni requiere cada renderizador.
Mantén los materiales 3D, la geometría, el comportamiento de la malla alámbrica,
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 de sujeto nombra un
requisito de seguimiento; no es evidencia de que un sujeto fue detectado o rastreado.
Inspecciona las pistas reales, el comportamiento de pérdida de pista y los fotogramas de sujeto renderizados antes de
afirmar que los efectos CV se han aplicado de manera confiable.
Flujo de Trabajo
- Entrevista (
interview): recoge respuestas para los ejes de aspecto — paleta, grano, iluminación, distancia focal, movimiento de cámara, encuadre de sujeto, etalonaje, adjetivos de estado de ánimo, lista de evitar — y por separado el resumen de contenido. Mantén el aspecto y el contenido separados; fusionarlos es el fracaso 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 proporciona un paquete. El resultado es una especificación de simulación: 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 de fotograma exacto. - Exportar (
export): escribe EDL CMX3600 + FCPXML 1.9 con tiempos racionales y seguros para NTSC para importar en un NLE real. - Auditar (
provenance): informa el linaje — resúmenes de fuente recuperada, historial de generación, procedencia de fixtures, referencias de proveedor como registros de solo puntero.
Aplicar Metraje Real Sin Fuentes Repetidas
Cuando el resumen requiere que no haya clips repetidos, usa un checkout canónico que admita
apply --no-repeat --fps y establece la tasa 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 fuente normalizada
como máximo una vez en orden de 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 metraje, 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 tasa de fotogramas de salida.
La CLI de exportación espera {"clips": [...]}. Envuelve los timeline_events
de la aplicación bajo clips antes de exportar y pasa el mismo --fps
usado para la aplicación; la tasa de fotogramas predeterminada de exportación no debe reconformar el plan.
Verifica el recuento de eventos emitidos, fotogramas totales, fuentes únicas y vinculación 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 append exitosa por sí sola no prueba que cada efecto programado
se haya colocado; rechaza ubicaciones 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 simulación para salidas de imágenes, video 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 imagen, video 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 ancla 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 de forma cerrada. Cada efecto lleva restricciones de colocación que
preservan rostros y texto legible y evitan que las mallas decorativas de esquina
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 es
invá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 deben 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 este tipo debe ser un real finito: rechaza
true, false, NaN, infinitos, inicios de eventos negativos, duraciones no positivas,
tiempos de evidencia fuera de rango y eventos que terminan más allá de la línea de tiempo
finita positiva 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 es inválido. Cada source_duration de evidencia de efecto y cada
source_duration de ancla 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
SHA-256. Si la fuente muta durante la sonda o se vuelve a hashear de manera diferente mientras
todavía está disponible, falla de forma cerrada en lugar de emitir o aceptar un recibo.
Ejecuta siempre la validación del paquete después de la creación. Un manifiesto faltante de imagen, video o activo 3D
debe fallar de forma cerrada. Los géneros genéricos o duplicados, las programaciones periódicas,
los efectos CV sin anclaje, las restricciones de colocación faltantes, las banderas de ejecución de proveedor,
los archivos de salida no vinculados, la deriva de tamaño de bytes o la manipulación de
SHA-256 deben fallar de forma cerrada. Rechaza las raíces de salida, los intermedios o los artefactos
que sean enlaces simbólicos y rechaza los archivos especiales (incluyendo FIFOs y dispositivos); las salidas deben seguir siendo archivos
regulares bajo un árbol de directorios real. Si ffmpeg o ffprobe local no está disponible, la
CLI debe devolver su error de procesamiento de medios local acotado no nulo sin un
rastreo de Python. No repares un recibo fallido eliminando evidencia o
debilitando la validación.
Ejemplo de Sesión
# después de instalar el motor ECC; las rutas a continuación son tus entradas de proyecto
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashethereal
…
[truncado para la traducción]