Défaut
scripts/notebook_tools/enrich_quality_ci.py : l'aide en ligne de --base annonce une « base revision of the notebook », mais le code teste Path(nb_path).exists() :
--base HEAD / --base HEAD~1 / toute rev git → Path(...).exists() est faux → la fonction rend un ensemble vide, silencieusement (aucun avertissement, rc inchangé).
- Conséquence : chaque finding HIGH du head passe pour une « new REGRESSION » (la base « n'avait rien »), et la porte sort rc=1 sur des phantoms préexistants.
Mesure (2026-09-22, campagne densité g15-genai-7, worktree)
--base HEAD --head <notebook> a rendu REGRESSION ... [PHANTOM_IN_FENCE] entity 'created' ... avec rc=1 — un phantom préexistant :
- 4 occurrences de l'entité à HEAD~1 et à HEAD, identiques (grep 4=4) ;
- fences inchangées par le diff (enrichissement markdown d'une autre cellule) ;
- avec la base extraite en fichier : rc=0 sur le même diff.
Contournement actuel (documenté en mémoire de lane)
git show "HEAD~1:<notebook>" > "$SCRATCHPAD/base.ipynb"
python scripts/notebook_tools/enrich_quality_ci.py --base "$SCRATCHPAD/base.ipynb" --head "<notebook>"
Proposition
Un des deux, au choix du mainteneur :
- Résoudre les revs : si la valeur n'existe pas comme chemin, tenter
git show <rev>:<head_path> avant de rendre l'ensemble vide ;
- Échouer bruyant : si
--base est fourni mais introuvable comme chemin, error(...) — une base vide n'est jamais une base saine.
Signal de l'artefact à documenter dans le help : « Base 0 signatures » sur un notebook qui a un stock de findings.
Impact
Fausses « new REGRESSION » imputées à des PR d'enrichissement saines ; risque symétrique de « réparation » de phantoms hors scope par une lane qui croit le verdict.
Défaut
scripts/notebook_tools/enrich_quality_ci.py: l'aide en ligne de--baseannonce une « base revision of the notebook », mais le code testePath(nb_path).exists():--base HEAD/--base HEAD~1/ toute rev git →Path(...).exists()est faux → la fonction rend un ensemble vide, silencieusement (aucun avertissement, rc inchangé).Mesure (2026-09-22, campagne densité g15-genai-7, worktree)
--base HEAD --head <notebook>a renduREGRESSION ... [PHANTOM_IN_FENCE] entity 'created' ...avec rc=1 — un phantom préexistant :Contournement actuel (documenté en mémoire de lane)
Proposition
Un des deux, au choix du mainteneur :
git show <rev>:<head_path>avant de rendre l'ensemble vide ;--baseest fourni mais introuvable comme chemin,error(...)— une base vide n'est jamais une base saine.Signal de l'artefact à documenter dans le help : « Base 0 signatures » sur un notebook qui a un stock de findings.
Impact
Fausses « new REGRESSION » imputées à des PR d'enrichissement saines ; risque symétrique de « réparation » de phantoms hors scope par une lane qui croit le verdict.