# GAB-243 · AssessmentLearningRubricCriteria — « Grille de critères transparente »

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

## Pack (structure officielle par-GAB)
```
GAB-243/
  renderer.html            ← moteur grille critères (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` · `rubric_id` · `title` · `criteria[]{index,label,description,weight_pct}`

Optionnels : `subtitle`, `type_chip`, `reason_for_criteria{heading,text}`, `anti_vague_notice`, `non_official_notice{heading,text}`, `primary_cta{label,action}`, `accessibility`, `child_safety`.

## Ce qui vient du JSON vs HTML
- **JSON** : chaque critère (label, description, poids), le chip de type, la justification pédagogique, la notice anti-vague, le disclamer barème non officiel, le **libellé** du bouton CTA.
- **HTML** : grille de critères, icônes circulaires, bannière non-officielle structurelle, layout, fallback BLOCKED.

## Archétype & distinction clé
- **GAB-243 RubricCriteria** = critères affichés **AVANT** la réponse (transparence pédagogique, aide à la structuration).
- **GAB-236 PartialCredit** = bilan « à garder / à corriger » affiché **APRÈS** la réponse (basé sur cette même grille).

Ne pas confondre ces deux GAB. GAB-243 ne calcule pas de score — il expose les attentes.

## Garde-fous (child_safety)

- **Non-official grading** : la bannière `non_official_notice` doit apparaître dès que des poids/pourcentages sont affichés. Cette grille n'a aucune valeur légale.
- **Anti-grille-vague** : chaque critère doit avoir un label lisible par un élève de 14 ans. Pas de jargon opaque.
- **BLOCKED** si `criteria` est vide/absent, `rubric_id` absent, ou `title` absent.
- Les `weight_pct` sont des repères pédagogiques internes, jamais une note officielle.

## QA à vérifier
1. Modifier un `label`/`description` → rendu change sans toucher au HTML (critère d'or).
2. `criteria: []` → BLOCKED propre avec message.
3. `rubric_id` absent → BLOCKED.
4. `non_official_notice` présent → bannière coral affichée.
5. `reason_for_criteria` présent → bloc mint-soft affiché.
6. CTA → label vient du JSON, onclick poste panel vert.
7. Responsive 375/768/1024.

## Source
`INDEX-300-assessmentlearning-GAB-241-245-PLAYABLE.html` (stage `data-tpl="243"`, bloc `.rb-card`).

## external_refs / dependencies

| Référence | Relation |
|---|---|
| GAB-236 AssessmentLearningPartialCredit | Utilise la même grille APRÈS la réponse (bilan partiel). GAB-243 fournit les critères à l'avance. |
| GAB-244 AssessmentLearningScoreExplanation | Score expliqué post-évaluation — même lot 241-245. |
