Ultimate Motion DesignUMD v0.10.0
English
Menu

Contrôle qualité

GroupeDomaines
HistoireNAR brief et narration · TIM rythme et timing · LIF vie et densité · ART direction artistique
MouvementMOT easing et chorégraphie · TXT texte à l'écran · SAF sécurité du mouvement · WEB pages web animées
SonAUD audio · CAP sous-titres
LivraisonREN rendu et encodage · LIC licences et droits

Les règles et les vérifications sont détaillées dans docs/fr/REFERENTIEL.md.

29 des 64 vérifications sont mesurées par le code, sans agent (celles qui s'appliquent dépendent du profil) :

  • durée et format de sortie ;
  • coupes faites sur du mouvement, jamais entre deux plans arrêtés ;
  • images figées, temps morts et temps quasi figé cumulé (moins d'1 s par 30 s, carton final exclu) ;
  • sons calés sur leur image, quand le storyboard liste des repères sonores (umd sync) ;
  • images noires ;
  • flashs, en approximation plein cadre de WCAG 2.3.1 ;
  • loudness et crête vraie ;
  • silences et coupure brutale du son ;
  • reproductibilité du rendu, et fidélité de l'encodage livré au master (VMAF) ;
  • couverture, synchronisation et vitesse de lecture des sous-titres ;
  • pour les pages : fluidité, CLS et respect de prefers-reduced-motion ;
  • dans le code : durées codées en dur, tics de motion IA, polices et assets distants, formules creuses ;
  • inventaire et licences des assets.

Les autres vérifications sont jugées par les auditeurs, à partir de la planche contact et de quelques images ciblées.

Notation

  • Chaque vérification est bloquante (5 points), majeure (3) ou mineure (1). Réussie = tous les points, partielle = la moitié, en échec ou non vérifiée = aucun.
  • Un point bloquant en échec plafonne son domaine à 3/10 et la note globale à 5,9/10. Exemples :
    • un flash dangereux ;
    • un texte trop court pour être lu ;
    • un rendu non reproductible ;
    • des images fixes non validées avant l'animation ;
    • un asset non commercial dans une pub.
  • La note globale pondère les domaines selon le profil : promo, presentation, explainer, social, film, logo ou web. Les domaines sans objet sont ignorés, comme les sous-titres d'un logo ou l'audio d'une page web.
  • Les seuils se règlent par projet dans thresholds de .motion/project.json : −14 LUFS, 3 flashs par seconde, 3 s de temps mort, VMAF 93… Les seuils de temps mort, d'image figée, de temps quasi figé, de coupes sur du mouvement, de flashs et de loudness ont été vérifiés sans aucune fausse alerte sur 15 films de référence notés 7 à 8 sur 10 par un jury IA (docs/CALIBRATION.md). Une règle qui aurait signalé à tort 7 de ces films (la dynamique de la musique) a été écartée. Ceux du VMAF, des sous-titres et du web restent des conventions.

Le référentiel complet

Profils et poids

NARTIMLIFARTMOTTXTSAFWEBAUDCAPRENLIC
promo Promo ou lancement produit3323332·2233
presentation Vidéo de présentation (entreprise, produit, projet)3213232·3323
explainer Vidéo explicative ou pédagogique3212232·3322
social Short vertical pour les réseaux3322232·2322
film Court métrage animé narratif3333212·3122
logo Animation de logo ou ident (2 à 8 s)1213312·1·32
web Page web ou interface animée11133233···2

Seuils par défaut

loudness_lufs-14
loudness_tolerance_lu1
true_peak_dbtp-1
freeze_s1
hero_min_px170
dead_air_s3
motion_floor0.4
flashes_per_s3
flash_delta0.1
duration_tolerance0.1
vmaf_min93
caption_offset_ms100
caption_cps_max17
caption_coverage_min0.98
caption_lines_max2
text_min_s1.2
text_words_per_s3
web_smooth_frames_min0.95
web_cls_max0.1
hardcoded_motion_max3
ai_tells_max0
fonts_max2
black_frames_max_s0.1
silence_edge_max_s0.5
still_per_30s_max1
end_card_s2
sync_tolerance_ms45

NAR · Brief et narration

Un objectif, un public, une structure qui tient et un script sans tournures IA.

Règles de construction

  • Écrire l'objectif, le public et l'action attendue dans BRIEF.md avant tout plan.
  • Structure : accroche, développement, résolution (ou appel à l'action). En film : le personnage veut une petite chose, essaie, un imprévu survient, il regarde la caméra.
  • Chaque beat du storyboard a une durée et une seule intention, écrite en bout de ligne.
  • L'information clé doit se comprendre son coupé : elle est aussi à l'écran.
IDVérificationSévéritéMéthodeComment
NAR-01Un objectif et un public écrits, servis par chaque scènemajeurauditeurBRIEF.md donne l'objectif, le public et l'action attendue ; chaque beat de storyboard.md s'y rattache.
NAR-02Structure complète : accroche, développement, résolutionmajeurauditeurPlanche contact et storyboard : l'accroche arrive dans les 2 premières secondes (promo, social), la fin conclut (CTA, chute ou regard caméra).
NAR-03Chaque beat a une durée et une intentionmineurautomatiqueumd lint : storyboard.beats_missing_duration et beats_missing_intent valent 0.
NAR-04Compréhensible son coupémajeurauditeurPlanche contact sans audio : le message principal et l'appel à l'action sont lisibles à l'écran.
NAR-05Script, textes et voix off sans tournures IAmineurautomatiqueumd lint : slop.count vaut 0 dans BRIEF.md, storyboard.md, le script et les captions.

TIM · Rythme et timing

Pas de temps mort, un événement régulier, une durée adaptée au format.

Règles de construction

  • Il se passe quelque chose de nouveau toutes les 2 secondes environ ; jamais plus de 3 secondes sans mouvement porteur.
  • Durée cible fixée au brief (social 15–60 s, promo 30–90 s, logo 2–8 s) et respectée à ±10 %.
  • Les plans clés restent assez longtemps pour être lus ; aucun plan sous 0,5 s sauf montage rapide voulu.
  • Avec musique : couper sur les temps forts.
IDVérificationSévéritéMéthodeComment
TIM-01Aucun temps mort de plus de 3 smajeurautomatiqueumd analyze : dead_air ne contient aucun segment plus long que thresholds.dead_air_s (hors pauses voulues notées au storyboard).
TIM-02Un événement nouveau toutes les 2 s environmajeurauditeurTimeline de mouvement d'umd analyze et planche contact : pics réguliers, pas de longue plage plate.
TIM-03Coupes et accents calés sur la musiquemineurauditeurComparer scenes (umd analyze) aux temps forts (beat_this ou librosa si installés, sinon écoute) : écart de 2 images au plus.
TIM-04Durée conforme au brief et à la plateformemajeurautomatiqueumd analyze : probe.duration à ±thresholds.duration_tolerance de project.json duration_s.
TIM-05Plans assez longs pour être lusmineurauditeurscenes d'umd analyze : aucun plan sous 0,5 s hors montage rapide voulu ; plans avec texte assez longs (voir TXT-01).
TIM-06Les coupes tombent sur du mouvement, jamais entre deux plans arrêtésmajeurautomatiqueumd analyze : seams.parked = 0 (mouvement moyen sous motion_floor dans les 0,25 s avant ET après une coupe).

LIF · Vie et densité

Rien n'est totalement figé, les scènes varient, les mouvements se chevauchent.

Règles de construction

  • Rien n'est jamais totalement immobile, même sur le dernier plan : respiration, clignement, lumière ou particules qui vivent.
  • Varier cadrage, composition et rythme d'une scène à l'autre ; pas deux fois la même mise en page.
  • Personnages : les yeux réagissent 6 à 10 images avant le corps.
  • Décaler les éléments (stagger, overlapping action) : ils ne bougent jamais tous en même temps.
IDVérificationSévéritéMéthodeComment
LIF-01Aucune image figée plus d'1 s, dernier plan comprismajeurautomatiqueumd analyze : freezes ne contient aucun segment plus long que thresholds.freeze_s.
LIF-02Variété visuelle entre les scènesmajeurauditeurPlanche contact : pas deux scènes avec la même composition, le même cadrage et la même entrée.
LIF-03Les yeux mènent le corps, respiration et clignementsmineurauditeurImages extraites autour d'une réaction (umd frames --at) : regard 6 à 10 images avant le corps ; clignements présents.
LIF-04Mouvements décalés, pas d'unisson mécaniquemineurauditeurCode (stagger, delays) et images successives : les éléments d'un groupe démarrent et finissent à des instants différents.
LIF-05Moins d'1 s d'image quasi figée par 30 s, carton final exclumajeurautomatiqueumd analyze : stillness.per_30s ≤ thresholds.still_per_30s_max (tranches de 0,5 s sous motion_floor, les end_card_s dernières secondes exclues).

ART · Direction artistique

Un look validé sur images fixes avant d'animer, fidèle au brief, sans signature IA.

Règles de construction

  • Rendre des images fixes clés (umd still) et les comparer à la référence avant d'animer ; corriger jusqu'à trois tours.
  • Couleurs et typographies viennent du brief et de motion-tokens.json ; deux familles de polices au plus.
  • Pas de dégradé violet par défaut, de verre dépoli partout, d'emoji en guise d'icônes, de blobs 3D génériques, de mise en page centrée type template.
  • Respecter les zones de sécurité du format (titre 90 %, interfaces des plateformes en 9:16).
  • Logos et icônes en vectoriel ; aucun asset agrandi flou.
IDVérificationSévéritéMéthodeComment
ART-01Images fixes clés validées avant l'animationbloquantautomatiqueumd lint : stills.count ≥ 1 par scène dans .motion/stills/ et storyboard.md contient une ligne « Stills validated » datée.
ART-02Palette et typographie du brief respectéesmajeurauditeurumd lint (fonts.families ≤ thresholds.fonts_max, couleurs hors tokens) et images : conformes à BRIEF.md.
ART-03Aucun visuel à signature IAmajeurauditeurPlanche contact contre la liste de references/craft/anti-slop.md.
ART-04Zones de sécurité du format respectéesmineurauditeurImages clés : texte et logo dans la zone titre (90 %) et hors des zones d'interface de la plateforme (9:16).
ART-05Assets nets à la résolution de sortiemajeurauditeurImages à 100 % : logos, icônes et photos nets, sans pixellisation ni flou d'agrandissement.
ART-06Une idée, une accroche et un moment fort au niveau visémajeurauditeurJury (agents/critic.md) : concept_wow ≥ quality_target de project.json (8 par défaut). Accroche lisible avant 2 s, un moment fort identifiable (temps), une image de fin satisfaisante. Citer les temps.
ART-07Typographie finie au niveau visémajeurauditeurJury : design_typography ≥ quality_target. Approche resserrée sur les grands titres, coupes de ligne par le sens, pas de veuve, une seule mise en valeur par ligne, la bonne police chargée (pas de police de secours). Citer l'image.
ART-08Couleur et finition au niveau visémajeurauditeurJury : finish_texture ≥ quality_target. Une palette par séquence qui suit l'histoire (colour script), lumière motivée, grain ou dither contre le banding, pas d'aliasing. Citer l'image.

MOT · Easing et chorégraphie

Des durées et courbes cohérentes, un but pour chaque mouvement, aucun tic de motion IA.

Règles de construction

  • Durées et courbes uniquement depuis .motion/motion-tokens.json ; aucune valeur en dur dans les composants.
  • Chaque mouvement a un rôle : guider le regard, expliquer un changement, donner un retour, enchaîner deux idées.
  • Entrées en ease-out, sorties en ease-in, déplacements à l'écran en ease-in-out ; jamais de linéaire sur un déplacement.
  • Un seul mouvement principal à la fois ; les autres le suivent en décalé.
  • Bannir les tics IA : points qui pulsent, flou à chaque entrée, ressorts rebondissants partout, tout qui monte de 20 px en fondu, flottement infini.
  • Sur le web, n'animer que transform et opacity ; jamais transition: all.
IDVérificationSévéritéMéthodeComment
MOT-01Durées et courbes issues des tokens de mouvementmajeurautomatiqueumd lint : hardcoded_motion.count ≤ thresholds.hardcoded_motion_max hors fichier de tokens.
MOT-02Aucun tic de motion IAmajeurauditeurumd lint (ai_tells) puis images successives : pas de pulsation infinie, de flou systématique à l'entrée, de ressort partout, de fondu-montée uniforme.
MOT-03Chaque mouvement a un butmajeurauditeurstoryboard.md : chaque animation notée a un rôle ; aucune animation purement décorative en boucle.
MOT-04Easing conforme à la physique du mouvementmineurauditeurumd lint (linear_moves) et code : entrées ease-out, sorties ease-in, pas de linéaire sur les déplacements.
MOT-05Un mouvement principal à la foismineurauditeurImages successives d'une transition : un élément mène, les autres suivent en décalé.
MOT-06Web : seulement transform et opacity, jamais transition: allmajeurautomatiqueumd lint : layout_props.count et transition_all.count valent 0.

TXT · Texte à l'écran

Assez long pour être lu, contrasté, jamais coupé ni chevauché.

Règles de construction

  • Temps d'affichage d'un texte : au moins max(1,2 s ; mots ÷ 3 + 0,5 s).
  • Contraste ≥ 4,5:1 (≥ 3:1 en grand texte) ; sur fond mouvant, ajouter un voile ou un contour.
  • Taille minimale du corps de texte : environ 4 % de la hauteur d'image en vidéo.
  • Aucun chevauchement ni débordement ; tout reste dans la zone titre.
IDVérificationSévéritéMéthodeComment
TXT-01Chaque texte reste à l'écran assez longtemps pour être lubloquantautomatiqueumd lint : storyboard.text_too_short vaut 0 (règle max(text_min_s ; mots ÷ text_words_per_s + 0,5)), confirmé par umd frames.
TXT-02Texte contrasté, même sur fond mouvantmajeurauditeurImages où le texte passe sur un fond chargé : voile, contour ou zone calme ; contraste estimé ≥ 4,5:1.
TXT-03Aucun texte coupé, chevauché ou hors zonemajeurauditeurImages clés de chaque carton : texte entier, sans chevauchement, dans la zone titre.
TXT-04Taille de texte suffisante pour le formatmineurauditeurImage à 100 % : hauteur du corps de texte ≥ 4 % de la hauteur d'image (plus en 9:16).

SAF · Sécurité du mouvement

Pas de flashs dangereux, pas de mouvement qui donne la nausée sans alternative.

Règles de construction

  • Jamais plus de 3 flashs par seconde (WCAG 2.3.1), y compris les coupes blanches et les stroboscopes.
  • Limiter zooms rapides, rotations et parallaxes amples ; sur le web, les couper avec prefers-reduced-motion.
IDVérificationSévéritéMéthodeComment
SAF-01Au plus 3 flashs par secondebloquantautomatiqueumd analyze : flashes.max_per_s ≤ thresholds.flashes_per_s (mesure plein cadre, approximation de WCAG 2.3.1).
SAF-02Pas de mouvement vestibulaire agressifmineurauditeurImages successives : pas de zoom ou de rotation plein écran rapide et répété, pas de parallaxe ample prolongée.

WEB · Pages web animées

Fluide, stable, respectueux de prefers-reduced-motion et du défilement natif.

Règles de construction

  • Toute animation non essentielle s'arrête ou se réduit avec prefers-reduced-motion: reduce.
  • Budget : 95 % des images à l'heure sur un processeur ralenti 4 fois ; animer transform et opacity.
  • Aucune animation ne décale la mise en page (CLS < 0,1).
  • Pas de scroll-jacking : le défilement reste natif, au clavier comme au trackpad.
  • Interactions : retour visible en moins de 100 ms, durées UI de 100 à 300 ms.
IDVérificationSévéritéMéthodeComment
WEB-01prefers-reduced-motion respectébloquantautomatiqueumd webperf : reduced_motion.respected vaut true (animations arrêtées ou fortement réduites en mode reduce).
WEB-02Animations fluides, sans images perduesmajeurautomatiqueumd webperf : smooth_ratio ≥ thresholds.web_smooth_frames_min avec processeur ralenti 4 fois.
WEB-03Aucun décalage de mise en page causé par une animationmajeurautomatiqueumd webperf : cls < thresholds.web_cls_max.
WEB-04Interactions réactives et cohérentesmajeurauditeurSurvol, focus, clic : retour en moins de 100 ms, mêmes durées et courbes partout.
WEB-05Pas de scroll-jacking, navigation clavier intactemajeurauditeurDéfiler à la molette, au clavier (Espace, flèches) et au trackpad : vitesse native, sections accessibles au focus.
WEB-06will-change utilisé avec parcimoniemineurautomatiqueumd lint : will_change.count ≤ 5 déclarations permanentes.

AUD · Audio

Un niveau sonore conforme, une voix claire, une musique qui s'efface sous la voix, des sons synchrones.

Règles de construction

  • Mixer avec umd mix (ducking automatique), puis normaliser avec umd normalize (−14 LUFS, crête vraie ≤ −1 dBTP par défaut).
  • Le son arrive 0 à 1 image après l'image qu'il souligne, jamais avant.
  • Fondu d'entrée et de sortie ; pas de silence de plus de 0,5 s au début.
  • Voix : script humanisé, noms de marque prononcés correctement, 140 à 170 mots par minute.
  • Export 48 kHz stéréo, AAC ≥ 192 kb/s (ou Opus en WebM).
IDVérificationSévéritéMéthodeComment
AUD-01Niveau sonore conforme et crête vraie sous le plafondbloquantautomatiqueumd analyze : loudness.integrated à ±thresholds.loudness_tolerance_lu de thresholds.loudness_lufs et loudness.true_peak ≤ thresholds.true_peak_dbtp.
AUD-02La musique s'efface sous la voixmajeurauditeurCommande de mix (umd mix ou sidechaincompress) dans render.json ou les logs, et écoute d'un passage parlé : la voix domine nettement.
AUD-03Effets sonores synchrones, 0 à 1 image après l'imagemineurauditeurAvec une section « ## Sound cues » dans le storyboard : umd sync mesure l'attaque de chaque son contre son image (±sync_tolerance_ms) et décide seul. Sans repères : regarder les coupes et les impacts, le son arrive 0 à 1 image après l'image.
AUD-04Pas de silence de tête ni de coupure brutalemajeurautomatiqueumd analyze : silence.leading_s et silence.trailing_s ≤ thresholds.silence_edge_max_s, et audio_end.abrupt vaut false.
AUD-05Voix claire et naturelle, noms bien prononcésmajeurauditeurÉcoute et transcription : pas d'artefact robotique, rythme 140–170 mots/min, noms de marque corrects.
AUD-06Format audio de diffusionmineurautomatiqueumd analyze : probe.audio à 48 kHz, 2 canaux, AAC ≥ 192 kb/s ou Opus.
AUD-07Design sonore en couches au niveau visémajeurauditeurJury : sound_sync ≥ quality_target. Aux moments forts, plusieurs couches (montée, impact, grave, détail), la musique creusée sous la voix, un silence utilisé comme accent au moins une fois ; chaque effet tombe sur son image (umd sync).

CAP · Sous-titres

Chaque mot présent, au bon moment, lisible et bien orthographié.

Règles de construction

  • Script connu : alignement forcé (ctc-forced-aligner). Sinon : horodatage mot à mot (faster-whisper, WhisperX).
  • Générer avec umd captions, vérifier avec umd captions-check.
  • Deux lignes au plus, 17 caractères par seconde au plus, dans la zone sûre, sans masquer l'essentiel.
IDVérificationSévéritéMéthodeComment
CAP-01Tous les mots, synchronisésbloquantautomatiqueumd captions-check : coverage ≥ thresholds.caption_coverage_min et max_offset_ms ≤ thresholds.caption_offset_ms.
CAP-02Sous-titres lisibles et bien placésmajeurauditeurImages avec sous-titres : deux lignes au plus, contraste fort, dans la zone sûre, sans masquer le sujet.
CAP-03Vitesse de lecture raisonnablemineurautomatiqueumd captions-check : max_cps ≤ thresholds.caption_cps_max et max_lines ≤ thresholds.caption_lines_max.
CAP-04Noms et marques exactement orthographiésmineurauditeurComparer le fichier de sous-titres au script et à BRIEF.md (noms propres, marques, chiffres).

REN · Rendu et encodage

Un rendu reproductible, au bon format, sans perte visible ni artefact.

Règles de construction

  • Le temps est piloté par le numéro d'image (umd capture, useCurrentFrame, timeline.seek) ; jamais par l'horloge.
  • Polices et assets locaux (Fontsource) : aucun chargement réseau pendant le rendu.
  • Master de haute qualité, puis encodage de diffusion H.264 High yuv420p, cadence constante, faststart.
  • Dégradés : ajouter du grain ou un tramage contre le banding.
IDVérificationSévéritéMéthodeComment
REN-01Rendu déterministe : deux rendus identiquesbloquantautomatiqueumd compare sur deux rendus (umd render --twice) : identical vaut true, ou ssim ≥ 0,999 si l'encodeur introduit du bruit.
REN-02Format de sortie conforme au briefmajeurautomatiqueumd analyze : probe.width, height et fps égaux au brief, cadence constante, pix_fmt yuv420p pour MP4.
REN-03Encodage livré fidèle au mastermajeurautomatiqueumd vmaf : vmaf ≥ thresholds.vmaf_min.
REN-04Polices et assets locauxmajeurautomatiqueumd lint : remote_assets.count vaut 0 (pas de Google Fonts, CDN d'images ou de vidéos chargés au rendu).
REN-05Pas d'images noires involontairesmineurautomatiqueumd analyze : black ne contient aucun segment plus long que thresholds.black_frames_max_s hors fondus prévus ; la première image n'est pas vide.
REN-06Aucun artefact : banding, crénelage, scintillementmajeurauditeurImages à 100 % sur dégradés, lignes fines et textes en mouvement.

LIC · Licences et droits

Chaque asset, modèle et dépendance a le droit d'être dans le livrable.

Règles de construction

  • Inscrire chaque asset dans .motion/assets.lock.json avec sa source et sa licence au moment où il entre dans le projet.
  • Livrable commercial : aucun poids non commercial, aucun modèle Tencent en UE, pas d'AGPL embarqué, pas d'asset sans licence.
  • Remotion : gratuit jusqu'à 3 salariés, licence entreprise au-delà ; à déclarer dans project.json.
  • Décrire les références avec ses mots ; ne jamais faire copier la vidéo de quelqu'un d'autre.
IDVérificationSévéritéMéthodeComment
LIC-01Aucun asset, modèle ou dépendance interdit en usage commercialbloquantautomatiqueumd licenses : violations vaut 0 pour la politique de project.json.
LIC-02Licence Remotion adaptée à l'équipebloquantautomatiqueumd licenses : remotion.ok vaut true (project.json license_policy.remotion vaut individual, small-company, non-profit ou company-license).
LIC-03Chaque asset est inventorié avec sa licencemajeurautomatiqueumd licenses : unlisted_assets vaut 0 et chaque entrée de assets.lock.json a source et license.
LIC-04Attributions requises présentesmineurauditeurAssets marqués attribution_required : crédits dans la vidéo, la description ou deliverables/credits.txt.
LIC-05Pas de marque, visage ou œuvre de tiers sans droitmajeurauditeurPlanche contact et assets : logos tiers, visages réels, musiques et extraits sous droits justifiés ; références décrites, pas copiées.