# Step 1 : Inputs et Direction Creative

## Champs a Collecter

### Obligatoires

- **Artiste** -- nom de l'artiste (verifier que le dossier `artists/[name-in-kebab-case]/bible/` existe)
- **Concept/Mood** -- idee, theme, emotion ou ambiance du track (une phrase ou quelques mots suffisent)
- **Langue** -- Francais ou English uniquement

### Optionnels

- **Titre** -- si l'utilisateur en a deja un (sinon, proposer un titre en Step 2 apres l'ecriture)
- **Structure** -- variation specifique du template (si l'utilisateur veut s'ecarter de la structure standard)

## Process

1. **Verifier l'artiste.** Chercher le dossier `artists/[name-in-kebab-case]/bible/`. S'il n'existe pas : repondre "Cet artiste n'existe pas encore. Utilisez /create-artist [nom] (ou /auto-artist) d'abord." et arreter le workflow.

2. **Lire les fichiers de bible pertinents (chargement just-in-time, PAS toute la bible).** Pour la direction creative de Step 1 : `bible/sound.md` (genre, sous-genres, tempo, famille de rimes), `bible/world.md` (emotions primaires/secondaires/interdites, themes, univers) et `bible/coherence.md` (garde-fous). Les autres fichiers (`voice.md`, `lore.md`) seront charges en Step 1.5. Ne pas charger `persona.md`/`visual.md` (hors-production).

3. **Lire la discographie.** Lire `artists/[name]/discography.md` pour determiner le prochain numero de track. Compter les lignes du tableau existant (rows non-header) + 1. Si la discographie est vide, le prochain numero est 01.

4. **Analyser l'historique cross-track.** Si la discographie contient des tracks precedents, executer l'analyse cross-track pour guider la direction creative. **Les analyses ci-dessous sont BLOQUANTES depuis 2026-05-04** : ALERTE exige justification ecrite OU regeneration. ATTENTION reste un avertissement.

   ### Drift Emotionnel (COH-06)

   **Condition :** la discographie contient >= 3 tracks.

   - Lire la section Stats > Distribution emotionnelle de la discographie
   - Lire la section Stats > Emotions non-explorees de la discographie
   - SI une emotion apparait dans > 50% des 3 derniers tracks (colonne Emotions des 3 dernieres lignes) :
     **ALERTE DRIFT BLOQUANTE :** "Les [N] derniers tracks explorent tous [emotion]. Pour continuer dans cette direction, justifier en 1 phrase pourquoi c'est intentionnel (sera stocke dans la section Cross-track justification du fichier de track). Sinon, choisir parmi : [3 emotions non-explorees suggerees depuis la palette de la bible]."
   - SI une emotion primaire de la bible n'apparait dans AUCUN des tracks precedents (>= 3 tracks) :
     **ALERTE EMOTION NEGLIGEE :** "L'emotion primaire [X] de la bible n'a jamais ete exploree. Suggestion forte de l'utiliser pour ce track, ou justifier explicitement pourquoi on continue de l'eviter."
   - Sinon : "Distribution emotionnelle equilibree."
   - SI < 3 tracks : ne pas executer cette analyse. Passer directement a la detection de repetition.

   **Procedure de resolution :**
   - **SI** ALERTE DRIFT et l'utilisateur insiste sur l'emotion repetee, **ALORS** : demander une justification 1 phrase ("Pourquoi continuer dans [emotion] alors que les 3 derniers tracks l'explorent deja ?"). Cette justification sera stockee dans le fichier de track (section "Cross-track justification").
   - **SI** ALERTE EMOTION NEGLIGEE et l'utilisateur veut l'ignorer, **ALORS** : demander une justification 1 phrase. Stockee dans le fichier de track.
   - **SI** l'utilisateur accepte la suggestion, **ALORS** : continuer avec l'emotion proposee, pas de justification necessaire.

   ### Repetition Thematique et Lyrique (COH-07)

   **Condition :** la discographie contient >= 2 tracks.

   - Comparer le concept/mood du nouveau track avec la colonne Themes des tracks precedents dans le tableau
   - SI un theme identique ou tres similaire est deja explore dans **les 2 tracks consecutifs precedents** :
     **ALERTE REPETITION BLOQUANTE :** "Le theme [X] a deja ete explore dans 2 tracks consecutifs ([##] et [##]). Pour continuer sur ce theme, justifier en 1 phrase (sera stocke dans Cross-track justification). Sinon, choisir parmi : [3 angles thematiques alternatifs proposes depuis l'univers thematique de la bible]."
   - SI un theme identique ou similaire a ete explore dans **un seul track precedent** :
     "ATTENTION REPETITION : Le theme [X] a deja ete explore dans le track [##] [titre]. Suggestions : aborder sous un angle different -- [proposer 2-3 angles alternatifs]." (non bloquant, juste informatif)
   - **Niveau theme/emotion uniquement a cette etape** : utiliser la colonne Themes et les Stats agregees de la discographie (deja calculees). **Ne PAS lire les fichiers de tracks complets ici** — la comparaison lyrique fine (images, metaphores, phrases reutilisees) est deleguee au subagent `track-verifier` en Step 03, qui charge les tracks dans son propre contexte. Cela evite de charger plusieurs fiches completes dans le contexte principal a chaque creation.
   - SI < 2 tracks : "Premier ou deuxieme track -- pas de risque de repetition."

   **Procedure de resolution :**
   - **SI** ALERTE REPETITION (theme deja dans 2 tracks consecutifs) et l'utilisateur insiste, **ALORS** : demander une justification 1 phrase ("Pourquoi un 3e track sur [theme] consecutif ?"). Stockee dans Cross-track justification.
   - **SI** ATTENTION REPETITION (1 track) et l'utilisateur veut continuer, **ALORS** : pas de justification requise mais le rapport documentera l'angle different choisi.

   ### Suggestions de Progression Narrative (COH-08)

   **Condition :** toujours executer (meme avec 0 tracks precedents). NON bloquant -- informatif uniquement.

   - Lire `Lore > Arc narratif` depuis la bible (deja lue en step 2)
   - SI l'artiste a des tracks precedents :
     - Mapper les themes et emotions des tracks existants sur l'arc narratif
     - Identifier ou en est l'artiste dans sa progression narrative
     - "PROGRESSION : L'arc narratif de [artiste] prevoit [description de l'arc]. Les tracks precedents couvrent [phase de l'arc deja exploree]. Le prochain track pourrait explorer [suggestion basee sur la phase suivante de l'arc]."
   - SI aucun track precedent :
     - "PROGRESSION : Premier track de [artiste]. L'arc narratif prevoit [description]. Suggestion de point de depart : [debut de l'arc -- premiere phase narrative]."
   - SI aucun arc narratif defini dans la bible :
     - Baser les suggestions sur le lore general et les themes non-explores
     - "PROGRESSION : Pas d'arc narratif defini. Basees sur le lore : [2-3 directions narratives coherentes]."
   - Proposer 2-3 directions narratives coherentes dans tous les cas

   ### Stockage de la justification (toutes ALERTES bloquantes)

   **SI** une ALERTE BLOQUANTE cross-track est resolue par justification (utilisateur insiste), **ALORS** :
   - Capturer la justification fournie par l'utilisateur (1 phrase, parfois 2)
   - Format : "[type d'alerte] : [justification utilisateur]"
   - Cette justification sera **inscrite dans le fichier de track final** sous la section "Cross-track justification" (voir Step 03).
   - Sans justification, il est interdit de proceder a Step 02 si une ALERTE BLOQUANTE est presente.

