# GAB-185 · LevelTestProgressCompare — « Comparaison de progression »

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

## Pack (structure officielle par-GAB)
```
GAB-185/
  renderer.html            ← moteur comparaison progression (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` · `progress_compare_id` · `title` · `before{date,score_pct,label}` · `after{date,score_pct,label}` · `delta_label` · `breakdown[]{skill,change,trend}` · `disclaimer`

Optionnels : `subtitle`, `breakdown_title`, `next_step`, `primary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, dates, scores avant/après, libellé delta, chaque compétence avec son trend, disclaimer, libellé du bouton CTA, mention du prochain palier.
- **HTML** : grille before/after, flèche animée, badge delta, table breakdown, zone disclaimer, bouton structurel, layout, fallback BLOCKED.

## Garde-fous (child_safety / doctrine LevelTest)
- **Progression indicative** : le champ `disclaimer` est REQUIS — bloqué si absent. Jamais une note officielle.
- **Anti-comparaison élèves** : GAB-185 compare uniquement l'élève avec lui-même (2 diagnostics internes). Jamais comparer à d'autres élèves.
- **BLOCKED** si `before` absent/incomplet, `after` absent/incomplet, `breakdown` vide, ou `disclaimer` absent.
- **trend enum strict** : `up` / `flat` / `down` — jamais inventé. Si manquant, rendu `flat` par défaut.

## QA à vérifier
1. Modifier `title` / `delta_label` → rendu change sans toucher au HTML (critère d'or).
2. `before` absent → BLOCKED propre.
3. `breakdown:[]` → BLOCKED.
4. `disclaimer` absent → BLOCKED.
5. `primary_cta` absent → bouton masqué, rendu intact.
6. Responsive 375px : pc-flow en colonne, flèche rotate(90deg), aucun débordement.

## Archétype
GAB-185 est un gabarit de **clôture module** (LevelTest vague 2). Il synthétise la progression temporelle d'un élève sur une notion spécifique, après remédiation. Il ne s'utilise PAS pour :
- comparaison before/after pédagogique générique (→ GAB-145)
- comparaison entre classes/élèves (hors scope doctrine)
- notation officielle (hors scope doctrine)

## external_refs / dependencies
- Aucune dépendance externe de module.
- Doctrine LevelTest : diagnostic INTERNE uniquement, vues partagées non-jugement.
- Couleurs DS V2 : violet `#7B61FF`, mint `#1FCBB0`, coral `#FF6B7E`, gold `#FFB73D`.

## Source
`INDEX-300-leveltest-GAB-181-185-PLAYABLE.html` (stage `data-tpl="185"`, bloc `<!-- GAB-185 -->`).
