# StageMentor Pack — Format 0.2

## Date

19 août 2026

---

## 1. Objectif

Le format 0.2 est la **norme unique** des packs StageMentor. Il formalise la séparation entre :

- **Critères officiels** du référentiel ou de la certification (`criteria.json`) ;
- **Attendus observables StageMentor** (`expectations.json`), qui explicitent ce que l'apprenant doit réellement être capable de faire, mobiliser, analyser, interpréter, justifier, décider, produire ou améliorer en situation professionnelle.

Cette séparation empêche de présenter une explicitation pédagogique StageMentor comme un critère officiel.

**Principe fondamental :**

- **Criterion** = critère officiel du référentiel ou de la certification.
- **Expectation** = attendu observable StageMentor explicitant ce qui permet d'apprécier la maîtrise d'un ou plusieurs critères officiels.
- **Question** = moyen de recueillir une preuve sur une expectation.

---

## 2. Hiérarchie conceptuelle

```text
Formation
└── Pack racine
    ├── Bloc
    │   └── Groupe de compétences
    │       └── Compétence atomique
    │           ├── Critère officiel
    │           │   └── Expectation(s) StageMentor
    │           └── Expectation(s) StageMentor (référence un ou plusieurs critères)
    └── Sous-pack
        ├── question_bank.json
        ├── questionnaire_templates.json
        └── workflows.json
```

Chaîne du Question Builder :

```text
Question
→ Expectation
→ Criterion officiel
→ Compétence atomique
→ Groupe
→ Bloc
```

---

## 3. Structure d'un pack 0.2

```text
<pack>/
├── manifest.json                    # schema_version = "0.2"
├── formation.json
├── sources.json                     # traçabilité des sources (optionnel)
└── referentiel/
    ├── blocks.json
    ├── competencies.json
    ├── criteria.json                # critères officiels UNIQUEMENT
    ├── expectations.json            # attendus observables StageMentor
    └── mastery_levels.json
```

`expectations.json` est un composant obligatoire déclaré dans `manifest.json`.
`sources.json` est un composant optionnel reconnu par le validateur.

---

## 4. `criteria.json` — critères officiels

```json
{
  "id": "criterion.fr.bts.ndrc.b1.c1.3.c1",
  "code": "B1.C1.3.C1",
  "label": "Efficacité des choix opérés",
  "competency_ref": "competency.fr.bts.ndrc.b1.c1.3",
  "provenance": "OFFICIEL",
  "source_refs": ["francecompetences.rncp38368", "legifrance.jorftext000036672161"]
}
```

Règles :

- `provenance` vaut `OFFICIEL` pour un critère explicitement présent dans une source officielle.
- Les critères sont dédupliqués par `(competency_ref, label normalisé)`.
- Aucune expectation pédagogique ne doit être présentée comme un critère officiel.

---

## 5. `expectations.json` — attendus observables StageMentor

```json
{
  "id": "expectation.fr.bts.ndrc.b1.c1.3.e3",
  "code": "B1.C1.3.E3",
  "label": "Les résultats de la prospection sont suivis à l’aide d’indicateurs commerciaux pertinents.",
  "competency_ref": "competency.fr.bts.ndrc.b1.c1.3",
  "criterion_refs": ["criterion.fr.bts.ndrc.b1.c1.3.c1"],
  "provenance": "STRUCTURATION_STAGEMENTOR",
  "context": [
    { "type": "indicator", "label": "Taux de transformation", "provenance": "CONTEXTE_PEDAGOGIQUE_EXTERNE", "source_refs": [] }
  ],
  "methods_tools": [
    { "type": "tool", "label": "CRM", "provenance": "CONTEXTE_PEDAGOGIQUE_EXTERNE", "source_refs": [] }
  ],
  "possible_evidence": [
    { "label": "Tableau de bord de prospection renseigné", "provenance": "PROPOSITION_PEDAGOGIQUE", "source_refs": [] }
  ]
}
```

Contraintes :

- `competency_ref` obligatoire.
- `criterion_refs` doit contenir au moins un critère officiel existant.
- `provenance` obligatoire et parmi les valeurs listées au §8.
- Aucun quota d'expectations : le nombre dépend de la richesse réelle du critère et de la compétence.

---

## 6. Contexte pédagogique (`context`, `methods_tools`, `possible_evidence`)

### 6.1 `context`

Éléments qui aident à comprendre l'attendu sans constituer automatiquement un élément évalué.

Types acceptés : `notion`, `method`, `tool`, `indicator`, `ratio`, `concept`, `technique`.

Exemples : taux de contact, taux de réponse, taux de transformation, panier moyen, segmentation, coût d'acquisition, entonnoir de prospection, SEO, CRM.

### 6.2 `methods_tools`

Méthodes et outils spécifiques rattachés à l'expectation.

Exemples : tableau de bord de prospection, CRM, script, matrice de segmentation.

### 6.3 `possible_evidence`

Traces ou observations susceptibles d'apprécier ultérieurement la maîtrise de l'attendu.

Important : il ne s'agit pas de preuves effectivement recueillies auprès d'un élève.

---

## 7. `competencies.json` — compétences

