# GAB-056 · StoryHistoricalDocument — « Document historique guidé »

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

## Pack (structure officielle par-GAB)
```
GAB-056/
  renderer.html            ← moteur document historique (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
**Document historique guidé** : affiche un extrait de source primaire (texte) avec des mots-clés surlignés portant un tooltip explicatif, suivi d'une question d'observation critique. Design « parchemin » (fond crème, typo Georgia, bordure dorée).

## Champs requis (instance, à plat)
`gab_id` · `document_id` · `document_title` · `document_body` · `highlights[]{phrase,tooltip}` · `question`

Optionnels : `observation_label`, `primary_cta{label,action}`, `document_excerpt_notice`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre du document, extrait textuel, phrases à surligner + leur tooltip, libellé du badge question, texte de la question, libellé du bouton CTA.
- **HTML** : rendu parchemin, positionnement des tooltips, badge « À toi d'observer », bouton structurel, layout, messages de feedback.

## Garde-fous
- **Anti-invention** : `document_body` est cité tel quel depuis la source — jamais paraphrasé. Les `highlights.phrase` doivent être des sous-chaînes exactes de `document_body`.
- **BLOCKED** si `document_title`, `document_body`, `highlights` (vide ou absent) ou `question` manquent.
- **Tooltip accessible** : chaque highlight est navigable au clavier (tabindex, aria-label, role=tooltip).

## QA à vérifier
1. Modifier `document_title` / `question` → rendu change sans toucher au HTML (critère d'or).
2. `highlights:[]` → BLOCKED propre.
3. Hover / focus sur un highlight → tooltip visible et lisible.
4. CTA → feedback vert affiché, bouton désactivé.
5. Responsive 375/768/1024.

## Source
`INDEX-300-storylearning-GAB-055-059-PLAYABLE.html` (stage `data-tpl="56"`, section `<!-- GAB-056 -->`).

## external_refs / dependencies
- Module propriétaire : `EdTechStoryLearning` (même lot que GAB-055, GAB-057, GAB-058, GAB-059).
- Aucune dépendance externe au module (pas d'import Common requis pour le renderer).
- Palette DS V2 standard (violet #7B61FF, magenta #B23CE0, gold #FFB73D).
