{
  "gab_id": "GAB-226",
  "renderer_key": "text_cta",
  "candidate_list_id": "cl-pythagore-best-match-01",
  "_note_dev": "SOURCE DE VÉRITÉ. Liste courte de candidats vérifiés et classés par pertinence. Le mode ranking_mode est contrôlé par l'instance ; les items/reason se recalculent côté moteur depuis les 5 entrées CL_DATA. Anti-invention : contenu extrait du HTML source GAB-226. Le HTML (layout, rows, CTAs) ne change pas ; seuls les champs d'instance changent le rendu.",
  "title": "Ressources possibles · Pythagore",
  "summary": "Pool vérifié et classé par pertinence",
  "ranking_mode": "best_match",
  "reason": "La sélection cherche un contenu court pour consolider la justification. Le ranking pondère pertinence, disponibilité, accessibilité et signal récent. Pas de popularité aveugle.",
  "items": [
    {
      "rank": 1,
      "is_top": true,
      "title": "Fiche visuelle · rédaction justification",
      "description": "Méthode courte ciblée sur le blocage actuel.",
      "module_type": "visual",
      "estimated_duration": "5 min",
      "difficulty": "facile",
      "score": 92
    },
    {
      "rank": 2,
      "is_top": false,
      "title": "Exercice guidé Pythagore",
      "description": "S'entraîner étape par étape avec aide.",
      "module_type": "exercise",
      "estimated_duration": "8 min",
      "difficulty": "intermédiaire",
      "score": 78
    },
    {
      "rank": 3,
      "is_top": false,
      "title": "Mini-check de maîtrise",
      "description": "Vérifier rapidement avant d'avancer.",
      "module_type": "adaptive",
      "estimated_duration": "2 min",
      "difficulty": "rapide",
      "score": 65
    }
  ],
  "quality_gate_notice": "Chaque candidat est vérifié côté serveur (existence, accessibilité, droits user). Les refs cassées sont filtrées AVANT affichage. Pas de candidat invisible \"skip\".",
  "primary_cta": { "label": "▶ Lancer le top candidat", "action": "launch_top_candidate" },
  "secondary_cta": { "label": "Choisir manuellement", "action": "manual_pick" },
  "accessibility": { "keyboard_navigable": true, "focus_visible": true, "prefers_reduced_motion": true },
  "child_safety": { "no_medical_data": true, "server_side_verified": true }
}
