[DTP-Worker 20260805_131244] FIX régression gate constraints-guard : tree committé RED (32 PASS·1 FAIL) malgré « 33 PASS » annoncé par 127ef6f

Au démarrage ./run_ci.sh échouait sur constraints-guard : ligne 1206 de l'activity_log 2026-08-05 cite « aucun `git clean` » (#1) sans marqueur ; le `ci-allow` posé par la session précédente était sur la ligne 1207 (paragraphe hard-wrappé) alors que scan_forbidden fait grep -in LIGNE PAR LIGNE → l'escape doit être SUR la ligne fautive, une ligne voisine est inerte. 3e récurrence de la sous-classe `aucun git clean` mais 1re variante « marqueur mal placé » (les 2 précédentes = marqueur absent).

FIX (journal only, 0 prod, 0 artefact, 0 gate) : escape fusionné INLINE sur la ligne fautive + suppression du comment orphelin. Le journal-de-correction lui-même re-mord (il cite `git clean`) → escapé inline aussi. Vérif : grep -inE 'git +clean' filtré PROHIBITION+ci-allow = 0 hit résiduel ; ./run_ci.sh → 33 PASS · 0 FAIL · 0 SKIP (avec ce log inclus). Réflexe [[ci-gate-verification-method]] : re-jouer les gates sur le tree AVEC le nouveau log staged, pas seulement après l'édition de code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-05 13:17:49 +00:00
parent 127ef6f7fc
commit 1321983dc3
+30 -2
View File
@@ -1203,10 +1203,38 @@ resserrée de `any("< seuil 4Big")` (relâchée) vers `errs non vide` + `all("IN
**Portée / anti-churn.** **0 fichier de production édité** (seul un fichier de test), **0 **Portée / anti-churn.** **0 fichier de production édité** (seul un fichier de test), **0
artefact reconstruit** (aucun `out/*.json` touché → pas de rebuild `quality_report`, cf. artefact reconstruit** (aucun `out/*.json` touché → pas de rebuild `quality_report`, cf.
[[audit4big-rebuild-after-doc-edits]]), **0 gate ajouté** (#5), **0 chiffre inventé** (#6 [[audit4big-rebuild-after-doc-edits]]), **0 gate ajouté** (#5), **0 chiffre inventé** (#6
tout dérivé de `len()`/`min`/`max`), **0 commande VPS** (#8), **aucun `git clean`** (#1). tout dérivé de `len()`/`min`/`max`), **0 commande VPS** (#8), **aucun `git clean`** (#1). <!-- ci-allow : mention de l'interdit #1, jamais exécuté (l'escape doit être SUR la ligne fautive, scan ligne-par-ligne) -->
<!-- ci-allow : mention de l'interdit, jamais exécuté -->
**Vérif.** `python3 -m unittest discover -s tests`**34 tests OK** ; `./run_ci.sh` → **33 **Vérif.** `python3 -m unittest discover -s tests`**34 tests OK** ; `./run_ci.sh` → **33
PASS · 0 FAIL · 0 SKIP**. Distinct de la classe *toothless-test/inert-mutation* PASS · 0 FAIL · 0 SKIP**. Distinct de la classe *toothless-test/inert-mutation*
([[module-suite-teeth-mutation]]) : ici la LOGIQUE testée est saine — c'est le HARNAIS de test ([[module-suite-teeth-mutation]]) : ici la LOGIQUE testée est saine — c'est le HARNAIS de test
(données figées) qui avait dérivé. (données figées) qui avait dérivé.
---
## Session 20260805_131244 · FIX régression gate `constraints-guard` (tree committé RED malgré « 33 PASS » annoncé)
**Constat.** Au démarrage, `./run_ci.sh` sur le tree committé (HEAD 127ef6f) → **32 PASS · 1
FAIL** : job `constraints-guard` ROUGE. Le commit 127ef6f annonçait pourtant « 33 PASS CI » —
il a vérifié les gates AVANT d'avoir son propre journal committé (réflexe [[ci-gate-verification-method]]
non tenu : re-jouer les gates sur le tree AVEC le log staged).
**Cause racine — 3e RÉCURRENCE de la sous-classe `aucun git clean`** (cf. <!-- ci-allow -->
[[guard-constraints-log-prose]]), mais NOUVELLE variante. Ligne 1206 :
`… **0 commande VPS** (#8), **aucun \`git clean\`** (#1).` — le mot `git clean` sans marqueur de <!-- ci-allow -->
prohibition (« aucun » n'est pas dans la regex PROHIBITION). Le journaliste précédent AVAIT bien
posé un `<!-- ci-allow -->`… mais sur la ligne 1207 (paragraphe hard-wrappé). Or `scan_forbidden`
fait `grep -in` **ligne par ligne** : l'escape doit être SUR la ligne fautive, pas sur une voisine.
Donc l'échappatoire ne couvrait rien.
**FIX (journal only, 0 prod, 0 artefact).** Escape déplacé/fusionné INLINE sur la ligne 1206 elle-même
(`… (#1). <!-- ci-allow : … l'escape doit être SUR la ligne fautive, scan ligne-par-ligne -->`) et
suppression de la ligne-comment orpheline 1207.
**Vérif.** `bash ci/guard_constraints.sh` → OK ; `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP**.
`grep -inE 'git[[:space:]]+clean'` filtré PROHIBITION+ci-allow → 0 hit résiduel sur tout le tree.
**Portée / anti-churn.** **0 fichier de production**, **0 gate ajouté** (#5), **0 chiffre inventé**
(#6), **0 commande VPS** (#8). Seule édition : ce journal. Mémoire [[guard-constraints-log-prose]]
enrichie : l'escape `ci-allow`/marqueur est **PAR LIGNE** — un paragraphe wrappé qui sépare le terme
de son marqueur laisse le gate mordre.