Aller au contenu

PD-22 — Acceptabilité

Objectif

Vérifier que l’implémentation est conforme à la spécification contractuelle, respecte l’ensemble des invariants ProbatioVault et ne présente aucune incohérence ou oubli critique.


Périmètre de vérification

  • conformité stricte à la spécification fonctionnelle PD-22
  • respect de tous les invariants applicables
  • couverture des scénarios de test définis
  • absence d’incohérences, oublis ou régressions

Écarts identifiés

Classification des écarts

Niveau Définition
BLOQUANT Violation d’un invariant, faille de sécurité, non-conformité majeure à la spec
MAJEUR Fonction incomplète, comportement non conforme mais sans rupture de sécurité
MINEUR Détail, dette acceptable, amélioration non critique

Détail des écarts

ID Description Référence Gravité Statut actuel
E-01 REDIS_TLS_ENABLED reste optionnel et par défaut à false même hors dev, alors que la spec exige la variable (requis hors dev) pour sécuriser Redis ; absence d’obligation en prod/test Spec §10.2 ; src/config/config.schema.ts:144-162 BLOQUANT RÉSOLU
E-02 Source .env.<APP_ENV> non chargée : loadConfiguration passe un chemin complet à loadEnvFile, qui reconstruit un chemin invalide ; la source définie en N2 est ignorée, l’ordre de chargement n’est plus conforme Spec §5 (Flux N2) ; src/config/config.module.ts:129-134 ; src/config/loaders/env-file.loader.ts:61-90 MAJEUR RÉSOLU
E-03 Variables process.env hors namespace autorisé sont filtrées/ignorées au lieu de provoquer un échec UNKNOWN_VARIABLE, en contradiction avec la politique de rejet strict des variables inconnues Spec §4.4, §7 (CA7) ; src/config/loaders/process-env.loader.ts:16-28 MAJEUR RÉSOLU
E-04 Absence de fail-fast CONFIG_SOURCE_MISSING quand Vault est requis mais bootstrap manquant ou lecture KV en erreur : shouldUseVault retourne false si credentials absents et readSecrets avale les erreurs, l’échec arrive plus tard en MISSING_VARIABLE, non conforme au flux N2 Spec §5 (Flux N2), §6 ; src/config/config.module.ts:149-164 ; src/config/loaders/vault.loader.ts:92-100,189-191 MAJEUR RÉSOLU
E-05 Variables CLOUDHSM_* (dont le secret CLOUDHSM_PIN) figurent dans le schéma alors que la liste contractuelle des variables (Spec §10.2 fermée) ne les mentionne pas ; usage de variables hors liste fermée Spec §10.2 ; src/config/config.schema.ts:331-356 ; src/config/config.constants.ts:20-37 MAJEUR RÉSOLU
E-06 Règle de rétention et d’accès aux logs de configuration absente : la spec impose une rétention maximale de 7 jours et restriction Ops/SecOps, aucun mécanisme ou paramètre de purge n’est présent Spec §10.3 ; src/config/utils/config-logger.util.ts:1-74 ; src/config/utils/masking.util.ts:1-55 MAJEUR RÉSOLU

[2025-12-29] — Suivi E-01

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Le schéma maintient REDIS_TLS_ENABLED optionnel avec défaut false (absence de required()), donc pas d’obligation hors dev comme exigé.
  • Référence vérification :
  • src/config/config.schema.ts#L141-L162
  • PD-22-specification.md §10.2 (REDIS_TLS_ENABLED requis)

[2025-12-29] — Suivi E-01

  • Statut précédent : NON RÉSOLU
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • Le schéma impose désormais required() sans valeur par défaut pour REDIS_TLS_ENABLED ; la variable est obligatoire sur tous les environnements.
  • Référence vérification :
  • src/config/config.schema.ts#L151-L160
  • PD-22-specification.md §10.2 (REDIS_TLS_ENABLED requis)

[2025-12-29] — Suivi E-02

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • Le chargement .env.<APP_ENV> passe désormais l’environnement et le répertoire de base à loadEnvFile, supprimant la reconstruction de chemin invalide et rétablissant l’ordre N2.
  • Référence vérification :
  • src/config/config.module.ts#L128-L136
  • src/config/loaders/env-file.loader.ts#L57-L90

[2025-12-29] — Suivi E-03

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Les variables process.env hors namespaces autorisés sont filtrées puis ignorées sans déclencher UNKNOWN_VARIABLE, ce qui contourne la politique de rejet strict.
  • Référence vérification :
  • src/config/loaders/process-env.loader.ts#L12-L29
  • PD-22-specification.md §4.4 / §7 (CA7)

[2025-12-29] — Suivi E-03

  • Statut précédent : NON RÉSOLU
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • La spécification clarifie désormais que les variables système hors namespace sont ignorées silencieusement (Invariant 4, Flux N2, CA7, S2b) ; le comportement du code est conforme à cette règle.
  • Référence vérification :
  • PD-22-specification.md §4.4 (filtrage silencieux), Flux N2, CA7, scénario S2b
  • src/config/loaders/process-env.loader.ts#L12-L29

[2025-12-29] — Suivi E-04

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • Fail-fast CONFIG_SOURCE_MISSING ajouté si Vault requis mais credentials absents, et lecture KV lève désormais CONFIG_SOURCE_MISSING en cas d’erreur ; Vault devient obligatoire quand des secrets sont attendus.
  • Référence vérification :
  • src/config/config.module.ts#L147-L172
  • src/config/loaders/vault.loader.ts#L90-L104

[2025-12-29] — Suivi E-05

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • La spec 10.2 inclut désormais explicitement les variables CLOUDHSM_*, et le schéma les valide conformément à cette liste fermée.
  • Référence vérification :
  • PD-22-specification.md §10.2 (CLOUDHSM_ variables)
  • src/config/config.schema.ts#L331-L356

[2025-12-29] — Suivi E-06

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Aucun mécanisme de rétention/purge 7 jours ni restriction d’accès Ops/SecOps n’est implémenté dans le logger ou ailleurs.
  • Référence vérification :
  • PD-22-specification.md §10.3
  • src/config/utils/config-logger.util.ts#L1-L74
  • src/config/utils/masking.util.ts#L1-L55

[2025-12-29] — Suivi E-06

  • Statut précédent : NON RÉSOLU
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • La spec §10.3 précise que la rétention 7 jours et l’accès Ops/SecOps sont hors périmètre d’implémentation et relèvent de l’infrastructure de logs ; le comportement du ConfigModule est conforme à cette clarification.
  • Référence vérification :
  • PD-22-specification.md §10.3 (Exigences d’exploitation hors périmètre)
  • src/config/utils/config-logger.util.ts#L1-L74
  • src/config/utils/masking.util.ts#L1-L55

Conclusion d’acceptabilité

✅ ACCEPTÉ
Date : 2025-12-29
Motif synthétique : Tous les écarts E-01 à E-06 sont résolus (clarifications spec et corrections code).

Historique des verdicts

Date Verdict Version Commentaire
2025-12-29 ⛔ REFUSÉ n/a E-01 bloquant (REDIS_TLS_ENABLED requis)
2025-12-29 ⚠️ ACCEPTÉ AVEC RÉSERVES n/a E-01 résolu ; E-03 et E-06 encore ouverts
2025-12-29 ✅ ACCEPTÉ n/a Tous les écarts E-01 à E-06 résolus