Aller au contenu

Décomposition — PD-44 Implémentation

Story : PD-44 — Implémenter validation Object Lock WORM Date : 2026-02-16 Phase : 6a

Vue d'ensemble

Métrique Valeur
Total tâches 17
Agents Claude 12 tâches
Agents ChatGPT 0 tâches
Estimation 16h

Tâches détaillées

Phase 1 : Infrastructure Terraform (T01-T03)

T01 — Module Terraform worm_validator

  • Agent : agent-sre
  • Contract : CC-44-07
  • Fichiers :
    terraform/modules/worm_validator/
    ├── main.tf           # Lambda, IAM roles
    ├── schedule.tf       # EventBridge
    ├── alerts.tf         # SNS Topic
    ├── dashboard.tf      # CloudWatch Dashboard
    ├── variables.tf      # Configuration
    └── outputs.tf        # Outputs
    
  • Dépendances : Aucune
  • Critères de succès :
  • terraform validate passe
  • IAM policy suit least privilege
  • Lambda runtime = python3.11

T02 — Lambda Python de validation (squelette)

  • Agent : agent-developer
  • Contract : CC-44-01 à CC-44-06
  • Fichiers :
    lambda/worm-validator/
    ├── handler.py          # Point d'entrée Lambda
    ├── requirements.txt    # boto3, hashlib
    ├── collectors/
    │   ├── __init__.py
    │   ├── bucket.py       # CC-44-01
    │   └── objects.py      # CC-44-03
    ├── validators/
    │   ├── __init__.py
    │   ├── retention.py    # CC-44-02
    │   └── replication.py  # CC-44-06
    ├── proof/
    │   ├── __init__.py
    │   ├── generator.py    # CC-44-04
    │   └── integrity.py    # SHA3-256
    ├── alerts/
    │   ├── __init__.py
    │   └── manager.py      # CC-44-05
    └── tests/
        └── __init__.py
    
  • Dépendances : T01
  • Critères de succès :
  • Structure de projet créée
  • handler.py importable
  • requirements.txt valide

T03 — EventBridge schedule

  • Agent : agent-sre
  • Contract : CC-44-07
  • Fichiers : terraform/modules/worm_validator/schedule.tf
  • Dépendances : T01
  • Critères de succès :
  • Rule rate(1 hour)
  • Target = Lambda ARN
  • Retry policy configuré

Phase 2 : Logique de validation (T04-T07)

T04 — BucketCollector

  • Agent : agent-developer
  • Contract : CC-44-01
  • Fichiers : lambda/worm-validator/collectors/bucket.py
  • Interface :
    class BucketCollector:
        def collect_all(self) -> List[BucketState]: ...
        def get_bucket_state(self, bucket_name: str, provider: str) -> BucketState: ...
    
  • Dépendances : T02
  • Invariants : INV-44-01, INV-44-11
  • Critères de succès :
  • Collecte Object Lock status
  • Collecte mode (COMPLIANCE/GOVERNANCE)
  • Collecte retention days
  • Classification via tag

T05 — RetentionValidator

  • Agent : agent-developer
  • Contract : CC-44-02
  • Fichiers : lambda/worm-validator/validators/retention.py
  • Interface :
    class RetentionValidator:
        def validate_bucket(self, state: BucketState, policy: BucketPolicy) -> ValidationResult: ...
        def detect_drift(self, current: BucketState, previous: BucketState) -> Optional[DriftEvent]: ...
    
  • Dépendances : T04
  • Invariants : INV-44-02, INV-44-03, INV-44-04, INV-44-07
  • Critères de succès :
  • Compare mode observé vs requis
  • Compare rétention vs minimum
  • Détecte dégradation COMPLIANCE→GOVERNANCE
  • Génère Gap avec sévérité

