Que fait code-film ?
Un film d'animation dont chaque image est une fonction pure de son code temporel : une page expose
window.__seek(t),ui:render --profile filmla parcourt image par image, capture, prouve le caractère déterministe de la séquence, la vérifie par rapport au seuil de photosensibilité et au format déclaré, et l'encode avec ffmpeg. Pas de fournisseur vidéo payant, pas de lecture en direct. Les valeurs du mouvement du film se trouvent dansreferences/film-motion.md; le contrat de la page dansfilm-page.
Quand l'utiliser
- L'utilisateur demande un court film d'animation réalisé à partir de son propre matériel — un clip de lancement de produit, une démo, une typographie cinétique, un graphique animé, un explicateur de processus, une animation de marque en boucle.
- Le film doit rendre deux fois la même image, reposer sur un temps fort ou un tempo déclaré, ou être livré en MP4 à une taille donnée.
Quand NE PAS l'utiliser
- Une requête pour un fournisseur de vidéo générative (Veo, Kling, Sora) →
motion-choreographer. - Une animation dans une interface utilisateur — survol, défilement, transition de page →
fe-design§ Animation. - Le montage ou le sous-titrage de séquences existantes → le groupe
/video. - Un actif SVG unique statique ou en boucle →
svg-authoring.
Procédure
-
Entrées. Ne demander que ce que la recette liste comme variable : objectif, format et taille en pixels, palette en hexadécimal, une police de caractères, audio (aucun, un fichier fourni ou un tempo déclaré), carte de fin. Pour « fais-le simplement », indiquer les valeurs par défaut utilisées.
-
Direction. Choisir une recette dans le corpus et indiquer le concept unique que chaque plan sert :
node <skills-root>/corpus-grounding/scripts/ground.mjs search \ --manifest <skills-root>/code-film/data/manifest.json "<le brief>" -
Interdictions. Extraire les signaux pour le brief (
--domain tell) et écrire chaque interdiction avec son alternative dans le plan. -
Grille. Tempo et mesures à partir de la piste fournie (
allin1.shsi installé ; sinon un tempo déclaré, rapporté comme déclaré), puis une liste ordonnée de plans avec durées. Maintenir chaque texte pour son temps de lecture (3 mots par seconde). -
Explicateurs uniquement — affirmations. Lister chaque chiffre, nom et date à l'écran avec sa source, ou les marquer comme provenant de l'utilisateur. N'en inventer aucun.
-
Construction. Écrire la page sur le contrat de recherche :
window.__seek(t),window.__videoMeta, pas d'horloge murale, aléatoire ensemencé, polices locales. Choisir le moteur de rendu parmi--domain renderer; le HTML simple est la valeur par défaut et un moteur sous licence n'est suggéré qu'après avoir répondu à sa question de licence. -
Planche contact. Rendre une fois, lire
contact.png, corriger les chevauchements, le fouillis et le timing hors tempo. Trois passes au maximum. -
Rendu.
agent-config ui:render film/index.html --profile film --out film/out.mp4 [--audio track.wav]Le code de retour 0 signifie propre, 2 contient des résultats (déterminisme, flash, temps mort, format, réseau), 1 signifie non évalué, 3 signifie aucun pilote de navigateur.
-
Rapport. Citer le manifeste : la forme de recherche, chaque vérification comme
effectuéeouignorée : <raison>, les résultats etvérification. Direvérifiéuniquement quand le manifeste le dit et que son empreinte de fichier correspond au fichier livré.
Statut — signification de chaque mot
- vérifié — chaque vérification applicable a été effectuée sur cette machine et l'empreinte du fichier encodé est celle enregistrée. Cela ne dit rien sur la qualité du film.
- statique-uniquement — les images ont été capturées et hachées, mais une vérification nécessitant ffmpeg (seuil de flash, encodage, format) n'a pas été effectuée. Nommer l'outil manquant.
- non évalué — rien n'a été vu : aucun pilote de navigateur, aucune forme de recherche ou aucune durée déclarée. Nommer l'installation ou la déclaration manquante.
Format de sortie
- Le chemin du film et son SHA-256 extrait du manifeste.
- Le tableau des vérifications (
effectuée/ignorée : …) et chaque résultat. - Le chemin de la planche contact.
- Pour un explicateur, la liste des affirmations avec sources.
Piège
- Une page qui utilise
Math.randomouDate.nowrend différemment lors de la passe inverse ; le manifeste nomme la première image divergente. Ensemencer à partir det. - Le seuil de flash est un seuil de sécurité : un stroboscope échoue et aucun indicateur ne l'abaisse.
- Le profil film exécute les scripts de la page avec le réseau désactivé. Une police ou une image récupérée depuis un CDN ne se charge pas — l'expédier à côté de la page.
- Le déterminisme est prouvé par machine ; les polices et les GPU diffèrent d'une machine à l'autre.
- Une page construite sur un framework temporel est vue via
window.__timelines(entrées mises en pause, accessibles) ; les séquences intégrées sont maintenues àt − data-start. Encoder les séquences en intra-image (-g 1), sinon une recherche atterrit entre les images clés.
À NE PAS FAIRE
- NE PAS coller le texte d'une invite provenant d'une galerie externe dans un plan ou une recette — l'écrire à partir du corpus.
- NE PAS regrouper ou installer un moteur de rendu sans demander ; détecter et rediriger.
- NE PAS considérer un film comme terminé à partir du seul code — ce sont les images qui décident.
- NE PAS affirmer qu'un film est bon, conforme à la marque ou « moins IA » ; rapporter ce qui a été mesuré.
Voir aussi
motion-choreographer— invites de mouvement pour fournisseurs génératifs.svg-authoring— le même vocabulaire de témoin pour des actifs uniques.corpus-grounding— le moteur derrièredata/.