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

# GAB-362 · OrientationLearningInterestExplorer — « Explorer ses intérêts »

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

> ⚠️ **FLAG REVUE BOSS — GAB SENSIBLE (orientation / child-safety / RGPD).**
> Cet écran touche à l'orientation des élèves. Extraction faite STRICTEMENT depuis le HTML source (aucun intérêt, aucune piste, aucun feedback inventé). Toute mise en prod doit passer par une validation Boss explicite (non profilant, non intrusif, choix révisables, aucune donnée persistée par défaut).

## renderer_key à concevoir (pas de moteur kit)
`choice_select` n'a **pas** de moteur kit de référence. Le renderer a donc été **dérivé directement de l'écran source GAB-362** (handlers `d362Tick` / `d362Suggest` / `d362Skip`), pas d'un kit existant.

## Pack (structure officielle par-GAB)
```
GAB-362/
  renderer.html            ← moteur explorateur d'intérêts (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` · `interest_explorer_id` · `title` · `prompt` · `choices[]{label}` · `primary_cta{label,action}`
Optionnels : `selection_mode`, `progress_template`, `skip_cta{label,action}`, `feedback{empty,suggestions,skipped}`, `child_safety{...}`.

## Ce qui vient du JSON vs HTML
- **JSON** : le prompt, chaque libellé d'intérêt, le gabarit de progression, les libellés des boutons, les 3 messages de feedback (vide / suggestions / passé), le mode de sélection.
- **HTML** : la liste de cases à cocher, la barre de progression, les boutons structurels, le panneau de feedback, le layout, l'accessibilité clavier.

## Garde-fous (child_safety)
- **Non profilant** : aucune étiquette, aucun score psychologique, aucune catégorisation persistée.
- **Non intrusif** : aucune question intrusive ; multi-choix optionnel.
- **Choix révisables** : l'élève peut cocher/décocher librement, revenir quand il veut.
- **Pistes ouvertes** : les suggestions sont une exploration libre (« pas une case »), jamais une orientation imposée.
- **Skip réversible** : « Passer » ne crée aucun profil.
- **BLOCKED** si `choices` vide / `prompt` absent / `primary_cta` absent.

## QA à vérifier
1. Modifier un `label`/feedback → rendu change sans toucher au HTML (critère d'or). 2. `choices:[]` → BLOCKED propre. 3. CTA sans rien coché → message `feedback.empty`. 4. CTA avec ≥1 coché → `feedback.suggestions` (pistes ouvertes). 5. Skip → `feedback.skipped` (aucun profil). 6. Responsive 375/768/1024.

## external_refs / dependencies
- `use_when` source mentionne le renvoi vers **GAB-363** (cartographie des forces) comme alternative quand on veut cartographier — hors périmètre de CE GAB. Aucune dépendance de rendu : GAB-362 est autonome.

## Source
`INDEX-300-orientationlearning-GAB-361-365-PLAYABLE.html` (stage `data-tpl="362"`, handlers `d362Tick` / `d362Suggest` / `d362Skip`).