5. **Identifier le template de structure.** Chercher dans `reference/templates/songs/` le template qui correspond au genre ou aux sous-genres de l'artiste. Logique de selection : comparer le genre et les sous-genres de la bible avec le champ `aliases` du frontmatter de chaque template. Si aucun match, utiliser `pop.md` comme defaut securitaire et noter l'adaptation.

6. **Collecter les inputs manquants.** Si le concept/mood ou la langue n'ont pas ete fournis dans `$ARGUMENTS`, les demander. Rester bref -- 1-2 echanges maximum. Ce n'est pas un wizard d'exploration.

7. **Presenter le resume de direction creative :**

   ```
   Artiste : [nom] ([genre])
   Concept : [concept fourni par l'utilisateur]
   Langue : [langue choisie]
   Structure : [template selectionne + notation (ex: "Pop ABABCB")]
   Emotions a explorer : [emotions de la palette qui matchent le concept]
   Track # : [prochain numero]

   --- Analyse Cross-Track ---
   Drift emotionnel : [resultat / ALERTE BLOQUANTE / "N/A (< 3 tracks)"]
   Emotion negligee : [si applicable / "N/A"]
   Repetition thematique : [resultat / ALERTE BLOQUANTE / "N/A (< 2 tracks)"]
   Repetition lyrique : [resultat / "N/A"]
   Progression narrative : [suggestion]

   --- Cross-Track Justification (si ALERTE BLOQUANTE) ---
   [Si l'utilisateur a justifie une alerte : capturer la justification ici. Sinon : "Aucune"]
   ```

   Attendre la validation de l'utilisateur avant de passer a Step 1.5.

   **SI** une ALERTE BLOQUANTE est presente et l'utilisateur n'a pas fourni de justification ni accepte une alternative, **ALORS** ne pas passer a Step 1.5. Demander explicitement la justification ou proposer les alternatives.

## Genre-Template Mapping

Reference rapide -- la source de verite est le champ `aliases` dans le frontmatter de chaque template.

| Template | Genres couverts (aliases) |
|----------|--------------------------|
| pop.md | Pop, Synth-Pop, Electro-Pop, Indie Pop, Art Pop, Dark Pop, Bedroom Pop |
| rap.md | Rap, Hip-Hop, Trap, Boom Bap, Drill, Grime, Cloud Rap, Lo-Fi Hip-Hop |
| ballad.md | Ballad, Power Ballad, Acoustic Ballad, Piano Ballad, Slow Jam |
| rock.md | Rock, Alternative Rock, Indie Rock, Hard Rock, Punk Rock, Post-Punk, Garage Rock |
| electronic.md | Electronic, EDM, House, Deep House, Tech House, Techno, Trance, Future Bass, Synthwave |
| *(default)* | pop.md pour tout genre non couvert |

## Validation

Avant de passer a Step 1.5, verifier :

- [ ] L'artiste existe (dossier `bible/` trouve)
- [ ] Le concept/mood est fourni (non vide)
- [ ] La langue est choisie (Francais ou English uniquement)
- [ ] Un template de structure est identifie pour le genre
- [ ] Les regles de coherence de la bible sont lues (ne pas generer de tracks dans les emotions interdites)
- [ ] L'analyse cross-track est executee (ou N/A si premier track)
- [ ] **SI** une ALERTE BLOQUANTE cross-track est detectee : soit l'utilisateur a accepte une alternative proposee, soit il a fourni une justification ecrite stockee pour Step 3. Sans l'un ou l'autre, ne pas passer a Step 1.5.
