[DTP-Worker] Sprint 8 · buffer L75 · Comptes vivants "551 tests" périmés DANS la machinerie CI (ci.yml + check_regression.sh + check_readme_claims.sh), non gatés → renvoi artefact (→558)
Même classe de vert-trompeur que ci/README.md (session 050007) mais dans le code des gates : 3 comptes vivants figés "22 suites · 551 tests · PASS" (matrice 534→551→558). L'ironie : le header de check_regression — le gate anti-péremption de la matrice — s'était lui-même périmé. Fix précédent 050007 : suppression de la surface de dérive (retrait du nombre figé → renvoi à regression_run.json), pas 551→558. Progressions historiques "534→551→558" conservées. 7 gates verts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -64,8 +64,9 @@ jobs:
|
|||||||
# Fraîcheur de la matrice de régression (Sprint 8 · QA « Regression tests
|
# Fraîcheur de la matrice de régression (Sprint 8 · QA « Regression tests
|
||||||
# exhaustifs »). Complète check-artifacts : ce dernier ne rejoue que `build`
|
# exhaustifs »). Complète check-artifacts : ce dernier ne rejoue que `build`
|
||||||
# et exclut les artefacts d'EXÉCUTION ; ce gate rejoue `run` et exige que le
|
# et exclut les artefacts d'EXÉCUTION ; ce gate rejoue `run` et exige que le
|
||||||
# `qa/regression/out/regression_run.json` commité (22 suites · 551 tests ·
|
# `qa/regression/out/regression_run.json` commité (dont la doc dérive ses
|
||||||
# PASS, cité dans toute la doc) soit byte-identique au run frais. Rend
|
# totaux agrégés — suites · tests · verdict PASS — jamais figés en dur ici,
|
||||||
|
# sous peine de se périmer) soit byte-identique au run frais. Rend
|
||||||
# impossible la re-commission d'une matrice périmée (ex. dérive « demo 18→21 »)
|
# impossible la re-commission d'une matrice périmée (ex. dérive « demo 18→21 »)
|
||||||
# ou rouge commitée verte. stdlib pur, zéro pip, ~5 s.
|
# ou rouge commitée verte. stdlib pur, zéro pip, ~5 s.
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,5 +1,64 @@
|
|||||||
# Activity Log · 2026-07-31 · Claude Code DTP
|
# Activity Log · 2026-07-31 · Claude Code DTP
|
||||||
|
|
||||||
|
## Session `20260731_053011` · Buffer S8 · Comptes vivants « 551 tests » périmés DANS la machinerie CI elle-même (`.gitea/workflows/ci.yml` + `ci/check_regression.sh` + `ci/check_readme_claims.sh`) — non couverts par aucun gate
|
||||||
|
|
||||||
|
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||||
|
fonctionnellement close (22/22 modules · **558** tests · 7 gates verts). Poursuite de
|
||||||
|
la série anti-dérive (CLAUDE.md #6). Les sessions précédentes ont gaté les comptes vivants
|
||||||
|
des **docs** d'entrée (README, fiches QA/Backend) puis nettoyé la **doc du CI** (`ci/README.md`,
|
||||||
|
session `050007`). Recherche du même faux-vert **hors de ce périmètre** : audit `git grep '551'`
|
||||||
|
repo-wide (pas seulement `*.md`) → la machinerie CI **opérationnelle** (workflow + headers de
|
||||||
|
gates), qu'**aucun gate ne couvre**.
|
||||||
|
|
||||||
|
### Défauts trouvés — 3 comptes vivants « 551 » périmés (→ 558), dans le code des gates
|
||||||
|
|
||||||
|
- **`.gitea/workflows/ci.yml:67`** : le commentaire du job `check-regression` décrivait
|
||||||
|
l'artefact commité comme « **22 suites · 551 tests · PASS**, cité dans toute la doc » —
|
||||||
|
compte **vivant figé** périmé (matrice 534 → 551 → **558**).
|
||||||
|
- **`ci/check_regression.sh:8`** (l'ironie, encore) : le **header du gate de fraîcheur de
|
||||||
|
la matrice** — dont le rôle même est d'empêcher le compte agrégé de se périmer —
|
||||||
|
s'illustrait par « totaux « **22 suites · 551 tests · verdict PASS** » cité partout ».
|
||||||
|
Le gardien anti-péremption avait lui-même péri.
|
||||||
|
- **`ci/check_readme_claims.sh:152`** : l'anecdote décrivant le défaut QA disait « … alors
|
||||||
|
que **le run dit 22 / 551** » — présent de l'indicatif ⇒ prétention **vivante** du compte
|
||||||
|
courant, désormais fausse (558). *(Le « 21 suites · 534 tests » de la même ligne est
|
||||||
|
l'anecdote historique point-in-time du défaut corrigé — conservé.)*
|
||||||
|
- **Pourquoi non gaté** : `check_readme_claims` ne couvre que README + fiches QA/Backend ;
|
||||||
|
ces fichiers **mélangent** narratifs historiques figés volontaires (progression
|
||||||
|
« 534 → 551 → 558 ») et comptes vivants — exactement le motif qui a laissé `ci/README.md`
|
||||||
|
dériver (session `050007`).
|
||||||
|
|
||||||
|
### Fix (2 solutions · CLAUDE.md #4 — retenu : supprimer la surface de dérive · précédent `050007`)
|
||||||
|
|
||||||
|
Plutôt que réécrire 551→558 (qui re-dériverait au prochain ajout de suite), **retrait du
|
||||||
|
nombre vivant figé** au profit d'un renvoi à l'artefact — « les totaux agrégés (suites · tests ·
|
||||||
|
verdict) dont la doc dérive, **jamais figés en dur ici** ». Zéro nombre à périmer = **zéro
|
||||||
|
surface de dérive**, structurellement plus fort qu'un gate sur de la prose (#6).
|
||||||
|
- `ci.yml:67` & `check_regression.sh:8` : compte figé → renvoi descriptif à `regression_run.json`.
|
||||||
|
- `check_readme_claims.sh:152` : « le run dit 22 / 551 » → « le run agrégé faisant autorité
|
||||||
|
en disait déjà **davantage** (recompté ci-dessous, jamais figé ici) » — formulation
|
||||||
|
identique à celle appliquée à `ci/README.md` en session `050007`. Le **534** point-in-time
|
||||||
|
reste comme valeur du défaut.
|
||||||
|
- *(Alt. écartée : étendre `check_readme_claims` à `ci.yml`/`ci/*.sh` — fragile, il faudrait
|
||||||
|
distinguer chaque progression historique figée d'un compte vivant ; le retrait est plus fort.)*
|
||||||
|
|
||||||
|
### Preuves
|
||||||
|
|
||||||
|
| Contrôle | Résultat |
|
||||||
|
|---|---|
|
||||||
|
| `git grep '551'` hors logs/daily_reports/progression `534→551→558` | **aucun** compte vivant résiduel ✅ |
|
||||||
|
| 7 gates (`guard`/`json`/`docs`/`artifacts`/`regression`/`ci_integrity`/`readme_claims`) | ✅ exit 0 |
|
||||||
|
| `check_artifacts` (rebuild + égalité byte des `out/`) | ✅ (édition **hors** `05_deliverables_mvp` ⇒ 0 dérive d'artefact) |
|
||||||
|
| `check_ci_integrity` (câblage `gate.needs` inchangé) | ✅ |
|
||||||
|
| Diff | 3 fichiers · +9/−6 · 0 untracked |
|
||||||
|
|
||||||
|
**Hors périmètre worker (VPS · #8)** : néant (commentaires CI en-repo, aucun touch prod).
|
||||||
|
**Anti-invention (#6)** : rien inventé — retrait de nombres figés, la vérité reste recomputée
|
||||||
|
par les gates depuis `regression_run.json`.
|
||||||
|
**Auto-score 4Big** : 96/100.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Session `20260731_050007` · Buffer S8 · Chiffre vivant périmé DANS la doc du CI (`ci/README.md`) — le gate `check_regression` était illustré par un compte de tests faux, et `check_readme_claims` sous-décrit (2 docs au lieu de 3)
|
## Session `20260731_050007` · Buffer S8 · Chiffre vivant périmé DANS la doc du CI (`ci/README.md`) — le gate `check_regression` était illustré par un compte de tests faux, et `check_readme_claims` sous-décrit (2 docs au lieu de 3)
|
||||||
|
|
||||||
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||||
|
|||||||
@@ -149,7 +149,8 @@ else:
|
|||||||
# gated · M tests · M passés · 0 échec · 0 erreur → verdict PASS ») en déclarant
|
# gated · M tests · M passés · 0 échec · 0 erreur → verdict PASS ») en déclarant
|
||||||
# « jamais compté à la main » et en citant qa/regression/out/regression_run.json.
|
# « jamais compté à la main » et en citant qa/regression/out/regression_run.json.
|
||||||
# Ce compte se PÉRIME pourtant en silence quand une suite est ajoutée : la fiche
|
# Ce compte se PÉRIME pourtant en silence quand une suite est ajoutée : la fiche
|
||||||
# affichait « 21 suites · 534 tests » alors que le run dit 22 / 551. Comme pour
|
# affichait « 21 suites · 534 tests » alors que le run agrégé faisant autorité en
|
||||||
|
# disait déjà davantage (matrice recomptée ci-dessous, jamais figée ici). Comme pour
|
||||||
# le README, aucun gate ne comparait la VALEUR au run. On la RECALCULE ici depuis
|
# le README, aucun gate ne comparait la VALEUR au run. On la RECALCULE ici depuis
|
||||||
# le compte agrégé faisant autorité (regression_run.json, commité · déterministe).
|
# le compte agrégé faisant autorité (regression_run.json, commité · déterministe).
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
# Gate de FRAÎCHEUR de la matrice de régression (roadmap Sprint 8 · QA
|
# Gate de FRAÎCHEUR de la matrice de régression (roadmap Sprint 8 · QA
|
||||||
# « Regression tests exhaustifs » · CLAUDE.md #5 — zéro régression silencieuse).
|
# « Regression tests exhaustifs » · CLAUDE.md #5 — zéro régression silencieuse).
|
||||||
# Prouve, en une commande, que l'artefact d'EXÉCUTION commité
|
# Prouve, en une commande, que l'artefact d'EXÉCUTION commité
|
||||||
# `qa/regression/out/regression_run.json` (totaux « 22 suites · 551 tests ·
|
# `qa/regression/out/regression_run.json` (dont la doc et les logs dérivent
|
||||||
# verdict PASS » cité partout dans la doc et les logs) reflète TOUJOURS la
|
# leurs totaux agrégés — suites · tests · verdict PASS — jamais figés en dur
|
||||||
# réalité du disque — en le régénérant et en exigeant l'identité byte-for-byte.
|
# ici, sous peine de se périmer en silence) reflète TOUJOURS la réalité du
|
||||||
|
# disque — en le régénérant et en exigeant l'identité byte-for-byte.
|
||||||
#
|
#
|
||||||
# Pourquoi un gate DÉDIÉ (et non `check_artifacts.sh`) : ce dernier ne rejoue
|
# Pourquoi un gate DÉDIÉ (et non `check_artifacts.sh`) : ce dernier ne rejoue
|
||||||
# QUE la sous-commande déterministe `build` (→ regression_plan.json) et exclut
|
# QUE la sous-commande déterministe `build` (→ regression_plan.json) et exclut
|
||||||
|
|||||||
Reference in New Issue
Block a user