Un profil projet, pour qu'une machine vérifie à ma place - #2
Merged
Conversation
Les commandes /flow:* ont besoin d'un contrat pour savoir quoi lancer ici. Sans lui elles devinent, et une commande devinée qui n'a jamais tourné fait déclarer « vert » un travail que personne n'a vérifié. D'où le bloc « Profil projet » en tête de CLAUDE.md : chaque commande qui y figure a été lancée et rend bien 0. Le premier jet de ce bloc annonçait `npm run sync-dist` comme un contrôle. Il ne l'est pas : sans `--check`, le script ÉCRASE dist/ avec l'état courant des sources. Un travail en cours serait parti dans le distribuable sous couvert de vérification — contre la règle n°1 que ce bloc prétend documenter. C'est `--check` qui vérifie ; le profil le dit maintenant, avertissement compris. Le compte de tests était resté à 328 à deux endroits vivants alors que la suite en rend 335 : le badge du README, première chose que voit un visiteur, et la consigne « vérifier le compte (328) » qui sert justement à repérer des tests d'interface ignorés en silence. Les mentions datées de la campagne du 2026-08-05 gardent leur 328 : elles racontent ce qui était vrai ce jour-là. Et le chiffre ne vit plus qu'à un seul endroit, pour ne plus se contredire. .gitignore n'excluait ni .env ni les clés privées ; aucun fichier de ce type n'existe dans le dépôt, l'ajout est préventif. docs/specs/ et docs/decisions/ ouvrent la place de /flow:spec et /flow:design, et CLAUDE.md y renvoie. Sans ce renvoi ils seraient restés vides : PLAN-V2.md s'était déclaré « document historique » et a reçu une section de décision entière deux jours plus tard, faute d'un autre endroit désigné. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Corriger 328 en 335 à la main, c'était refaire le geste qui avait produit l'erreur. Le nombre est recopié dans le badge du README — première chose que voit un visiteur — et dans la consigne du CLAUDE.md qui sert justement à repérer des tests d'interface ignorés en silence : un repère de comptage faux ne signale plus rien. La CI lit maintenant le vrai compte dans la sortie de la suite qu'elle vient de lancer, et refuse l'écart. Le vérificateur a mordu à son premier essai : il annonçait 335, la suite en rendait déjà 341 à cause des six tests ajoutés ici même. Deux précautions, prises parce que ce dépôt a déjà payé les deux : - `set -o pipefail` avant le `tee`. Le shell d'Actions ne l'active pas : sans lui, le code de sortie retenu serait celui de `tee`, toujours 0, et une suite ROUGE passerait pour verte. - Un témoin positif, comme pour l'analyse de SYSTRAY_PS1 : les tests vérifient que le vérificateur sait dire NON — sortie tronquée, rapporteur inconnu, badge trafiqué. Un check qu'on n'a jamais vu refuser quoi que ce soit est décoratif. Les deux formes de sortie de `node --test` sont acceptées (« ℹ tests N » et « # tests N ») : Node choisit selon que la sortie part sur un terminal ou dans un fichier, et ce choix a déjà changé d'une version à l'autre. L'« Historique des décisions » de docs/ETAT-DU-PROJET.md est déclaré clos, et renvoie vers docs/decisions/. Sans ça, la prochaine décision serait partie à l'ancienne adresse — c'est arrivé à PLAN-V2.md, qui s'était déclaré historique et a reçu une section entière deux jours plus tard. 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.
Objectif
Donner aux commandes
/flow:*un contrat lisible pour savoir quoi lancer sur cedépôt. Sans lui elles devinent — et une commande devinée, jamais exécutée, fait
déclarer « vert » un travail que personne n'a vérifié.
Pas de spec : chantier d'outillage, lancé par
/flow:init-project.Changements
CLAUDE.md— type, stack, commandes,modules critiques, règle git, et où écrire specs et décisions. Chaque commande
listée a été lancée sur cette machine et rend
0.le badge du README et dans la consigne « vérifier le compte (N) », et il est
resté à 328 pendant que la suite en rendait 335. La CI lit désormais le vrai
compte dans la sortie de la suite et refuse l'écart (
tools/verifie-compte-tests.js)..gitignore: secrets et clés privées (préventif) ·docs/specs/etdocs/decisions/avec leur README, l'« Historique des décisions » dedocs/ETAT-DU-PROJET.mdétant déclaré clos et renvoyant vers eux.Vérifications réellement effectuées
npm testnode sync-dist.js --checknode tools/verifie-compte-tests.jscode-reviewer+architecttests+powershellsur87d3b82success, vérifié sur le SHADeux défauts attrapés par la vérification, pas par moi.
npm run sync-distcomme un contrôle. Sans--check, ce script écrasedist/avec l'état courant des sources : unecommande future l'aurait lancé en croyant vérifier, et aurait poussé un travail
en cours dans le distribuable — contre la règle n°1, dans le bloc censé la
documenter.
la suite en rendait déjà 341 à cause des six tests ajoutés ici même.
Deux précautions prises, parce que ce dépôt a déjà payé les deux :
set -o pipefailavant le
tee(sans lui, le code de sortie serait celui detee, toujours 0, etune suite rouge passerait pour verte), et un témoin positif — les tests
vérifient que le vérificateur sait dire NON sur une sortie tronquée, un rapporteur
inconnu ou un badge trafiqué.
Risques et surveillance
node build.jsn'a pas été lancé (250 Mo de téléchargement) : lesexécutables ne sont pas reconstruits, et rien ici ne le prétend.
/security-reviewn'a pas été lancé : le diff ne contient presque aucuncode exécutable, et rien qui touche aux entrées réseau, aux fichiers du serveur
ou aux permissions. Vérifications faites à la place — aucun fichier suivi ne
devient ignoré, aucun jeton dans le diff indexé.
node --test. Les deuxformes connues sont acceptées (
ℹ tests Net# tests N) ; si une versionfuture en invente une troisième, l'étape deviendra rouge, pas silencieuse.
C'est le comportement voulu.
docs/specs/README.mdle sort des grosdocuments façon
PLAN-V2.mdpour le prochain chantier de cette taille.🤖 Generated with Claude Code