diff --git a/03_agents/mobile/AGENT.md b/03_agents/mobile/AGENT.md index 3cbe3cc..45a6983 100644 --- a/03_agents/mobile/AGENT.md +++ b/03_agents/mobile/AGENT.md @@ -1,7 +1,7 @@ -# 📱 Mobile Agent · app Expo 54 + API mobile ERPNext (score 95+/100) +# 📱 Mobile Agent · app Expo (SDK 51 actuel → rebuild cible 54) + API mobile ERPNext (score 95+/100) -**Rôle** : Cet agent maintient l'**application mobile** OTO (Expo SDK 54 / -React Native) et l'**API mobile** qui l'alimente depuis ERPNext natif. Il +**Rôle** : Cet agent maintient l'**application mobile** OTO (Expo SDK **51** +actuel · cible de **rebuild** SDK 54 · Sprint 5 / React Native) et l'**API mobile** qui l'alimente depuis ERPNext natif. Il produit les **builds EAS** iOS/Android, pousse les **mises à jour OTA**, et soumet aux **stores** (App Store · Play Store). Il ne définit pas les rôles ERP (agent ERPNext Backend) ni le design de la console web (agent Frontend Console) : @@ -9,8 +9,8 @@ il **livre le binaire mobile** et son **canal API**, toujours branché sur le **backend ERPNext réel** (contrainte #1), jamais sur un backend inventé. ## Scope -API mobile (`oto_module_mobile_api.py`) + client Expo 54 (React 19.1.0 / -React Native 0.81.5) → **builds EAS iOS/Android** → **submit App Store #32 + +API mobile (`oto_module_mobile_api.py`) + client Expo **51** (React 18.2.0 / +React Native 0.74.5 · runtime actuel vérifié) → **builds EAS iOS/Android** → **submit App Store #32 + Play Store** → **EAS OTA** pour les correctifs sans re-review store. RBAC mobile seedé côté ERPNext (`seed_mobile_rbac.py`). Refresh OTA quand l'API ou l'UI évolue. @@ -56,7 +56,7 @@ contractualisée, pas inventée : | `/opt/oto/staging/mobile_rbac/deploy_mobile_rbac.sh` | déploiement RBAC mobile | applique le rôle `OTO Plateforme Mobile` | | `/opt/oto/staging/mobile_rbac/seed_mobile_rbac.py` | seed des rôles/perms mobile | source du rôle in-repo (miroir de `rbac_50_roles.json`) | | `/opt/oto/static/oto_mobile.js` | client JS mobile / glue | front embarqué | -| **Expo SDK 54** · React 19.1.0 · React Native 0.81.5 (upgrade 2026-07) | runtime app | base des builds EAS | +| **Expo SDK 51.0.0** · React 18.2.0 · React Native 0.74.5 (runtime **actuel** · upgrade 54 tenté puis abandonné 2026-07-27) | runtime app | base des builds EAS · rebuild cible Expo 54 (S5) | | **EAS** builds iOS/Android · Apple Dev + Google Play Console | pipeline build/submit | exécution stores (hors repo #8) | > ⚠️ Chemins **VPS**, non vérifiables depuis ce dépôt. Ils sont cités tels @@ -70,7 +70,8 @@ la soumission store correspondants n'ont pas réellement eu lieu : c'est la row repo). L'API mobile parle au **backend ERPNext natif** (`erpnext-backend-1`, contrainte #1), jamais à un backend fictif. Les numéros de version d'Expo / React / React Native cités proviennent de `AGENTS_EXISTING_ASSETS.md §8` -(upgrade daté 2026-07) et ne sont pas inventés. +(runtime actuel Expo 51 vérifié `package.json` · l'upgrade Expo 54 y est +documenté comme **abandonné** 2026-07-27) et ne sont pas inventés (#6). ## Non-négociables (voir CLAUDE.md racine pour la liste complète) - Gitea only (jamais GitHub) — code app poussé sur `michel/oto-enterprise-os-dtp` @@ -85,7 +86,9 @@ Voir `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md`. Volet Mobile : **Sprint 5** (« Rebuild **Expo 54** + submit **App Store #32** + **Play Store** »). Cible de sprint mesurable : **apps mobile live sur les 2 stores** (deliverable S5, L58), gatée par la row d'acceptation QA **S5**. État courant (table roadmap L18) : -modules RBAC + API + Expo 54 en place, builds/submissions ~**50 %**. +modules RBAC + API + Expo **51** en place (cible de rebuild Expo 54 · S5 · +décision 51→54 ouverte, cf. `DIRECTIVE_MOBILE_STORES_20260803.md` P0), +builds/submissions ~**50 %**. ## Coordination inter-agents - **ERPNext Backend** : porteur du rôle RBAC `OTO Plateforme Mobile` (perm diff --git a/05_activity_log/2026-08-03.md b/05_activity_log/2026-08-03.md index 1ea994d..2ff8356 100644 --- a/05_activity_log/2026-08-03.md +++ b/05_activity_log/2026-08-03.md @@ -1,5 +1,72 @@ # Activity Log · 2026-08-03 · Claude Code DTP Worker +## Session 013634 · Dérive ground-truth réelle : app mobile documentée « Expo 54 en place » alors que le runtime réel est **Expo 51** (upgrade 54 abandonné) — corrigée (#6) + +**Contexte.** `./run_ci.sh` au démarrage : **30 PASS · 0 FAIL · 0 SKIP**, arbre propre. +La directive la plus récente (commit `85d2fa3`, aujourd'hui) — +`DIRECTIVE_MOBILE_STORES_20260803.md` — porte le Sprint 5 Mobile. J'ai cherché la +prochaine tâche prioritaire **non-complétée** qui soit **dans le périmètre worker**. + +**Périmètre : l'essentiel de la directive Mobile est bloqué / hors-repo (#8).** Le +module de config mobile in-repo (`05_deliverables_mvp/mobile/app_config/`) est +**complet et vert** (schéma + 12 invariants · Expo SDK 54 = **cible de rebuild** +correctement ancrée à la roadmap S5). Les actions P1 (`mobile-build.yml` EAS), P2-P5 +(features / assets binaires / submit stores) visent l'app réelle +`/opt/oto/mobile/native/` (**hors de ce dépôt**) et sont **bloquées** sur +EAS_TOKEN + credentials Apple/Google (attendus de Michel). Rien à construire ici. + +**Défaut RÉEL trouvé (investigation read-only, aucune commande VPS).** La directive +elle-même (§« État actuel · audit 2026-08-03 ») déclare le runtime **Expo SDK 51.0.0**, +l'upgrade Expo 54 **abandonné le 2026-07-27**. Vérification indépendante du +`package.json` réel : `expo ~51.0.0` · `react 18.2.0` · `react-native 0.74.5` · +`expo-router ~3.5.0` — et **même le backup `native.bak-upgrade54-*` est resté sur ~51** +(le bump 54 n'a jamais atterri). Or l'inventaire d'actifs +`AGENTS_EXISTING_ASSETS.md §8:63` affirmait « **Expo SDK 54 + React 19.1.0 + React +Native 0.81.5 (upgrade 2026-07)** » comme runtime **en place**, et la fiche +`03_agents/mobile/AGENT.md` recopiait ces versions (« Expo 54 en place »). C'est +**exactement la classe interdite** par CLAUDE.md (« Documenter code sans vérifier +existence courante ») + **#6** (« zéro invention · toujours vérifier sources ») : +un actif documenté comme existant qui ne correspond pas à l'existence réelle. Un +agent Mobile s'y fiant construirait sur une prémisse fausse (Expo 54 déjà en place). + +**Correctif — chirurgical, sourcé, distinguant ACTUEL vs CIBLE-REBUILD.** +1. `AGENTS_EXISTING_ASSETS.md §8:63` : runtime **actuel** corrigé en Expo 51.0.0 / + React 18.2.0 / RN 0.74.5 / expo-router ~3.5.0 (vérifié `package.json`), avec note + « upgrade 54 abandonné 2026-07-27 · cible rebuild = 54 (roadmap S5) ». +2. `03_agents/mobile/AGENT.md` : 5 mentions de runtime-courant « Expo 54 / React + 19.1.0 / RN 0.81.5 » corrigées en Expo 51 réel, **en préservant** la cible de + rebuild Sprint 5 = Expo 54 (titre, rôle, scope, table modules, état courant). + +**Ce que je n'ai PAS touché (délibérément).** (a) La roadmap S5 « **Rebuild Expo 54** » += la **cible** du rebuild, décision de Michel (directive P0 : « décision upgrade +51→54 » explicitement ouverte) — je ne tranche pas. (b) Le module `mobile/app_config` +(`expo_sdk_major: 54`) = la config **écrite pour ce rebuild-cible**, byte-gatée et +ancrée à la roadmap par `check_readme_claims.sh:7739` (artefact⇔MANIFEST⇔spec⇔roadmap⇔ +README, gate (d) rejette tout « Expo N≠54 » dans son README) — **correcte telle +quelle**, non touchée. La distinction clé : **runtime ACTUEL (51)** ≠ **cible de +rebuild S5 (54)** ; l'inventaire d'actifs doit dire le réel, le module de config dit +la cible. Aucune contradiction — ils décrivent deux choses différentes. + +**⚠️ SIGNAL À MICHEL (décision P0, non tranchée par moi).** La roadmap prescrit +« Rebuild Expo 54 » mais le runtime réel est Expo 51 et l'upgrade 54 a été abandonné +2026-07-27 sans atterrir (backup inclus). La directive P0 demande justement cette +décision (reprendre 54, ou rester sur 51 LTS). Tant que la roadmap n'est pas mise à +jour par Michel, le module de config reste — correctement — la cible 54. Signal +documenté ici (canal ungated), pas masqué, pas tranché unilatéralement. + +**Sûreté (vérifiée AVANT édition).** Les littéraux de version `0.81.5`/`19.1.0`/ +`18.2.0`/`0.74` n'apparaissent dans **aucun** gate (grep) ; `check_readme_claims.sh` +ne pinne ces fichiers que sur (l.239) un **compte d'agents** et (l.8071) l'**IP VPS + +noms Docker** — jamais la version Expo ; le gate Expo-SDK (l.7739) ne scanne que +`mobile/app_config/README.md`. Les mentions corrigées étaient donc **ungated** → +édition sûre, zéro gate affaibli. + +**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (inchangé). `git +status` = 2 fichiers (`AGENTS_EXISTING_ASSETS.md` + `03_agents/mobile/AGENT.md`). +**Zéro nouveau module · zéro gate ajouté (#5) · aucune logique de prod ni de gate +touchée** — pure correction de dérive ground-truth sourcée. Aucune commande touchant +au VPS (#8) · aucun `git clean` . + ## Session 010630 · Gate `constraints-guard` RED réparé (mandat signé Michel l.35) + contradiction inter-mandats signalée **Contexte.** `./run_ci.sh` au démarrage : **29 PASS · 1 FAIL** — régression NEUVE du diff --git a/AGENTS_EXISTING_ASSETS.md b/AGENTS_EXISTING_ASSETS.md index 430ce54..48e5fbd 100644 --- a/AGENTS_EXISTING_ASSETS.md +++ b/AGENTS_EXISTING_ASSETS.md @@ -60,7 +60,7 @@ Chaque agent hérite/réutilise les modules déjà présents avant de créer du - `/opt/oto/staging/mobile_rbac/deploy_mobile_rbac.sh` - `/opt/oto/staging/mobile_rbac/seed_mobile_rbac.py` - `/opt/oto/static/oto_mobile.js` -- Expo SDK 54 + React 19.1.0 + React Native 0.81.5 (upgrade 2026-07) +- Expo SDK 51.0.0 + React 18.2.0 + React Native 0.74.5 + expo-router ~3.5.0 (runtime **actuel** vérifié `/opt/oto/mobile/native/package.json`) — la tentative d'upgrade Expo 54 (React 19.1.0 / RN 0.81.5) a été **abandonnée le 2026-07-27** (backup `native.bak-upgrade54-*` toujours sur ~51). Cible de **rebuild** = Expo 54 (roadmap Sprint 5 « Rebuild Expo 54 » · décision 51→54 ouverte, cf. `DIRECTIVE_MOBILE_STORES_20260803.md` P0) - EAS builds iOS/Android · Apple Dev + Google Play Console configurés ## 9. IFC/Speckle Agent — ressources existantes