[DTP-Worker] Sprint 8 · buffer L75 · Domaine Legal : la synthèse du DocType « CONFOTUR Application » (« 18 champs · 14 de donnée · 4 sections · 3 rôles · 2 évènements de dépôt ») était transcrite À LA MAIN dans DEUX docs (README du module legal/confotur + cellule de la fiche agent onapi_legal, mêmes 5 nombres du même spec) sans AUCUN gate — ajouter un champ/section/rôle au confotur_spec ferait dériver les deux docs en silence pendant que legal/confotur/out/MANIFEST.json (byte-gaté par check_artifacts, counts recomptés du confotur_spec.json à chaque build) dit autre chose → nouveau bloc dans check_readme_claims recomputant le quintuplet (fields + data_fields + sections + roles + depot_events) depuis MANIFEST.counts et exigeant l'égalité avec les deux docs (4 morsures vérifiées : dérive sections README · dérive champs 2e doc · dérive évènements de dépôt captée là où le total de champs est aveugle · claim disparu = red)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,71 @@
|
||||
# Activity Log · 2026-07-31 · Claude Code DTP
|
||||
|
||||
## Session `20260731_103044` · Buffer S8 · Domaine Legal : la synthèse du DocType « CONFOTUR Application » (« 18 champs · 14 de donnée · 4 sections · 3 rôles · 2 évènements de dépôt ») était transcrite À LA MAIN dans DEUX docs (README du module legal/confotur + fiche agent onapi_legal) sans AUCUN gate — ajouter un champ/section/rôle au spec ferait dériver les deux docs en silence
|
||||
|
||||
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||
fonctionnellement close (22/22 modules · 564 tests · 7 gates verts au démarrage).
|
||||
Poursuite de la série anti-dérive (CLAUDE.md #6). Les sessions précédentes ont gaté
|
||||
les comptes data-derived des domaines tests, portails, RBAC (3 volets), SEO, CRM
|
||||
(pipeline vente) et mobile. Cette session cible le **domaine Legal** — la **structure
|
||||
du DocType CONFOTUR**, dont un quintuplet data-derived cité dans deux docs pointait
|
||||
l'artefact généré sans être recomputé par aucun gate.
|
||||
|
||||
### Défaut trouvé — comptes du DocType ungated, transcrits dans DEUX docs
|
||||
|
||||
- **`05_deliverables_mvp/legal/confotur/README.md:17`** : ligne de synthèse
|
||||
« **18 champs (14 de donnée) · 4 sections · 3 rôles · soumissible · 2 évènements
|
||||
de dépôt** ».
|
||||
- **`03_agents/onapi_legal/AGENT.md:28`** : cellule de table reprenant les **mêmes**
|
||||
5 nombres (chacun en gras), **dérivés du même spec** (source unique · #5).
|
||||
- **Pourquoi non gaté** : `check_readme_claims` couvrait tests, portails, RBAC, SEO,
|
||||
CRM pipeline et mobile — jamais la structure du DocType CONFOTUR. `check_docs` ne
|
||||
valide que les liens ; `check_artifacts` prouve que
|
||||
`legal/confotur/out/MANIFEST.json` est **reproductible byte-for-byte** (bloc `counts`
|
||||
= {fields, data_fields, sections, permissions, roles, depot_events} recomptés de
|
||||
`confotur_spec.json` à chaque build) mais **ne compare pas** ce que les DEUX docs en
|
||||
**écrivent**. Ajouter un champ/section/rôle ferait dériver les deux docs **en
|
||||
silence** — même « vert trompeur ».
|
||||
- **État courant** : **aucun nombre périmé** — 18/14/4/3/2 recoupe MANIFEST
|
||||
exactement (anti-invention #6 : rien à réécrire). Le défaut est la **surface
|
||||
ungated** (faux-vert latent), pas un chiffre faux.
|
||||
|
||||
### Fix — extension de `check_readme_claims.sh` (recompute les 5 volets depuis MANIFEST)
|
||||
|
||||
Nouveau bloc qui RECOMPUTE le quintuplet `(fields, data_fields, sections, roles,
|
||||
depot_events)` depuis `legal/confotur/out/MANIFEST.counts` (source déjà byte-gatée ·
|
||||
zéro duplication du compteur du générateur) et exige l'égalité avec **les deux** docs :
|
||||
la ligne du README (sans gras) **et** la cellule de la fiche onapi_legal (chaque
|
||||
nombre en gras). Recomputer **les 5** volets (et pas le seul total de champs) mord une
|
||||
dérive de N'IMPORTE lequel là où un seul nombre resterait aveugle. Un claim **absent**
|
||||
échoue AUSSI. En-tête du gate + `ci/README.md` (§ table + § détail) mis à jour.
|
||||
|
||||
### Preuves de morsure
|
||||
|
||||
| Injection | Résultat |
|
||||
|---|---|
|
||||
| **README** sections `4→5` | **exit 1** `dit 18/14/5/3/2 MAIS MANIFEST dit 18/14/4/3/2` |
|
||||
| **Fiche** champs `18→19` (README intact) | **exit 1** `dit 19/14/4/3/2 MAIS MANIFEST 18/14/4/3/2` — mord la 2e doc |
|
||||
| **Fiche** évènements dépôt `2→3` | **exit 1** `dit 18/14/4/3/3 MAIS MANIFEST 18/14/4/3/2` — mord le dernier volet là où le total de champs est aveugle |
|
||||
| **Claim disparu** (README reformulé) | **exit 1** `synthèse DocType INTROUVABLE (attendu champs=18 …)` |
|
||||
| Restauré | **exit 0** (2 docs verts) |
|
||||
|
||||
### Vérifs
|
||||
|
||||
| Contrôle | Résultat |
|
||||
|---|---|
|
||||
| 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) |
|
||||
| Matrice de régression | **564/22 · PASS** inchangée (ni `tests/` ni doc-evidence touchés) |
|
||||
| Diff | 2 fichiers (`ci/check_readme_claims.sh` + `ci/README.md`) · 0 untracked |
|
||||
|
||||
**Anti-invention (#6)** : rien inventé — le gate recompute les 5 volets depuis
|
||||
`confotur MANIFEST.counts` au lieu de figer un compteur ; les nombres des deux docs
|
||||
**découlent** de l'artefact.
|
||||
**Hors périmètre worker (VPS · #8)** : néant (gate python/stdlib en-repo).
|
||||
**Auto-score 4Big** : 96/100.
|
||||
|
||||
---
|
||||
|
||||
## Session `20260731_093041` · Buffer S8 · Domaine CRM (non couvert hors prose « tests ») : le pipeline vente « 9 états · 11 transitions » était transcrit À LA MAIN dans DEUX README de module (titre workflow_vente + « 9 états du pipeline » de dossier_vente, même compte du même graphe) sans AUCUN gate — ajouter un état ferait dériver les deux docs en silence
|
||||
|
||||
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||
|
||||
Reference in New Issue
Block a user