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

# GAB-372 · CareerLearningJobRealityCard — « Réalité du métier »

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

> 🚩 **GAB SENSIBLE — REVUE BOSS REQUISE avant prod.**
> Contenu d'**orientation / career** (child-safety). L'extraction est strictement limitée au HTML source ; **aucune** donnée pédagogique, chiffre, salaire ou promesse n'a été inventé. Toute mise en production de nouveaux contenus métier doit passer par une relecture Boss (risque RGPD/orientation + non-promesse d'emploi).

## Pack (structure officielle par-GAB)
```
GAB-372/
  renderer.html            ← moteur fiche réalité métier (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` · `job_reality_card_id` · `card_kind` · `dream_vs_reality` · `aspects[]{icon,label,kind,detail}`
Optionnels : `instruction`, `reality_warning`, `sources_notice`, `child_safety{no_job_promise,no_salary_claim,review_required}`.

## Ce qui vient du JSON vs HTML
- **JSON** : le métier/contexte (`card_kind`), la phrase rêve vs réalité, chaque aspect dépliable et son `detail`, le warning de prudence.
- **HTML** : la carte papier, la liste dépliable `synth`, le panneau warning, le layout, le fallback BLOCKED.

## Garde-fous (child_safety)
- **Anti-invention** : contenu extrait UNIQUEMENT du HTML source (GAB-372, handlers `d372Exp`). Aucun salaire, aucun chiffre inventé.
- **Non-promesse** : `child_safety.no_job_promise` + `no_salary_claim` à `true` ; le hero rappelle « Aucune promesse d'emploi ou de salaire ».
- **Réalité visible** : chaque aspect confronte le rêve à la réalité (tâches, contraintes, contextes), `reality_warning` toujours affiché au dépliage.
- **BLOCKED** si `aspects` vide / `card_kind` absent / `dream_vs_reality` absent.

## QA à vérifier
1. Modifier un `detail`/`label` → rendu change sans toucher au HTML (critère d'or). 2. `aspects:[]` → BLOCKED propre. 3. Déplier un aspect → `detail` + `reality_warning` visibles. 4. Instance externe injectée → rendu change, HTML inchangé. 5. Responsive 375/768/1024.

## _TODO / contenus manquants (anti-invention)
- `sources_notice` = `"_TODO"` : le bloc GAB-372 du HTML source n'expose **pas** de mention de sources explicite (contrairement à GAB-371/374 qui ont un bouton « D'où viennent les infos ? » / « Sources & date ? »). Slot `sources` listé dans le HTML source mais sans contenu rattaché → non inventé, laissé en `_TODO` pour relecture Boss.
- Slot `working_conditions` (requis dans le HTML source) n'a pas d'item dédié : le contenu « conditions de travail » est porté par l'aspect `constraints` (horaires, charge émotionnelle, station debout). Conservé tel quel sans invention d'un nouvel item.

## external_refs / dependencies
- Source hors-lot : aucune dépendance externe. Tout le contenu provient de
  `INDEX-300-careerlearning-GAB-371-375-PLAYABLE.html` (stage `data-tpl="372"`, handlers `d372Exp`, liste `#d372list`, warning `#d372warn`).
- Renvois inter-GAB mentionnés dans le source (non bloquants) : compétences → GAB-373, parcours → GAB-374, journée type → GAB-375.

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