# GAB-186 · PathMapIntroHero — « Hero d'entrée de parcours »

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

## Pack (structure officielle par-GAB)
```
GAB-186/
  renderer.html            ← moteur hero d'entré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` · `path_intro_id` · `title` · `summary` · `primary_cta{label,action}`

Optionnels : `banner_label`, `objective`, `progress_current`, `progress_total`, `estimated_duration`, `difficulty`, `segments_count`, `next_action{label,description}`, `secondary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre du parcours, sous-titre, objectif, bannière, progression (current/total), durée, difficulté, nombre de segments, prochain nœud conseillé, **libellés des boutons**.
- **HTML** : layout card, barre de progression animée, grille stats 3 colonnes, bloc next_action conditionnel, boutons structurels, fallback BLOCKED.

## Archétype : Hero d'orchestration
GAB-186 est le **point d'entrée** de tout parcours PathMap. Il :
- affiche la **vue synthétique** du parcours (titre, objectif, progression globale)
- guide l'élève vers la **prochaine action** conseillée
- **n'orchestre pas** de contenu pédagogique propre : il pointe vers d'autres GABs (187 Segment, 188 Mission, etc.)
- **ne calcule pas** XP/badge — responsabilité de PlayKit

## Garde-fous (child_safety)
- **Aucune invention pédagogique** : les textes (objectif, next_action) viennent strictement de l'instance — jamais générés côté renderer.
- **BLOCKED** si `path_intro_id` / `title` / `summary` / `primary_cta` absents.
- Barre de progression uniquement si `progress_total > 0` pour éviter une division par zéro.
- `next_action` bloc masqué si champ absent — aucun crash, aucun fallback inventé.

## QA à vérifier
1. Modifier `title`/`objective`/`banner_label` → rendu change sans toucher au HTML (critère d'or).
2. `primary_cta` absent → BLOCKED propre.
3. `next_action` absent → bloc `ih-next` masqué, pas d'erreur JS.
4. `progress_current=0` → barre à 0%, pas de NaN.
5. Responsive 375/768/1024 : stats en colonne sur mobile, CTAs empilés.

## external_refs / dependencies
Ce GAB appartient au lot **LOT-pathmap-GAB-186-190**. Il est conçu pour être suivi de :
- **GAB-187** PathMapUnitSegment (segments du parcours)
- **GAB-188** PathMapMissionNode (nœuds mission individuels)
- **GAB-189** PathMapLockedNode (nœuds verrouillés)
- **GAB-190** PathMapCheckpointBoss (checkpoint-boss de segment)

## Source
`INDEX-300-pathmap-GAB-186-190-PLAYABLE.html` (stage `data-tpl="186"`, bloc `.ih-card`).
