fix(atelier) : le garde de mandat tourne à nouveau, et les groupes nominaux sont des ordres #1920

Merged
foXaCe merged 1 commit from passe-20261018-160000-gardemandat into main 2026-10-18 13:35:48 +02:00
Owner

Trois défauts sur verifier-mandat-executant.sh, mesurés le 2026-10-18.

1. Le garde ne s'exécutait plus

Le commit b5b82667 (« FOXA-2908 : détecter les groupes nominaux ») a inséré une ligne dont la fin
est recopiée deux fois :

r"corriger|...|passer\s+en(?!\s+revue))\b"),        r"corriger|passer\s+en(?!\s+revue))\b"),

→ SyntaxError: closing parenthesis ')' does not match opening parenthesis '{'. Le garde sortait
en 1 avec une trace Python.

⚠ Ce que ça coûtait. avant-dispatch.sh joue ce garde et propage son code : un 1 est un refus
motivé. Depuis le 2026-10-17 à 20:14, chaque dispatch était refusé avec une trace Python à la
place de l'acte nommé.

⚠ Pourquoi personne ne l'a vu. La veille joue les verifier-*.sh sans argument : le garde
sort en 2 avant d'atteindre le code fautif. Et le banc qui l'aurait attrapé n'est joué par aucun
coureur.

2. FOXA-2908 n'était pas corrigé — il l'est

Après réparation, un mandat en groupes nominaux rendait encore VERT :
« · Édition du fichier x.sh. · Commit de la modification. »

La raison est écrite dans le garde (FOXA-2913) : un nom d'action n'ordonne pas seul, il lui faut
une RÉSERVE. Ajouter les noms au lexique sans toucher à cette règle ne pouvait rien changer.

Ce qui est ajouté est la conjonction qui manquait : un nom d'action en tête de puce et
suivi d'un fichier ne décrit plus, il commande.

