diff --git a/05_activity_log/2026-08-02.md b/05_activity_log/2026-08-02.md index d9f9d4e..e00e9df 100644 --- a/05_activity_log/2026-08-02.md +++ b/05_activity_log/2026-08-02.md @@ -1,5 +1,65 @@ # Activity log · 2026-08-02 · Claude Code DTP Worker +## Session `20260802_183604` · Sprint 8 · buffer · Dérive doc-vs-réalité (README racine) : la ligne « Régression » affirmait `regression_run.json` « non commité par design » — FAUX depuis la refonte baseline byte-gatée (`76fb0e7`) → correction de vérité (PAS un gate #5, PAS un chiffre inventé #6) + +**Nature — dérive réelle non gatée, corrigée par la vérité (pas un gate de plus).** +Ouverture : arbre propre, `run_ci.sh` **30 PASS / 0 FAIL / 0 SKIP** (7 gates statiques + +23 suites), campagne de gates **saturée**. La file de fiches est close (13/13) et un +**audit doc-vs-réalité frais** (fan-out d'exploration sur les 13 `03_agents/*/AGENT.md` +et les README de module) n'a remonté **aucune** dérive de fiche. Plutôt que d'empiler un +gate redondant (#5, explicitement déconseillé par la mémoire *verify-uncovered-before-gating*) +ou de ré-adosser le `daily_report` (canal 2 déjà à jour — le dernier commit `3ff51d9` **était** +ce rapport), j'ai poussé l'audit vers une surface non couverte : le **README racine**, point +d'entrée du mandat. + +**Constat — un fait de commit-status périmé.** `README.md:44-46` (section « État courant », +puce **Régression**) déclarait : *« le compte de tests agrégé faisant autorité est produit +par `qa/regression run` (**non commité par design**) — plan `…/regression_plan.json` »*. +Or c'est **faux depuis la refonte** : +- Le README **du module** régression (`05_deliverables_mvp/qa/regression/README.md:50,57-61`) + énonce sans ambiguïté que `out/regression_run.json` est **COMMITÉ** et sert de **baseline + byte-identique** au gate `ci/check_regression.sh`, qui régénère un `run` frais et exige + l'**identité byte-for-byte** (+ verdict `PASS`) — mécanisme introduit par le commit + **`76fb0e7`** (« *fix gate check_regression … run baseline commité* »). +- `git ls-files 05_deliverables_mvp/qa/regression/out/` confirme les **trois** artefacts + suivis, dont `regression_run.json`. +- Le **commentaire d'en-tête du gate lui-même** (`ci/check_readme_claims.sh:264,269`) qualifie + `regression_run.json` de « **commité · déterministe** » et de « **compte agrégé faisant + autorité** ». +Le README racine reflétait donc l'**ANCIEN design** (pré-`76fb0e7`, run non commité) — dérive +classique « la doc de tête retarde d'une refonte ». + +**Pourquoi aucun gate ne l'attrapait (angle mort, PAS à re-gater).** `check_readme_claims.sh` +ancre la partie **numérique** de cette puce — le motif `\*\*(\d+) suites gated\*\*` recompté +depuis `regression_plan.json::totals.suites` (=22) — mais le **fait en clair** « (non commité +par design) » est une affirmation de **statut de commit**, hors du périmètre des recomputes de +compteurs. `check_docs.sh` ne valide que les **cibles de liens** (le lien `regression_plan.json` +était valide). La dérive vivait précisément dans l'interstice entre « chiffre gaté » et « lien +valide ». + +**2 solutions (workflow #4) — la bonne = corriger la doc, pas gater le statut.** +- ❌ Ajouter un gate « statut de commit de `regression_run.json` » : redondant (#5) — le fait + « commité » est déjà **structurellement** prouvé par `check_regression` (qui EXIGE le fichier + commité pour comparer byte-for-byte ; sans lui le gate échouerait). Un checker de prose serait + un doublon de la vérité déjà enforced. +- ✅ **Corriger la puce vers la réalité.** Nouvelle rédaction (`README.md:44-48`) : + *« Le **compte de tests agrégé faisant autorité** vit dans `…/regression_run.json`, artefact + **commité et byte-gaté** : `ci/check_regression.sh` régénère un `run` frais et exige l'identité + **byte-for-byte** avec la baseline commitée (verdict `PASS`). Recensement déterministe des + suites : `…/regression_plan.json`. »* — le token gaté **`**22 suites gated**`** est **conservé + verbatim** (le gate le recompte toujours), le lien `regression_plan.json` est **préservé**, un + lien vers `regression_run.json` (commité) est **ajouté**, et le faux « non commité par design » + est **supprimé**. **Aucun chiffre nouveau saisi** (#6) : je n'ai PAS hardcodé le total « 564 » + dans une surface non gatée — je désigne l'artefact commité comme source, fidèle à la promesse + du README (« ce README n'introduit aucune donnée nouvelle »). + +**Vérif** (en-repo, zéro contact VPS). `run_ci.sh --static` → **7 PASS / 0 FAIL** : +`check_docs` résout le nouveau lien `regression_run.json` (fichier commité) · `check_readme_claims` +retrouve toujours `**22 suites gated**` (== `regression_plan.totals.suites`) · `guard_constraints` +vert. `run_ci.sh` complet → **30 PASS / 0 FAIL / 0 SKIP**. `git status --porcelain` = seuls +`README.md` (+ ce log) modifiés. **Zéro gate ajouté, zéro chiffre inventé, zéro fichier de code +touché, aucune commande VPS.** + ## Session `20260802_180604` · Sprint 8 · buffer · Reporting stakeholder (canal 2) — rattrapage du snapshot `daily_reports/2026-08-02` sur les 3 sessions de retouches doc/outillage depuis la clôture `160601` (4ᵉ addendum sourcé · ZÉRO gate ajouté #5) **Nature — réconciliation de reporting, PAS un gate de plus (CLAUDE.md #5).** Ouverture : diff --git a/README.md b/README.md index c917469..dbc67a1 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,11 @@ Transverses : [`devops`](03_agents/devops/AGENT.md) · [`qa`](03_agents/qa/AGENT - **Qualité 4Big** : **22/22 modules gated à 100/100** (seuil 95 · `CLAUDE.md` #5), verdict `PASS` — source [`qa/audit_4big/out/quality_report.json`](05_deliverables_mvp/qa/audit_4big/out/quality_report.json). -- **Régression** : **22 suites gated** couvertes bijectivement vs CI ; le compte de tests - agrégé faisant autorité est produit par `qa/regression run` (non commité par design) - — plan [`qa/regression/out/regression_plan.json`](05_deliverables_mvp/qa/regression/out/regression_plan.json). +- **Régression** : **22 suites gated** couvertes bijectivement vs CI. Le **compte de tests + agrégé faisant autorité** vit dans [`qa/regression/out/regression_run.json`](05_deliverables_mvp/qa/regression/out/regression_run.json), + artefact **commité et byte-gaté** : `ci/check_regression.sh` régénère un `run` frais et exige + l'identité **byte-for-byte** avec la baseline commitée (verdict `PASS`). Recensement déterministe + des suites : [`qa/regression/out/regression_plan.json`](05_deliverables_mvp/qa/regression/out/regression_plan.json). - **Recette roadmap** : **15 promesses** (8 livrables sprint + 7 métriques MVP), **15 `in_repo` prouvées** (chacune traçant ses items hors-périmètre worker · #8 · ex. M5 « app publiée 2 stores »), verdict `true` — source [`qa/acceptance/out/acceptance_matrix.json`](05_deliverables_mvp/qa/acceptance/out/acceptance_matrix.json).