Conserve :

- groupes de compétences ;
- compétences atomiques ;
- éléments officiels propres aux compétences ;
- contexte réellement transversal à toute la compétence (contexte d'activité, savoirs officiels).

Le contexte pédagogique spécifique à un attendu particulier est déplacé vers `expectations.json`.

---

## 8. Provenance

Valeurs autorisées :

| Valeur | Signification |
|---|---|
| `OFFICIEL` | Explicitement présent dans une source officielle. |
| `INSTITUTIONNEL_PEDAGOGIQUE` | Provenant d'une ressource institutionnelle (académie, circulaire pédagogique…). |
| `CONTEXTE_PEDAGOGIQUE_FOURNI` | Contexte pédagogique fourni par l'utilisateur ou un partenaire. |
| `CONTEXTE_PEDAGOGIQUE_EXTERNE` | Notion/issue d'une ressource pédagogique externe. |
| `STRUCTURATION_STAGEMENTOR` | Rattachement, adaptation ou structuration technique opérée par StageMentor. |
| `PROPOSITION_PEDAGOGIQUE` | Contenu observable ou exemple créé pour l'exploitation pédagogique. |

Une information déduite à partir d'une source officielle n'est pas automatiquement `OFFICIELLE`. Le rattachement précis à une compétence ou expectation est typiquement `STRUCTURATION_STAGEMENTOR`.

---

## 9. Validation 0.2

Le validateur `validatePackFiles` de `src/lib/pack-format/pack-validation-0.2.ts` vérifie :

- JSON valide et schémas respectés ;
- fichiers obligatoires présents (`expectations.json` inclus) ;
- `schema_version` = `"0.2"` ;
- identifiants et codes uniques ;
- `competency_ref` résolu ;
- `criterion_refs` résolus ;
- `expectation_refs` des questions résolus et cohérents ;
- aucune expectation orpheline ;
- provenance valide ;
- hiérarchie valide ;
- manifest cohérent ;
- cohérence des références sous-packs ;
- critères officiels sans expectation signalés en avertissement ;
- expectations sans `criterion_ref` signalées en erreur.

### 9.1 `tests/expected_counts.json` (optionnel)

Le fichier `tests/expected_counts.json` permet de contrôler les comptages du pack. Les clés reconnues sont :

| Clé | Description |
|---|---|
| `blocks` | Nombre de blocs de compétences. |
| `competency_groups` | Nombre de groupes de compétences. |
| `atomic_competencies` | Nombre de compétences atomiques. |
| `criteria` | Nombre de critères officiels. |
| `expectations` | Nombre d'attendus observables StageMentor. |
| `criteria_without_expectations` | Critères officiels n'ayant aucun attendu explicite. |
| `expectations_without_criterion_ref` | Attendus sans critère officiel référencé (généralement 0). |
| `stage_questions` | Nombre total de questions dans tous les sous-packs. |
| `questionnaire_templates` | Nombre total de modèles de questionnaire. |
| `workflows` | Nombre total de workflows. |

Les deux compteurs de cohérence (`criteria_without_expectations` et `expectations_without_criterion_ref`) sont pris en charge par le validateur ; s'ils sont présents dans `expected_counts.json`, ils sont comparés aux valeurs calculées.

Les sous-packs sont traités dans l'ordre suivant :

1. les composants `subpack` déclarés dans `manifest.json` ;
2. les dossiers `subpacks/<nom>/manifest.json` présents dans l'archive mais non déclarés (découverte automatique avec avertissement).

Tout sous-pack présent physiquement dans `subpacks/` **doit être déclaré explicitement** dans le `manifest.json` racine :

- dans `components`, avec `type` = `subpack` et `path` = `subpacks/<nom>/manifest.json` ;
- dans `relations`, avec `type` = `BELONGS_TO`, `source` = l'`id` du sous-pack et `target` = l'`id` du pack racine.

La découverte automatique avec avertissement ne doit pas être utilisée comme méthode normale : elle signale une déclaration manquante. Pour éviter les avertissements d'import, le sous-pack doit être déclaré dans le manifest racine avant la compression du ZIP.

---

## 10. Pack Studio

Pack Studio reconnaît uniquement le format 0.2.

Fonctionnalités :

- affichage des critères officiels et des expectations ;
- ajout/suppression d'expectation ;
- édition du libellé des critères et des expectations ;
- édition des liens `criterion_refs` et `competency_ref` ;
- affichage du contexte, des méthodes/outils et des preuves possibles ;
- validation 0.2 ;
- export ZIP au format 0.2.

---

## 11. Question Builder

Le Question Builder travaille au niveau **EXPECTATION**.

Chaque question produite doit référencer :

- `expectation_refs` : expectation(s) observée(s) ;
- `criterion_refs` : critère(s) officiel(s) associé(s) ;
- `competency_refs` : compétence(s) atomique(s) associée(s).

La chaîne Question → Expectation → Criterion → Compétence doit être traçable.

---

## 12. Liens

- `src/lib/pack-format/pack-format-0.2.ts` — schémas Zod et types TypeScript.
- `src/lib/pack-format/pack-validation-0.2.ts` — validateur 0.2.
