# GAB-194 · PathMapRecommendedRoute — « Route conseillée »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechPathMap
**Critère validé :** changer le JSON change la route sans modifier le HTML.

## Pack (structure officielle par-GAB)
```
GAB-194/
  renderer.html            ← moteur route conseillée (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` · `route_id` · `title` · `subtitle` · `reason_text` · `items[]{step,label,mode,mode_icon,duration}` · `primary_cta{label,action,feedback}`

Optionnels : `reason_title`, `secondary_cta{label,action,feedback}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, texte de raison, chaque étape (label/mode/durée), libellé et feedback des CTAs.
- **HTML** : layout carte, ligne connectrice colorée, cercles numérotés, boutons structurels, fallback BLOCKED.

## Garde-fous (child_safety / anti-invention)
- **items max 3** : la route est courte par définition (archétype source : « Route conseillée 3 étapes max »).
- **mode enum strict** : `VISUAL`, `EXERCISE`, `LEVELTEST` — aucune valeur libre.
- **reason_text** : seules balises `<b>` autorisées — pas de HTML arbitraire.
- **BLOCKED** si `items` vide / `title` absent / `primary_cta` absent.

## QA à vérifier
1. Modifier `title` ou un `items[].label` → rendu change sans toucher au HTML (critère d'or).
2. `items:[]` → BLOCKED propre.
3. `primary_cta` absent → BLOCKED propre.
4. Clic CTA primaire → feedback de l'instance affiché.
5. `secondary_cta` absent → seul le bouton primaire est rendu.
6. Responsive 375/768/1024 : CTAs en colonne sur mobile.

## Source
`INDEX-300-pathmap-GAB-191-195-PLAYABLE.html` (stage `data-tpl="194"`, handlers `peConfirm`/`peNote`).

## Références hors-lot (external_refs / dependencies)
- **GAB-180** : pont sortie diagnostic (use_when : ne PAS utiliser GAB-194 pour ce cas).
- Lot parent : `LOT-pathmap-GAB-191-195` — GAB-191 (IntroCard), GAB-192 (TravelerAnim), GAB-193 (NodeUnlock), GAB-195 (ReturnPrompt).
