[DTP-Worker] Sprint 8 · buffer · Mobile/app_config : le SDK MAJEUR Expo (« Expo 54 ») ANCRÉ sur la roadmap Sprint 5 l.56 « Rebuild Expo 54 »

La version MAJEURE du SDK Expo que l'app compagnon cible (`expoSdkMajor`) est data-derived : `out/app_config.json.expo.extra.expoSdkMajor = 54` (byte-gaté par check_artifacts ⇒ faisant autorité), recopié dans `out/MANIFEST.json.app.expo_sdk_major`, dérivé de `mobile_spec.json[app].expo_sdk_major` dont la SOURCE FAISANT AUTORITÉ est la roadmap Sprint 5 l.56 « Rebuild Expo 54 » (le spec le DÉCLARE via `expo_sdk_source`). Le README:4/19/35/72 recopie « Expo 54 » CINQ fois À LA MAIN — dont la ligne de source « Expo SDK **54** | roadmap Sprint 5 l.56 ». Le bloc « Mobile · récap de l'app Expo » amont ne gate QUE le quadruplet onglets/rôles/langues/identifiants a_confirmer (comptes de MANIFEST.counts), AVEUGLE au majeur du SDK. Piège #6 : BUMPER le SDK (Expo 55 sort · eas build cible 55) dans le spec/artefact SANS toucher au README (ou l'inverse), ou DÉRIVER la roadmap de l'artefact, laisse la prose PÉRIMÉE en silence pendant que le graphe byte-gaté dit autre chose → l'agent Mobile lancerait `eas build` sur le MAUVAIS SDK (le rebuild même que la ligne roadmap prescrit) — « vert trompeur » qu'aucune suite tests/ (FONCTIONS de génération, jamais la prose ni l'ancre à la roadmap) n'attrape. Même patron d'ANCRAGE que la marque SEO §Entités (Helios RD ancrée sur CLAUDE.md) ou les roadmap_line de la recette, mais sur une valeur dont la roadmap — non CLAUDE.md — est l'INPUT faisant autorité.

Gate ajouté (bloc « Mobile · le SDK MAJEUR Expo … ANCRÉ sur la roadmap Sprint 5 l.56 ») : le majeur re-dérivé de app_config.json byte-gaté, puis (a) cohérence interne artefact ⇔ MANIFEST ⇔ spec ; (b) ancrage roadmap `Rebuild Expo <N>` == artefact (ancre vive) ; (c) le spec DÉCLARE l'ancrage (expo_sdk_source cite roadmap + Expo N) ; (d) TOUTE mention prose « Expo [SDK] N » == artefact (aucune périmée) ; (e) la ligne de source du tableau cite l'ancre roadmap. Un claim absent échoue AUSSI.

