From 59eb4dcb7c3ca6f1008ae46af50d96109d32842a Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Sun, 2 Aug 2026 16:39:22 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260802=5F163601]=20Sprint=208?= =?UTF-8?q?=20=C2=B7=20buffer=20=C2=B7=20Fiche=20devops/AGENT.md=20:=20doc?= =?UTF-8?q?umentation=20du=20livrable=20run=5Fci.sh=20(index=C3=A9=20au=20?= =?UTF-8?q?README=20racine=20mais=20absent=20de=20la=20fiche=20de=20son=20?= =?UTF-8?q?agent=20propri=C3=A9taire)=20=E2=86=92=203e=20ligne=20table=20+?= =?UTF-8?q?=20sous-section=20=C2=AB=20outillage=20local,=20PAS=20un=20gate?= =?UTF-8?q?=20#5=20=C2=BB=20(d=C3=A9rive=20de=20gate.needs,=20hors=20gate.?= =?UTF-8?q?needs,=20racine=20=E2=88=89=20ci/=20donc=20hors=20INV-B),=20ali?= =?UTF-8?q?gn=C3=A9=20m=C3=A9moire=20local-ci-runner=20=C2=B7=20z=C3=A9ro?= =?UTF-8?q?=20module=20=C2=B7=20z=C3=A9ro=20gate=20=C2=B7=20check=5Fdocs?= =?UTF-8?q?=20valide=20le=20lien=20../../run=5Fci.sh=20=C2=B7=20run=5Fci?= =?UTF-8?q?=2030=20PASS=20+=20guards=20verts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_agents/devops/AGENT.md | 14 ++++++++++++++ 05_activity_log/2026-08-02.md | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/03_agents/devops/AGENT.md b/03_agents/devops/AGENT.md index 5c6e0af..a2239f1 100644 --- a/03_agents/devops/AGENT.md +++ b/03_agents/devops/AGENT.md @@ -23,6 +23,20 @@ et vérifications HTTP restent côté **agent DevOps/ERPNext Backend**. |---|---|---|---|---| | [`.gitea/workflows/ci.yml`](../../.gitea/workflows/ci.yml) + [`ci/`](../../ci/README.md) | 1 (roadmap L29) | **CI/CD Gitea Actions** : 3 guards blocants (contraintes / JSON / docs) + un job de tests par livrable gated + `gate` agrégateur + `e2e-baseline` | déclenché sur `push`/`pull_request` → `main` + `workflow_dispatch` | 22 suites gated | | [`05_deliverables_mvp/devops/deploy_runbook/`](../../05_deliverables_mvp/devops/deploy_runbook/README.md) | 8 (roadmap L73) | **Run-book VPS unifié** : graphe de **7 phases ordonnées** couvrant TOUS les modules gated, dépendances inter-phases + confirmations préalables sourcées | `deploy_runbook_gen.py build\|validate` | 29 (dont 14 injections négatives) | +| [`run_ci.sh`](../../run_ci.sh) | 8 (roadmap L73 · « regression exhaustifs ») | **Miroir LOCAL du gate** : rejoue en une commande, hors runner et hors réseau, l'ensemble exact des checks de `gate.needs` | `bash run_ci.sh` (outil, non un gate) | — (voir ci-dessous) | + +### `run_ci.sh` — outillage local, PAS un gate (#5) +Confort développeur, pas un maillon de la chaîne de merge : le script **dérive** +sa liste de checks de `gate.needs` (`.gitea/workflows/ci.yml`, la source déjà +verrouillée par `ci/check_ci_integrity.sh`) — **zéro liste en dur**, donc aucune +dérive silencieuse possible (ajouter/retirer un job CI se répercute ici sans +édition). Il n'ajoute **aucun `ci/*.sh` ni aucune assertion** : ce n'est **pas** +un gate (CLAUDE.md #5), il ne s'inscrit pas dans `gate.needs` et, la racine +n'étant pas sous `ci/`, il échappe par construction à l'invariant qui interdit un +`ci/*.sh` non câblé au gate. Périmètre = uniquement les jobs de `gate.needs` +(exclut les jobs `workflow_dispatch` type `e2e-baseline`/`npm test` qui exigent +Node). Le décompte jobs/gates/suites est **imprimé à l'exécution** — jamais figé +dans le code, où il se périmerait (anti-invention · #6). ### Le gate CI — trois guards blocants (`ci/`) - **`guard_constraints.sh`** : détecte l'**usage** (pas la simple mention) des diff --git a/05_activity_log/2026-08-02.md b/05_activity_log/2026-08-02.md index 483e4f5..e841cc1 100644 --- a/05_activity_log/2026-08-02.md +++ b/05_activity_log/2026-08-02.md @@ -1626,3 +1626,9 @@ nouvelle introduite ; l'état launch-readiness est **inchangé et vert**. `../../.gitea/workflows/ci.yml`, `../qa/...` — mirrorent le style des addenda existants et passent le link-check). Arbre `git status --porcelain` vide avant l'édition. Aucune commande touchant au VPS. + +## Session 20260802_163601 · Sprint 8 · buffer · Fiche `devops/AGENT.md` : documentation du livrable `run_ci.sh` (angle mort de complétude) +- **Constat** : `run_ci.sh` (miroir local du gate, ajouté aux commits `49123ec`/`dcb463e`) est déjà indexé dans la table Navigation du `README.md` racine, mais **absent de la fiche de son agent propriétaire** (`03_agents/devops/AGENT.md`) — la table « Livrables DevOps réellement produits » n'en listait que 2 (ci.yml+ci/, deploy_runbook). Gap de **complétude doc-vs-réalité**, pas une dérive de chiffre. +- **Action** : ajout d'une 3e ligne à la table + sous-section dédiée décrivant `run_ci.sh` **avec exactitude** : outillage local (confort dev), **PAS un gate** (CLAUDE.md #5 · aucun `ci/*.sh`, hors `gate.needs`, racine ∉ `ci/` donc hors invariant INV-B), liste de checks **dérivée** de `gate.needs` (zéro liste en dur → zéro dérive), décompte imprimé à l'exécution (#6). Aligné sur la mémoire `local-ci-runner`. +- **Zéro nouveau module · zéro gate ajouté** (#5). Seul changement = prose de fiche. +- **Vérif** : `check_docs.sh` valide le nouveau lien `../../run_ci.sh` (HARD) → vert · `guard_constraints.sh` vert · `run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP**.