Skip to content

docs(auteur): aligner le guide sur 0.1.84, et rendre la dérive détectable (0.1.85) - #205

Merged
stephrobert merged 1 commit into
mainfrom
docs/fixtures-alignees-0-1-84
Aug 25, 2026
Merged

docs(auteur): aligner le guide sur 0.1.84, et rendre la dérive détectable (0.1.85)#205
stephrobert merged 1 commit into
mainfrom
docs/fixtures-alignees-0-1-84

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

Summary

docs/catalog-author.md annonçait encore qu'une fixture non déclarée passait en
silence — « nothing says so »douze versions après l'ajout du contrôle
qui la signale.

C'est un drift que j'ai moi-même produit en corrigeant les fixtures : j'ai
mis à jour trois surfaces sur quatre — le comportement, le CHANGELOG, le
CLAUDE.md — et pas celle-là.

Corriger la phrase ne protège de rien

Elle repérimera au prochain contrôle ajouté. Ce commit corrige donc les deux :
la section, et l'absence de lien mécanique entre ce que le validateur détecte et
ce que la documentation en dit.

Le garde-fou : toute clé d'anomalie qu'un validator peut produire doit être
citée dans les deux pages auteur, et aucune clé disparue ne peut y rester. Les
clés sont lues par AST plutôt que listées à la main — une clé ajoutée doit
faire échouer le test, pas attendre qu'un lecteur la remarque.

Il ne sait pas lire une phrase, et ne prétend pas juger si le texte autour d'une
clé est juste. Il force à ouvrir la page au moment où le comportement change,
et c'est ce moment-là qui manquait.

La table que cela exigeait

Les pages ont gagné les 25 clés sur lesquelles un auteur peut agir, chacune
avec son sens. Elle a une valeur propre : c'est ce qu'un auteur lit dans la
sortie du validateur, et rien ne le lui traduisait.

Trois clés sont exemptées nommément, avec leur raison — elles dépendent du
réseau ou d'un incident de fichier, pas du contrat qu'un auteur écrit. Un test
vérifie qu'aucune exemption ne désigne un contrôle disparu.

Éprouvé par trois mutations

Mutation Ce que le garde-fou dit
un contrôle neuf, non documenté nomme content_piege_tout_neuf
la doc cite une clé disparue nomme content_broken_links
la lecture des validators casse 3 tests rouges, au lieu d'une liste vide

Une note de méthode

La clé de ma mutation faisait exactement la même longueur que l'originale
(23 caractères). Le .pyc gardait donc la même taille, Python le tenait pour à
jour après restauration, et le test échouait sur un code source pourtant
correct. Dix minutes perdues. À retenir : purger __pycache__ après une mutation
de même longueur.

Critères de l'issue

  • La section 5 décrit le comportement de 0.1.84, dans les deux sens.
  • Le cas « déclarée mais absente » est mentionné, avec le code 2.
  • L'exemption des fichiers cachés (.gitkeep) est dite.
  • Parité EN/FR.
  • Les autres pièges de la page ont été relus — aucun autre n'était périmé, et le garde-fou le confirme désormais en continu.

Type of change

  • Bug fix
  • New feature (le garde-fou)
  • Refactor
  • Documentation
  • Chore / tooling
  • Security / supply chain

Checklist

Always

  • uv run ruff check src/dsoxlab tests tests_e2e fuzz scripts passes
  • uv run mypy src/dsoxlab passes (strict)
  • uv run pytest passes — 866 passed, dont 5 neufs
  • uv run pytest tests_e2e passes — 18 passed
  • The engine stays domain-agnostic — la PR ne touche que docs/ et tests/
  • No hardcoded personal path or host
  • Manually tested — test_documentation_synchrone.py reste vert (41 tests)

When behavior changes

  • Both CHANGELOG.md and CHANGELOG.fr.md updated
  • Version bumped (0.1.84 → 0.1.85) and uv.lock refreshed

When a command or option is added, removed or changed

N/A — aucune commande ni option n'est touchée.

When .github/workflows/ is touched

N/A.

When the declarative contract (meta.yml / lab.yaml) changes

N/A — le contrat est inchangé ; c'est sa documentation qui est remise en
accord avec lui.

Related issues

Closes #195

🤖 Generated with Claude Code

…able (0.1.85)

docs/catalog-author.md annonçait encore qu'une fixture non déclarée passait en
silence — « nothing says so » — douze versions après l'ajout du contrôle qui la
signale. Le comportement, le CHANGELOG et le CLAUDE.md avaient suivi la
correction ; cette page non, et rien ne pouvait le dire.

C'est un drift que j'ai moi-même produit en corrigeant les fixtures : j'ai mis à
jour trois surfaces sur quatre. Corriger la phrase ne protège de rien, elle
repérimera au prochain contrôle ajouté. Ce commit corrige donc les deux : la
section, et l'absence de lien mécanique entre ce que le validateur détecte et ce
que la documentation en dit.

Le garde-fou : toute clé d'anomalie qu'un validator peut produire doit être citée
dans les deux pages auteur, et aucune clé disparue ne peut y rester. Les clés
sont lues par AST plutôt que listées à la main — une clé ajoutée doit faire
échouer le test, pas attendre qu'un lecteur la remarque.

Il ne sait pas lire une phrase, et ne prétend pas juger si le texte autour d'une
clé est juste. Il force à ouvrir la page au moment où le comportement change, et
c'est ce moment-là qui manquait.

Les pages ont gagné la table que cela exigeait : les 25 clés sur lesquelles un
auteur peut agir, chacune avec son sens. Elle a une valeur propre — c'est ce
qu'un auteur lit dans la sortie du validateur, et rien ne le lui traduisait.
Trois clés sont exemptées nommément, avec leur raison : elles dépendent du
réseau ou d'un incident de fichier, pas du contrat qu'un auteur écrit. Un test
vérifie qu'aucune exemption ne désigne un contrôle disparu.

Éprouvé par trois mutations : un contrôle neuf non documenté est nommé, une clé
citée mais disparue est nommée, et une lecture des validators cassée fait rougir
la suite au lieu de la rendre vide.

Une note de méthode, parce qu'elle m'a coûté dix minutes : la clé de mutation
faisait exactement la même longueur que l'originale, si bien que le .pyc gardait
la même taille et que Python le tenait pour à jour après restauration. Le test
échouait sur un code source pourtant correct. Purger __pycache__ après une
mutation de même longueur, ou vérifier le comportement plutôt que le fichier.

Vérifié : 866 tests dont 5 neufs, 18 e2e, ruff, mypy strict, et
test_documentation_synchrone toujours vert.

Closes #195

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@stephrobert
stephrobert merged commit 9d27872 into main Aug 25, 2026
19 checks passed
@stephrobert
stephrobert deleted the docs/fixtures-alignees-0-1-84 branch August 25, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P0] docs/catalog-author.md décrit encore le piège des fixtures que 0.1.84 a supprimé

1 participant