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

# GAB-374 · CareerLearningTrainingPathMap — « Parcours vers le métier »

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

## ⚠️ GAB SENSIBLE — REVUE BOSS OBLIGATOIRE
Ce gabarit relève de l'**orientation scolaire / career**. Avant toute mise en prod :
- **Revue Boss requise** sur le contenu pédagogique (routes, durées, passerelles).
- **Aucune invention** : durées (3 ans, 2 ans...), diplômes, passerelles et admissions proviennent EXCLUSIVEMENT de l'instance / du HTML source. Le moteur n'en génère aucune.
- **Admission non garantie** : signal obligatoire, jamais masqué.
- **Sources à vérifier** par académie et par année en cours (CTA dédié).

## Pack (structure officielle par-GAB)
```
GAB-374/
  renderer.html            ← moteur cartographie de parcours (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` · `training_path_map_id` · `prompt` · `multiple_routes[]{icon,label,feedback}` · `admission_not_guaranteed` (boolean)
Optionnels : `title`, `intro_notice`, `target_job`, `source_cta{label,action}`, `updated_sources_notice`, `bridges`, `levels`, `alternatives`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : intro, prompt, chaque route (icône, libellé, feedback), libellé du CTA sources, message sources, drapeau admission non garantie.
- **HTML** : liste des routes, bouton structurel « Sources & date ? », bandeau d'admission, layout, fallback.

## Garde-fous (child_safety / orientation)
- **Multi-routes** : plusieurs voies mènent au même métier — jamais une seule route obligatoire.
- **Admission non garantie** visible (bandeau + flag requis).
- **Sources actualisées** : rappel de vérifier durées/admissions par académie/année.
- **Anti-invention** : tout contenu manquant dans le HTML source est marqué `_TODO`, jamais halluciné.
- **BLOCKED** si `multiple_routes` vide / `prompt` absent / `admission_not_guaranteed` absent.

## external_refs / dependencies
- Renvoie hors-lot vers **GAB-375** (`CareerLearningDayInLifeScenario`) pour le scénario « une journée dans le métier » (do_not_use_when : scénario journée). Aucune dépendance de code.

## _TODO (contenu absent du HTML source — à compléter après revue Boss)
- `bridges` : passerelles seulement évoquées dans les feedbacks de route, pas de liste structurée dans le source.
- `levels` : niveaux de diplôme non fournis de façon structurée.
- `alternatives` : seule la route « Alternative / reconversion » figure ; pas de liste d'alternatives structurée.

## QA à vérifier
1. Modifier une `route.feedback`/`label` → rendu change sans toucher au HTML (critère d'or). 2. `multiple_routes:[]` → BLOCKED propre. 3. Retirer `admission_not_guaranteed` → BLOCKED. 4. Clic route → feedback exact de l'instance. 5. CTA sources → message de vigilance. 6. Responsive 375/768/1024.

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