7 morsures vérifiées (README 54→55 prose périmée · artefact 54→55 README+roadmap périmés = le vrai silent green · roadmap Rebuild Expo 54→55 artefact périmé · MANIFEST 54→55 chaîne incohérente · spec expo_sdk_source sans roadmap · README ligne source sans roadmap · README retire toute mention Expo N), restauré vert (git checkout --, JAMAIS git clean), 7 gates re-verts. ci/README.md (table récap + paragraphe détaillé) mis à jour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-01 07:14:31 +00:00
parent 5de6b23c02
commit 30892dfecb
3 changed files with 177 additions and 1 deletions
+55
View File
@@ -796,3 +796,58 @@ absolu) · **7 gates re-verts** · unittest module `chat_otoia` re-vert.
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; l'import réel des
`Custom Block` + le câblage de l'endpoint OTOIA restent côté agent ERPNext Backend / VPS).
- **Auto-score 4Big** : 96/100.
## Session `20260801_070237` · Buffer S8 · Mobile/app_config : le **SDK MAJEUR Expo** (« Expo 54 ») — la version majeure que l'app compagnon cible, **ANCRÉE sur la roadmap Sprint 5 l.56** « Rebuild Expo 54 » — était transcrite À LA MAIN **cinq fois** dans le README SANS AUCUN gate d'IDENTITÉ ni d'ANCRAGE. Le bloc « Mobile · récap de l'app Expo » existant ne gate QUE le quadruplet onglets/rôles/langues/identifiants `a_confirmer` (comptes de `MANIFEST.counts`), AVEUGLE au majeur du SDK.
**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Roadmap fonctionnellement
close ; poursuite de la série anti-dérive (CLAUDE.md #6). Même patron d'ANCRAGE que
la marque SEO §Entités (`Helios RD` ancrée sur CLAUDE.md) ou les `roadmap_line` de la
recette `qa/acceptance` — appliqué ici à une valeur ancrée sur la **ROADMAP** (source
faisant autorité de la version Expo, CLAUDE.md ne la spécifiant pas).
**Dérive silencieuse fermée** :
- `05_deliverables_mvp/mobile/app_config/README.md:4/19/35/72` — « Expo 54 »
(×4 mentions) + la ligne de source « Expo SDK **54** | roadmap Sprint 5 l.56 ».
- Chaîne de dérivation (byte-gatée par `check_artifacts`) : roadmap Sprint 5 l.56
« Rebuild Expo 54 » (INPUT faisant autorité) → `mobile_spec.json[app]`
(`expo_sdk_major = 54` + `expo_sdk_source` cite la roadmap) →
`out/app_config.json.expo.extra.expoSdkMajor = 54` + `out/MANIFEST.json
.app.expo_sdk_major = 54`.
- Piège #6 : BUMPER le SDK (Expo 55 sort · `eas build` cible 55) dans le
spec/artefact SANS toucher au README (ou l'inverse), ou DÉRIVER la roadmap de
l'artefact, laisse la prose PÉRIMÉE en silence pendant que le graphe byte-gaté
dit autre chose → l'agent Mobile lancerait `eas build` sur le MAUVAIS SDK (le
rebuild même que la ligne roadmap prescrit). Aucune suite `tests/` (FONCTIONS de
génération, jamais la prose ni l'ancre à la roadmap) n'attrape ce « vert
trompeur ».
- **État courant** : aucune mention périmée — les 4 « Expo 54 », le spec, le
MANIFEST et la roadmap concordent (anti-invention #6, rien à réécrire). Le défaut
est la **surface ungated + non ancrée à la roadmap**.
**Gate ajouté** (`ci/check_readme_claims.sh`, nouveau bloc « Mobile · le SDK MAJEUR
Expo … ANCRÉ sur la roadmap Sprint 5 l.56 », inséré avant `sys.exit`) : le majeur
`sdk` re-dérivé de `app_config.json` byte-gaté, puis (a) **cohérence interne**
artefact ⇔ `MANIFEST.app.expo_sdk_major``spec.app.expo_sdk_major` ; (b)
**ancrage roadmap**`re.search("Rebuild Expo (\d+)")` sur
`04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md` == `sdk` (ancre vive) ; (c) le spec DÉCLARE
l'ancrage (`expo_sdk_source` cite « roadmap » + « Expo N ») ; (d) **toute** mention
prose « Expo [SDK] N » (regex `Expo(?:\s+SDK)?\s*\*{0,2}(\d+)`) == `sdk` (aucune
périmée) ; (e) la ligne de source du tableau cite l'ancre `roadmap` à côté du majeur.
Un claim absent échoue AUSSI (traçabilité).
**7 morsures vérifiées** : README `Expo SDK **54**→**55**` (prose périmée) ·
**artefact** `54→55` (README + roadmap périmés = le vrai *silent green*) ·
**roadmap** `Rebuild Expo 54→55` (artefact périmé · ancre qui dérive) ·
**MANIFEST** `54→55` (chaîne interne incohérente) · spec `expo_sdk_source` sans
« roadmap » (ancrage déclaré manquant) · README ligne de source sans « roadmap »
(ancrage prose manquant) · README retire TOUTE mention « Expo N » (claim absent) ;
restauré = green : cohérence interne · ancre roadmap vive · spec déclare · 4
mentions == 54 · ligne source cite roadmap · exit 0. Working tree byte-restauré
(`git checkout --`, **JAMAIS** `git clean`) · **7 gates re-verts**.
- `ci/README.md` (table récap du pipeline + paragraphe détaillé « SDK majeur Expo
de l'app mobile ancré sur la roadmap Sprint 5 l.56 ») mis à jour.
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo ;
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; `eas build`/
`eas submit` App Store #32 / Play Store restent côté agent Mobile · VPS).
- **Auto-score 4Big** : 96/100.