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

# GAB-371 · CareerLearningIntro — « Découvrir un métier, pour de vrai »

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

## ⚠️ FLAG REVUE BOSS — GAB SENSIBLE (orientation / career)
Ce gabarit touche à l'**orientation des élèves**. Contenu extrait STRICTEMENT du HTML source, AUCUNE invention.
**À faire valider par Boss avant tout usage prod :** le ton « non-promesse », la mention des sources (ONISEP / fiches ROME) et le rappel « à recouper, les métiers évoluent ». Aucune promesse d'emploi/salaire ne doit jamais apparaître.

## Pack (structure officielle par-GAB)
```
GAB-371/
  renderer.html            ← moteur intro découverte (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` · `career_intro_id` · `title` · `intro_body` · `framing_principles[]{icon,label,detail}` · `primary_cta{label,action,started_label,started_message}`
Optionnels : `doc_kind`, `source_cta{label,action,message}`, `child_safety{no_job_promise,notice}`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : le titre du cadre, le corps de l'intro, les 3 principes (sourcé / réalité / non-promesse), le **libellé** + message du bouton « Commencer », le libellé + message du bouton « Sources ».
- **HTML** : carte doc-paper, ligne de boutons, animation du contrat, badge d'état, layout, fallback.

## Garde-fous (child_safety)
- **Non-promesse** : `découvrir ≠ garantir un emploi` — aucune promesse d'emploi ni de salaire.
- **Sourcé & daté** : infos issues de référentiels (type ONISEP, fiches ROME), à recouper.
- **Prudence** : rappel que les métiers évoluent.
- **BLOCKED** si `title` / `intro_body` / `framing_principles` / `primary_cta` absent.

## QA à vérifier
1. Modifier `intro_body`/un `detail` → rendu change sans toucher au HTML (critère d'or). 2. `framing_principles:[]` → BLOCKED propre. 3. Clic « Commencer la découverte » → contrat révélé + panel « sourcée, réaliste, sans promesse » + bouton désactivé. 4. Clic « D'où viennent les infos ? » → sources + rappel à recouper. 5. Responsive 375/768/1024.

## external_refs / dependencies
- **Lot CareerLearning GAB-371→375** : GAB-371 est l'**intro** qui pose le cadre. Les écrans liés (hors ce pack) :
  - GAB-372 CareerLearningJobRealityCard (fiche réalité détaillée)
  - GAB-373 CareerLearningSkillCareerBridge (pont compétences → métiers)
  - GAB-374 CareerLearningTrainingPathMap (parcours formations)
  - GAB-375 CareerLearningDayInLifeScenario (journée type)
- Le `do_not_use_when` du source renvoie explicitement la « fiche réalité détaillée » vers **GAB-372**.

## Source
`INDEX-300-careerlearning-GAB-371-375-PLAYABLE.html` (stage `data-tpl="371"`, handlers `d371Start` / `d371Source`).
