Anchors: contract + baseline + churn test
This commit is contained in:
30
docs/anchors.md
Normal file
30
docs/anchors.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# 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 `<p>`.
|
||||
|
||||
**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”.
|
||||
Reference in New Issue
Block a user