[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:
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user