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

# GAB-337 · MetacognitionLearningLearningJournal — « Journal d'apprentissage »

**Archétype / renderer_key :** `reflection_input` (cartographie) · **module :** EdTechMetacognitionLearning
**Critère validé :** changer le JSON change le prompt/les boutons/les feedbacks sans modifier le HTML. ✅ check.py 12/12.

> ⚠️ **GAB SENSIBLE — REVUE BOSS REQUISE (child-safety / RGPD).** Ce gabarit collecte une réflexion personnelle d'élève (potentiellement mineur). Garde-fous : **privé par défaut, jamais public, droit de ne pas sauvegarder, aucune donnée sensible**. Toute mise en prod doit passer par une validation Boss explicite (stockage, conservation, export/suppression).

## Pack (structure officielle par-GAB)
```
GAB-337/
  renderer.html            ← moteur journal privé (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` · `journal_id` · `daily_prompt` · `privacy` (='private') · `right_not_to_save` (=true) · `actions[]{label,action}`
Optionnels : `title`, `privacy_notice`, `input_placeholder`, `visibility`, `non_sensitive`, `feedback{empty,saved,not_saved}`, `export_allowed`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : le bandeau de confidentialité, le prompt du jour, le placeholder, les libellés des 2 boutons, les 3 messages de feedback (vide / sauvegardé / non sauvegardé).
- **HTML** : la zone de réflexion (textarea), la rangée de boutons, les panneaux de feedback, le layout, le fallback.

## Garde-fous (child_safety / RGPD)
- **Privé par défaut** : `privacy:'private'` + `visibility:'self_only'` — un journal n'est **jamais public**. BLOCKED si `privacy != 'private'`.
- **Droit de ne pas sauvegarder** : `right_not_to_save:true` obligatoire. BLOCKED si absent/false. Bouton « Ne pas sauvegarder » vide la zone et confirme le droit.
- **Anti-invention** : aucune réflexion d'élève préremplie ; la zone est vide au démarrage. Aucun contenu pédagogique inventé — seul le HTML source a été extrait.
- **Non-sensible** : `non_sensitive:true` — ne jamais inviter à saisir santé/vie privée/opinions.
- **Exportable / supprimable** : `export_allowed:true` — l'élève garde le contrôle (mention dans le feedback « saved »).
- **BLOCKED** si `daily_prompt` absent / `actions` vides / `privacy != 'private'` / `right_not_to_save != true`.

## QA à vérifier
1. Modifier `daily_prompt`/`feedback.*` → rendu change sans toucher au HTML (critère d'or). 2. `privacy:'public'` → BLOCKED. 3. Sauvegarder zone vide → message « écris une phrase », rien enregistré. 4. « Ne pas sauvegarder » → zone vidée + message droit respecté. 5. Responsive 375/768/1024.

## external_refs / dependencies
- `renderer_key 'reflection_input'` : **à concevoir (pas de moteur kit de référence).** Le renderer a été dérivé directement de l'écran source GAB-337 lui-même (textarea + 2 CTA + panneaux feedback), pas d'un moteur kit existant.
- Références croisées dans la source (hors-lot pour ce pack) : GAB-336 (comparaison chiffrée), GAB-338 (demande d'aide) — citées comme `do_not_use_when`, non implémentées ici.

## Source
`INDEX-300-metacognitionlearning-GAB-336-340-PLAYABLE.html` (stage `data-tpl="337"`, handlers `d337Type` / `d337Save` / `d337NoSave`).
