[DTP-Worker 20260803_040643] Sprint 5 · fix · Dérive doc-vs-CODE Mobile : cmd_build écrit 5 fichiers (store_listing.json inclus) mais docstring app_config_gen.py « les 4 fichiers » + glob README omettaient store_listing → réalignés sur 5. Consommateur qa/audit_4big/quality_report.json régénéré (évidence DOC byte-count · verdict PASS 22/22 inchangé) · run_ci.sh 30 PASS 0 FAIL

This commit is contained in:
Claude Code DTP Worker
2026-08-03 04:12:15 +00:00
parent af84b21f89
commit 953e683be3
4 changed files with 47 additions and 3 deletions
+44
View File
@@ -351,3 +351,47 @@ contextes **cible/futur** (`eas build (Expo 54)`, items acceptance `out_of_scope
**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (inchangé). **Zéro
nouveau module · zéro gate ajouté (#5) · aucune logique de prod ni de gate touchée.**
Aucune commande touchant au VPS (#8) · aucun `git clean` <!-- ci-allow : mention de l'interdit absolu, jamais exécuté -->.
## Session 040643 · Dérive doc-vs-CODE Mobile · `app_config_gen.py` + README (« 4 fichiers » → 5, `store_listing.json` omis)
**Contexte.** `./run_ci.sh` au démarrage : **30 PASS · 0 FAIL · 0 SKIP**, arbre propre.
Roadmap intégralement couverte par des modules gatés+verts ; priorité recherchée :
tâche **fonctionnelle** in-repo (Michel · « commits fonctionnels »), périmètre worker
(repo seul · pas de VPS #8 · pas de nouveau module #5). Le dernier livrable touché
(commit `af84b21`, workflow `mobile-build.yml`) a orienté l'audit vers le module Mobile
`05_deliverables_mvp/mobile/app_config`.
**Défaut trouvé (réel · classe [[docstring-vs-code-drift]], ungated).** Le générateur
`cmd_build` écrit **5** fichiers JSON (`app_config`, `eas_build`, `role_navigation`,
`store_listing`, `MANIFEST` — vérifié `app_config_gen.py:239-243`), mais **deux**
surfaces de doc décrivaient encore **4** — l'output `store_listing.json` (ajouté après
coup) y était omis :
- **`app_config_gen.py` l.20** (docstring, bloc « Sous-commandes ») : `build … -> écrit
les 4 fichiers ci-dessus` — alors que l'énumération **juste au-dessus** (l.11-17) liste
bien **5** fichiers, dont `store_listing.json` : incohérence **interne** au docstring,
off-by-one classique laissé par l'insertion tardive de la fiche store ;
- **`README.md` § Utilisation** : `# écrit out/{app_config,eas_build,role_navigation}.json
+ MANIFEST.json` — `store_listing.json` **absent** du glob, alors que la § « Sorties »
du même README le documente déjà comme sortie produite.
**Correctif (2 éditions chirurgicales, gate-neutres).**
- l.20 → `écrit les 5 fichiers ci-dessus` (aligné sur l'énumération l.11-17) ;
- README → `out/{app_config,eas_build,role_navigation,store_listing}.json + MANIFEST.json`.
- Sweep résiduel `grep « 4 fichiers » / « les 4 » / « role_navigation}.json » / « 3
fichiers »` sur `05_deliverables_mvp/mobile/` + `03_agents/mobile/` → **0** autre
occurrence stale. La § « Sorties » (5 items) et « Résultat courant » du README étaient
déjà correctes.
**Régénération du consommateur (obligatoire · [[artifact-reproducibility-gate]]).**
L'édition du README a fait dériver `qa/audit_4big/out/quality_report.json` (critère DOC :
évidence `README.md (4917 → 4931 octets)`). `python3 audit_4big_gen.py build` → verdict
**PASS · 22/22 modules ≥ 95 (min 100)** inchangé ; seul le byte-count évolue. `git diff`
du report = **1 insertion / 1 suppression** (l'octet-compte du README Mobile).
**Sûreté du changement.** Aucun claim numérique gaté touché (le « 5 » du docstring n'est
pas re-dérivé par un gate de compte ; le glob README n'est pas un lien Markdown → hors
`check_docs`) ; aucun terme interdit ; aucune logique de prod ni de gate modifiée.
**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP**. **Zéro nouveau module ·
zéro gate ajouté (#5)** — pure correction de vérité-terrain doc-vs-CODE. Aucune commande
touchant au VPS (#8) · aucun `git clean` <!-- ci-allow : mention de l'interdit absolu, jamais exécuté -->.
@@ -53,7 +53,7 @@ Publiciste (zéro `pip`).
## Utilisation
```bash
python3 app_config_gen.py build # écrit out/{app_config,eas_build,role_navigation}.json + MANIFEST.json
python3 app_config_gen.py build # écrit out/{app_config,eas_build,role_navigation,store_listing}.json + MANIFEST.json
python3 app_config_gen.py validate # schéma + 15 invariants (sort en erreur sinon)
python3 -m unittest discover -s tests -v
```
@@ -17,7 +17,7 @@ en :
- MANIFEST.json -> traçabilité (comptes, résumé par portail, marque, a_confirmer)
Sous-commandes :
build [-o OUT] -> écrit les 4 fichiers ci-dessus
build [-o OUT] -> écrit les 5 fichiers ci-dessus
validate [-o OUT] -> (re)génère en mémoire, valide vs mobile.schema.json + invariants
Sortie déterministe (tri stable, aucun horodatage) -> diffable + re-générable.
@@ -606,7 +606,7 @@
"criterion": "DOC",
"weight": 20,
"passed": true,
"evidence": "README.md (4917 octets)"
"evidence": "README.md (4931 octets)"
},
{
"criterion": "CONTRAT",