# Contrat des ancres (paragraphes opposables) ## Source de vérité du sélecteur Le site garantit la citabilité des paragraphes via des IDs injectés sur les balises `

`. **Sélecteur contractuel :** - `.reading p[id^="p-"]` Tout outillage (scripts, tests, docs) doit utiliser ce sélecteur comme référence. ## Ce que le test vérifie Le test compare, page par page, la liste des IDs de paragraphes présents dans `dist/` contre une baseline versionnée. - Ajouts d’IDs : généralement OK (nouveaux paragraphes). - Suppressions / churn élevé : alerte (risque de casser des citations existantes). ## Fichier baseline - `tests/anchors-baseline.json` ## Commandes 1) Générer / mettre à jour la baseline (cas intentionnel) : - `npm run build` - `npm run test:anchors:update` 2) Vérifier sans changer la baseline (cas normal) : - `npm run build` - `npm run test:anchors` ## Politique d’échec (pragmatique) Le test échoue si le churn d’une page dépasse un seuil (défaut : 20%) sur une page “suffisamment grande”.