Aller au contenu

PD-44 — Rétrospective

1. Contexte

Champ Valeur
Story ID PD-44
Titre Lambda validation Object Lock WORM
Domaine storage
Projet infra
Date complétion 2026-02-17
Verdict ACCEPTÉ (GO 8.30/10)

2. Métriques

Métrique Valeur
Durée totale ~24h (2 jours)
Lambda Python 15 modules, 2,847 lignes
Tests unitaires 125 tests (82% coverage)
Tests intégration 18 scénarios
Terraform 6 fichiers, 879 lignes
Gate iterations Gate 3: 2, Gate 5: 2, Gate 8: 1

3. Learnings clés

  • KMS encryption obligatoire sur SNS : Pipeline Sonar échoue si kms_master_key_id omis sur topic SNS. Toujours ajouter kms_master_key_id = "alias/aws/sns".

  • Shadow mode Phase 1 — modèles locaux inadaptés : mixtral:8x22b (erreur CUDA), devstral-2 (score 6.75), llama3.3:70b (score 5.0) tous inférieurs à ChatGPT (9.17). Garder ChatGPT pour specs, modèles locaux pour code.

  • Clarifications contractuelles évitent itérations Gate 3 : Gate 3 RESERVE (7.05) → GO (8.0) après ajout Section 10 "Clarifications contractuelles" avec valeurs concrètes.

  • Structure module Terraform Lambda réutilisable : worm_validator/ avec alerts.tf, dashboard.tf, main.tf, schedule.tf, variables.tf, outputs.tf.

4. Patterns applicables

Nouveau pattern : Module Terraform Lambda validation

# Structure modulaire worm_validator/
module "worm_validator" {
  source = "./modules/worm_validator"

  # Lambda
  function_name    = "pv-worm-validator-${var.environment}"
  runtime          = "python3.11"
  handler          = "handler.lambda_handler"
  timeout          = 300
  memory_size      = 256

  # Schedule
  schedule_expression = "rate(1 hour)"

  # Alerting
  sns_topic_arn       = aws_sns_topic.alerts.arn
  alarm_threshold     = 1

  # Dashboard
  create_dashboard    = true
}

Nouveau pattern : Code contracts spec → code

# 7 contracts CC-01 à CC-07
contracts:
  - id: CC-01
    invariant: INV-44-01
    spec_section: "§3.1"
    implementation: "validators/policy_validator.py"
    test: "test_policy_validator.py::test_compliance_mode"

  - id: CC-02
    invariant: INV-44-02
    spec_section: "§3.2"
    implementation: "collectors/aws_collector.py"
    test: "test_aws_collector.py::test_object_lock_status"

5. Signal CLAUDE.md

Priorité haute : KMS obligatoire sur SNS Terraform.

### Terraform — SNS et KMS (2026-02-XX)

**OBLIGATOIRE** : Toujours chiffrer les topics SNS avec KMS.

```hcl
resource "aws_sns_topic" "alerts" {
  name              = "pv-alerts-${var.environment}"
  kms_master_key_id = "alias/aws/sns"  # OBLIGATOIRE
}

Pourquoi : SonarQube security hotspot si KMS absent. Pipeline bloqué.

Alternative : Clé KMS dédiée pour audit granulaire. ```

6. Conclusion

PD-44 a livré la Lambda WORM validator avec architecture modulaire (collectors/validators/normalizers), 125 tests couvrant 12 invariants, et module Terraform réutilisable. Le shadow mode a confirmé l'inadéquation des modèles locaux pour Phase 1 (spec). Les patterns code contracts et module Lambda validation sont réutilisables pour futures Lambda de validation (retention-validator, signature-validator).


Rétrospective générée 2026-02-19 (Étape 10 batch storage)