# GAB-002 · SessionStartIntro — « Introduction de session »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechPlayEngine
**Critère validé :** changer le JSON change le rendu sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-002/
  renderer.html            ← moteur intro de session (ne pas modifier par instance)
  instance.example.json    ← SOURCE DE VÉRITÉ (contenu réel, à plat)
  schema.contract.json     ← contrat de validation
  README-contract.md       ← ce fichier
```

## Champs requis (instance, à plat)
`gab_id` · `session_intro_id` · `title` · `subtitle` · `primary_cta{label}`

Optionnels : `renderer_key`, `title_emphasis`, `badge_label`, `chips[]{icon,value,label}`, `_note_dev`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre (avec mot en relief optionnel), sous-titre, badge, chips méta (durée/étapes/niveau), libellé et icône du bouton CTA.
- **HTML** : layout carte, badge avec dot pulsant, grille de chips, bouton structurel, panel d'état post-clic, slot-list, palette DS V2.

## Archétype
`SessionStartIntro` est l'écran de lancement d'une session courte ou multi-modules. Il s'affiche :
- au début d'une session (arrivée depuis bulle Ketty, page SEO, hub de contenu) ;
- quand la session mérite un contexte avant démarrage.

Ne pas utiliser si : reprise en cours de session (→ GAB-006), démarrage auto depuis exercice, session verrouillée (→ GAB-010).

## Garde-fous (anti-invention)
- `title_emphasis` doit être une sous-chaîne **exacte** de `title` — ne jamais inventer un mot de mise en relief absent du titre.
- Si `chips` est absent ou vide, la section est silencieusement omise (pas de rendu vide).
- Aucun contenu pédagogique (discipline, durée, niveau) n'est codé en dur dans le HTML.

## BLOCKED si
- `title` absent
- `subtitle` absent
- `primary_cta.label` absent

## QA à vérifier
1. Modifier `title`/`subtitle`/`primary_cta.label` → rendu change sans toucher au HTML (critère d'or).
2. `title` absent → panel BLOCKED propre, CTA désactivé.
3. `chips:[]` → section chips vide, carte reste stable.
4. Clic CTA → panel vert « ▶ Session démarrée. », CTA désactivé.
5. Responsive 375/768/1024 px — chips en grille 2 colonnes sur mobile.

## Source
`INDEX-300-playengine-GAB-001-005-PLAYABLE.html` (bloc `<!-- GAB-002 -->`, handler `peConfirm`).
