# GAB-245 · AssessmentLearningResultBridge — « Pont sortie évaluation »

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

## Pack (structure officielle par-GAB)
```
GAB-245/
  renderer.html            ← moteur pont sortie évaluation (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` · `bridge_instance_id` · `title` · `summary` · `bridge_type` · `reason` · `next_action{icon,label,mode_chip}` · `primary_cta{label,action}`

Optionnels : `score_display`, `score_label`, `retry_cta{label,action}`, `bridge_types_catalog[]`, `non_official_notice`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, résumé, score affiché, raison pédagogique, icône et libellé de l'action, chip de mode, libellé du CTA primaire et secondaire, avertissement anti-validation officielle.
- **HTML** : layout de la carte, blocs structurels (score-recap, reason-block, action-box, cta-row, notice-box), palette DS V2, moteur de rendu.

## 7 bridge_types (polymorphisme)
| bridge_type | Icon | Mode chip | Usage |
|---|---|---|---|
| `review` | 📖 | 📊 VISUAL | Revoir fiche méthode avant retry |
| `remediation` | 🧩 | 🧠 ADAPTIVE | Révision ciblée sur critère raté |
| `advance` | 🚀 | 📝 EXERCISE | Exercice plus complexe (score fort) |
| `retry` | ↻ | 📝 EXERCISE | Refaire l'évaluation complète |
| `pathmap` | 🗺 | 🗺 PATHMAP | Retour à la carte parcours |
| `smart_select` | 🎚 | 🎚 SMARTSELECT | SmartSelect automatique |
| `ketty_help` | 🦊 | 🦊 KETTY | Demander à Ketty (conversation) |

## Garde-fous (child_safety)
- **Anti-validation officielle** : ce bridge ne marque JAMAIS une compétence comme « officiellement validée ». Le champ `non_official_notice` est affiché si présent.
- **Distinction GAB-220/GAB-245** : GAB-245 = sortie après ÉVALUATION (score + critères). GAB-220 AdaptiveNextStepBridge = sortie après décision adaptative. Ne pas confondre les deux signaux.
- **BLOCKED** si `bridge_type`, `next_action`, `primary_cta` ou `reason` sont absents.

## QA à vérifier
1. Modifier `bridge_type` dans l'instance → rendu (icône, action, CTA) change sans toucher au HTML (critère d'or).
2. `bridge_type` absent → BLOCKED propre.
3. `reason` absent → BLOCKED propre.
4. Instance externe injectée via `init(ext)` → rendu change correctement.
5. `non_official_notice` présent → bloc notice visible.
6. Responsive 375/768/1024 — pas de débordement horizontal.

## external_refs / dependencies
- **GAB-220** (AdaptiveNextStepBridge) : gabarit DISTINCT. GAB-220 est déclenché par un signal AdaptiveLearning, GAB-245 par un signal AssessmentLearning (score + critères). Ne jamais utiliser GAB-245 à la place de GAB-220 et vice-versa.

## Source
`INDEX-300-assessmentlearning-GAB-241-245-PLAYABLE.html` (stage `data-tpl="245"`, handlers `brPick`, `BR_TYPES`).
