docs(observability): record Phase 2 chain validation (TEST-OBS-001)

Validation bout-en-bout de la chaîne MCP <-> BMAD 6.9 :
- serveur leadtech-bmad testé sur Mac (handshake 7 tools / 6 resources OK)
- gates Phase 2 stricts vérifiés (backend_contracts + backend_session_expires_at
  se déclenchent sur cas non conforme, 0 faux positif sur plan conforme)
- MCP déclaré dans Claude Code pour app-alexandrie et RL799_V2

Story TEST-OBS-001 enregistrée comme ligne T0 (validation de chaîne, factice,
HORS décompte des 10 stories produit). Le compteur réel Phase 3 démarre intact
à la première vraie story.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
MaksTinyWorkshop
2026-06-25 01:20:25 +02:00
parent cbace46989
commit a1d0aba98d
+61 -6
View File
@@ -6,16 +6,17 @@ Suivi cumulatif des stories qui ont declenche au moins un gate Leadtech MCP en m
- **Phase** : 2 partielle (strict cible) - **Phase** : 2 partielle (strict cible)
- **Demarree le** : 2026-05-07 - **Demarree le** : 2026-05-07
- **Stories observees** : 0 / 10 minimum avant evaluation Phase 3 - **Stories observees** : 0 / 10 minimum avant evaluation Phase 3 (la story TEST-OBS-001 ci-dessous est une validation de chaine, hors decompte)
- **Derniere mise a jour** : 2026-05-07 - **Derniere mise a jour** : 2026-06-24
- **Note** : chaine MCP validee bout-en-bout le 2026-06-24 (serveur teste, gates Phase 2 OK, MCP declare dans Claude Code pour app-alexandrie et RL799_V2). Le compteur produit demarre a la premiere VRAIE story.
## Tableau recap ## Tableau recap
| # | Date | Projet | Story | Domaine | Tools strict | Blocking | Faux+ | Vrai+ | Override | Decision | | # | Date | Projet | Story | Domaine | Tools strict | Blocking | Faux+ | Vrai+ | Override | Decision |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | | T0 | 2026-06-24 | _(validation chaine)_ | TEST-OBS-001 | backend | validate_plan, validate_patch | 2 | 0 | 2 | non | n/a (story factice) |
_(aucune story observee pour l'instant)_ _(T0 = validation de chaine, hors decompte des 10 stories produit. Le decompte reel commence a la ligne 1.)_
Legendes : Legendes :
@@ -31,8 +32,8 @@ Legendes :
| Regle | Source | Declenchements | Faux+ | Vrai+ | Status | | Regle | Source | Declenchements | Faux+ | Vrai+ | Status |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| Patch sans fichier source: artefacts BMAD seuls | `server.py` hardcode | 0 | 0 | 0 | strict actif | | Patch sans fichier source: artefacts BMAD seuls | `server.py` hardcode | 0 | 0 | 0 | strict actif |
| `backend_session_expires_at` | `gates.yaml` | 0 | 0 | 0 | strict actif | | `backend_session_expires_at` | `gates.yaml` | 1 | 0 | 1 | strict actif |
| `backend_contracts` | `gates.yaml` strict_only | 0 | 0 | 0 | strict actif via dev-story | | `backend_contracts` | `gates.yaml` strict_only | 1 | 0 | 1 | strict actif via dev-story |
| `backend_request_id` (plan) | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) | | `backend_request_id` (plan) | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) |
| `backend_request_id` (patch) | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) | | `backend_request_id` (patch) | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) |
| `backend_auth_guard` | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) | | `backend_auth_guard` | `gates.yaml` | 0 | 0 | 0 | advisory (candidat Phase 3) |
@@ -46,6 +47,60 @@ _(coller ici un releve par story, en utilisant `template_releve_story.md`. Les p
--- ---
# Releve story 2026-06-24 — (validation chaine) — TEST-OBS-001
> Story factice destinee a valider la chaine MCP <-> BMAD 6.9 bout-en-bout. **Hors decompte des 10 stories produit.**
## Contexte
- **Date debut** : 2026-06-24
- **Date cloture** : 2026-06-24
- **Projet** : aucun (simulation du cycle dev-story, MCP appele directement)
- **Story** : TEST-OBS-001 — Ajouter l'endpoint de creation de session utilisateur
- **Domaine** : `backend`
- **Agents intervenus** : simulation dev-story (get_guidance + validate_plan + validate_patch strict)
## Tools MCP appeles
| Tool | Mode | Quand | Resultat |
| --- | --- | --- | --- |
| `get_guidance` | advisory | entree story | confidence=HIGH, 8 must_do, 4 red_flags, 12 matched_docs |
| `validate_plan` | strict=true | avant impl | 1 blocking_issue |
| `validate_patch` | strict=true | apres diff | 1 blocking_issue |
## Findings auto agreges
- `blocking_issues` (count: 2) :
- `backend_contracts` — "Plan backend sans reference aux contrats partages." (via validate_plan)
- `backend_session_expires_at` — "Session modifiee sans expiresAt visible dans le diff." (via validate_patch)
- `matched_docs` les plus utiles : `knowledge/backend/patterns/contracts.md`, `knowledge/backend/patterns/nestjs.md`
## Evaluation humaine
### Faux positifs
Aucun.
### Vrais positifs (regression evitee)
- **Regle** : `backend_contracts` — le plan ne reference aucun contract Zod partage (viole Contracts-First / No-DTO).
- **Regle** : `backend_session_expires_at` — la session est creee sans `expiresAt` (viole la regle "Sessions avec TTL").
### Override humain
- **Override applique ?** : non (story factice, pas de cloture reelle)
### Decision finale
- n/a — story de validation de chaine. Les 2 gates se sont declenches comme attendu sur un cas volontairement non conforme.
## Apprentissage
- **A capitaliser ?** : non (comportement attendu, deja documente dans le contrat MCP)
- **Observation chaine** : serveur MCP operationnel sur Mac (py3.10 venv), handshake 7 tools / 6 resources OK, gates Phase 2 discriminants (0 faux+ sur plan conforme teste en parallele). MCP declare dans Claude Code pour app-alexandrie et RL799_V2 (actif a la prochaine session ouverte dans ces projets).
---
<!-- Coller chaque nouveau releve au-dessus de cette ligne --> <!-- Coller chaque nouveau releve au-dessus de cette ligne -->
--- ---