Aller au contenu

PD-31 — Rétrospective

1. Contexte

Champ Valeur
Story ID PD-31
Titre Audit log des authentifications
Domaine auth-identity
Projet backend
Date complétion 2026-02-16
Verdict GO

2. Métriques

Métrique Valeur
Durée totale ~27 heures
Gates traversées 3/3 (GO du premier coup)
Score moyen Gate 8 8.18/10
Tests créés ~100
Coverage global 80%+ branches
Invariants 8/8

3. Learnings clés

  • Coverage marge 1-2% : Le coverage était à 79.93%, juste sous le seuil. Viser 82% pour avoir une marge de sécurité.

  • Sonar local avant push : 16 code smells + 3 security hotspots ont bloqué le pipeline. Lancer npm run sonar:check localement.

  • Batcher les commits : 3 pipelines lancés en parallèle ont saturé les runners (OOM). Toujours batcher les corrections avant push.

  • RFC 5737 TEST-NET-3 : Pour les exemples Swagger, utiliser 203.0.113.1 (RFC 5737 TEST-NET-3) au lieu d'IPs privées comme 192.168.1.100.

4. Patterns applicables

Pattern existant : Hash chain avec advisory locks

Pour éviter les race conditions sur le séquençage des logs :

await this.dataSource.query(`SELECT pg_advisory_xact_lock($1)`, [HASH_CHAIN_LOCK_ID]);
// Insérer le log avec hash du précédent

Nouveau pattern : Risk scoring fail-open

Le risk scoring ne doit pas bloquer l'authentification :

try {
  const score = await this.riskScoreService.calculate(context);
  return { score, anomalies };
} catch (error) {
  return { score: DEFAULT_SCORE, anomalies: [], error: true };
}

5. Signal CLAUDE.md

Priorité haute : Documenter les seuils de coverage.

### Coverage — Marge de sécurité obligatoire (2026-02-XX)

Le seuil CI est 80%. En pratique :
- **Viser 82%** pour absorber les variations entre runs
- **Vérifier avant push** avec `npm run test:cov`
- **Ajouter des tests hors scope** si nécessaire (autres modules)

Le coverage global inclut tout le codebase, pas seulement la story en cours.

6. Conclusion

PD-31 a livré un système d'audit log robuste avec hash chain et détection d'anomalies. Les 3 gates ont été passées du premier coup grâce à une spécification complète et 43 code contracts bien définis. Les difficultés (coverage 79.93%, Sonar) sont documentées comme learnings pour les futures stories.


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