{
  "gab_id": "GAB-224",
  "renderer_key": "text_cta",
  "fallback_choice_id": "fb-pythagore-interactive-unavailable",
  "_note_dev": "SOURCE DE VÉRITÉ. Fallback honnête : l'activité interactive est indisponible, une alternative pédagogique équivalente est proposée. Anti-invention : aucun contenu pédagogique inventé, tout extrait du HTML source GAB-224. Le HTML (layout, carte fallback, CTAs) ne change pas ; seuls ces champs changent le rendu.",
  "title": "Alternative pédagogique proposée",
  "banner_label": "Fallback honnête · pas une erreur",
  "fallback_reason": "format_unavailable",
  "reason_text": "L'activité interactive n'est pas disponible dans ta session actuelle. Mais tu peux travailler le même point avec une fiche visuelle équivalente — pas identique, mais pédagogiquement efficace.",
  "alternatives": [
    { "rank": 1, "label": "Fiche visuelle annotée · même notion", "format": "visual", "action": "voir_fiche_visuelle" },
    { "rank": 2, "label": "Exercice guidé avec corrections étape par étape", "format": "exercise", "action": "voir_exercice" }
  ],
  "primary_cta": { "label": "▶ Voir la fiche visuelle", "action": "voir_fiche_visuelle" },
  "secondary_cta": { "label": "Voir l'exercice", "action": "voir_exercice" },
  "fallback_reason_enum": ["content_unavailable", "format_unavailable", "level_unavailable", "access_limited", "technical_limit", "no_exact_match"],
  "distinction_note": "224 ≠ 210 : SmartFallback propose une alternative pédagogique honnête (ressource cible existe ailleurs). GAB-210 UnsupportedModuleFallback = bloc cassé techniquement, pas la même chose. Ne pas masquer un bug derrière un fallback pédagogique."
}
