> ⚠️ **MODE DEV STRICT (pas PROD)**  
> - **Aucune transition**, **aucun fallback**, **aucune rétro-compat**.  
> - Soit on règle un point proprement soit on n'y touche pas. pas de zone de : "transition ou entre deux".  
> - Toute contribution qui introduit une zone grise, un compromis ou un retour au legacy est **refusée**.

# Packs MCC — Manifest, Validation, Contributions

## Manifest MCC
- `packs/<id>/manifest.mcc.json` décrit: `pack` (id, version), `tags`, `ui`, `datasets`, `rules`.
- Le manifest est **validé** à l’entrée (`MccValidator`) selon `config/mcc.schema.json` + règles supplémentaires.

## Chargement & registres
- `PackLoader` charge les packs activés (`config/packs/enabled.json`) et enregistre:
  - Tags → `SystemTagRegistry`
  - UI slots → `UiSlotRegistry`
  - Datasets → `DatasetStore`
  - Rules → `RulesCatalog`

## Datasets
- `DatasetStore` gère les définitions (id, packId, kind, schema, path), lecture/écriture JSON.
- Recommandations: versionnement du dataset, schéma JSON minimal, ETag si exposé côté HTTP.

## Endpoints packs (lecture)
- `GET /api/packs/manifest` → projection combinée (tags/rules/datasets) pour le front.
- `GET /api/packs/slots` → contributions UI groupées par slot pour rendu dynamique.
- `PUT /api/packs/config` → activer/désactiver des packs (mutation autorisée par liste d’autorisation).

## Garde-fous
- Aucun pack ne peut exposer d’API HTTP côté back; contributions **déclaratives uniquement**.
- Les erreurs côté endpoints packs suivent le contrat canonique (`Response::error`).
