PD-22 — Rétrospective¶
1. Contexte¶
| Champ | Valeur |
|---|---|
| Story ID | PD-22 |
| Titre | ConfigModule NestJS |
| Domaine | backend-core |
| Projet | backend |
| Date complétion | 2025-12-29 |
| Verdict | ACCEPTÉ |
2. Métriques¶
| Métrique | Valeur |
|---|---|
| Écarts identifiés | 6 (E-01 à E-06) |
| Codes d'erreur | 8 (ConfigErrorCode enum) |
| Schéma Joi | ~350 lignes |
| Sources de config | 4 (defaults → .env → process.env → Vault) |
3. Learnings clés¶
-
Mocks masquent bugs d'intégration : L'écart E-02 (signature loadEnvFile) n'a été détecté qu'en revue d'acceptabilité car les tests unitaires mockaient la fonction.
-
Périmètre code vs infrastructure : Les exigences de rétention logs (E-06) relèvent de l'exploitation, pas du code applicatif. Cette distinction doit être explicite dans la spec.
-
Cohérence interne spec : Le namespace CLOUDHSM_ était autorisé (§10.1) mais aucune variable n'était listée (§10.2). Ce type d'incohérence génère des faux positifs.
-
Fail-fast explicite et testé : L'écart E-04 montrait que
readSecretsretournait{}silencieusement. Le comportement fail-fast doit être vérifié par des tests dédiés.
4. Patterns applicables¶
Pattern existant : Fail-fast config¶
Cohérent avec PD-13, PD-14, PD-19 : la configuration critique doit échouer au démarrage si invalide.
Nouveau pattern : Masquage secrets configurable¶
const SECRET_KEYS = ['DATABASE_PASSWORD', 'VAULT_TOKEN', ...];
const SECRET_PLACEHOLDER = '***REDACTED***';
function maskSecrets(config: Record<string, any>): Record<string, any> {
// Masquer récursivement les valeurs des clés sensibles
}
Nouveau pattern : Immutabilité config¶
Object.freeze() récursif sur la configuration pour éviter les mutations accidentelles.
5. Signal CLAUDE.md¶
Priorité haute : Documenter le pattern fail-fast Vault.
### Fail-fast Vault obligatoire (2026-02-XX)
Si `shouldUseVault=true` (ou absence de flag en prod) :
1. `readSecrets()` DOIT throw si Vault indisponible
2. Pas de fallback silencieux vers `{}`
3. Tests dédiés vérifiant le comportement fail-fast
L'écart E-04 de PD-22 montre que les fallbacks silencieux masquent les erreurs jusqu'en production.
6. Conclusion¶
PD-22 a livré un module de configuration robuste avec validation Joi stricte et masquage des secrets. Les 6 écarts identifiés soulignent l'importance des tests d'intégration (pas uniquement des mocks) et de la cohérence interne des specs. Le pattern fail-fast Vault est critique pour éviter les erreurs silencieuses en production.
Rétrospective générée 2026-02-19 (Étape 10 batch backend-core)