[DTP-Worker 20260806_094524] VÉRIF axe teeth neuf « tests silencieusement fantômes (shadowing) » → CLEAN 25/25

Nouvel axe absent de la mémoire, distinct de module-suite-teeth-mutation (mute la LOGIQUE) et
schema-oracle-teeth-audit (audite l'ORACLE) : cible le HARNAIS de test lui-même. 3 cas où une
méthode est définie mais unittest discover ne l'exécute jamais, sans qu'aucun gate ne le voie —
(a) def test_x dupliqué dans une classe (Python garde la dernière liaison), (b) class TestFoo
dupliqué dans un fichier (2ᵉ masque 1ʳᵉ), (c) def test_* niveau-module (discover ne le lance pas).
Trou réel : un shadow passe par absence ET ferait SUR-compter check_readme_claims (compte textuel
des def test_). Détecteur AST teeth-prouvé sur sonde synthétique (3/3 mordent). Balayage réel
CLEAN 25/25 fichiers (0 méthode-dup, 0 classe-dup, 0 test niveau-module). Sweep rejouable, NOT a
gate (occurrence-zéro, #5). run_ci 33 PASS 0 FAIL 0 SKIP · 0 prod édité · 0 artefact reconstruit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 09:49:34 +00:00
parent 44712cbdfa
commit e87f5f56af
+36
View File
@@ -1,5 +1,41 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker
## Session `20260806_094524` — VÉRIF indépendante · NOUVEL axe teeth « tests silencieusement fantômes (shadowing) » → CLEAN 25/25 · 0 édition de production
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,
roadmap `ROADMAP_8_WEEKS_OR_LESS.md` intégralement livrée/gatée (Sprints 1→7 côté repo ; prod VPS /
builds EAS / dépôts ONAPI hors périmètre worker · #8). Les ~15 derniers commits sont des sweeps
vérification-only à rendement décroissant. Objectif : chasser un **vrai défaut ungaté** sur un **axe
teeth encore jamais balayé** (anti-churn).
**Axe NEUF (absent de la mémoire) → famille « tests silencieusement fantômes ».** Distinct de
`module-suite-teeth-mutation` (mute la LOGIQUE générateur) et `schema-oracle-teeth-audit` (audite
l'ORACLE) : ici la cible est le **harnais de test lui-même** — 3 cas où une méthode de test est
*définie* mais `unittest discover` ne l'exécute **jamais**, sans qu'aucun gate ne détecte la perte :
- **`def test_x` dupliqué dans une classe** — Python garde la **dernière** liaison ; la 1ʳᵉ ne tourne jamais.
- **`class TestFoo` dupliqué dans un fichier** — la 2ᵉ classe masque la 1ʳᵉ ; les tests de la 1ʳᵉ ne tournent jamais.
- **`def test_*` au niveau module** (hors TestCase) — `discover` ne le lance pas, mais un compteur textuel le tallye.
**Pourquoi c'est un vrai trou (aveugle aux autres sweeps).** Un shadow fait **passer le test par
absence** ; et `check_readme_claims` (classe `doc-numeric-claims-gate`) compte les `def test_`
**textuellement** → un shadow ferait **SUR-compter** le README vs le compte runtime réel (dérive
inverse de l'habituelle). byte-repro / forward-compat / mutation-de-suite sont tous aveugles.
**Détecteur (AST) — teeth-prouvé.** Parse de chaque `git ls-files '*test*.py'` : par ClassDef,
`Counter` des méthodes `test*` > 1 ; par fichier, `Counter` des noms de ClassDef > 1 ; corps de
module, `def test_*` = niveau-module. **Sonde synthétique 3-cas → les 3 MORDENT** (méthode-dup,
classe-dup, niveau-module). Balayage réel → **CLEAN 25/25** fichiers de test (0 méthode-dup,
0 classe-dup, 0 test niveau-module).
**Verdict.** Repo **CLEAN** sur le nouvel axe. **Aucun défaut de production.** Ces dents sont
réellement gardées par aucun gate (un test shadow serait détecté ici et nulle part ailleurs), mais
l'occurrence-zéro ne justifie **pas** un gate permanent (#5) : consigné comme sweep **rejouable**
(mémoire `test-shadowing-sweep`), sibling de `runtime-encoding-integrity-sweep` / `hash-seed-…`.
**Portée / anti-churn.** **Production éditée : néant.** Édité : ce journal + 1 entrée mémoire.
**0 artefact reconstruit**, **0 gate ajouté** (#5), **0 chiffre inventé** (#6 — 25/25 recomputés par
balayage), **0 commande VPS** (#8). Structure du gate inchangée (33 checks).
## Session `20260806_091519` — FIX doc · NOUVEL axe objectif « cohérence du compte de colonnes des tables Markdown » → 1 vrai défaut (ligne à colonne orpheline dans le TEMPLATE canonique de faisabilité)
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,