# Step 3 : Verification et Sauvegarde

La verification lourde est **deleguee au subagent `track-verifier`** : il charge les gros fichiers de reference (semantique, syllabes, rimes, prononciation, flow, bible) dans SON contexte et renvoie uniquement le Rapport de Verification. Le contexte principal reste leger. Cette etape orchestre l'appel, gere les alertes avec l'utilisateur, puis sauvegarde.

## 1. Lancer la verification (subagent)

Lancer le subagent `track-verifier` (outil Agent / Task, `subagent_type: track-verifier`) avec un prompt contenant :

- **artist** : nom kebab-case
- **language** : `Francais` ou `English`
- **bpm** : BPM cible (depuis le tempo range de la bible ou les tags du style prompt ; noter nominal + ressenti si half-time)
- **style_prompt** : le style prompt complet valide en Step 02
- **lyrics** : les lyrics complets avec metatags, valides en Step 02

Le subagent renvoie le bloc `## Rapport de Verification` complet (Contraintes Suno, Semantique, Linguistique, Flow, Coherence, Cross-Track). Ne pas re-executer ces verifications dans le contexte principal — utiliser le rapport renvoye tel quel.

> **Pourquoi un subagent :** les procedures detaillees (6 tests semantiques, classification IPA des rimes, tables de flow, scan de prononciation) representent plusieurs milliers de lignes de reference. Les charger dans le contexte principal a chaque track est le principal cout en tokens du workflow. Le subagent les charge dans un contexte jetable et ne retourne que le tableau de resultats.

## 2. Presenter les lyrics + le rapport, PUIS demander les ajustements

C'est le **premier** moment ou l'utilisateur voit le track. Presenter en un seul message :
1. **Arc narratif** (bref) + **lyrics complets** avec metatags
2. **Style prompt** + comptage
3. **Le Rapport de Verification** renvoye par le subagent

Puis demander : **"Des ajustements, ou je sauvegarde ?"**

- SI des **ALERTES** sont presentes, les mettre en avant explicitement dans la question : "Le rapport signale : [liste des alertes]. Je corrige, ou on garde ?"
- **SI "sauvegarde" / "garde"** :
  - Alertes non-critiques (linguistique faible, coherence ATTENTION, cross-track) → sauvegarder tel quel, alertes documentees dans le rapport.
  - Blocages critiques **inchantables par construction** (cesure absente, cluster/twister haute severite, stress inverse) → **refuser la sauvegarde**, la ligne doit etre corrigee meme si l'utilisateur veut garder.
  - ALERTE BLOQUANTE cross-track resolue par justification utilisateur → inscrire la justification dans la section "Cross-Track Justification".
- **SI "ajuste"** : reviser les lignes concernees dans le contexte principal, puis **relancer le subagent track-verifier** sur la version revisee. Re-presenter. Repeter jusqu'a validation.

> La verification tourne AVANT cette interaction (pas de question entre l'ecriture et la verification — cf. Step 02). L'utilisateur decide une seule fois, en ayant les lyrics ET le rapport sous les yeux.

## 3. Sauvegarde du fichier track

Ecrire la fiche de production en suivant exactement le format CLAUDE.md "Format de Production".

**Chemin :** `artists/[name]/tracks/[##]-[titre-kebab]/[##]-[titre-kebab].md`

- **Sous-dossier par track** `[##]-[titre-kebab]/` (accueille aussi les fichiers audio). Le creer avant d'ecrire.
- **Titre kebab-case** : minuscules, espaces en tirets, retirer les caracteres speciaux, accents conserves.
- **Numero de track** : determine en Step 1, zero-padded (01, 02...).

### Format du fichier

```
# [Titre du Track]

**Artiste :** [Nom de l'artiste]
**Langue :** [Francais / English]
**Date :** [date du jour]

---

## Style Prompt

\`\`\`
[tags separes par des virgules, format Suno]
\`\`\`

**Caracteres :** [X] / 1000 ([zone])

---

## Lyrics

\`\`\`
[Lyrics complets avec metatags Suno]
\`\`\`

**Caracteres :** [X] / 3000 (recommande) | 5000 (limite)

---

## Rapport de Verification

[Coller ici le bloc complet renvoye par le subagent track-verifier]

### Cross-Track Justification

[Si une ALERTE BLOQUANTE cross-track a ete resolue par justification utilisateur en Step 01 ou Step 03 : inscrire la justification 1-2 phrases. Sinon : "Aucune."]

---

## Notes

**Raisonnement creatif :**
[Pourquoi cet angle, ces images, ce ton]

**Structure utilisee :**
[Genre template + variation, ex: "Pop ABABCB standard"]

**Suggestions pour la suite :**
[Idees pour le prochain track]
```

## 4. Mise a jour discographie

Mettre a jour `artists/[name]/discography.md` :

### Ajouter une ligne au tableau Tracks
```
| [##] | [Titre] | [date] | [langue] | [themes explores] | [emotions dominantes] |
```

### Recomputer les Stats (recompter depuis le tableau complet, ne pas incrementer)
- **Total tracks** : nombre de lignes de donnees.
- **Langues utilisees** : liste dedupliquee.
- **Themes explores** : liste dedupliquee avec comptage, triee par frequence. Format : "theme (N)".
- **Distribution emotionnelle** : comptage par emotion, trie par frequence.
- **Emotions non-explorees** : emotions de la palette bible (primaires + secondaires) absentes du tableau.
- **Dernier theme** : theme(s) de la derniere ligne.

Mettre a jour `last-updated` du frontmatter a la date du jour.

## 5. Confirmation

Afficher :
- **Fichier cree :** `artists/[name]/tracks/[##]-[titre-kebab]/[##]-[titre-kebab].md`
- **Discographie mise a jour :** `artists/[name]/discography.md`

Puis suggerer les prochaines etapes : nouveau track (autre concept/emotion), autre langue, approfondir un theme, ou ajuster les lyrics (`/revise-track`).