· Édition du fichier `outils/x.py`              → ORDRE   (nom en tête de puce + fichier)
la modification de `REGISTRE.md` a été livrée   → mention (le nom n'est pas en tête)

3. Une addition à un ticket n'est pas une édition de fichier

Le banc rendait ROUGE — 1 cas sur 62 : autopilotes/la-ronde-de-l-atelier.md ligne 105,
« ajoute à FOXA-2816 la mesure du jour » était lu comme « éditer un fichier ». Le chef porte
l'ouverture et le commentaire de ticket ; ce qui tranche est l'absence de fichier dans la phrase.

Ce faux positif précède b5b82667 (vérifié sur c301221c) : il était masqué par le
SyntaxError.

Les preuves

$ ./test-verifier-mandat-executant.sh
VERDICT : VERT — 62 cas                              (avant : ROUGE — 1 cas sur 62)

$ ./verifier-mandat-executant.sh --fichiers mandat-nominal.md --porteur Mika
ligne 5 · acte demandé : éditer un fichier « Édition »
VERDICT : ROUGE — 1 ordre(s) hors de la frontière     code 1   (avant : VERT, code 0)

$ ./verifier-mandat-executant.sh --fichiers autopilotes/*.md --porteur Mika
VERDICT : VERT — 20 mandats                          (aucun faux positif)

Ce qui reste, et qui n'est pas dans cette PR

Le banc test-verifier-mandat-executant.sh n'est joué par aucun coureur : il n'est cité que
dans des commentaires. C'est pour ça qu'un SyntaxError a tenu dix-sept heures. L'accrocher à la
veille est une décision à part — le banc compte 62 cas, et la veille n'a pas à la porter par
surprise.

Trois défauts sur `verifier-mandat-executant.sh`, mesurés le 2026-10-18. ## 1. Le garde ne s'exécutait plus Le commit `b5b82667` (« FOXA-2908 : détecter les groupes nominaux ») a inséré une ligne dont la fin est recopiée deux fois : ``` r"corriger|...|passer\s+en(?!\s+revue))\b"), r"corriger|passer\s+en(?!\s+revue))\b"), ``` → `SyntaxError: closing parenthesis ')' does not match opening parenthesis '{'`. Le garde sortait en `1` avec une trace Python. ⚠ **Ce que ça coûtait.** `avant-dispatch.sh` joue ce garde et propage son code : un `1` est un refus motivé. Depuis le 2026-10-17 à 20:14, **chaque dispatch était refusé avec une trace Python** à la place de l'acte nommé. ⚠ **Pourquoi personne ne l'a vu.** La veille joue les `verifier-*.sh` **sans argument** : le garde sort en `2` avant d'atteindre le code fautif. Et le banc qui l'aurait attrapé n'est joué par aucun coureur. ## 2. `FOXA-2908` n'était pas corrigé — il l'est Après réparation, un mandat en groupes nominaux rendait encore **VERT** : « · Édition du fichier `x.sh`. · Commit de la modification. » La raison est écrite dans le garde (`FOXA-2913`) : un nom d'action n'ordonne pas seul, il lui faut une RÉSERVE. Ajouter les noms au lexique sans toucher à cette règle ne pouvait rien changer. Ce qui est ajouté est **la conjonction qui manquait** : un nom d'action **en tête de puce** et **suivi d'un fichier** ne décrit plus, il commande. ``` · Édition du fichier `outils/x.py` → ORDRE (nom en tête de puce + fichier) la modification de `REGISTRE.md` a été livrée → mention (le nom n'est pas en tête) ``` ## 3. Une addition à un ticket n'est pas une édition de fichier Le banc rendait `ROUGE — 1 cas sur 62` : `autopilotes/la-ronde-de-l-atelier.md` ligne 105, « ajoute à `FOXA-2816` la mesure du jour » était lu comme « éditer un fichier ». Le chef porte l'ouverture et le commentaire de ticket ; ce qui tranche est l'**absence de fichier** dans la phrase. Ce faux positif **précède** `b5b82667` (vérifié sur `c301221c`) : il était masqué par le `SyntaxError`. ## Les preuves ``` $ ./test-verifier-mandat-executant.sh VERDICT : VERT — 62 cas (avant : ROUGE — 1 cas sur 62) $ ./verifier-mandat-executant.sh --fichiers mandat-nominal.md --porteur Mika ligne 5 · acte demandé : éditer un fichier « Édition » VERDICT : ROUGE — 1 ordre(s) hors de la frontière code 1 (avant : VERT, code 0) $ ./verifier-mandat-executant.sh --fichiers autopilotes/*.md --porteur Mika VERDICT : VERT — 20 mandats (aucun faux positif) ``` ## Ce qui reste, et qui n'est pas dans cette PR Le banc `test-verifier-mandat-executant.sh` n'est joué par **aucun coureur** : il n'est cité que dans des commentaires. C'est pour ça qu'un `SyntaxError` a tenu dix-sept heures. L'accrocher à la veille est une décision à part — le banc compte 62 cas, et la veille n'a pas à la porter par surprise.
Trois défauts, mesurés le 2026-10-18 sur `verifier-mandat-executant.sh`.

## 1. Le garde ne s'exécutait plus

Le commit `b5b82667` (« FOXA-2908 : détecter les groupes nominaux ») a inséré une ligne dont la fin
est recopiée deux fois :

    r"corriger|...|passer\s+en(?!\s+revue))\b"),        r"corriger|passer\s+en(?!\s+revue))\b"),

→ `SyntaxError: closing parenthesis ')' does not match opening parenthesis '{'`. Le garde sortait en
`1` avec une trace Python.

⚠ **CE QUE ÇA COÛTAIT.** `avant-dispatch.sh` joue ce garde et propage son code : un `1` est un refus
motivé. Depuis le 2026-10-17 à 20:14, chaque dispatch était refusé avec une **trace Python** à la
place de l'acte nommé.

⚠ **POURQUOI PERSONNE NE L'A VU.** La veille joue les `verifier-*.sh` **sans argument** : le garde
sort en `2` avant d'atteindre le code fautif. Et le banc qui l'aurait attrapé n'est joué par aucun
coureur.

## 2. `FOXA-2908` n'était pas corrigé — il l'est

Après réparation, un mandat en groupes nominaux rendait encore **VERT** :
« · Édition du fichier `x.sh`. · Commit de la modification. » La raison est écrite dans le garde
(`FOXA-2913`) : un nom d'action n'ordonne pas seul, il lui faut une RÉSERVE. Ajouter les noms au
lexique sans toucher à cette règle ne pouvait rien changer.

Ce qui est ajouté est **la conjonction qui manquait** : un nom d'action **en tête de puce** et
**suivi d'un fichier** ne décrit plus, il commande.

```
· Édition du fichier `outils/x.py`        → ORDRE  (nom en tête de puce + fichier)
la modification de `REGISTRE.md` a été livrée → mention (le nom n'est pas en tête)
```

C'est ce qui le sépare d'une description, et c'est mesuré : le banc reste vert sur les 62 cas.

## 3. Une addition à un ticket n'est pas une édition de fichier

Le même banc rendait `ROUGE — 1 cas sur 62` : `autopilotes/la-ronde-de-l-atelier.md` ligne 105,
« ajoute à `FOXA-2816` la mesure du jour » était lu comme « éditer un fichier ». Le chef porte
l'ouverture et le commentaire de ticket ; ce qui tranche est l'**absence de fichier** dans la phrase.
Dès qu'un fichier y est nommé, la règle ordinaire s'applique.

Ce faux positif **précède** `b5b82667` (vérifié sur `c301221c`) : il était masqué par le
`SyntaxError`.

## Les preuves

```
$ ./test-verifier-mandat-executant.sh
VERDICT : VERT — 62 cas                              (avant : ROUGE — 1 cas sur 62)

$ ./verifier-mandat-executant.sh --fichiers mandat-nominal.md --porteur Mika
ligne 5 · acte demandé : éditer un fichier « Édition »
VERDICT : ROUGE — 1 ordre(s) hors de la frontière     code 1   (avant : VERT, code 0)

$ ./verifier-mandat-executant.sh --fichiers autopilotes/*.md --porteur Mika
VERDICT : VERT — 20 mandats                          (aucun faux positif)
```

⚠ **CE QUI RESTE, ET QUI N'EST PAS DANS CE COMMIT.** Le banc `test-verifier-mandat-executant.sh`
n'est joué par **aucun coureur** : il n'est cité que dans des commentaires. C'est pour ça qu'un
`SyntaxError` a tenu dix-sept heures. L'accrocher à la veille est une décision à part — le banc
compte 62 cas et dure, et la veille n'a pas à la porter par surprise.
foXaCe merged commit d0ed800c8f into main 2026-10-18 13:35:48 +02:00
foXaCe deleted branch passe-20261018-160000-gardemandat 2026-10-18 13:35:48 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/nuvio-atelier!1920
No description provided.