diff --git a/05_activity_log/2026-08-03.md b/05_activity_log/2026-08-03.md index 3c645b4..d5a4361 100644 --- a/05_activity_log/2026-08-03.md +++ b/05_activity_log/2026-08-03.md @@ -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` . + +## 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` . diff --git a/05_deliverables_mvp/mobile/app_config/README.md b/05_deliverables_mvp/mobile/app_config/README.md index 7b47ab6..84b99d1 100644 --- a/05_deliverables_mvp/mobile/app_config/README.md +++ b/05_deliverables_mvp/mobile/app_config/README.md @@ -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 ``` diff --git a/05_deliverables_mvp/mobile/app_config/app_config_gen.py b/05_deliverables_mvp/mobile/app_config/app_config_gen.py index b4989bf..26b0fba 100644 --- a/05_deliverables_mvp/mobile/app_config/app_config_gen.py +++ b/05_deliverables_mvp/mobile/app_config/app_config_gen.py @@ -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. diff --git a/05_deliverables_mvp/qa/audit_4big/out/quality_report.json b/05_deliverables_mvp/qa/audit_4big/out/quality_report.json index 3797844..f96f4cd 100644 --- a/05_deliverables_mvp/qa/audit_4big/out/quality_report.json +++ b/05_deliverables_mvp/qa/audit_4big/out/quality_report.json @@ -606,7 +606,7 @@ "criterion": "DOC", "weight": 20, "passed": true, - "evidence": "README.md (4917 octets)" + "evidence": "README.md (4931 octets)" }, { "criterion": "CONTRAT",