[DTP-Worker 20260806_021424] FIX argparse-help↔code — seo/seo_gen.py help build nommait des fichiers de sortie INEXISTANTS

Poursuite de la sous-classe help-text du fix a8342e9 (session 004414). Audit exhaustif
des 22 générateurs `*_gen.py` (help d'une sous-commande énumérant ses fichiers de sortie
↔ fichiers réellement écrits) → 21/22 CLEAN, 1 vrai défaut : seo_gen.py:293.

Le help `build` disait « genere seo_keywords/schema_org/hreflang + MANIFEST » alors que
le code (l.259-262) écrit seo_keywords.json, seo_schema_org.json, seo_hreflang.json,
MANIFEST.json : le help droppait le préfixe seo_ sur 2 des 3 fichiers (schema_org,
hreflang) + l'extension .json sur tous → nommait des fichiers INEXISTANTS
(schema_org ≠ seo_schema_org.json). Même classe que a8342e9.

Preuve fix-en-une-passe : docstring module (l.6-9) ET README (l.15-18) nommaient déjà
correctement les 4 fichiers exacts ; le help était le seul outlier, aligné maintenant
sur eux + la convention des frères (commissions/audit_5d/app_config = noms complets).
Style ASCII sans-accent du fichier respecté (genere).

0 gate (#5 — help ni sérialisé ni AST-parsé ; parseur de help fragile : pas de
convention commune aux 22, classe couverte par audit périodique). Sortie build
byte-identical aux 4 out/ commités (0 rebuild). 0 prod (#8), 0 chiffre inventé (#6).
run_ci 33 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 02:20:04 +00:00
parent b60d471030
commit 354a68788d
2 changed files with 41 additions and 1 deletions
+40
View File
@@ -1,5 +1,45 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker
## Session `20260806_021424` — FIX argparse-help↔code (classe `docstring-vs-code-drift`, sous-classe help-text du fix `a8342e9`) · `seo/seo_gen.py` : le help `build` nommait des fichiers de sortie INEXISTANTS
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre.
Les 5 derniers commits étant currency/vérif-only, chasse **adversariale à un vrai défaut ungaté**,
en poursuivant la sous-classe ouverte par le fix `a8342e9` (session `004414`) : le **texte help
d'une sous-commande argparse énumérant ses fichiers de sortie**. Audit exhaustif des **22
générateurs** (`*_gen.py` avec sous-commande `build`/`generate`) : annoncé-dans-le-help ↔
réellement-écrit-par-le-code.
**Résultat de l'audit.** 21/22 CLEAN — mais **1 vrai défaut** trouvé, haute confiance :
`05_deliverables_mvp/seo/seo_gen.py:293`. Le help `build` disait
`"genere seo_keywords/schema_org/hreflang + MANIFEST"`, or les fichiers RÉELLEMENT écrits
(`seo_gen.py:259-262`) sont `seo_keywords.json`, **`seo_schema_org.json`**, **`seo_hreflang.json`**,
`MANIFEST.json`. Le help **droppait le préfixe `seo_`** sur 2 des 3 fichiers (`schema_org`,
`hreflang`) ET l'extension `.json` sur tous : il nommait donc des fichiers **qui n'existent pas**
(`schema_org``seo_schema_org.json`). Ce n'est pas un simple raccourci toléré — exactement la
classe du fix `a8342e9` (le help ment sur la surface de sortie que l'agent lit pour lancer son
propre livrable).
**Preuve que c'était bien la SEULE surface fautive (fix en une passe).** Le docstring module
(`seo_gen.py:6-9`) ET le README (`README.md:15-18`) nomment déjà correctement les 4 fichiers
exacts (`out/seo_schema_org.json`, `out/seo_hreflang.json`, …) — c'est le help l'outlier, pas
l'inverse. Les modules frères (`commissions`, `audit_5d`, `app_config` post-`a8342e9`) énumèrent
des **noms de fichiers complets** ; `seo` était le seul en raccourci imprécis.
**Fix (`seo_gen.py:293`).** Help → `"genere seo_keywords.json / seo_schema_org.json /
seo_hreflang.json / MANIFEST.json"` — exact, aligné sur le docstring/README du module ET la
convention des frères. Style respecté : ASCII sans-accent (`genere`, comme le reste du fichier).
**Pourquoi 0 gate ajouté (#5).** Le help n'est ni sérialisé dans un artefact ni parsé par un gate
(le gate `check_readme_claims` « Entrée CLI » ne lit que le NOM `add_parser("build")` via AST, pas
le `help=`). Un gate parseur du help serait **fragile** : les 22 help strings n'ont PAS de
convention machine-parsable commune (`seo` en raccourci, `faisabilite` décrit un répertoire
`data_room/PXX/`, séparateurs `/` vs `+` mêlés). Mauvais compromis robustesse/valeur → la classe
reste couverte par l'audit périodique (ici 22/22 balayés), pas par un gate.
**Non-régression.** Sortie `build` **byte-identical** aux 4 artefacts `out/` commités (help = code
pur, non sérialisé → 0 rebuild). `python3 -S seo_gen.py build/validate` OK. `run_ci.sh` **33 PASS ·
0 FAIL · 0 SKIP**. 0 prod (#8), 0 artefact reconstruit, 0 chiffre inventé (#6 — tout recomputé).
## Session `20260806_014423` — FIX prose-numérique canal stakeholder · le compte « bijection README↔réel » de la session `011419` sous-comptait (14 → **16**) · 0 édition de production
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,