Repository navigation
feat(0.5.3): quatre manques du socle, mesurés sur sept catalogues réels - #322
Merged
Merged
Conversation
CE QUE SEPT CATALOGUES NEUFS ONT MONTRÉ
Créés le 2026-10-17, ils ont servi de banc d'essai à ce que `new catalog`
produit. Trois défauts se voyaient dans un simple `git status`, et le quatrième
dans une comparaison avec les treize dépôts établis.
1. LE `.gitignore` NE COUVRAIT AUCUN ARTEFACT PYTHON
`__pycache__/`, `.pytest_cache/` et `.venv/` apparaissaient en non-suivi dès la
première suite de tests : le gabarit ne couvrait que la progression, la clé
privée et les répertoires de travail. Un `git status` encombré est ce qui fait
manquer les vrais changements. Six motifs ajoutés.
2. LES HOOKS D'ESPACES RÉÉCRIVAIENT `LICENSE`
`end-of-file-fixer` lui retirait sa ligne finale à chaque passage : sur ces
mêmes sept catalogues, `git status` affichait `M LICENSE` sans qu'aucun humain
y ait touché. Le texte d'une licence se reconnaît au caractère près, et c'est
ainsi que GitHub l'identifie.
Le même défaut avait été corrigé dans ce dépôt plus tôt le même jour, pour les
licences packagées. Le socle le reproduisait chez ses enfants.
3. UN CATALOGUE NEUF NE CONTRÔLAIT PAS SON VERROU
Les treize dépôts établis portent tous le hook `uv lock --check` ; le socle n'en
produisait aucun. Un verrou qui dérive de son `pyproject.toml` ne verrouille
plus rien, et c'est lui que les scanners de vulnérabilités lisent.
4. ET PERSONNE NE DISAIT COMMENT LE CRÉER
Le socle ne peut pas produire un verrou : le résoudre demande le réseau. Le
hook échoue donc sur un catalogue neuf, et c'est juste, mais il doit dire quoi
faire. Il porte sa consigne, et `new catalog` nomme désormais `uv lock` comme
PREMIER geste, dans les deux langues.
TROIS CLIQUETS, ET DEUX FAÇONS DE LES PROUVER
`tests/test_socle_du_catalogue.py` vérifie que le `.gitignore` couvre les
artefacts, qu'aucun hook d'espaces ne touche `LICENSE`, et que le verrou est
contrôlé au commit avec sa consigne énoncée.
Par mutation :
le .gitignore reperd les artefacts → rouge
LICENSE n'est plus épargnée → rouge
le hook du verrou disparaît → rouge
Et par le comportement, sur un catalogue réellement créé avec cette branche :
après `pytest tests/` 0 fichier non suivi
après les hooks d'espaces 0 fichier modifié, LICENSE intacte
`pre-commit run verrou-a-jour` échoue en disant « run `uv lock` »
UN DÉTAIL D'ÉCHAPPEMENT, SIGNALÉ PAR PYTHON LUI-MÊME
`PRE_COMMIT` est une chaîne non brute : le motif `files: '^(pyproject\.toml…'`
y demande `\\.`, sans quoi Python émet un SyntaxWarning sur une séquence
d'échappement invalide. C'est la deuxième fois aujourd'hui qu'un niveau
d'échappement manque dans ce module, après les accolades du workflow de
release ; les deux fois, un outil l'a dit avant tout commit.
VÉRIFIÉ
pytest tests/ 1614 passed
tests du socle 22 passed, dont 3 nouveaux
test_i18n_coverage 13 passed
ruff check src/ tests/ scripts/ All checks passed
mypy src/dsoxlab/ 97 fichiers, aucune erreur
complexite / code-mort / écran les trois cliquets verts
new catalog en fr ET en le message nomme `uv lock` en premier
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ce que sept catalogues neufs ont montré
Créés le 2026-10-17, ils ont servi de banc d'essai à ce que
new catalogproduit. Trois défauts se voyaient dans un simplegit status, le quatrième dans une comparaison avec les treize dépôts établis.1. Le
.gitignorene couvrait aucun artefact Python__pycache__/,.pytest_cache/et.venv/apparaissaient en non-suivi dès la première suite de tests : le gabarit ne couvrait que la progression, la clé privée et les répertoires de travail. Ungit statusencombré est ce qui fait manquer les vrais changements. Six motifs ajoutés.2. Les hooks d'espaces réécrivaient
LICENSEend-of-file-fixerlui retirait sa ligne finale à chaque passage : sur ces mêmes sept catalogues,git statusaffichaitM LICENSEsans qu'aucun humain y ait touché. Le texte d'une licence se reconnaît au caractère près, et c'est ainsi que GitHub l'identifie.Le même défaut avait été corrigé dans ce dépôt plus tôt le même jour, pour les licences packagées. Le socle le reproduisait chez ses enfants.
3. Un catalogue neuf ne contrôlait pas son verrou
Les treize dépôts établis portent tous le hook
uv lock --check; le socle n'en produisait aucun. Un verrou qui dérive de sonpyproject.tomlne verrouille plus rien, et c'est lui que les scanners de vulnérabilités lisent.4. Et personne ne disait comment le créer
Le socle ne peut pas produire un verrou : le résoudre demande le réseau. Le hook échoue donc sur un catalogue neuf, et c'est juste, mais il doit dire quoi faire. Il porte sa consigne, et
new catalognomme désormaisuv lockcomme premier geste, dans les deux langues.Trois cliquets, et deux façons de les prouver
Par mutation :
.gitignorereperd les artefactsLICENSEn'est plus épargnéePar le comportement, sur un catalogue réellement créé avec cette branche :
Un détail d'échappement, signalé par Python lui-même
PRE_COMMITest une chaîne non brute : le motiffiles: '^(pyproject\.toml…'y demande\\., sans quoi Python émet unSyntaxWarningsur une séquence d'échappement invalide. C'est la deuxième fois aujourd'hui qu'un niveau d'échappement manque dans ce module, après les accolades du workflow de release ; les deux fois, un outil l'a dit avant tout commit.Vérifié
🤖 Generated with Claude Code