Skip to content

fix(labs): les messages d'échec en EN + FR - #7

Merged
stephrobert merged 1 commit into
mainfrom
fix/messages-bilingues
Oct 17, 2026
Merged

stephrobert merged 1 commit into
mainfrom
fix/messages-bilingues

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

Ce que cette PR change

63 messages bilingues sur les 7 labs.

Chaque message qu'un test fait lire à l'apprenant porte désormais ses deux langues, par le helper message(en=…, fr=…) du conftest.py. Le helper reste ici et jamais dans dsoxlab : un lab doit rester jouable par un pytest nu, sans le moteur, et c'est le test de non-couplage.

Ce catalogue fait partie des six que la première campagne avait sautés, parce qu'elle partait d'une liste écrite de six dépôts quand le disque en portait douze : 901 messages étaient restés dans une seule langue sans qu'aucun contrôle le dise. Le relevé se mesure désormais depuis le disque, et il ne prend aucun argument de catalogue.

Éprouvé

  • ruff check labs propre, 35 tests collectés sans erreur
  • dsoxlab validate-structure : tous les labs valides
  • dsoxlab instructor audit --json : 63 bilingues, 0 monolingue, 0 appel injoignable

🤖 Generated with Claude Code

Chaque message qu'un test fait lire à l'apprenant porte désormais ses deux
langues, par le helper `message(en=…, fr=…)` du `conftest.py` du catalogue. Le
helper reste ici et jamais dans dsoxlab : un lab doit rester jouable par un
`pytest` nu, sans le moteur, et c'est le test de non-couplage.

Deux leçons de la campagne valent d'être écrites.

La première : `pytest.fail(...)` dit exactement la même chose à l'apprenant
qu'un `assert`, et ne compter que le second laissait 256 messages hors de la
mesure, dont 220 pour un seul catalogue. Trois catalogues étaient déclarés
« entièrement bilingues » à tort.

La seconde : la forme ne prouve rien. Un catalogue affichait 93 messages
bilingues sur 93 dont les 93 rendaient un `NameError`, le nom du helper ayant
atterri dans un commentaire `noqa` au lieu de l'import. Quatre autres portaient
une variable locale `message` qui masquait le helper pour toute la fonction,
dont un cas que `ruff F823` ne voit pas : l'appel placé APRÈS l'affectation.
`dsoxlab instructor audit` mesure désormais si l'appel peut s'exécuter.

Les accents suivent la même règle : la réécriture est refusée si sa version
sans accent diffère de l'original, si bien qu'elle ne peut rien changer d'autre
que des signes diacritiques. Un mot reformulé, un identifiant touché, une
interpolation perdue sont rejetés avant écriture, et le garde-fou a servi deux
fois.

Co-Authored-By: Claude Opus 5 <[email protected]>
@stephrobert
stephrobert merged commit ad1ce9d into main Oct 17, 2026
8 checks passed
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.

1 participant