> ⚠️ **GAB SENSIBLE — VALIDATION BOSS OBLIGATOIRE avant tout usage.** (child-safety / RGPD / orientation / career). Contenu extrait sans invention ; à relire par un humain.

# GAB-335 · MetacognitionLearningGoalSetting — « Fixer un objectif »

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

## ⚠️ GAB SENSIBLE — REVUE BOSS REQUISE
Ce GAB touche aux **objectifs / engagement de l'élève** (proche orientation/auto-évaluation). Garde-fous appliqués :
extraction STRICTE du HTML source, **aucune invention** de contenu pédagogique, ton non culpabilisant, ajustement toujours permis sans pénalité. **À faire valider par Boss avant tout déploiement.**

## Pack (structure officielle par-GAB)
```
GAB-335/
  renderer.html            ← moteur « fixer un objectif » (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` · `goal_setting_id` · `prompt` · `goal_options[]{kind,icon,label,feedback}` · `slots[]`
Optionnels : `title`, `adjustment_cta{label,action}`, `adjustment_feedback`, `use_when[]`, `do_not_use_when[]`, `child_safety`.

## Ce qui vient du JSON vs HTML
- **JSON** : le `prompt`, chaque objectif (icône, libellé, statut `kind`, `feedback`), le libellé du bouton d'ajustement, le feedback d'ajustement, les `slots`, `use_when`/`do_not_use_when`.
- **HTML** : la liste cliquable d'objectifs, le panel de feedback, le bouton structurel, la grille slots/usage, le layout.

## Garde-fous (child_safety)
- **Anti-invention** : aucun objectif, libellé ou feedback n'est généré ; tout vient des `goal_options` de l'instance.
- **Non culpabilisant** : `kind:'broad'`/`'hard'` = objectif non retenu avec feedback bienveillant, jamais de pénalité.
- **Ajustement libre** : le CTA d'ajustement réoriente vers l'objectif SMART « sans culpabilité ».
- **BLOCKED** si `prompt` absent / `goal_options` vides / aucun objectif `kind:'ok'`.

## QA à vérifier
1. Modifier un `label`/`feedback` → rendu change sans toucher au HTML (critère d'or). 2. `goal_options:[]` → BLOCKED propre. 3. Choisir objectif SMART → panel ok + CTA ajustement masqué. 4. Choisir objectif trop large/dur → panel warn + CTA ajustement visible. 5. Responsive 375/768/1024.

## external_refs / dependencies
- `do_not_use_when` référence **GAB-333** (choix de stratégie) — renvoi documentaire, hors lot 331-335. Aucune dépendance d'exécution : c'est une chaîne de texte issue du HTML source, pas un import.

## Source
`INDEX-300-metacognitionlearning-GAB-331-335-PLAYABLE.html` (stage `data-tpl="335"`, handlers `d335Goal` / `d335Adjust`).
