diff --git a/05_activity_log/2026-08-02.md b/05_activity_log/2026-08-02.md index 4916ece..f86bf12 100644 --- a/05_activity_log/2026-08-02.md +++ b/05_activity_log/2026-08-02.md @@ -1,5 +1,52 @@ # Activity log · 2026-08-02 · Claude Code DTP Worker +## Session `20260802_173603` · Sprint 8 · buffer · DevOps doc — `ci/README.md` : retrait des comptes CI figés `7 gates / 23 suites` (même fix que `dcb463e`, un cran plus haut · anti-invention #6, PAS un gate #5) + +**Contexte — le décompte figé oublié un niveau au-dessus du lanceur.** Ouverture : +arbre propre, `run_ci.sh` **30 PASS / 0 FAIL** (7 gates statiques + 23 suites de +module), file substantielle saturée (22/22 qualité à 100 · 22 suites / 564 méthodes · +recette 15/15 `in_repo` · 13 fiches · RBAC 50) — tous re-vérifiés indépendamment en +`python3`. Le commit `dcb463e` avait **dérivé** le décompte `30/23/7` dans `run_ci.sh` +(retrait des comptes figés du **commentaire** du script) précisément parce qu'ils se +périment en silence quand un module est ajouté/retiré à `ci.yml`. Mais la **doc du +lanceur**, `ci/README.md` §« Rejouer le gate EN LOCAL », re-transcrivait toujours à la +main les MÊMES nombres : bloc d'usage L34-35 « `tout gate.needs (7 gates statiques + 23 +suites de module)` » / « `seulement les 7 gates ci/*.sh` », et checklist L1601 « les **7 +gates statiques** apparaissent ». Même « vert trompeur », un cran au-dessus de l'endroit +déjà corrigé. + +**Vérif d'exposition (mémoire *verify-uncovered-before-gating*).** Mutation-test : +`23→24` + `7→8` sur ces deux lignes → `check_readme_claims.sh` **exit 0** et +`check_docs.sh` **exit 0** (les deux VERTS) — surface **réellement non gatée**, aucune +protection existante ne mord. Dérivation indépendante de `gate.needs` de `ci.yml` +(classification `bash ci/` == statique, celle de `run_ci.sh::is_static`) confirme +`30 = 7 gates + 23 suites`, EXACTEMENT ce que le README figeait. + +**Décision — FIXER, pas gater** (mémoire *fix-vs-gate-a-transitively-protected-constant* ++ *local-ci-runner*). `ci/README.md:51-54` déclare lui-même que `run_ci.sh` « n'a pas à +être re-gaté (#5) » car son exactitude est **structurelle** ; ajouter un gate N+1 sur la +prose qui DÉCRIT ce lanceur trahirait cette posture et prendrait la mauvaise autorité. +La réponse cohérente est celle que `dcb463e` a déjà appliquée un cran plus bas : +**retirer les nombres figés**, laisser `run_ci.sh` seul propriétaire du décompte (dérivé +de `gate.needs`, imprimé à l'exécution + `--list`). + +**Réalisé.** +- `ci/README.md` bloc d'usage L34-37 : « 7 gates statiques + 23 suites » → « gates + statiques `ci/*.sh` + suites de module » (qualitatif, non chiffré) ; `--list` annoté + « + décompte dérivé ». +- Ajout d'un paragraphe : le **décompte exact `N jobs = G gates + S suites` est dérivé + de `gate.needs` et imprimé à l'exécution / `--list`, jamais figé ici** (même raison #6 + qui l'a retiré du commentaire de `run_ci.sh`). +- Checklist §5 L1601 : « les **7 gates statiques** » → « les gates statiques `ci/*.sh` ». +- **Intactes** : les mentions « 7 gates re-verts » du **changelog** (§ sessions de + mutation-test, L1387-1542) — narratif historique d'états passés VRAIS, pas une + affirmation de composition VIVE ; les figer serait réécrire l'histoire. + +**Vérifs (en-repo, zéro contact VPS).** `run_ci.sh --list` imprime toujours «`30 jobs … +: 7 gates statiques ci/*.sh + 23 suites de module`». `run_ci.sh` complet : **30 PASS · 0 +FAIL · 0 SKIP**. `grep` des surfaces vives figées → **aucune restante**. Zéro module, +zéro gate ajouté (#5), zéro chiffre inventé (#6). + ## Session `20260802_153601` · Sprint 8 · buffer · DevOps outillage — `run_ci.sh` : décompte `30/23/7` DÉRIVÉ à l'exécution (retrait des comptes figés du commentaire · anti-invention #6, PAS un gate #5) **Contexte — dernière surface figée dans un outil « anti-dérive par construction ».** diff --git a/ci/README.md b/ci/README.md index 6f1a3d3..8b644ee 100644 --- a/ci/README.md +++ b/ci/README.md @@ -31,12 +31,18 @@ Aucune dépendance réseau/marketplace hors `actions/checkout`. Tout tourne avec Avant de committer, reproduire l'intégralité du gate de merge en une commande : ``` -bash run_ci.sh # tout gate.needs (7 gates statiques + 23 suites de module) -bash run_ci.sh --static # seulement les 7 gates ci/*.sh (rapide) -bash run_ci.sh --list # liste les jobs qui seraient lancés, sans exécuter +bash run_ci.sh # tout gate.needs (gates statiques ci/*.sh + suites de module) +bash run_ci.sh --static # seulement les gates statiques ci/*.sh (rapide) +bash run_ci.sh --list # liste les jobs qui seraient lancés (+ décompte dérivé), sans exécuter bash run_ci.sh --help # aide + codes de sortie (0 vert · 1 échec · 2 option · 3 hors git) ``` +Le **décompte exact** (`N jobs = G gates statiques + S suites de module`) est +**dérivé de `gate.needs` et imprimé à l'exécution** (et par `--list`) ; il n'est +**jamais figé dans cette doc**, où il se périmerait en silence à chaque module +ajouté/retiré — même raison anti-invention (`CLAUDE.md` #6) qui a fait retirer +ces mêmes comptes du commentaire de `run_ci.sh`. + `run_ci.sh` n'a **aucune liste en dur** : il DÉRIVE l'ensemble des checks depuis `gate.needs` de `.gitea/workflows/ci.yml` (la source de vérité que `check_ci_integrity.sh` verrouille déjà) et exécute, pour chaque job, la @@ -1598,7 +1604,7 @@ Actions** doit être activé, et le runner doit apparaître « Idle ». - `[ ]` Gitea Actions activé au niveau instance ET repo. - `[ ]` `act_runner` enregistré, label `ubuntu-latest`, statut Idle. -- `[ ]` Push de test → les 7 gates statiques apparaissent et passent au vert. +- `[ ]` Push de test → les gates statiques `ci/*.sh` apparaissent et passent au vert. - `[ ]` PR de test avec violation volontaire → `constraints-guard` bloque (rouge). ---