Aller au contenu

Retour d'Expérience (REX) — PD-44

Story: PD-44 — Implémenter validation Object Lock WORM Date de clôture: 2026-02-17 Durée totale: ~24h (2 jours)


1. Résumé de l'implémentation

Livrables produits

Type Fichiers Métriques
Lambda Python 15 modules 2,847 lignes
Tests unitaires 10 fichiers 125 tests
Tests intégration 1 fichier 18 scénarios
Terraform 6 fichiers 879 lignes
Documentation 26 fichiers ~3,500 lignes

Architecture implémentée

lambda/worm-validator/
├── handler.py           # Point d'entrée Lambda
├── orchestrator.py      # Orchestration validation
├── collectors/          # Collecte métadonnées (AWS, OVH)
├── validators/          # Validation politiques WORM
├── normalizers/         # Normalisation données
├── proof/               # Génération preuves YAML
├── alerts/              # Publication SNS
├── metrics/             # CloudWatch metrics
├── security/            # Sanitization, validation
└── tests/               # 125 tests (82% coverage)

2. Ce qui a bien fonctionné

Workflow de gouvernance

  • Injection des learnings (étape 0) : Les 4 learnings storage (PD-⅘/6/43) ont permis d'anticiper les patterns récurrents
  • Code contracts (étape 4) : 7 contracts CC-01 à CC-07 ont garanti la cohérence spec → code
  • Acceptabilité multi-phase (étape 7) : 3 itérations ont permis de converger vers 82% coverage

Points techniques positifs

Aspect Détail
Architecture modulaire Séparation collectors/validators/normalizers facilitée par les code contracts
Tests exhaustifs 125 tests couvrant les 12 invariants, 24 critères d'acceptation
Sécurité Validation ARN, sanitization JSON, patterns anti-injection
Observabilité 8 métriques CloudWatch, dashboard prédéfini, alertes SNS

Shadow mode évaluation LLM

  • devstral-2 testé comme fallback de mixtral:8x22b (erreur CUDA)
  • Évaluation Phase 1 : score 6.75 vs 9.17 (ChatGPT) → delta -2.42
  • Conclusion : devstral-2 inadapté pour spécifications (trop générique)

3. Ce qui pourrait être amélioré

Workflow

Point Impact Recommandation
Gate 3 faux positifs 3 FP sur 9 écarts identifiés Affiner les critères du juge LLM
Itérations Gate 5 2 itérations (RESERVE → GO) Enrichir le template plan avec résilience/traçabilité
Correction Sonar Pipeline failed 1× pour security hotspot Ajouter check KMS au template Terraform SNS

Technique

Point Impact Action future
Collector OVH non testé ECT-06 mineur Créer mocks OVH pour tests intégration
Circuit breaker non persistant ECT-04 mineur Implémenter persistence DynamoDB (PD-45)
TC-NR/TC-NEG implicites ECT-07/08 mineurs Nommer explicitement les tests négatifs

4. Learnings capturés

L1: KMS encryption obligatoire sur SNS

Contexte: Pipeline Sonar a échoué car kms_master_key_id était omis sur le topic SNS.

Pattern: Toujours ajouter kms_master_key_id = "alias/aws/sns" pour les topics SNS en Terraform.

Tags: #terraform, #sns, #kms, #security-hotspot

L2: Shadow mode Phase 1 — modèles locaux inadaptés

Contexte: mixtral:8x22b (erreur CUDA), devstral-2 (score 6.75), llama3.3:70b (score 5.0) tous inférieurs à ChatGPT (9.17).

Pattern: Les modèles locaux produisent des specs trop synthétiques. Garder ChatGPT pour Phase 1, modèles locaux pour Phase 6 (code).

Tags: #shadow-mode, #llm-evaluation, #phase-1

L3: Clarifications contractuelles évitent les itérations Gate 3

Contexte: Gate 3 RESERVE (7.05) → Gate 3 GO (8.0) après ajout de 6 clarifications contractuelles (Section 10 spec).

Pattern: Toujours inclure une Section 10 "Clarifications contractuelles" avec valeurs concrètes (durées, intervalles, seuils).

Tags: #spec, #gate-3, #clarifications

L4: Terraform modules — structure worm_validator reproductible

Contexte: Module terraform worm_validator/ avec alerts.tf, dashboard.tf, main.tf, schedule.tf, variables.tf, outputs.tf.

Pattern: Structure modulaire réutilisable pour futures Lambda de validation (ex: retention-validator, signature-validator).

Tags: #terraform, #module, #lambda, #pattern


5. Métriques finales

Métrique Valeur
Gate 3 iterations 2 (RESERVE → GO)
Gate 5 iterations 2 (RESERVE → GO)
Gate 8 iterations 1 (GO direct)
Score Gate 3 final 8.0/10
Score Gate 5 final 8.5/10
Score Gate 8 final 8.30/10
Tests coverage 82%
Écarts résiduels 4 mineurs

6. Recommandations pour futures stories

  1. Spec Phase 1: Toujours inclure Section 10 "Clarifications contractuelles" dès la première version
  2. Plan Phase 4: Inclure sections résilience (circuit breaker, retry) et traçabilité (métriques) dès le départ
  3. Terraform SNS: Template avec kms_master_key_id par défaut
  4. Shadow mode: Tester les modèles locaux uniquement sur Phase 6 (code), pas Phase 1 (spec)
  5. Tests: Nommer explicitement les TC-NR et TC-NEG dans les descriptions de test

7. Prochaines actions suggérées

Story Description Priorité
PD-45 Circuit breaker persistant (DynamoDB) Medium
PD-46 Intégration OVH Object Lock (mocks + tests) Low
PD-47 Template Terraform Lambda validation Medium

Statut: Story PD-44 DONE Gate 8: GO (8.30/10) Pipeline DEV: SUCCESS (#2330867842)