# GAB-286 · WritingLearningEvidenceIntegration — « Intégrer une citation dans ton texte »

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

## Pack (structure officielle par-GAB)
```
GAB-286/
  renderer.html            ← moteur fiche intégration de preuve (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
```

## Archétype pédagogique

GAB-286 enseigne le **pattern sandwich** pour intégrer une preuve dans un texte argumentatif :
1. **Intro** — introduire la source avec une formule d'insertion
2. **Cite** — citer court, entre guillemets, la phrase clé
3. **Explain** — expliquer pourquoi la citation prouve le claim

L'anti-collage (`explanation_required`) est un pilier non négociable : une citation sans explication = preuve flottante.

## Champs requis (instance, à plat)

`gab_id` · `evidence_integration_id` · `claim_ref{label,text}` · `evidence_ref{header,text,cite}` · `integration_rules{label,intro,quote,explanation,closing}` · `explanation_required{header,text}`

Optionnels : `title`, `subtitle`, `tag_label`, `sentence_patterns[]`, `reason_block{label,text}`, `primary_cta{label,reveal_text}`, `secondary_cta{label,reveal_text}`, `quote_policy`, `source_context`, `citation_format`, `feedback_ref`, `source_metadata`.

## Ce qui vient du JSON vs HTML

- **JSON** : claim, source (texte + citation), les 3 parties du sandwich (intro/quote/explanation), les formules d'insertion, l'anti-collage, les CTAs et leurs textes de reveal.
- **HTML** : structure visuelle, palette DS V2, zones claim/source/integration/patterns/anti/reason, boutons, layout responsive.

## Garde-fous (child_safety / anti-invention)

- `integration_rules.quote` doit être la citation exacte extraite de la source — jamais inventée.
- `explanation_required` est obligatoire : le moteur BLOCKED si absent.
- `sentence_patterns` : formules génériques réutilisables, pas de contenu pédagogique inventé.
- BLOCKED si `claim_ref`, `evidence_ref`, `integration_rules` ou `explanation_required` manquent.

## QA à vérifier

1. Modifier `claim_ref.text` → rendu change sans toucher au HTML (critère d'or).
2. `claim_ref` absent → BLOCKED propre dans le panel.
3. CTA primaire → reveal sandwich steps.
4. CTA secondaire → reveal 3 patterns.
5. `sentence_patterns` vide → bloc patterns masqué proprement.
6. Responsive 375/768/1024.

## Source

`INDEX-300-writinglearning-GAB-286-290-PLAYABLE.html` (stage `data-tpl="286"`, handlers `gabReveal`).
Slots canon source : `evidence_integration_id` · `claim_ref` · `evidence_ref` · `integration_rules` · `explanation_required` (required) + `quote_policy` · `source_context` · `sentence_patterns` · `citation_format` · `feedback_ref` · `source_metadata` (optional).
