[DTP-Worker] Sprint 8 · buffer L75 · Domaine Frontend/Chat OTOIA : le montage de l'assistant conversationnel par portail (frontend/chat_otoia) affichait « 5 Custom Block + 5 configs runtime » (fiche agent frontend_console) et « 5 portails · 5 fixtures · 5 configs runtime » (README du module) — trois nombres data-derived, TOUS = 5 (piège aveugle), transcrits À LA MAIN dans DEUX docs sans AUCUN gate, alors que frontend/chat_otoia/out/MANIFEST.json (byte-gaté par check_artifacts, counts.custom_blocks/mounts/portails recomptés du contrat RBAC à chaque build via la bijection 1 block ⇔ 1 mount ⇔ 1 portail métier, plateforme exclu) fait autorité. Piège aveugle caractéristique : les trois valent 5 aujourd'hui — un gate qui n'en recompterait qu'UN serait aveugle à la dérive des deux autres (ajouter un portail au contrat RBAC → chat_otoia rebâtit 6 blocks/6 mounts/6 portails pendant que les docs restent à 5 en silence) → nouveau bloc dans check_readme_claims recomputant CHAQUE nombre depuis SON PROPRE champ du MANIFEST et exigeant l'égalité avec les deux docs. Cohérence croisée : custom_blocks == mounts == portails == |MANIFEST.portails| (la bijection du générateur) — mord un compteur désynchronisé de sa propre liste. Un claim absent échoue AUSSI (5 morsures vérifiées : dérive custom_block fiche captée là où mounts reste 5 · dérive configs runtime fiche captée là où blocks reste 5 · dérive portails README · dérive fixtures README · claim configs runtime disparu = red ; restauré = green). ci/README.md (table + détail) mis à jour · 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,68 @@
|
||||
# Activity Log · 2026-07-31 · Claude Code DTP
|
||||
|
||||
## Session `20260731_123055` · Buffer S8 · Domaine Frontend/Chat OTOIA : le montage de l'assistant conversationnel par portail (`frontend/chat_otoia`) affichait « **5 `Custom Block` + 5 configs runtime** » (fiche agent frontend_console) et « **5 portails · 5 fixtures · 5 configs runtime** » (README du module) — trois nombres data-derived, TOUS = 5 (piège aveugle), transcrits À LA MAIN dans DEUX docs sans AUCUN gate
|
||||
|
||||
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||
fonctionnellement close ; poursuite de la série anti-dérive (CLAUDE.md #6). Les
|
||||
sessions précédentes ont gaté les domaines tests, portails, RBAC (3 volets), SEO, CRM
|
||||
(pipeline vente), mobile, Legal (CONFOTUR), QA (audit 5D), DevOps (run-book) et Démo
|
||||
(run-sheet). Cette session cible le **domaine Frontend/Chat OTOIA** — le **montage de
|
||||
l'assistant conversationnel par portail** (livrable Sprint 6 « Chat OTOIA embedded »),
|
||||
seul grand livrable dont les comptes data-derived cités dans deux docs pointaient
|
||||
l'artefact généré sans être recomputés par aucun gate.
|
||||
|
||||
### Défaut trouvé — triplet ungated, TOUS = 5 (piège aveugle), transcrit dans DEUX docs
|
||||
|
||||
- **`03_agents/frontend_console/AGENT.md:29`** : cellule « **5 `Custom Block` + 5
|
||||
configs runtime** » — deux nombres (custom_blocks + mounts).
|
||||
- **`05_deliverables_mvp/frontend/chat_otoia/README.md`** : « Portails (**5**,
|
||||
`plateforme` exclu) » (l.24) · « **5** fixtures `Custom Block` » (l.48) · « **5**
|
||||
configs runtime » (l.49) — trois transcriptions (portails + custom_blocks + mounts).
|
||||
- L'artefact source est byte-gaté par `check_artifacts` :
|
||||
`frontend/chat_otoia/out/MANIFEST.json` recompte `counts.custom_blocks`,
|
||||
`counts.mounts` et `counts.portails` du contrat RBAC à chaque build (bijection
|
||||
1 block ⇔ 1 mount ⇔ 1 portail métier, `plateforme` exclu — invariant 2 du
|
||||
générateur).
|
||||
- Aucun gate ne comparait la VALEUR écrite à l'artefact. **Piège aveugle**
|
||||
caractéristique (cf. DevOps phases ⁄ confirmations) : custom_blocks, mounts ET
|
||||
portails valent **tous trois 5 aujourd'hui** — un gate qui n'en recompterait qu'un
|
||||
serait aveugle à la dérive des deux autres (ajouter un portail au contrat RBAC →
|
||||
chat_otoia rebâtit 6 ⁄ 6 ⁄ 6 pendant que les deux docs restent à 5). « Vert
|
||||
trompeur » qu'aucune suite `tests/` (qui teste des FONCTIONS, pas la prose des docs)
|
||||
n'attrape.
|
||||
- **État courant** : **aucun nombre périmé** — 5/5/5 recoupe MANIFEST exactement
|
||||
(anti-invention #6 : rien à réécrire). Le défaut est la **surface ungated**.
|
||||
|
||||
**Nouveau bloc dans `ci/check_readme_claims.sh`** : recompute **chaque** nombre depuis
|
||||
**son propre** champ du MANIFEST (`custom_blocks` · `mounts` · `portails`, jamais figé
|
||||
ici · zéro duplication du compteur du générateur #5) et exige l'égalité avec les deux
|
||||
docs. Cohérence croisée : `custom_blocks == mounts == portails == |MANIFEST.portails|`
|
||||
(la bijection du générateur) — mord un compteur désynchronisé de sa propre liste. Un
|
||||
claim absent échoue AUSSI (traçabilité).
|
||||
|
||||
### Preuve (5 morsures vérifiées + restauration verte)
|
||||
|
||||
| Injection | Résultat |
|
||||
|---|---|
|
||||
| fiche custom_block `5→6` (mounts reste 5, aveugle si 1 seul recompté) | ✗ dit 6/5 MAIS artefact 5/5 · exit 1 |
|
||||
| fiche configs runtime `5→4` (blocks reste 5) | ✗ dit 5/4 MAIS artefact 5/5 · exit 1 |
|
||||
| README portails `5→6` | ✗ dit 6 portails MAIS artefact 5 · exit 1 |
|
||||
| README fixtures `5→7` | ✗ dit 7 fixtures MAIS artefact 5 · exit 1 |
|
||||
| README claim « configs runtime » supprimé (reformulé) | ✗ claim INTROUVABLE · exit 1 |
|
||||
| restauré | ✓ 5/5/5 == artefact (2 docs) · exit 0 |
|
||||
|
||||
- **`ci/README.md`** — surface ajoutée à la table récap du pipeline + paragraphe
|
||||
descriptif (classe « montage Chat OTOIA par portail »).
|
||||
|
||||
Suite CI complète re-verte : `guard_constraints` · `validate_json` · `check_docs` ·
|
||||
`check_artifacts` · `check_regression` · `check_ci_integrity` · `check_readme_claims`.
|
||||
|
||||
**Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
|
||||
|
||||
**Auto-score 4Big** : 96/100.
|
||||
|
||||
---
|
||||
|
||||
## Session `20260731_120054` · Buffer S8 · Domaine Démo : le run-sheet de pitch (`demo/scenarios`) affichait « **10 modules cités** » dans le diagramme d'architecture de son README — un compte data-derived transcrit À LA MAIN sans AUCUN gate
|
||||
|
||||
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
|
||||
|
||||
Reference in New Issue
Block a user