Chapitre 8.5 — masteryScore, moveOn & satisfaction
⏱️ TL;DR — L’AU rapporte (
completed,passed,failed) ; c’est le LMS qui juge. Deux réglages, posés dans lecmi5.xml, pilotent ce jugement :masteryScore(le seuil de réussite, de 0 à 1) etmoveOn(la condition de satisfaction :Passed,Completed,CompletedAndPassed,CompletedOrPassed,NotApplicable). Quand les statements reçus remplissent la conditionmoveOn, le LMS considère l’AU « satisfait » et émet lui-même le verbesatisfied— puis fait remonter la satisfaction au block, puis au cours. Pour tester que tout ça est conforme avant de livrer, ADL fournit CATAPULT. Ce chapitre boucle cmi5 : de la règle de satisfaction au choix « cmi5 ou pas ».
🎯 Objectifs
- Comprendre le rôle exact de
masteryScoredans la décisionpassed/failed. - Maîtriser les cinq valeurs de
moveOnet leur effet concret. - Suivre la remontée de satisfaction : AU → block → cours, et le verbe
satisfied. - Savoir tester la conformité cmi5 avec CATAPULT.
- Trancher, en connaissance de cause, quand choisir cmi5 plutôt que SCORM ou xAPI libre.
masteryScore : le seuil
masteryScore est un décimal de 0 à 1 posé sur un <au> (chapitre 8.2). Le LMS le transmet à l’AU dans LMS.LaunchData. Son rôle est simple mais strict : c’est la barre au-dessus de laquelle un résultat vaut passed.
- Si l’AU rapporte un
result.score.scaledau moins égal aumasteryScore→ il émetpassed(success: true). - Si le score est en dessous du
masteryScore→ il émetfailed(success: false). - Si aucun
masteryScoren’est fourni, la réussite est laissée à l’appréciation de l’AU (mais s’il y en a un, l’AU doit en tenir compte — unpassedsans score cohérent est non conforme, cf. chapitre 8.4).
Le masteryScore n’est pas à lui seul la condition de satisfaction : il détermine seulement si l’AU passe ou échoue. C’est moveOn qui dit ce qu’il faut pour être satisfait.
moveOn : la condition de satisfaction
moveOn est l’attribut de l’<au> qui répond à : « de quoi le LMS a-t-il besoin pour considérer cet AU comme validé et débloquer la suite ? ». Cinq valeurs :
moveOn | L’AU est satisfait quand… | Usage typique |
|---|---|---|
Passed | un passed est reçu | Une évaluation : seul le succès compte |
Completed | un completed est reçu | Une leçon : l’avoir parcourue suffit |
CompletedAndPassed | completed ET passed reçus | Un module strict : tout vu et réussi |
CompletedOrPassed | completed OU passed reçu | Souple : réussir ou avoir tout parcouru |
NotApplicable | aucune condition — satisfait dès qu’il a été expérimenté | Contenu purement informatif |
Croisons moveOn et masteryScore sur des cas concrets :
- Leçon vidéo —
moveOn="Completed", pas demasteryScore. L’apprenant regarde, l’AU émetcompleted, c’est satisfait. Aucune notion de réussite. - Quiz certifiant —
moveOn="Passed",masteryScore="0.8". Il faut réussir (score ≥ 0,8 →passed). Uncompletedseul ne suffit pas : répondre à toutes les questions sans atteindre 80 % laisse l’AU non satisfait. - Quiz d’entraînement souple —
moveOn="CompletedOrPassed",masteryScore="0.8". Réussir ou avoir tout fait suffit : un élève à 60 % qui a répondu à tout envoiecompleted→ satisfait quand même. - Module exigeant —
moveOn="CompletedAndPassed",masteryScore="0.7". Il faut les deux : avoir tout parcouru (completed) et réussi (passed). Manquer l’un des deux = non satisfait. - Page d’accueil informative —
moveOn="NotApplicable". Satisfait dès l’ouverture ; on ne juge ni complétion ni score.
⚠️ Piège — Confondre
CompletedetPassed.completed= « parcouru / terminé » ;passed= « réussi ». MettremoveOn="Completed"sur un examen certifiant, c’est valider un apprenant qui a échoué mais a « fini » le test. Inversement,moveOn="Passed"sur une simple leçon sans évaluation ne pourra jamais être satisfait (aucunpassedne sera jamais émis) : l’apprenant reste bloqué. ChoisismoveOnd’après la nature de l’AU.
💡 Réflexe — Décide
moveOnen une phrase : « pour passer à la suite, l’apprenant doit avoir ___ ». « avoir parcouru » →Completed. « avoir réussi » →Passed. « avoir parcouru et réussi » →CompletedAndPassed. « avoir parcouru ou réussi » →CompletedOrPassed. « rien de particulier » →NotApplicable.
La satisfaction remonte : AU → block → cours
Quand la condition moveOn d’un AU est remplie, le LMS (pas l’AU) émet le verbe satisfied sur cet AU. Puis il agrège :
- Un block est
satisfiedquand tous ses AU (et sous-blocks) le sont. - Le cours est
satisfiedquand tous ses AU et blocks de premier niveau le sont.
Le LMS émet un satisfied à chaque palier atteint. C’est ce mécanisme qui permet à un LMS de dire « ce module est validé, débloque le suivant » — exactement le jugement que xAPI seul ne savait pas rendre (chapitre 8.1).
🔌 Côté intégration — C’est ici que se joue l’expérience côté LMS client. L’enseignant ne voit ni tes statements ni tes IRI : il voit une coche verte quand l’apprenant a « validé » l’activité, et un déblocage de la suite. Cette coche, c’est le
satisfiedémis par son LMS à partir de tonmoveOn. UnmoveOnmal choisi (trop laxiste, ou impossible à satisfaire) se traduit par des tickets support « les élèves restent bloqués » ou « tout le monde est validé sans rien faire ». Le réglagemoveOn/masteryScoreest un choix pédagogique autant que technique.
Tester la conformité : CATAPULT
Un contenu cmi5 qui « marche chez toi » n’est pas un contenu conforme. Pour le vérifier avant de livrer, ADL fournit le projet CATAPULT (Content Authoring Tools And Player Underpinning Learning Technologies) — la référence outillée de cmi5. On y trouve, en substance :
- une suite de tests de conformité qui vérifie qu’un AU respecte le protocole (lancement, ordre des verbes, structure des statements defined, catégorie cmi5, cohérence
masteryScore/score) ; - un lecteur de référence pour exécuter et observer un cours cmi5 ;
- des bonnes pratiques et outils autour de la structure de cours.
Le réflexe pro : faire passer ton AU et ton cmi5.xml à la suite de conformité avant de les proposer à un client. Un rapport CATAPULT vert, c’est l’équivalent cmi5 d’un test SCORM Cloud réussi — du vérifiable, pas du « ça devrait passer ».
📚 La spec —
masteryScore, les cinq valeurs demoveOn, la remontée de satisfaction et le verbesatisfiedsont définis dans la cmi5 Specification d’ADL (adlnet.gov), section « MoveOn » et « Content Requirements ». CATAPULT est un projet ADL distinct, également documenté suradlnet.gov. Comme toujours : on enseigne les concepts, on vérifie le détail et la version courante à la source.
Bilan : quand choisir cmi5 ?
Tu as maintenant tout pour trancher. Le raisonnement en un arbre :
En clair :
- Choisis cmi5 quand le contenu est lancé par un LMS, que tu veux un suivi riche (voire mobile / hors navigateur) et une complétion cadrée, et que le LMS cible sait lire cmi5. C’est le cas idéal : le successeur de SCORM.
- Reste sur SCORM quand la compatibilité maximale prime (parc de LMS anciens qui ne gèrent pas encore cmi5) et que le suivi basique suffit. SCORM reste ultra-dominant.
- Reste en xAPI libre (sans cmi5) quand il n’y a pas de lancement LMS : atelier présentiel, appli autonome, simulateur — là où cmi5 n’a pas de prise.
🧭 Sur FormaCampus — Décision finale pour le module « Sécurité numérique ». FormaCampus le publie en cmi5 : lancé depuis le Moodle des écoles, tracé finement (y compris son appli mobile de révision), avec une complétion que Moodle comprend. Ses réglages :
moveOn="Completed"sur l’intro et la vidéo (les avoir parcourues suffit),moveOn="CompletedOrPassed"+masteryScore="0.8"sur le quiz (réussir ou avoir tout tenté). Résultat côté école : mêmes coches vertes qu’un SCORM, déblocage automatique de la suite, et un tableau de bord d’analytics que SCORM n’aurait jamais permis. Pour ses anciens clients sous un LMS qui ignore cmi5, FormaCampus continue de livrer la version SCORM — les deux formats coexistent, produits depuis la même source. La bascule SCORM → cmi5 est faite, chantier bouclé.
💡 Réflexe — « cmi5 partout » n’est pas la bonne conclusion. cmi5 brille pour le contenu lancé par un LMS. Pour brancher un outil vivant dans un LMS (ton appli qui rend un service et renvoie des notes), ce n’est pas cmi5 qu’il te faut : c’est LTI. C’est le sujet de la partie suivante.
✏️ Exercices
Exercice 1 — Choisis le moveOn. Pour chaque AU, donne le moveOn (et un masteryScore si utile) : (a) une vidéo d’introduction sans quiz ; (b) un examen final certifiant à 70 % ; (c) un TP où l’on veut que l’élève ait tout fait et réussi ; (d) une page « mentions légales » à afficher.
✅ Solution
(a) moveOn="Completed", pas de masteryScore — l’avoir regardée suffit. (b) moveOn="Passed", masteryScore="0.7" — seul le succès à 70 % valide ; un simple « terminé » ne doit pas passer. (c) moveOn="CompletedAndPassed" (plus un masteryScore selon le barème) — il faut les deux. (d) moveOn="NotApplicable" — contenu informatif, satisfait dès l’affichage, aucune notion de réussite ni de complétion.
Exercice 2 — Débogue la satisfaction. Un quiz a moveOn="Passed" et masteryScore="0.8". Un élève répond à toutes les questions, obtient 0,6, et se plaint que « le module ne se valide pas ». Est-ce un bug ? Que se passe-t-il exactement, et que changer si le métier voulait qu’« avoir tout tenté » suffise ?
✅ Solution
Ce n’est pas un bug : c’est le comportement correct. Avec moveOn="Passed", seul un passed satisfait l’AU. À 0,6 (sous le seuil de 0,8), l’AU émet failed, pas passed — donc le LMS n’émet pas satisfied et ne débloque rien. L’élève a « terminé » mais échoué. Si le métier voulait qu’« avoir tout tenté » suffise, il fallait moveOn="CompletedOrPassed" : l’AU aurait aussi émis completed, ce qui, avec CompletedOrPassed, aurait satisfait l’AU malgré l’échec. Le « bug » est en réalité un choix de moveOn inadapté au besoin pédagogique.
🧠 Quiz de révision
1. À quoi sert masteryScore, et où l’AU le reçoit-il ?
masteryScore, et où l’AU le reçoit-il ?C’est le seuil de réussite (0 à 1). L’AU le reçoit dans LMS.LaunchData au lancement, et s’en sert pour trancher : score au moins égal au seuil → passed ; score en dessous → failed. À lui seul, il ne décide pas de la satisfaction — c’est moveOn qui le fait.
2. Cite les cinq valeurs de moveOn et leur effet.
moveOn et leur effet.Passed (satisfait si passed), Completed (satisfait si completed), CompletedAndPassed (les deux), CompletedOrPassed (l’un ou l’autre), NotApplicable (aucune condition : satisfait dès l’expérience). Le choix dépend de la nature de l’AU (leçon vs évaluation).
3. Qui émet satisfied, et comment la satisfaction remonte-t-elle ?
satisfied, et comment la satisfaction remonte-t-elle ?C’est le LMS (pas l’AU) qui émet satisfied, quand la condition moveOn d’un AU est remplie. Elle remonte ensuite : un block est satisfait quand tous ses AU le sont ; le cours l’est quand tous ses AU/blocks de premier niveau le sont. Le LMS émet un satisfied à chaque palier.
4. À quoi sert CATAPULT ?
C’est le projet ADL de référence pour cmi5 : une suite de tests de conformité (protocole de lancement, ordre des verbes, structure des statements, catégorie cmi5, cohérence score/masteryScore), un lecteur de référence et des bonnes pratiques. On y fait passer son contenu avant de livrer, comme un test SCORM Cloud pour SCORM.
5. Dans quels cas cmi5 n’est-il PAS le bon choix ?
Quand il n’y a pas de lancement LMS (atelier présentiel, appli autonome, simulateur) → xAPI libre. Quand la compatibilité avec des LMS anciens qui ignorent cmi5 prime et que le suivi basique suffit → SCORM. Et pour brancher un outil vivant dans un LMS avec renvoi de notes → LTI (Partie 9), pas cmi5.
Partie suivante : LTI — brancher un outil — passer du « contenu qu’on lance » à « l’outil qu’on branche », connecté et capable de renvoyer des notes.