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

# GAB-373 · CareerLearningSkillCareerBridge — « Pont compétences → métiers »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechCareerLearning
**Critère validé :** changer le JSON change les compétences et leurs pistes sans modifier le HTML. ✅ check.py.

> ⚠️ **GAB SENSIBLE — REVUE BOSS REQUISE** (orientation / career / child-safety).
> Ce gabarit relie des compétences à des métiers pour des élèves. Toute évolution du contenu
> (pistes métiers, libellés de preuve, formulations) doit être **revue par Boss** avant prod.
> Garde-fous orientation : aucune étiquette figée, plusieurs pistes par compétence, incertitude
> visible, aucune donnée personnelle. Aucune piste métier n'a été inventée — extraction stricte du HTML source.

## Pack (structure officielle par-GAB)
```
GAB-373/
  renderer.html            ← moteur pont compétences→métiers (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` · `skill_bridge_id` · `skills[]{skill,icon,evidence_label,kind,feedback}`
Optionnels : `title`, `intro_note`, `prompt`, `primary_cta{label,action}`, `child_safety{no_label,uncertainty_visible,note}`.

## Ce qui vient du JSON vs HTML
- **JSON** : chaque compétence, son icône, son libellé de preuve, son `kind` (multi/develop/low), son `feedback` au clic, l'intro, le prompt, le **libellé** du bouton.
- **HTML** : liste des compétences, panneaux de feedback (ok/warn/note), badge d'état, bouton structurel, layout, couleurs DS V2.

## kind (statut d'une compétence)
- `multi` → plusieurs pistes métiers ouvertes (panneau ok). **Au moins une compétence doit être `multi`.**
- `develop` → compétence à développer (panneau note) — jamais une étiquette négative.
- `low` → peu de preuves, on reste prudent (panneau warn) — on ne conclut pas.

## Garde-fous (child_safety / orientation)
- **Plusieurs pistes, pas un métier unique** : interdiction d'enfermer dans un seul métier (`blocked_conditions: multiple_paths absent`).
- **Aucune étiquette figée** : pas de classement définitif d'un élève.
- **Incertitude visible** : compétence à faibles preuves affichée prudemment, jamais masquée ni transformée en conclusion.
- **Anti-invention** : aucune piste métier inventée hors du HTML source.
- **BLOCKED** si `skills` vide / `evidence` absente sur toutes / aucune compétence `multi`.

## QA à vérifier
1. Modifier un `feedback`/`evidence_label` → rendu change sans toucher au HTML (critère d'or). 2. `skills:[]` → BLOCKED propre. 3. Retirer toute entrée `multi` → BLOCKED multiple_paths. 4. Clic compétence `low` → message prudent « on ne conclut pas ». 5. Responsive 375/768/1024.

## Source
`INDEX-300-careerlearning-GAB-371-375-PLAYABLE.html` (stage `data-tpl="373"`, handler `d373Pick`).

## external_refs / dependencies
- Source mentionne un GAB voisin **GAB-374** (`CareerLearningTrainingPathMap` — « parcours formation ») pour le cas `do_not_use_when: parcours formation`. Hors lot ? Non, GAB-374 est dans le même lot careerlearning-371-375. Aucune dépendance runtime : ce pack est autonome.
