TasteForge Vidéo
Pour la pipeline créative autonome complète, utilisez taste-distillation puis
taste-application. Ces compétences ECC embarquent leurs scripts Python directement :
mesurent les références, génèrent ou transmettent les prises existantes, étalonnent,
coupent, compositent, vérifient et remettent à Blender et Resolve. Aucun dépôt vidéo
séparé n'est requis pour ce flux. Cette compétence documente le moteur hors ligne packagé
d'ECC et son contrat de preuve strict.
TasteForge transforme "rends-le comme cette référence" en un workflow reproductible
et inspectable : interviewe le goût, le distille en un pack de style structuré,
valide le pack, applique sa cadence et son aspect mesurés aux médias locaux,
et exporte une timeline éditable. L'implémentation canonique est le
package tasteforge livré dans ECC à
skills/taste-application/scripts/tasteforge/. Ito-Markets/ito-video est un
exemple de projet qui consomme le moteur ECC packagé.
Quand l'utiliser
- L'utilisateur demande à interviewer pour le goût vidéo avant qu'aucune séquence ne soit réalisée ("interroge-moi sur le look", "interroge-moi sur la direction esthétique").
- L'utilisateur souhaite distiller une esthétique en contraintes structurées — un pack de style réutilisable plutôt que des vibes ("transforme ces références en pack").
- L'utilisateur souhaite valider un pack de style (les métadonnées sont-elles complètes, le schéma valide, la cadence mesurée, la spécification distillée ?).
- L'utilisateur souhaite appliquer un pack de style à des séquences locales — planifier un montage à partir de la cadence mesurée du pack sur des clips locaux, de manière déterministe.
- L'utilisateur souhaite exporter EDL/FCPXML — une remise éditable, image par image, à DaVinci Resolve / Premiere / Final Cut.
- L'utilisateur demande un audit de provenance des médias générés — d'où viennent ce pack, cette spécification ou ce montage ; qu'est-ce qui a été mesuré localement par rapport à ce qui a été généré par un fournisseur ; qu'est-ce qui a été exécuté à blanc.
- L'utilisateur demande à découvrir ou planifier des sorties d'actifs multimodaux (image, vidéo ou 3D) pilotées par fichiers à partir de fichiers de référence locaux, y compris des manifests séparés, des effets CV ancrés sur un sujet, ou des recettes d'effets Resolve.
- L'utilisateur mentionne TasteForge, les packs de style, flashethereal, la distillation de goût, la planification de cadence/rythme, la découverte multimodale, les workflows de distillation/ application, ou une interview de goût pour la vidéo.
Opérations Déterministes Locales vs Génération par Fournisseur
Cette frontière est le cœur de cette compétence de compatibilité. Ses opérations sont locales, déterministes et hors ligne :
| Opération | Déterministe ? | ECC peut exécuter |
|---|---|---|
| Interview de goût → profil | oui (hors ligne) | oui |
| Inspecter / Valider le pack par rapport aux schémas | oui | oui |
| Distiller le profil (+ fondement mesuré) → spécification | oui (sémantique d'exécution à blanc) | oui |
| Appliquer la cadence du pack aux médias locaux → rapport + timeline | oui | oui |
| Exporter EDL (CMX3600) / FCPXML 1.9 | oui | oui |
| Rapport de provenance / lignée | oui | oui |
| Distillation par modèle de vision d'images fixes | génération par fournisseur | non |
| Référence-à-vidéo, image-à-3D, composition hébergée | génération par fournisseur | non |
La génération par fournisseur doit échouer dans ECC. Tout appel en direct à Fal (ou
un autre fournisseur) — génération de plans, création de maillages d'accessoires, distillation
VLM hébergée — nécessite une exécution explicitement et séparément autorisée sous une
voie distincte avec sa propre relecture. Dans cette voie de compatibilité, ECC n'appelle jamais
Fal, ne lit jamais de clé API ou d'autres identifiants (FAL_KEY inclus), ne télécharge aucun
média et ne modifie aucun état de compte fournisseur. Lorsqu'une demande nécessite une
génération par fournisseur, énoncez exactement cette frontière, exécutez la moitié locale
(interview, validation du pack, planification, exportation) et arrêtez-vous.
Ne prétendez jamais qu'un workflow Fal est sauvegardé. Une référence locale à un point de terminaison Fal, un identifiant de modèle ou une URL d'exécution à blanc (ils apparaissent dans les métadonnées du pack) est uniquement une référence : cela ne signifie jamais qu'un workflow côté fournisseur a été sauvegardé, persisté ou est autorisé à s'exécuter. Tout ce qui est produit hors ligne a la sémantique d'exécution à blanc (dry-run/dry_run) — dites "spécification à blanc" ou "plan déterministe", jamais "généré par le modèle".
Implémentation Canonique
- Dépôt :
affaan-m/ECC; distribution Pythonecc-tasteforge, répertoire du packageskills/taste-application/scripts/tasteforge/. Installez à partir du package ECC extrait avecpython3 -m pip install ./skills/taste-application/scripts. Le projet d'exempleIto-Markets/ito-videoépingle un commit ECC spécifique. - CLI :
python3 -m tasteforge <commande>—provenance,inspect,validate,interview,distill,apply,export,multimodal. Les drapeaux--livese terminent avec le code 2 et refusent. - Les schémas sont le contrat : profil de goût, manifeste du pack, étalonnage,
cadence, spécification, événements de timeline, rapports d'application (
providerest verrouillé par énumération à"none";dry_runàtrue). - La lignée des sources récupérées et les exclusions délibérées se trouvent dans
skills/taste-application/SOURCE.mddu dépôt. Exécutezpython3 -m tasteforge provenancepour la version lisible par machine.
Utilisez le moteur ECC installé pour les commandes déterministes locales et interprétez
son JSON. Installez le moteur packagé s'il est absent ; ne reconstruisez pas sa logique
en ligne. taste.resolve est une importation de compatibilité de tasteforge.resolve, de
sorte que les scripts créatifs et le projet d'exemple partagent un adaptateur Resolve vérifié.
Le CLI python3 -m tasteforge utilise la distribution ecc-tasteforge installée. Les scripts
autonomes taste-distillation et taste-application sont livrés dans le module de
génération médias optionnel d'ECC avec leurs propres dépendances Python. Aucun des deux
chemins ne nécessite la publication du dépôt ou des médias de l'utilisateur.
Avant de reprendre un checkout sauvegardé, enregistrez son commit et inspectez les branches
locales et les worktrees pour les correctifs d'implémentation ultérieurs. Exécutez les tests
du package canonique et python3 -m tasteforge apply --help ; les tests textuels et de
fixtures d'ECC ne prouvent pas que le checkout Python sélectionné implémente ce contrat.
Enchaînement des Compétences Créatives
| Étape | Propriétaire | Résultat révisable |
|---|---|---|
| Direction créative | taste | Genres nommés, observations de références, liste de looks choisis et d'évitement |
| Distillation et planification | tasteforge-video | Preuves mesurées, spécifications de genres séparés, manifests d'exécution à blanc et plan de cadence |
| Montage et effets | video-editing, avec le moteur de rendu choisi tel que Remotion, Manim ou Fusion | Séquences appliquées, pistes réelles, effets et timeline modifiables |
| Actifs ou voix générés (optionnel) | fal-ai-media ou le workflow audio sélectionné, sous sa propre autorisation | Reçu du fournisseur et sortie inspectée |
| Livraison | Workflow de montage, puis content-engine si demandé | Export révisé exact et copie de distribution |
N'utilisez que les étapes nécessaires au projet. La palette angelcore/cloud-trance
historique et la grammaire de beat de la compétence taste sont des exemples créatifs
optionnels ; elles ne doivent pas remplacer le brief actuel ni fusionner des genres numérotés
distincts. Utilisez les références réelles de chaque genre pour sa direction, y compris 3D
Cyber Glitch et Fluid Sketch. TasteForge ne remplace pas ces compétences et ne nécessite
pas tous les moteurs de rendu. Gardez les matériaux 3D, la géométrie, le comportement du
filaire, le mouvement et la composition explicites dans la signature du genre. Un manifeste
de demande 3D est un plan pour un actif ; ce n'est pas un maillage. Un descripteur d'ancrage
de sujet nomme une exigence de suivi ; ce n'est pas une preuve qu'un sujet a été détecté ou
suivi. Inspectez les pistes réelles, le comportement de perte de piste et les trames de sujet
rendues avant de prétendre que des effets CV ont été appliqués de manière fiable.
Workflow
- Interview (
interview) : collecte des réponses pour les axes de look — palette, grain, éclairage, distance focale, mouvement de caméra, cadrage du sujet, étalonnage, adjectifs d'ambiance, liste d'évitement — et séparément le brief de contenu. Gardez le look et le contenu séparés ; les fusionner est l'échec classique. - Distillation (
distill) : mappe le profil sur le schéma de spécification hors ligne, en intégrant le fondement mesuré du pack (point noir/blanc, contraste, chroma par zone, palette, rythme de coupe) lorsqu'un pack est fourni. Le résultat est une spécification à blanc : déterministe, fournisseur"none". - Validation (
validate/inspect) : vérifie le pack par rapport à ses schémas ; signale les erreurs par rapport aux avertissements (les images fixes manquantes dans un pack uniquement métadonnées sont un avertissement, pas une erreur). - Application (
apply) : planifie les durées des plans à partir de la cadence mesurée du pack (ensemencée, déterministe) sur les clips locaux de l'utilisateur ; produit le rapport d'application et les événements de timeline image par image. - Exportation (
export) : écrit EDL CMX3600 + FCPXML 1.9 avec des temps rationnels, compatibles NTSC, pour importation dans un NLE réel. - Audit (
provenance) : rapporte la lignée — condensés des sources récupérées, historique de génération, provenance des fixtures, références fournisseur en tant qu'enregistrements de type pointeur uniquement.
Application de SéQuences Réelles Sans Sources Répétées
Lorsque le brief exige qu'aucun clip ne soit répété, utilisez un checkout canonique
prenant en charge apply --no-repeat --fps et définissez explicitement la fréquence
d'images de sortie. Si ces drapeaux sont absents, signalez l'écart d'implémentation
plutôt que d'utiliser silencieusement la sélection round-robin héritée. Le mode strict
utilise chaque chemin source normalisé au plus une fois dans l'ordre du manifeste et
rejette les sources insuffisantes ou trop courtes. Préparez suffisamment de sélections
révisées pour remplir le plan de cadence. Il s'agit d'unicité au niveau de la source, pas
d'un support pour des plages d'entrée/sortie distinctes du même enregistrement.
Le rapport d'application est un plan de montage. Il n'effectue pas de classement visuel des plans, n'étalonne pas les séquences, n'applique pas de LUT, ne rend pas de superpositions et n'importe pas de projet Resolve. Gardez la cadence de référence mesurée du pack séparée du taux d'images de sortie.
Le CLI d'exportation attend {"clips": [...]}. Enveloppez les timeline_events de
l'application sous clips avant l'exportation et transmettez le même --fps que celui
utilisé pour l'application ; le taux d'images par défaut de l'exportation ne doit pas
reconformer le plan. Vérifiez le nombre d'événements émis, le nombre total d'images, les
sources uniques et le lien médiatique avant de remettre la timeline au workflow de
montage.
Lorsque ce workflow applique des effets qui se chevauchent dans un NLE, allouez des
pistes compatibles et relisez chaque début, fin et durée demandés. Un élément retourné
ou un appel d'ajout réussi ne prouve pas à lui seul que chaque effet planifié a été
placé ; rejetez les placements manquants, décalés ou tronqués avant le rendu.
Contrat Multimodal Piloté par Fichiers
Utilisez ce chemin lorsque des références locales doivent piloter des plans de génération à blanc pour des actifs image, vidéo et 3D tout en préservant la séparation des genres :
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
La configuration nomme les genres numérotés et les fichiers de preuve locaux. Gardez ces candidats genres distincts plutôt que de les fusionner en une seule esthétique générique :
- Flash Ethereal
- 3D Cyber Glitch
- Fluid Sketch
La commande mesure les références locales avec ffprobe/ffmpeg et émet une spécification
de style par genre, des manifests d'image, vidéo et actifs 3D séparés, une provenance et
une recette d'effets Resolve. Le calendrier des effets doit être ensemencé apériodique.
Les effets CV nécessitent un ancrage de sujet réel dont la politique exacte de perte de
piste est disable_effect_until_track_recovers ; continue_without_anchor et toutes
les autres politiques échouent. Chaque effet porte des contraintes de placement qui
préservent les visages et les caractères lisibles et empêchent les maillages de coin
décoratifs de remplacer le travail 3D plein cadre.
Le reçu retourné est la limite du bundle. Il lie chaque artefact de preuve émis par
chemin relatif, taille en octets, SHA-256, genre, modalité, provider_execution:false,
et la provenance exacte de la référence/du temps. Le reçu nécessite provider_calls:0
comme un entier exact (le booléen JSON false est invalide), provider_execution:false,
et dry_run:true. Chaque spécification de genre nécessite également explicitement
dry_run:true. La recette d'effets Resolve nécessite ce même entier exact
provider_calls:0, provider_execution:false, et dry_run:true. Chaque manifeste de
modalité et chaque requête imbriquée doit contenir les quatre champs exacts de débrayage :
entier provider_calls:0, provider_execution:false, dry_run:true,
et submit:false ; chaque requête nécessite également provider_call_mode:"disabled".
Un champ manquant est un rejet, pas un défaut, et dry_run:false doit être rejeté avant
que la sortie ne soit écrite.
Traitez les booléens comme des nombres invalides partout dans les données de timeline,
d'évidence, de sonde et de durée source. Chaque valeur numérique de ce type doit être un
réel fini : rejetez true, false, NaN, les infinis, les débuts d'événements négatifs,
les durées non positives, les temps d'évidence hors plage et les événements se terminant
au-delà de la timeline positive finie déclarée. L'évidence de fichier entier utilise une
base de temps de fichier entier explicite et n'invente jamais d'horodatage.
Les références du reçu sont l'autorité en matière de durée. Clé chaque durée de référence
validée par son SHA-256 cité ; les occurrences en double d'un condensé doivent s'accorder
sur la durée ou le bundle est invalide. Chaque source_duration d'évidence d'effet et
chaque source_duration d'ancrage de sujet doit être égale à la durée de reçu validée de
ce condensé, et pas seulement contenir son temps cité. La durée de la sonde et toutes les
mesures de la sonde doivent décrire les mêmes octets stables utilisés pour le nombre
d'octets et le SHA-256. Si la source mute pendant la sonde ou se ré-hache différemment
pendant qu'elle est encore disponible, échouez plutôt que d'émettre ou d'accepter un reçu.
Exécutez toujours la validation du bundle après la création. Un manifeste d'image, de
vidéo ou d'actif 3D manquant doit échouer. Les genres génériques ou en double, les
calendriers périodiques, les effets CV non ancrés, les contraintes de placement
manquantes, les indicateurs d'exécution par fournisseur, les fichiers de sortie non liés,
la dérive de taille d'octet ou la falsification SHA-256 doivent échouer. Rejetez les
racines de sortie, les intermédiaires ou les artefacts qui sont des liens symboliques, et
rejetez les fichiers spéciaux (y compris les FIFO et les périphériques) ; les sorties
doivent rester des fichiers réguliers sous une arborescence de répertoires réels. Si
ffmpeg ou ffprobe local est indisponible, le CLI doit retourner son erreur de
traitement multimédia local bornée non nulle sans trace Python. Ne réparez pas un reçu
échoué en supprimant des preuves ou en affaiblissant la validation.
Exemple de Session
# après avoir installé le moteur ECC ; les chemins ci-dessous sont vos entrées de projet
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashetherea
…
[tronqué pour la traduction]