# GAB-280 · MethodLearningAutonomyCard — « Carte d'autonomie certifiée »

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

## Pack (structure officielle par-GAB)
```
GAB-280/
  renderer.html            ← moteur carte d'autonomie (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` · `autonomy_card_id` · `method_ref` · `autonomy_status{label,description,acquired_date,review_due}` · `evidence_items[]{text,date}` · `next_action{label,feedback}`

Optionnels : `card_title`, `card_subtitle`, `autonomy_levels[]{key,icon,label,state}`, `confidence_level`, `review_due`, `teacher_note`, `anti_certification_title`, `anti_certification_text`, `reason_block{title,text}`, `parent_summary`, `source_metadata`.

## Ce qui vient du JSON vs HTML
- **JSON** : statut d'autonomie, date d'acquisition, review_due, les 4 niveaux (icône + label + état unlocked/current/locked), chaque preuve (texte + date), titre et texte anti-surcertification, reason-block expire, libellé du bouton CTA primaire, teacher_note.
- **HTML** : layout global, grille 4 niveaux, bloc evidence, bloc anti-surcertification, reason-block expire, boutons structurels, fallback.

## Garde-fous (child_safety / anti-surcertification)
- **Anti-surcertification** : `anti_certification_title` + `anti_certification_text` affichés si présents — jamais omis. Aucun niveau Expert auto-assigné sans preuve.
- **Expiration** : `autonomy_status.review_due` affiché systématiquement — la compétence se perd, la carte expire.
- **BLOCKED** si `autonomy_status` absent / `evidence_items` vides / `next_action` absent.
- **teacher_note** : bouton secondaire affiché uniquement si champ présent dans l'instance.

## QA à vérifier
1. Modifier `next_action.label` → libellé du bouton change sans toucher au HTML (critère d'or).
2. `evidence_items:[]` vide → BLOCKED propre.
3. `autonomy_status` absent → BLOCKED propre.
4. `autonomy_levels` avec 4 états dont 1 `current` → grille 4 cases, current mis en évidence or/gold.
5. `teacher_note:null` → bouton secondaire masqué.
6. Responsive 375/768/1024 → aucun débordement horizontal.

## Source
`INDEX-300-methodlearning-GAB-276-280-PLAYABLE.html` (stage `data-tpl="280"`, CSS `.ac-*`, handlers `gabConfirm`/`gabReveal`).

## Chaîne module (contexte)
GAB-276 CommonMistakeMethod → GAB-277 ModelAnswerGuide → GAB-278 MethodPracticeLoop → GAB-279 TransferToNewExercise → **GAB-280 AutonomyCard**
