From 1af5d01ccfc048828a3d282cd79fa95fbcf89bc2 Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Mon, 3 Aug 2026 05:13:38 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260803=5F050654]=20Sprint=201?= =?UTF-8?q?=20DevOps=20=C2=B7=20doc=20=C2=B7=20ci/README=20compl=C3=A9t?= =?UTF-8?q?=C3=A9=20:=20le=20d=C3=A9p=C3=B4t=20a=20DEUX=20workflows=20Gite?= =?UTF-8?q?a=20Actions=20(ci.yml=20+=20mobile-build.yml=20depuis=20af84b21?= =?UTF-8?q?)=20mais=20le=20livrable=20CI/CD=20n'ouvrait=20que=20sur=20ci.y?= =?UTF-8?q?ml=20=E2=86=92=20second=20workflow=20jamais=20mentionn=C3=A9=20?= =?UTF-8?q?(r=C3=A9f=C3=A9rence=20=C3=A0=20sens=20unique=20:=20mobile-buil?= =?UTF-8?q?d.yml=20pointe=20vers=20ci/README,=20pas=20l'inverse).=20Nouvel?= =?UTF-8?q?le=20sous-section=20=C2=A71=20=C2=AB=20mobile-build.yml=20(HORS?= =?UTF-8?q?=20gate)=20=C2=BB=20:=20v=C3=A9rifi=C3=A9=20par=20construction?= =?UTF-8?q?=20hors=20gate.needs=20(check-ci-integrity=20ne=20verrouille=20?= =?UTF-8?q?que=20ci.yml),=20m=C3=AAme=20runner,=20SKIP-safe=20sans=20EAS?= =?UTF-8?q?=5FTOKEN.=20Prose=20=C3=A9ditoriale=20sans=20chiffre=20data-der?= =?UTF-8?q?ived=20=E2=86=92=20gate-neutre.=20Sweep=20pr=C3=A9alable=2020?= =?UTF-8?q?=20g=C3=A9n=C3=A9rateurs=20docstring-vs-CODE=20=3D=20CLEAN,=20a?= =?UTF-8?q?ncres=20roadmap=20+=20chiffres=20daily=20report=20re-v=C3=A9rif?= =?UTF-8?q?i=C3=A9s.=20run=5Fci.sh=2030=20PASS=200=20FAIL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- 05_activity_log/2026-08-03.md | 38 +++++++++++++++++++++++++++++++++++ ci/README.md | 15 ++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/05_activity_log/2026-08-03.md b/05_activity_log/2026-08-03.md index 147d91c..caedcd5 100644 --- a/05_activity_log/2026-08-03.md +++ b/05_activity_log/2026-08-03.md @@ -436,3 +436,41 @@ zéro gate ajouté (#5). **Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP**. Aucune commande touchant au VPS (#8) · aucun `git clean` . + +--- + +## Session `20260803_050654` · doc DevOps — `ci/README.md` complété : second workflow `mobile-build.yml` + +**Sweep de vérité d'abord (aucune dérive trouvée sur les axes usuels).** Balayage +docstring-vs-CODE / README-vs-CODE des **20** générateurs (`*_gen.py` + `lib/generator.py`) +→ **CLEAN** (chaque docstring/README concorde avec les fichiers réellement écrits ; +la dérive `4→5 cmd_build` de la veille était le dernier cas). Ancres roadmap de +`acceptance_matrix.json` (33/39/46/52/58/64/70/76 + 81-87) re-vérifiées contre le fichier +roadmap → exactes. Câblage `gate.needs` (30 entrées) == miroir `run_ci.sh` → concordant. +Chiffres du daily report re-dérivés d'artefacts : `regression_run.json.totals` **569/569 · +0/0/0**, `quality_report.json` **PASS · 22 modules**, `acceptance_matrix.json` **15/15 +in_repo** → tous exacts. + +**Gap réel corrigé (complétude doc, classe `prose-facts-vs-numeric-drift`).** Depuis +l'ajout de `.gitea/workflows/mobile-build.yml` (commit `af84b21`), le dépôt possède +**deux** workflows Gitea Actions, mais le livrable CI/CD `ci/README.md` § 1 s'ouvrait sur +« Workflow : `ci.yml` » et ne mentionnait **jamais** le second — alors que `mobile-build.yml` +lui, pointe vers `ci/README.md` (« même runner · voir ci/README.md »). Référence à sens +unique → doc CI/CD incomplète pour un auditeur du dépôt. + +**Correctif.** Nouvelle sous-section § 1 « Second workflow Gitea Actions — `mobile-build.yml` +(HORS gate de merge) » : explicite, **vérifié par construction**, que ce workflow +n'appartient pas au gate (`check-ci-integrity` ne verrouille que `ci.yml` via sa variable +`CI=` ; aucun job dans `gate.needs` ; `run_ci.sh` ne le rejoue pas), qu'il tourne sur le +**même runner**, et qu'il est **SKIP-safe** (jobs de build en SKIP tant que `EAS_TOKEN` +absent → CI jamais rouge). Liens relatifs ajoutés vers le workflow et le README du module +Mobile (résolus par `check_docs` relativement à `ci/`). + +**Sûreté du changement.** Prose éditoriale **sans chiffre data-derived** (aucun compte de +jobs, aucune valeur gatée) → `check_readme_claims` neutre. Aucun terme interdit (#2 Gitea +only respecté) · aucun `out/*.json` touché → `check_artifacts` neutre · aucun nouveau +`ci/*.sh` ni assertion → `check_ci_integrity`/#5 neutres. Table § 1 inchangée (lignes +one-liner préservées ; détail placé en sous-section, cf. discipline `ci-readme` du dépôt). + +**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (dont `check-docs` liens +OK · `check-readme-claims` vert). Aucune commande VPS (#8) · aucun `git clean` . diff --git a/ci/README.md b/ci/README.md index 86639ae..7c3be53 100644 --- a/ci/README.md +++ b/ci/README.md @@ -26,6 +26,21 @@ et manuellement (`workflow_dispatch`). Jobs statiques (+ une suite `unittest` pa Aucune dépendance réseau/marketplace hors `actions/checkout`. Tout tourne avec `bash` + `git` + `python3` (déjà présents sur un runner standard). +### Second workflow Gitea Actions — `mobile-build.yml` (HORS gate de merge) + +Le dépôt versionne un **second** workflow Gitea Actions, +[`.gitea/workflows/mobile-build.yml`](../.gitea/workflows/mobile-build.yml) +(livrable Mobile · roadmap Sprint 5 · CI/CD mobile EAS), qui **n'appartient pas +au gate de merge** décrit ci-dessus. C'est volontaire et vérifié par construction : +`check-ci-integrity` ne verrouille **que** `ci.yml` (variable `CI=` du script), et +**aucun** de ses jobs n'est câblé dans `gate.needs` — il ne conditionne donc aucun +merge et `run_ci.sh` ne le rejoue pas (hors `gate.needs`). Il tourne sur le **même +runner** que `ci.yml` et reste **SKIP-safe** : tant que le secret `EAS_TOKEN` n'est +pas fourni par Michel, ses jobs de build (`eas build`/`eas submit`) sont en SKIP — +il ne rend **jamais** le CI rouge (`preflight` reste vert et rapporte les secrets +attendus). Périmètre complet (#8 · exécution serveur hors repo), profils EAS et +variables `a_confirmer` : [`README` du module Mobile](../05_deliverables_mvp/mobile/app_config/README.md). + ### Rejouer le gate EN LOCAL — `run_ci.sh` (racine du dépôt) Avant de committer, reproduire l'intégralité du gate de merge en une commande :