T06 — ObjectSampler

  • Agent : agent-developer
  • Contract : CC-44-03
  • Fichiers : lambda/worm-validator/collectors/objects.py
  • Interface :
    class ObjectSampler:
        def sample_recent(self, bucket: str, since: datetime) -> List[ObjectState]: ...
        def sample_random(self, bucket: str, percentage: float = 0.05) -> List[ObjectState]: ...
    
  • Dépendances : T04
  • Invariants : INV-44-05, INV-44-10
  • Critères de succès :
  • 100% objets récents (24h)
  • 5% échantillon existants
  • Lecture seule (pas d'altération)
  • Gère Deep Archive (skip)

T07 — PolicyValidator (orchestration)

  • Agent : agent-developer
  • Contract : CC-44-02
  • Fichiers : lambda/worm-validator/validators/policy.py
  • Dépendances : T04, T05, T06
  • Critères de succès :
  • Orchestre collectors + validators
  • Agrège résultats par bucket
  • Liste tous les gaps

Phase 3 : Preuves et audit (T08-T10)

T08 — ProofGenerator

  • Agent : agent-developer
  • Contract : CC-44-04
  • Fichiers : lambda/worm-validator/proof/generator.py
  • Interface :
    class ProofGenerator:
        def generate(self, cycle_id: str, results: List[ValidationResult]) -> WormProof: ...
        def correlate(self, proof: WormProof, previous_proof_id: Optional[str]) -> WormProof: ...
    
  • Dépendances : T07
  • Invariants : INV-44-09
  • Critères de succès :
  • Format YAML conforme au schéma
  • UUID v7 pour cycle_id
  • Timestamp ISO8601 + epoch

T09 — IntegrityCalculator

  • Agent : agent-developer
  • Contract : CC-44-04
  • Fichiers : lambda/worm-validator/proof/integrity.py
  • Interface :
    def compute_hash(proof: WormProof) -> str:
        """SHA3-256 hex lowercase"""
    
  • Dépendances : T08
  • Critères de succès :
  • SHA3-256 (pas SHA-256)
  • Canonicalisation avant hash
  • Format hex lowercase

T10 — ProofStore

  • Agent : agent-developer
  • Contract : CC-44-04
  • Fichiers : lambda/worm-validator/storage/proof_store.py
  • Interface :
    class ProofStore:
        def save(self, proof: WormProof) -> str: ...  # Returns S3 key
        def get_previous(self) -> Optional[WormProof]: ...
    
  • Dépendances : T08, T09
  • Critères de succès :
  • Upload S3 avec hash dans metadata
  • Récupère dernière preuve pour chaînage

Phase 4 : Alerting et monitoring (T11-T13)

T11 — SNS Topic + alertes

  • Agent : agent-sre
  • Contract : CC-44-07
  • Fichiers : terraform/modules/worm_validator/alerts.tf
  • Dépendances : T01
  • Critères de succès :
  • Topic SNS créé
  • Subscription email configurée
  • Policy pour Lambda

T12 — CloudWatch Dashboard

  • Agent : agent-sre
  • Contract : CC-44-07
  • Fichiers : terraform/modules/worm_validator/dashboard.tf
  • Dépendances : T01
  • Critères de succès :
  • Widgets : invocations, errors, duration
  • Widgets : buckets compliant/non-compliant
  • Widgets : gaps par type

T13 — AlertManager

  • Agent : agent-developer
  • Contract : CC-44-05
  • Fichiers : lambda/worm-validator/alerts/manager.py
  • Interface :
    class AlertManager:
        def send_critical(self, gap: Gap, bucket: str) -> None: ...
        def send_summary(self, proof: WormProof) -> None: ...
    
  • Dépendances : T11
  • Invariants : INV-44-08
  • Critères de succès :
  • Alerte SNS < 5 minutes
  • Message structuré JSON
  • Résumé fin de cycle

Phase 5 : Multi-cloud OVH (T14-T15)

T14 — OVH Collector

  • Agent : agent-developer
  • Contract : CC-44-01
  • Fichiers : lambda/worm-validator/collectors/ovh.py
  • Dépendances : T04
  • Critères de succès :
  • Utilise API S3-compatible OVH
  • Même interface que BucketCollector
  • Gère différences OVH/AWS

T15 — Normalizer multi-cloud

  • Agent : agent-developer
  • Contract : CC-44-01
  • Fichiers : lambda/worm-validator/normalizers/provider.py
  • Dépendances : T14
  • Critères de succès :
  • Interface commune BucketState
  • Mapping mode OVH → COMPLIANCE/GOVERNANCE
  • Grille de contrôle unique

Phase 6 : Tests (T16-T17)

T16 — Tests unitaires Lambda

  • Agent : agent-qa-unit-integration
  • Contract : CC-44-01 à CC-44-06
  • Fichiers : lambda/worm-validator/tests/unit/
  • Dépendances : T04-T15
  • Critères de succès :
  • Coverage >= 80%
  • Mocks boto3
  • Tests par contract

T17 — Tests intégration LocalStack

  • Agent : agent-qa-unit-integration
  • Contract : CC-44-07
  • Fichiers : lambda/worm-validator/tests/integration/
  • Dépendances : T01-T15
  • Critères de succès :
  • LocalStack S3 + SNS
  • Scénario nominal
  • Scénario écart critique

Ordre d'exécution

Parallel Group 1:
  T01 (Terraform module)

Parallel Group 2 (après T01):
  T02 (Lambda squelette)
  T03 (EventBridge)
  T11 (SNS)
  T12 (Dashboard)

Parallel Group 3 (après T02):
  T04 (BucketCollector)

Parallel Group 4 (après T04):
  T05 (RetentionValidator)
  T06 (ObjectSampler)
  T14 (OVH Collector)

Parallel Group 5 (après T05, T06):
  T07 (PolicyValidator)
  T15 (Normalizer)

Parallel Group 6 (après T07):
  T08 (ProofGenerator)
  T13 (AlertManager)

Parallel Group 7 (après T08):
  T09 (IntegrityCalculator)

Parallel Group 8 (après T09):
  T10 (ProofStore)

Parallel Group 9 (après tous):
  T16 (Tests unit)
  T17 (Tests integration)

Prochaine étape

Phase 6b : Exécution des tâches T01 à T17 par les agents spécialisés.