Contrôle qualité
| Groupe | Domaines |
|---|---|
| Histoire | NAR brief et narration · TIM rythme et timing · LIF vie et densité · ART direction artistique |
| Mouvement | MOT easing et chorégraphie · TXT texte à l'écran · SAF sécurité du mouvement · WEB pages web animées |
| Son | AUD audio · CAP sous-titres |
| Livraison | REN 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,logoouweb. 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
thresholdsde.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
| NAR | TIM | LIF | ART | MOT | TXT | SAF | WEB | AUD | CAP | REN | LIC | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
promo Promo ou lancement produit | 3 | 3 | 2 | 3 | 3 | 3 | 2 | · | 2 | 2 | 3 | 3 |
presentation Vidéo de présentation (entreprise, produit, projet) | 3 | 2 | 1 | 3 | 2 | 3 | 2 | · | 3 | 3 | 2 | 3 |
explainer Vidéo explicative ou pédagogique | 3 | 2 | 1 | 2 | 2 | 3 | 2 | · | 3 | 3 | 2 | 2 |
social Short vertical pour les réseaux | 3 | 3 | 2 | 2 | 2 | 3 | 2 | · | 2 | 3 | 2 | 2 |
film Court métrage animé narratif | 3 | 3 | 3 | 3 | 2 | 1 | 2 | · | 3 | 1 | 2 | 2 |
logo Animation de logo ou ident (2 à 8 s) | 1 | 2 | 1 | 3 | 3 | 1 | 2 | · | 1 | · | 3 | 2 |
web Page web ou interface animée | 1 | 1 | 1 | 3 | 3 | 2 | 3 | 3 | · | · | · | 2 |
Seuils par défaut
loudness_lufs | -14 |
loudness_tolerance_lu | 1 |
true_peak_dbtp | -1 |
freeze_s | 1 |
hero_min_px | 170 |
dead_air_s | 3 |
motion_floor | 0.4 |
flashes_per_s | 3 |
flash_delta | 0.1 |
duration_tolerance | 0.1 |
vmaf_min | 93 |
caption_offset_ms | 100 |
caption_cps_max | 17 |
caption_coverage_min | 0.98 |
caption_lines_max | 2 |
text_min_s | 1.2 |
text_words_per_s | 3 |
web_smooth_frames_min | 0.95 |
web_cls_max | 0.1 |
hardcoded_motion_max | 3 |
ai_tells_max | 0 |
fonts_max | 2 |
black_frames_max_s | 0.1 |
silence_edge_max_s | 0.5 |
still_per_30s_max | 1 |
end_card_s | 2 |
sync_tolerance_ms | 45 |
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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| NAR-01 | Un objectif et un public écrits, servis par chaque scène | majeur | auditeur | BRIEF.md donne l'objectif, le public et l'action attendue ; chaque beat de storyboard.md s'y rattache. |
| NAR-02 | Structure complète : accroche, développement, résolution | majeur | auditeur | Planche contact et storyboard : l'accroche arrive dans les 2 premières secondes (promo, social), la fin conclut (CTA, chute ou regard caméra). |
| NAR-03 | Chaque beat a une durée et une intention | mineur | automatique | umd lint : storyboard.beats_missing_duration et beats_missing_intent valent 0. |
| NAR-04 | Compréhensible son coupé | majeur | auditeur | Planche contact sans audio : le message principal et l'appel à l'action sont lisibles à l'écran. |
| NAR-05 | Script, textes et voix off sans tournures IA | mineur | automatique | umd 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| TIM-01 | Aucun temps mort de plus de 3 s | majeur | automatique | umd analyze : dead_air ne contient aucun segment plus long que thresholds.dead_air_s (hors pauses voulues notées au storyboard). |
| TIM-02 | Un événement nouveau toutes les 2 s environ | majeur | auditeur | Timeline de mouvement d'umd analyze et planche contact : pics réguliers, pas de longue plage plate. |
| TIM-03 | Coupes et accents calés sur la musique | mineur | auditeur | Comparer scenes (umd analyze) aux temps forts (beat_this ou librosa si installés, sinon écoute) : écart de 2 images au plus. |
| TIM-04 | Durée conforme au brief et à la plateforme | majeur | automatique | umd analyze : probe.duration à ±thresholds.duration_tolerance de project.json duration_s. |
| TIM-05 | Plans assez longs pour être lus | mineur | auditeur | scenes d'umd analyze : aucun plan sous 0,5 s hors montage rapide voulu ; plans avec texte assez longs (voir TXT-01). |
| TIM-06 | Les coupes tombent sur du mouvement, jamais entre deux plans arrêtés | majeur | automatique | umd 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| LIF-01 | Aucune image figée plus d'1 s, dernier plan compris | majeur | automatique | umd analyze : freezes ne contient aucun segment plus long que thresholds.freeze_s. |
| LIF-02 | Variété visuelle entre les scènes | majeur | auditeur | Planche contact : pas deux scènes avec la même composition, le même cadrage et la même entrée. |
| LIF-03 | Les yeux mènent le corps, respiration et clignements | mineur | auditeur | Images extraites autour d'une réaction (umd frames --at) : regard 6 à 10 images avant le corps ; clignements présents. |
| LIF-04 | Mouvements décalés, pas d'unisson mécanique | mineur | auditeur | Code (stagger, delays) et images successives : les éléments d'un groupe démarrent et finissent à des instants différents. |
| LIF-05 | Moins d'1 s d'image quasi figée par 30 s, carton final exclu | majeur | automatique | umd 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| ART-01 | Images fixes clés validées avant l'animation | bloquant | automatique | umd lint : stills.count ≥ 1 par scène dans .motion/stills/ et storyboard.md contient une ligne « Stills validated » datée. |
| ART-02 | Palette et typographie du brief respectées | majeur | auditeur | umd lint (fonts.families ≤ thresholds.fonts_max, couleurs hors tokens) et images : conformes à BRIEF.md. |
| ART-03 | Aucun visuel à signature IA | majeur | auditeur | Planche contact contre la liste de references/craft/anti-slop.md. |
| ART-04 | Zones de sécurité du format respectées | mineur | auditeur | Images clés : texte et logo dans la zone titre (90 %) et hors des zones d'interface de la plateforme (9:16). |
| ART-05 | Assets nets à la résolution de sortie | majeur | auditeur | Images à 100 % : logos, icônes et photos nets, sans pixellisation ni flou d'agrandissement. |
| ART-06 | Une idée, une accroche et un moment fort au niveau visé | majeur | auditeur | Jury (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-07 | Typographie finie au niveau visé | majeur | auditeur | Jury : 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-08 | Couleur et finition au niveau visé | majeur | auditeur | Jury : 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| MOT-01 | Durées et courbes issues des tokens de mouvement | majeur | automatique | umd lint : hardcoded_motion.count ≤ thresholds.hardcoded_motion_max hors fichier de tokens. |
| MOT-02 | Aucun tic de motion IA | majeur | auditeur | umd 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-03 | Chaque mouvement a un but | majeur | auditeur | storyboard.md : chaque animation notée a un rôle ; aucune animation purement décorative en boucle. |
| MOT-04 | Easing conforme à la physique du mouvement | mineur | auditeur | umd lint (linear_moves) et code : entrées ease-out, sorties ease-in, pas de linéaire sur les déplacements. |
| MOT-05 | Un mouvement principal à la fois | mineur | auditeur | Images successives d'une transition : un élément mène, les autres suivent en décalé. |
| MOT-06 | Web : seulement transform et opacity, jamais transition: all | majeur | automatique | umd 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| TXT-01 | Chaque texte reste à l'écran assez longtemps pour être lu | bloquant | automatique | umd 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-02 | Texte contrasté, même sur fond mouvant | majeur | auditeur | Images où le texte passe sur un fond chargé : voile, contour ou zone calme ; contraste estimé ≥ 4,5:1. |
| TXT-03 | Aucun texte coupé, chevauché ou hors zone | majeur | auditeur | Images clés de chaque carton : texte entier, sans chevauchement, dans la zone titre. |
| TXT-04 | Taille de texte suffisante pour le format | mineur | auditeur | Image à 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| SAF-01 | Au plus 3 flashs par seconde | bloquant | automatique | umd analyze : flashes.max_per_s ≤ thresholds.flashes_per_s (mesure plein cadre, approximation de WCAG 2.3.1). |
| SAF-02 | Pas de mouvement vestibulaire agressif | mineur | auditeur | Images 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| WEB-01 | prefers-reduced-motion respecté | bloquant | automatique | umd webperf : reduced_motion.respected vaut true (animations arrêtées ou fortement réduites en mode reduce). |
| WEB-02 | Animations fluides, sans images perdues | majeur | automatique | umd webperf : smooth_ratio ≥ thresholds.web_smooth_frames_min avec processeur ralenti 4 fois. |
| WEB-03 | Aucun décalage de mise en page causé par une animation | majeur | automatique | umd webperf : cls < thresholds.web_cls_max. |
| WEB-04 | Interactions réactives et cohérentes | majeur | auditeur | Survol, focus, clic : retour en moins de 100 ms, mêmes durées et courbes partout. |
| WEB-05 | Pas de scroll-jacking, navigation clavier intacte | majeur | auditeur | Défiler à la molette, au clavier (Espace, flèches) et au trackpad : vitesse native, sections accessibles au focus. |
| WEB-06 | will-change utilisé avec parcimonie | mineur | automatique | umd 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).
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| AUD-01 | Niveau sonore conforme et crête vraie sous le plafond | bloquant | automatique | umd analyze : loudness.integrated à ±thresholds.loudness_tolerance_lu de thresholds.loudness_lufs et loudness.true_peak ≤ thresholds.true_peak_dbtp. |
| AUD-02 | La musique s'efface sous la voix | majeur | auditeur | Commande de mix (umd mix ou sidechaincompress) dans render.json ou les logs, et écoute d'un passage parlé : la voix domine nettement. |
| AUD-03 | Effets sonores synchrones, 0 à 1 image après l'image | mineur | auditeur | Avec 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-04 | Pas de silence de tête ni de coupure brutale | majeur | automatique | umd analyze : silence.leading_s et silence.trailing_s ≤ thresholds.silence_edge_max_s, et audio_end.abrupt vaut false. |
| AUD-05 | Voix claire et naturelle, noms bien prononcés | majeur | auditeur | Écoute et transcription : pas d'artefact robotique, rythme 140–170 mots/min, noms de marque corrects. |
| AUD-06 | Format audio de diffusion | mineur | automatique | umd analyze : probe.audio à 48 kHz, 2 canaux, AAC ≥ 192 kb/s ou Opus. |
| AUD-07 | Design sonore en couches au niveau visé | majeur | auditeur | Jury : 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| CAP-01 | Tous les mots, synchronisés | bloquant | automatique | umd captions-check : coverage ≥ thresholds.caption_coverage_min et max_offset_ms ≤ thresholds.caption_offset_ms. |
| CAP-02 | Sous-titres lisibles et bien placés | majeur | auditeur | Images avec sous-titres : deux lignes au plus, contraste fort, dans la zone sûre, sans masquer le sujet. |
| CAP-03 | Vitesse de lecture raisonnable | mineur | automatique | umd captions-check : max_cps ≤ thresholds.caption_cps_max et max_lines ≤ thresholds.caption_lines_max. |
| CAP-04 | Noms et marques exactement orthographiés | mineur | auditeur | Comparer 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| REN-01 | Rendu déterministe : deux rendus identiques | bloquant | automatique | umd compare sur deux rendus (umd render --twice) : identical vaut true, ou ssim ≥ 0,999 si l'encodeur introduit du bruit. |
| REN-02 | Format de sortie conforme au brief | majeur | automatique | umd analyze : probe.width, height et fps égaux au brief, cadence constante, pix_fmt yuv420p pour MP4. |
| REN-03 | Encodage livré fidèle au master | majeur | automatique | umd vmaf : vmaf ≥ thresholds.vmaf_min. |
| REN-04 | Polices et assets locaux | majeur | automatique | umd lint : remote_assets.count vaut 0 (pas de Google Fonts, CDN d'images ou de vidéos chargés au rendu). |
| REN-05 | Pas d'images noires involontaires | mineur | automatique | umd 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-06 | Aucun artefact : banding, crénelage, scintillement | majeur | auditeur | Images à 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.
| ID | Vérification | Sévérité | Méthode | Comment |
|---|---|---|---|---|
| LIC-01 | Aucun asset, modèle ou dépendance interdit en usage commercial | bloquant | automatique | umd licenses : violations vaut 0 pour la politique de project.json. |
| LIC-02 | Licence Remotion adaptée à l'équipe | bloquant | automatique | umd licenses : remotion.ok vaut true (project.json license_policy.remotion vaut individual, small-company, non-profit ou company-license). |
| LIC-03 | Chaque asset est inventorié avec sa licence | majeur | automatique | umd licenses : unlisted_assets vaut 0 et chaque entrée de assets.lock.json a source et license. |
| LIC-04 | Attributions requises présentes | mineur | auditeur | Assets marqués attribution_required : crédits dans la vidéo, la description ou deliverables/credits.txt. |
| LIC-05 | Pas de marque, visage ou œuvre de tiers sans droit | majeur | auditeur | Planche contact et assets : logos tiers, visages réels, musiques et extraits sous droits justifiés ; références décrites, pas copiées. |