> ⚠️ **GAB SENSIBLE — VALIDATION BOSS OBLIGATOIRE avant tout usage.** (child-safety / RGPD / orientation / career). Contenu extrait sans invention ; à relire par un humain.

# GAB-370 · OrientationLearningEmptyState — « Je ne sais pas du tout quoi faire »

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

> ⚠️ **GAB SENSIBLE — REVUE BOSS OBLIGATOIRE AVANT PROD.**
> Sujet orientation/career/child-safety. Extraction faite STRICTEMENT depuis le HTML source (`data-tpl="370"`, handlers `d370Act` / `d370Report`) — **aucun contenu inventé**. Tout libellé, feedback ou règle d'usage ci-dessous provient mot pour mot de la source. À faire valider par Boss avant toute mise en production.

## Pack (structure officielle par-GAB)
```
GAB-370/
  renderer.html            ← moteur état vide orientation (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` · `empty_state_id` · `diagnostic` · `starters[]{label,kind,feedback}`
Optionnels : `title`, `starter_label`, `help_cta{label,feedback}`, `no_invented_verdict`, `use_when[]`, `do_not_use_when[]`.

## Ce qui vient du JSON vs HTML
- **JSON** : le titre, le diagnostic d'accueil, le label de la section pistes, chaque piste (label + feedback), le CTA d'aide et son feedback.
- **HTML** : layout hero centré, rangée de chips, panel de feedback, slots, fallback BLOCKED.

## Garde-fous (child_safety)
- **Anti-invention (`no_invented_verdict`)** : l'outil ne génère JAMAIS de verdict d'orientation. Il propose un point de départ doux, jamais une décision.
- **Jamais sans piste** : `starters` vide → BLOCKED (l'élève ne reste jamais bloqué sans option).
- **Escalade humaine** : `help_cta` route vers un conseiller d'orientation ; le détail technique part séparément à l'admin (pas de profilage exposé à l'élève).
- **Ton non-injonctif** : « C'est normal et fréquent », « sans pression ».
- **BLOCKED** si `diagnostic` absent / `starters` vides.

## QA à vérifier
1. Modifier un `feedback`/`label` → rendu change sans toucher au HTML (critère d'or). 2. `starters:[]` → BLOCKED propre. 3. Clic « Demander de l'aide » → escalade humaine + note admin séparée. 4. Aucun message ne formule un verdict d'orientation. 5. Responsive 375/768/1024.

## external_refs / dependencies
- **GAB-362** (hors lot 366-370) : si des pistes d'orientation existent déjà, c'est GAB-362 qui s'applique — pas cet état vide. Référencé dans `do_not_use_when` (« des pistes existent (→ GAB-362) »). Aucune dépendance de code, simple renvoi d'usage.

## Source
`INDEX-300-orientationlearning-GAB-366-370-PLAYABLE.html` (stage `data-tpl="370"`, handlers `d370Act` / `d370Report`).
