Annexe — Scénario 4 : « Premières notes », Broc présente un atelier (deck)
Scénario complet d'un deck de 9 slides où Broc présente un atelier fictif organisé par
lebrocoli.fr. Il applique strictement la bible (annexes/broc/bible.md) : Broc n'a ni smoking, ni
casquette, ni aucun vêtement ou accessoire, les lieux et les personnes sont fictifs, et les infos
pratiques viennent des données. Ce document est une source de travail : rien n'est encore dans
examples/. Le schéma de la bible et les attributs de scène (cast=, pose=…) arrivent en P16
(plan 14, IA2) ; d'ici là, tout ce qui en dépend est marqué brouillon jusqu'à P16.
Statut. Le scénario, le texte et l'atelier sont des propositions inferred (l'utilisateur a
délégué ces choix le 25/10). Seul « lebrocoli.fr » est un nom réel ; « Premières notes », le Trio
Lorem, Mila, Tempo et les décors sont fictifs (bible §5 à §8).
1. Fiche
| Champ | Valeur |
|---|---|
| Titre | Premières notes (≤ 5 mots, bible §12) |
| Événement | atelier d'écoute jazz pour débutants, organisé par lebrocoli.fr, suivi d'un mini-concert du Trio Lorem. Au Kiosque des Tiges, repli à la Cave du Bouquet en cas de pluie |
| Objectif | donner envie de venir à quelqu'un qui n'ose pas « le jazz », lui donner toutes les infos pratiques, obtenir une inscription |
| Public | adultes curieux de musique live, débutants ; présenté en salle (projection) ou partagé en ligne ; lecteurs de lebrocoli.fr |
| Format principal | deck (16:9) : c'est le seul format livré aujourd'hui (P1), il a des notes de présentation (:::notes = voix de Broc), un jumeau JSON déjà typé (DeckSourceSchema) et un export PDF. Il sert aussi d'annonce projetée avant un concert |
| Formats dérivés | stories (6 cartes 9:16 pour les réseaux), motion (film court avec la voix off), toon (4 cases, la séquence de la pluie). calendar porte l'événement lui-même. book : pas de déclinaison utile (§8) |
| Beats | hook → context → tension → payoff → call (gabarit hook-tension-payoff étendu de la bible §10) |
| Poses | 8 des 9 lignes de codex-pet-v1 : waving, waiting, running, idle, review, failed, jumping, running-right. running-left n'est pas utilisée |
| Durée | environ 6 minutes en présentation orale ; environ 75 s en film (§8.2) |
2. Pitch
Le jazz intimide : on ne sait pas quoi écouter ni quand applaudir. Broc, le guide de sortie de lebrocoli.fr, propose une réponse simple : un samedi après-midi au Kiosque des Tiges, on écoute trois morceaux courts, on apprend à reconnaître la contrebasse, la batterie et le piano, puis le Trio Lorem joue pour de vrai. Un seul suspense : la pluie. Broc a un plan B, la Cave du Bouquet, et l'atelier est maintenu quoi qu'il arrive. Il finit par donner les infos pratiques (y compris celle qu'il n'a pas encore) et donne rendez-vous.
3. Découpage scène par scène
Une slide = une scène. Les répliques de Broc sont dans :::notes (voix off en motion, sous-titre en
stories). Durées en présentation orale ; transition fade par défaut (réglage du deck), slide
seulement pour l'élan de la slide 8. Les jeux de mots végétaux (au plus un par scène, jamais deux
fois le même, bible §4) sont soulignés dans la colonne « Réplique ».
| # | id | Beat | Texte à l'écran | Réplique de Broc (:::notes) | Pose | Décor (set=) | Layout | Durée | Transition |
|---|---|---|---|---|---|---|---|---|---|
| 1 | ouverture | hook | « Premières notes » / « Un atelier d'écoute jazz, ouvert à tous » | Salut ! Samedi, on apprend à écouter le jazz ensemble. Je t'ai gardé une place. | waving | set-kiosque-tiges | image (plein cadre) | 30 s | fade |
| 2 | question | hook | « Le jazz t'intimide ? » + une phrase | Toi aussi, tu as déjà applaudi au mauvais moment ? Moi oui. Personne ne m'en a voulu. | waiting | set-toit-rosee | image-right | 45 s | fade |
| 3 | programme | context | « Le programme » + 3 puces (écouter, reconnaître, vivre) | Je prépare le programme depuis des semaines, ça pousse bien. Tempo garde le rythme. | running | set-bureau-broc | image-left | 60 s | fade |
| 4 | equipe | context | « Avec qui ? » + 3 puces (Broc, Mila, Trio Lorem) | Mila s'occupe du son, le Trio Lorem joue. Moi, je t'explique tout, sans jargon. | idle | set-cave-bouquet | image-right | 45 s | fade |
| 5 | places | context | chiffre : nombre de places (donnée), « places, inscription gratuite », source | Les places sont comptées. Inscris-toi tôt, c'est gratuit. | review | set-bureau-broc | center + type=stat | 30 s | fade |
| 6 | pluie | tension | « Et s'il pleut ? » + une phrase | Oups. Ma couronne adore la pluie, les contrebasses beaucoup moins. | failed | set-kiosque-tiges | image-left | 30 s | fade |
| 7 | plan-b | payoff | « Plan B : à l'abri » + lieu de repli (donnée) + « même heure, même programme » | On passe à l'abri et l'atelier est maintenu ! On reste bien planté sur la date. | jumping | set-cave-bouquet | image-right | 30 s | fade |
| 8 | infos | call | « Infos pratiques » + 5 puces, toutes en données (quand, où, prix, accès, retour) | Tout est là. Pour le dernier métro, je n'ai pas encore l'info : je te la donne dès que je l'ai. | running-right | set-rue-serre | image-left | 60 s | slide |
| 9 | rendez-vous | call | « On s'y retrouve ? » / « Inscription gratuite sur lebrocoli.fr » + mention IA | À samedi. Et garde la tête verte ! | waving | set-kiosque-tiges | image (plein cadre) | 30 s | fade |
Contrôles de la bible appliqués :
- Broc ouvre et ferme en
waving(§10.1) ;failed(slide 6) est suivi dejumping(slide 7) : Broc rebondit (§9) ;jumpingetfailedune seule fois chacun (§10.7). - Chaque réplique fait moins de 140 caractères (la plus longue, slide 8, en fait 95) et contient au plus un point d'exclamation (§4). Aucun émoji.
- Aucune date, heure, adresse ni prix dans le texte libre : tout passe par
:value(§10.2). La donnée manquante (dernier métro) est dite comme manquante, pas inventée (§5, « Honnêteté »). - Le lieu de repli n'est jamais nommé par Broc : il dit « à l'abri », le nom vient de la donnée
lieuRepli. - Pas d'alcool comme argument, aucun artiste réel, aucune blague sur le fait d'être mangé (§6).
- Écart assumé avec §10.1 (« 3 à 7 scènes ») : la règle vise les récits narratifs (stories, toon, motion). Un deck d'annonce a besoin de 9 slides ; ses déclinaisons narratives restent dans la règle (6 cartes en stories, 4 cases en toon). À trancher dans la bible si l'on veut une règle propre au deck.
- Slide 5 sans Broc à l'image en deck :
layout=center type=statn'a pas d'image (c'est ce qui permet le pont deck → motion, plan 02 §4). La posereviewsert en motion et en stories, où Broc est un sprite. Un sprite dans une slide (SpriteImageen deck) est « plus tard » (plan 11 D6).
4. Arborescence proposée
Dans le dossier unique examples/scenario-lebrocoli (plan 14 §4.3), après accord de l'utilisateur
et licence de reference.png :
Code
Les déclinaisons sont dans des fichiers séparés et non en deck.stories.md : un suffixe après le
nom est lu comme une langue (deck.fr.md, plan 09 §1).
5. Source Markdown Récit complète
5.1 recits/premieres-notes/deck.md
À copier tel quel. Ne jamais passer oxfmt sur ce fichier (directives :::notes, règle du dépôt).
Les attributs beat=, cast=, set=, shot=, pose= et prompt= sont réservés par le cœur
(plan 02 §3) mais ne sont vérifiés qu'en P16 par le plugin de @recit/scenario ; avant P16, le
deck se compile et ils restent des attributs libres (attrs). image= porte le fichier de l'image,
prompt= dit de quel prompt elle vient (plan 14 D4) ; recit validate vérifiera en P16 que les
deux correspondent à la provenance enregistrée.
Markdown
Points à vérifier au moment de l'implémentation (et non des inventions de syntaxe à figer ici) :
:valueest défini pour des nombres (08§1). Les champs texte (lieu,prix,artistes),format=dateetformat=time, et le rendu d'une valeurnull(dernierMetro) par un libellé « pas encore l'info » sont à demander à@recit/data(P6). Sans cet ajout, ces cinq valeurs passent par des chaînes du compagnon (strings,:t[key], plan 09 §2.2), jamais en dur.:valuedans:::notes: aucune réplique ci-dessus n'en a besoin, exprès. Broc ne lit pas de chiffre à voix haute ; les chiffres restent à l'écran.cast:en liste,beat=… : plan 14 D4, P16.
5.2 recits/premieres-notes/data/atelier.json
Valeurs fictives de l'exemple. Ce sont les seules sources des infos pratiques.
JSON
5.3 Thème et pied de page (examples/scenario-lebrocoli/recit.config.ts)
Thème de la thématique lebrocoli : un seul vert dominant, pris dans la palette mesurée de Broc
(bible §2.3, encore à valider), sur le crème de la référence. Contrastes WCAG calculés : #447340
sur #f2eee5 = 4,81 (AA texte normal) ; #1f2a14 sur #f2eee5 = 12,96 ; en sombre, #f2eee5 sur
#16200f = 14,54 et #9fd067 sur #16200f = 9,37. Le vert peau #7aac3d (2,33 sur crème) ne sert
jamais au texte. À aligner avec les planches de couleurs de brand/boards/colors/ (une teinte
par thématique, le site racine en noir et blanc) par le propriétaire de la marque.
TypeScript
6. Jumeau JSON typé (deck.json) — brouillon jusqu'à P16
Forme de travail. La partie deck suit le schéma réel DeckSourceSchema
(packages/core/src/schema/source.ts) : champs typés layout, image {src, alt}, transition,
puis attrs, body, notes, dans l'ordre canonique du convertisseur. Ce qui reste brouillon :
- les attributs de scénario (
beat,cast,set,shot,pose,prompt) restent dansattrsjusqu'à P16 ; le plan 14 ne prévoit pas de les typer en champs propres, à confirmer en IA1 ; dataest au niveau du récit (plan 09 §2.2). Le convertisseur actuel range toute clé de frontmatter horsmetadanssettings: avec lui,dataetcastiraient danssettings. L'équivalencecompile(md) == compile(toJson(md))(plan 09 §2.4) tranchera la place dedataen P6 ;castreste danssettings(réglage du récit lu par le plugin de scénario) ;overlayettypesont des attributs libres du deck (pas de champ typé), donc dansattrs.
JSON
Traduction (deck.en.md ou compagnon deck.en.json, plan 09 §1) : seuls meta, body, notes et
image.alt changent ; id, attributs, données et images sont partagés. Les répliques se traduisent
dans la même voix (tutoiement → « you », un jeu de mots équivalent ou aucun, jamais un jeu de mots
forcé).
7. Images : prompts comme données
Récit ne génère rien (plan 14 D7). Les prompts ci-dessous sont des données à ajouter à la bible
cast/univers.md (kind: bible, promptLang: en) ; le texte final de chaque prompt est dérivé
par le gabarit de la bible §11.3 : identité (§11.1, mot pour mot) + décor + cadrage + pose + action
- négatif (§11.4). Aucun fournisseur n'est imposé ;
hatch-pet,imagegenou tout autre outil se lance hors de Récit, aveccast/broc/reference.pngtoujours joint comme image de référence.
7.1 Décors utilisés (nouvelles entrées entry=set)
Les cinq décors existent dans la bible §7 mais n'ont pas encore d'identité de prompt. Proposition
(inferred) :
Markdown
7.2 Personnage secondaire visible : Mila
Mila apparaît sur une seule image (slide 4). Entrée proposée (inferred, bible §8), toujours moins
détaillée que Broc :
Markdown
Tempo (le métronome, slide 3) reste un accessoire du décor dans l'action du prompt : il est muet et n'a pas besoin d'entrée tant qu'il n'a pas de pose propre.
7.3 Descriptions de poses pour {pose_description}
Anglais, dérivées de la bible §9 ; à reporter dans les ::pose[…] de character.md (qui n'en
déclare aujourd'hui que trois). L'image générée est une scène, pas une case de la planche : elle
montre la pose, elle ne la remplace pas.
| Pose | pose_description |
|---|---|
idle | standing relaxed, arms loose at the sides, calm attentive look |
waving | standing, one mitten hand raised and waving, warm welcoming smile |
waiting | standing, head slightly tilted, hands joined in front, curious expectant look |
running | focused, leaning over the work in front of him, both hands busy, concentrated brows |
review | looking closely at something, one hand near the chin, then a satisfied small smile |
failed | shoulders slightly dropped, looking up, mild disappointed "oops" face, no tears |
jumping | small joyful jump, both arms up, feet off the ground, big closed-mouth smile |
running-right | running toward the right of the frame, light energetic stride, body leaning forward |
7.4 Prompts de scènes (entry=prompt)
Huit images (la slide 5 n'en a pas). Aspect : 16:9 pour les slides plein cadre, 4:5 pour les
moitiés d'image. Le corps est l'action, en anglais, sans texte dans l'image.
Markdown
Exemple de prompt dérivé (ce que recit prompts build écrira en P16 pour p-pn-pluie) :
Code
La pluie et la lumière grise ne doivent pas désaturer les verts de Broc (bible §7) : à vérifier à la relecture de l'image.
7.5 Provenance (une par image)
recit assets register img/pluie.webp --prompt p-pn-pluie (P16) écrit :
JSON
Tant que la licence de reference.png manque (bible §14), aucune de ces huit images n'entre
dans le dépôt : les img/*.webp sont des images de remplacement neutres (aplat crème, nom du
prompt), et recit validate --strict doit refuser le build de publication.
8. Déclinaisons dans les autres formats
8.1 stories (6 cartes, 9:16) — brouillon jusqu'à P11 (lecteur) et P16 (attributs)
Pas de nouvelle image : Broc est un sprite de la planche (::sprite, plan 11 D9) posé sur le
fond du thème, et le texte est une textcard. Six cartes, donc dans la règle des 3 à 7 scènes. La
case de 192×208 est petite : la taille d'affichage maximale se mesure sur les goldens (plan 11
D9).
Markdown
Mention IA : la planche de Broc est générée ; la mention « généré par IA » apparaît dans
l'attribution visible du lecteur (réglage scenario.aiLabel, credits par défaut, plan 14 §5.1),
pas dans le texte de Broc. Export : recit export --to images donne six PNG 1080×1920.
8.2 motion (film 16:9 ou 9:16)
Le pont deck → motion (plan 02 §4) refuse les layouts image, image-left et image-right en
v1 : recit render deck.md échouerait dès la slide 1, avec un numéro de ligne. Le film a donc sa
propre source, courte, avec les blocs que le pont connaît et la voix off reprise des :::notes du
deck (≈ 75 s à la vitesse de lecture par défaut ; la voix allonge la scène si besoin). Broc y entre
en P16 par le bloc sprite (plan 11 D9, lot IM4) ; avant, le film se rend sans lui.
Markdown
Le film saute la slide « pluie » seule (failed) pour rester court : la tension tient dans la
phrase de plan-b, et Broc ne passe jamais par failed sans rebond. prefers-reduced-motion :
image 0 de chaque pose, sans boucle (plan 14 D12). Où placer le sprite dans un bloc statement ou
list est une question de mise en page du lot IM4, non tranchée ici.
8.3 toon (4 cases, la séquence de la pluie) — brouillon jusqu'à P7 et P16
Réutilise quatre des images du deck, recadrées en 4:5 (mêmes prompts, mêmes fichiers : aucune
nouvelle génération). Les bulles portent le texte, traduisible ; :::dialogue est « plus tard »
(plan 14 D6), donc les bulles sont écrites directement.
Markdown
8.4 calendar, book, docs
calendar: l'événement lui-même (date, lieu,location,urlvers lebrocoli.fr) est une scène de calendrier, lue depuis la mêmedata/atelier.jsonquand@recit/timele permettra ; le pontcalendar → stories(P11) pourra alors générer la carte « rendez-vous ».book: pas de déclinaison utile pour une annonce. Broc n'y entre que par l'annexe « Dramatis personae » (plan 14 D6) d'un futur recueil de récits.docs: le deck s'intègre dans une page par<StoryEmbed format="deck">; la page « bible » (fichesCharacterSheet,SetCard,PromptCard) est en P16.
9. Points d'attention
Accessibilité
- Textes alternatifs : chaque image a un
alten français, qui décrit Broc, sa pose et le décor, jamais le texte de la slide (déjà lisible). Ils se traduisent avec le récit. Entoon,altest obligatoire (PDF balisé, plan 15). - L'image ne porte aucune information : date, lieu, prix et accès sont toujours en texte. Un lecteur d'écran a tout sans les images.
- Contraste : texte en
#1f2a14ou#447340sur crème (≥ 4,5:1) ; jamais de texte en vert peau#7aac3d. Sur les slides plein cadre,overlay=0.35assure la lisibilité du titre : à mesurer sur l'image finale (lint de contraste prévu plus tard, plan 11 D8). - Notes = transcription : les
:::notesdonnent le texte complet de ce que dit Broc, réutilisé comme sous-titres en motion et commevoiceover. - Mouvement :
prefers-reduced-motionfige les sprites sur l'image 0 et remplace la transitionslideparfade. - Langue :
lang: fr; les espaces insécables françaises avant?,!et:sont gérées par la typographie du format, pas tapées à la main. - Accès PMR affiché (valeur
acces), comme le veut la bible §5.
Mention IA et droits
- Toute image générée a sa provenance
kind: asset,origin: ai,aiGenerated: true,references: [reference.png](§7.5) et la mention visible « Illustrations générées par IA » (slide 9, dernière case du toon, attribution des stories). La conformité à l'article 50 de l'AI Act reste à relire (plan 14 §5.1). - Bloquant : auteur et licence de
reference.png(bible §14). Sans eux, ni la planche ni les images de scènes n'entrent dans le dépôt ; le scénario se joue avec des images de remplacement. - Polices : Unbounded et Lexend (OFL, servies localement,
OFL.txtet ligne NOTICE) ; jamais Monument Extended.
Cohérence avec la bible
- Relecture de chaque image avant enregistrement : ni vêtement, ni accessoire, ni instrument tenu (la contrebasse reste sur son support), ni texte lisible, verts non teintés par la lumière, pas la mascotte plate du site dans la même image (bible §2.5).
- Mila reste moins détaillée que Broc et n'apparaît qu'une fois ; pas plus de deux personnages à l'image (bible §8).
Plans à corriger par leur propriétaire : plan 14 D12 et plan 11 §2.4 décrivent encore le smoking et la casquette.Corrigés le 25/10 d'après l'image de référence : les deux plans décrivent maintenant un brocoli vert sans vêtement ni accessoire (plan 14 D13).
Dépendances et ce qui reste ouvert
| Élément | Dépend de | En attendant |
|---|---|---|
beat=, cast=, set=, pose=, prompt= | @recit/scenario, P16 (IA2) | attributs libres, non vérifiés |
:value sur texte, format=date/time, null | @recit/data, P6 (à demander) | chaînes du compagnon (:t[key]) |
Sprite de Broc (::sprite) | planche hatch-pet importée, IM4 (P16) | stories et film sans Broc, ou remplaçant neutre |
| Images de scènes | licence de reference.png, génération hors Récit | images de remplacement |
| Lecteur stories, toon | P11, P7 | deck seul |
| Règle « 3 à 7 scènes » pour un deck | décision dans la bible | écart documenté au §3 |