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

# GAB-365 · OrientationLearningCareerCard — « Fiche métier honnête »

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

> ⚠️ **GAB SENSIBLE — REVUE BOSS OBLIGATOIRE AVANT PROD**
> Ce gabarit relève de l'**orientation / career** (child-safety / RGPD).
> Tout contenu (métier, rubriques, salaire, formations) doit être **validé par Boss** avant mise en ligne.
> Le contenu de l'instance d'exemple est **extrait à l'identique** du HTML source (ONISEP exemple « Développeur / développeuse ») — **aucune invention**.

## Pack (structure officielle par-GAB)
```
GAB-365/
  renderer.html            ← moteur fiche métier honnête (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_card_id` · `source{label,kind}` · `job_title` · `no_job_promise` · `rubrics[]{icon,key,label,detail}`
Optionnels : `title`, `job_summary`, `skills[]`, `nuanced_reality`, `primary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : la source affichée, le titre du métier, le résumé, chaque rubrique dépliable et son détail honnête, la réalité nuancée, l'avertissement « pas de promesse d'emploi », le libellé du bouton.
- **HTML** : la fiche papier, la liste de rubriques, le panneau d'avertissement, le layout, le fallback.

## Garde-fous (child_safety / orientation)
- **Source obligatoire** : aucune fiche sans `source.label` → sinon BLOCKED.
- **Salaire prudent** : jamais de chiffre garanti, formulation nuancée (« variable selon expérience/région »).
- **Plusieurs formations** : aucune voie présentée comme « la seule ».
- **Pas de promesse d'emploi** : `no_job_promise` obligatoire et affiché au dépliage → sinon BLOCKED.
- **Anti-invention** : on n'invente ni salaire, ni débouché, ni promesse d'embauche.
- **BLOCKED** si `source` / `job_title` / `no_job_promise` absents ou `rubrics` vides.

## QA à vérifier
1. Modifier une `rubric.detail` → rendu change sans toucher au HTML (critère d'or). 2. `source` absente → BLOCKED propre. 3. Déplier une rubrique → avertissement « pas de promesse d'emploi » visible. 4. CTA → rappel d'usage. 5. Responsive 375/768/1024.

## external_refs / dependencies
- Aucune dépendance hors-lot. Self-contained (instance inline = jumeau du JSON).
- Source pédagogique citée dans l'exemple : **ONISEP (exemple)** — donnée d'illustration, à recouper / valider avant prod.

## Source
`INDEX-300-orientationlearning-GAB-361-365-PLAYABLE.html` (stage `data-tpl="365"`, handler `d365Exp`).

### Contenus manquants / TODO
Aucun `_TODO` : tout le contenu requis (source, métier, résumé, 3 rubriques + détails, avertissement) est présent dans le HTML source et extrait tel quel.
