From 5a96fc32d9d83d012aff5f87db94e71ac4a5f63c Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Wed, 5 Aug 2026 09:22:50 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260805=5F091204]=20FIX=20de=20C?= =?UTF-8?q?OUVERTURE=20doc=20:=20la=20fiche=20MOBILE=20omettait=20son=20pr?= =?UTF-8?q?opre=20livrable=20in-repo=20gat=C3=A9=20crm=E2=86=92mobile/app?= =?UTF-8?q?=5Fconfig=20(g=C3=A9n=C3=A9rateur=20de=20config=20app=20=C2=B7?= =?UTF-8?q?=205=20fichiers=20out=20=C2=B7=20job=20mobile-app-config-tests?= =?UTF-8?q?=20dans=20gate.needs=20=C2=B7=20CLI=20build|validate=20=C2=B7?= =?UTF-8?q?=2022=20tests)=20=E2=80=94=20elle=20n'ancrait=20le=20r=C3=B4le?= =?UTF-8?q?=20que=20sur=20RBAC=20+=20acceptance=20S5=20(=C2=AB=20deux=20ar?= =?UTF-8?q?tefacts=20in-repo=20=C2=BB),=20jamais=20sur=20le=20g=C3=A9n?= =?UTF-8?q?=C3=A9rateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dernier des 22 modules livrés orphelin de fiche (grep -rl sur 03_agents/*/AGENT.md). Mirroir exact du pattern CRM 071201 : sous-section dédiée + 1 ligne de table AUTO-GATÉE par 3 gates indépendants de check_readme_claims (résolution par cible de lien mobile/app_config ∈ plan.suites) — cellule Tests 22==source · job CI mobile-app-config-tests==ci.yml · verbes CLI build|validate==subparsers. Pas de piège des 2 cadres de sprint : S5 dans les deux (acceptance evidence_modules S5 · roadmap ## SPRINT 5 ligne Mobile L56) → cité L56. 3 énumérations « ancrage in-repo » réconciliées (sinon contradiction avec la nouvelle section), toutes sourcées. 0 out/ régénéré (git status = fiche seule) · 0 gate ajouté (#5) · 0 édition d'autorité · 0 chiffre inventé (#6, 22 lu dans regression_plan) · CI 33 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) --- 03_agents/mobile/AGENT.md | 34 +++++++++++++++++++---- 05_activity_log/2026-08-05.md | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/03_agents/mobile/AGENT.md b/03_agents/mobile/AGENT.md index 45a6983..9e10615 100644 --- a/03_agents/mobile/AGENT.md +++ b/03_agents/mobile/AGENT.md @@ -22,14 +22,16 @@ mandat, qui reste un dépôt de **planification et de contrats**. Il n'existe do **aucun binaire, `.ipa`/`.aab` ni bundle OTA diffable commité ici**, et ce document ne prétend pas le contraire : le prétendre serait une invention (#6, « documenter du code sans vérifier son existence courante » est interdit). Le -livrable in-repo de l'agent est la **refonte des modules VPS existants** ci-dessous -et le **rôle RBAC** qui les gouverne, validés par auto-vérification côté serveur -(HTTP + builds EAS). +livrable in-repo de l'agent est le **générateur de config app** `mobile/app_config` +(§ dédiée ci-dessous · la config **versionnable** de l'app, pas le binaire), la +**refonte des modules VPS existants** ci-dessous et le **rôle RBAC** qui les +gouverne, validés par auto-vérification côté serveur (HTTP + builds EAS). ## Points de contact **réellement commités** dans ce dépôt (vérifiés) -Contrairement aux binaires (hors-repo), le rôle de cet agent est **ancré dans deux +Contrairement aux binaires (hors-repo), le rôle de cet agent est **ancré dans des artefacts in-repo vérifiables** — la preuve que sa place dans la plateforme est -contractualisée, pas inventée : +contractualisée, pas inventée. Outre son **générateur de config** `mobile/app_config` +(§ dédiée ci-dessous), **deux cross-références** l'ancrent côté RBAC et QA : | Contact in-repo (vérifié) | Ce qu'il fixe | |---|---| @@ -41,12 +43,32 @@ contractualisée, pas inventée : > **volontairement pas** rattaché au Workspace `OTO Ventes` ni à la liste > `roles_allowed` du chat OTOIA — ces surfaces couvrent les portails > construction/vente. Ne pas revendiquer ici un contact workspace/chat qui -> n'existe pas ; l'ancrage in-repo réel est le **rôle RBAC** + la **row QA S5**. +> n'existe pas ; l'ancrage in-repo réel est son **générateur de config** +> `mobile/app_config` (§ ci-dessous), le **rôle RBAC** et la **row QA S5**. > > Ces deux fichiers existent et sont couverts par la CI (`rbac-tests`, > `qa-acceptance-tests`, dans le `gate`). Le rôle est **spécifié en-repo** ; son > **exécution** (EAS/stores/OTA) reste hors repo (#8). +## Générateur de config app **in-repo** · `mobile/app_config` (livrable versionnable, gaté CI) + +Au-delà des deux cross-références RBAC/QA ci-dessus, l'agent Mobile a un **livrable +in-repo à part entière** : le générateur `05_deliverables_mvp/mobile/app_config/`. +Il ne produit **ni binaire ni bundle** (ceux-là restent hors repo · #8) mais la +**config versionnable** de l'app compagnon — dérivée à 100 % des sources RBAC/spec +(anti-invention #6 ; identifiants de store `null · a_confirmer` tant que Michel ne +les fournit pas). C'est le pendant mobile des modules générateurs des autres agents, +gaté dans le CI comme eux : + +| Module | Sprint | Rôle | Entrée CLI | Job CI | Tests | +|---|---|---|---|---|---| +| [`app_config/`](../../05_deliverables_mvp/mobile/app_config/README.md) | 5 (roadmap L56) | Config **versionnable** de l'app compagnon (pas le binaire · #8) : transforme `rbac_50_roles.json` + `mobile_spec.json` + specs portails/seo en **5 fichiers** — `app_config.json` (objet Expo `app.config` · thème dark+doré #4 · locales seo · identifiants store `null · a_confirmer`), `eas_build.json`, `role_navigation.json` (1 onglet par **portail rôle**, surface RBAC exacte), `store_listing.json` (fiche FR/EN/ES), `MANIFEST.json` (traçabilité) ; sortie déterministe re-générable | `app_config_gen.py build\|validate` | `mobile-app-config-tests` | 22 | + +Cette ligne est **auto-gatée** par `ci/check_readme_claims.sh` (résolution par cible +de lien, `mobile/app_config ∈` `plan.suites`) : cellule Tests `22 == source`, job CI +`mobile-app-config-tests == ci.yml`, verbes CLI `build|validate == subparsers`. Toute +dérive du compte/job/CLI mordra désormais. + ## Modules OTOV7 réels refactorés (source : `AGENTS_EXISTING_ASSETS.md §8`) | Module VPS (hors-repo) | Fonction | État roadmap | diff --git a/05_activity_log/2026-08-05.md b/05_activity_log/2026-08-05.md index 44ab724..b6193fd 100644 --- a/05_activity_log/2026-08-05.md +++ b/05_activity_log/2026-08-05.md @@ -1,5 +1,57 @@ # Activity Log · 2026-08-05 · Claude Code DTP Worker +## Session 091204 · FIX de COUVERTURE doc — la fiche **Mobile** omettait son propre **livrable in-repo gaté** (`mobile/app_config`) : elle n'ancrait le rôle que sur RBAC + acceptance, jamais sur le générateur de config app (22 tests · job CI · CLI) → sous-section dédiée + ligne de table **auto-gatée** (3 gates) + 3 énumérations « ancrage in-repo » réconciliées · 0 édition d'autorité · 0 gate ajouté · 0 chiffre inventé + +**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre +propre, roadmap intégralement livrée/gatée (Sprint 8 · launch-readiness). Un Explore read-only sur la +classe *docstring-vs-code drift* (récurrente, cf. [[docstring-vs-code-drift]]) n'a **rien remonté de +concret** (le « 14 invariants » de `chat_otoia` est correct : les invariants 8 et 9 sont assertés à la +fois globalement ET par-mount → 14 numéros distincts, pas une dérive). Classe saturée. Pivot vers la +**complétude des fiches** — la classe qui a produit le FIX réel de la session 071201 (CRM omettait son +4e module `financement_bancaire`) : *completeness ≠ accuracy* ([[fiche-accuracy-audit-closed]]). + +**Le finding — diff `05_deliverables_mvp/*/` vs les 13 fiches.** Un `grep -rl 03_agents/*/AGENT.md` +sur les 22 modules livrés a remonté **un seul orphelin** : `mobile/app_config` → référencé par **AUCUNE** +fiche (les 21 autres sont couverts ≥1×). Or `05_deliverables_mvp/mobile/app_config/` est un module +générateur **réel, commité et gaté** : 5 fichiers `out/*.json` (`app_config.json`/`eas_build.json`/ +`role_navigation.json`/`store_listing.json`/`MANIFEST.json`), suite `mobile-app-config-tests` **dans +`gate.needs`**, CLI `build|validate`, 22 méthodes de test (`regression_plan.suites[mobile/app_config]. +test_methods`). C'est le **livrable in-repo propre de l'agent Mobile** (docstring : « Livrable Mobile de +la roadmap Sprint 5 »). La fiche `03_agents/mobile/AGENT.md` ne le mentionnait **nulle part** — elle +énumérait ses ancrages in-repo comme *uniquement* le **rôle RBAC** + la **row QA acceptance S5** +(« ancré dans **deux** artefacts in-repo vérifiables »), en omettant son générateur le plus direct. +Ce n'était pas une inexactitude (les 2 ancres RBAC/QA sont justes) mais une **incomplétude** : le +livrable in-repo le plus concret de l'agent était absent de sa propre fiche. + +**Pas de piège des deux cadres de sprint (contrairement à 071201/081202).** `mobile/app_config` est +Sprint **5** dans les DEUX cadres : `acceptance_spec` le classe en `evidence_modules` de **S5** +(`roadmap_line 58`) et la roadmap `## SPRINT 5` porte la ligne **Mobile L56** « Rebuild Expo 54 + +submit App Store #32 + Play Store ». J'ai cité **L56** (ligne Mobile, celle qu'ancre la docstring +`l.56-57`). Aucun conflit à trancher ([[agent-internal-vs-roadmap-sprint-frames]]). + +**La correction (mirroir exact du pattern CRM 071201).** (a) Nouvelle sous-section « Générateur de +config app **in-repo** · `mobile/app_config` » + **1 ligne de table** identique en structure à celle du +CRM (`Module | Sprint | Rôle | Entrée CLI | Job CI | Tests`). (b) **3 réconciliations minimales** des +énumérations « ancrage in-repo » qui, sans elles, contrediraient la nouvelle section : le « livrable +in-repo est [refonte VPS] et [rôle RBAC] » (ajout du générateur), « ancré dans **deux** artefacts » +(→ « des artefacts … Outre son générateur … **deux cross-références** RBAC/QA »), et la note d'honnêteté +« l'ancrage réel est RBAC + QA S5 » (ajout du générateur). Toutes sourcées, aucune n'invente. + +**Auto-gatage confirmé — le finding devient opposable au merge (3 gates indépendants de +`check_readme_claims.sh`, résolution par cible de lien `mobile/app_config ∈ plan.suites`).** `run_ci` +final montre les 3 dents mordre sur la nouvelle ligne (`AGENT.md:65`) : (a) cellule Tests `22 == source +(22)`, (b) job CI `mobile-app-config-tests == ci.yml`, (c) verbes CLI `build|validate == subparsers`. +Une future dérive du compte/job/CLI **mordra** désormais — comme pour la ligne CRM financement. + +**Discipline.** Le `build` du module n'est **pas** régénéré (je n'ai touché aucun `out/`) → `git status` +ne montre **que** `03_agents/mobile/AGENT.md`. **0 gate ajouté** (surface déjà couverte par row_re/job/CLI +· #5) · **0 édition d'autorité** (roadmap, spec, directive, module intouchés) · **0 chiffre inventé** +(#6 : 22 lu dans `regression_plan`, 5 fichiers lus dans `out/` + docstring, Sprint 5/L56 lu dans +`acceptance_spec` + roadmap) · aucune commande VPS (#8) · aucun `git clean`. + +**Bilan.** 1 fiche agent complétée (sous-section + 1 ligne auto-gatée + 3 réconciliations) · **CI 33 +PASS · 0 FAIL · 0 SKIP** · le dernier module livré orphelin de fiche est désormais documenté et opposable. + ## Session 081202 · FIX RÉEL — le module `crm/financement_bancaire` s'auto-étiquetait « **Sprint 5** » dans une **citation roadmap-globale** (`roadmap L52`) alors que L52 ∈ **Sprint 4** : label corrigé S5→S4 sur ses 2 seules surfaces (README + docstring gen) · directive Michel INTACTE · 0 gate · 0 chiffre inventé **Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,