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

# GAB-340 · MetacognitionLearningProgressIdentity — « Identité de progrès »

**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 — FLAG REVUE BOSS OBLIGATOIRE.** Sujet child-safety / RGPD / image de soi de l'élève (identité de progrès, partage de formulation). Toute mise en production ou évolution de contenu doit passer par une validation explicite de Boss. Extraction faite SANS aucune invention de contenu pédagogique : seul le HTML source a été transcrit.

## Pack (structure officielle par-GAB)
```
GAB-340/
  renderer.html            ← moteur identité de progrès (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_identity_id` · `intro_note` · `prompt` · `formulations[]{kind,label,icon,feedback}` · `keep_options[]{mode,label,style,feedback}`
Optionnels : `title`, `child_safety{no_fixed_label,no_psych_profile,right_to_evolve,privacy_default,share_requires_authorization}`.

## Ce qui vient du JSON vs HTML
- **JSON** : la note anti-étiquette, la consigne, chaque formulation (figée vs progrès) + son feedback, les options garder-privé / partager + leurs feedbacks.
- **HTML** : layout, liste d'options cliquables, rangée de boutons CTA, panneaux de feedback, fallback.

## Garde-fous (child_safety)
- **Pas d'étiquette figée** : on ne génère jamais « bon »/« mauvais » ; seules les formulations de l'instance s'affichent. Le choix `fixed` reçoit un feedback explicite « ça enferme ».
- **Pas de profil psychologique** : on décrit un progrès, jamais une identité figée (`no_psych_profile`).
- **Droit à l'évolution** : `right_to_evolve` — la formulation reste évolutive.
- **Confidentialité par défaut** : `privacy_default = private`. Le **partage est conditionnel** à une autorisation active (`share_requires_authorization`) — sinon ça reste privé.
- **BLOCKED** si `formulations` vide / aucune formulation `growth` / `keep_options` vide / `prompt` absent.

## external_refs / dependencies
- Aucune dépendance hors-lot. Écran autonome (pas de référence cross-GAB dans le code).
- Note source : la carte d'usage du source mentionne « identité de progrès (→ GAB-340) » comme cible interne — pas une dépendance runtime.

## QA à vérifier
1. Modifier un `label`/`feedback` → rendu change sans toucher au HTML (critère d'or). 2. `formulations:[]` → BLOCKED propre. 3. Retirer la formulation `growth` → BLOCKED « aucune formulation de progrès ». 4. Clic `growth` → feedback positif + rangée de partage affichée ; clic `fixed` → feedback anti-étiquette, rangée masquée. 5. Bouton « Partager » → message « uniquement si autorisation active ». 6. Responsive 375/768/1024.

## Source
`INDEX-300-metacognitionlearning-GAB-336-340-PLAYABLE.html` (stage `data-tpl="340"`, handlers `d340Pick` / `d340Keep`).
