Aller au contenu

PD-276 — Plan Review (Gate 5)

Synthèse

  • Scores : feasibility 6/10 | coverage 6/10 | risk_mitigation 5/10 | coherence 4/10
  • Points identifiés : 3 BLOQUANTS, 6 MAJEURS, 2 MINEURS

Écarts identifiés

# Criticité Type Référence Description Impact
1 BLOQUANT Contradiction Spec INV-276-09, CA-276-03, T-15 vs Plan C1/C7/TC-INV-04 La spec contractualise service_method(argon2, validateParams) comme fait consommé, alors que le plan affirme que checks 10/22 exigent deriveKey et construit la conformité dessus. Conformité formelle non déterministe (risque de 24/24 non atteignable selon oracle réellement appliqué).
2 BLOQUANT Contradiction Plan C3 vs F3 vs Mapping INV-276-06 Deux contextes HKDF différents apparaissent : ProbatioVault::MetadataBinding::v1 et PV::MB::v1. Tags non reproductibles selon chemin exécuté, faux positifs tampering, rupture d’interopérabilité.
3 BLOQUANT Incohérence Spec INV-276-11, T-14 vs Plan C4/C5 Le plan impose des transitions d’état irrévocables (BOUND/TAMPERED) mais ne définit pas de support d’état persistant explicite; C4 n’ajoute que metadata_tag. Terminalité et interdictions de transition non auditables ni robustes cross-process.
4 MAJEUR Ambiguïté Plan C3 (description computeTag + invariant concaténation) Le message HMAC est décrit une fois sans séparateur (algorithm||version||...) et une autre avec séparateurs NUL. Risque de divergence de calcul entre composants/tests et rejet injustifié en production.
5 MAJEUR Incohérence Plan C5 (unwrapEnvelope), Code contracts C5 (signature inchangée) Le plan annonce un flag readOnly en sortie LEGACY, tout en interdisant de changer la signature des méthodes existantes. Politique CA-276-13 potentiellement non implémentable telle que décrite.
6 MAJEUR Ambiguïté Flux F1 + note F1 Le diagramme montre POST /auth/register passant par Argon2Controller, puis la note dit que ce controller n’est pas utilisé pour la validation métier. Ambiguïté d’architecture d’appel, couverture de tests et traçabilité incomplètes.
7 MAJEUR Risque Migrations C6 + section 9.2 Migration phase 2 dépend d’un backfill applicatif progressif, mais le critère d’achèvement opérationnel (zéro LEGACY) n’est pas contractualisé dans un garde-fou exécutable. Risque de passage prématuré en NOT NULL et incident runtime.
8 MAJEUR Incohérence Plan composant C1..C8 vs Code Contracts C7 Les code-contracts exigent l’enregistrement CryptoModule (providers/exports/controllers), mais ce composant n’est pas couvert dans le plan d’implémentation. Risque d’artefacts présents mais non injectables/non exposés, donc CA-276-02/06 fragiles.
9 MAJEUR Ambiguïté Section erreurs E-05 METADATA_TAG_MISSING est mappé HTTP 500 (erreur interne) alors que la spec le pose comme non-conformité de données contractuelle en phase finale. Sémantique API incertaine, impacts observabilité et contrats clients.
10 MINEUR Ambiguïté Plan C7 / Hypothèse H-276-03 / Spec Q-276-05 Le plan fixe un comportement précis d’extract-facts.py alors que la spec maintient le nom exact du script CI à clarifier. Reproductibilité CI/doc partiellement instable.
11 MINEUR Risque Section 7.2 journalisation Logs incluent userId/envelopeId sans qualification de politique de minimisation ou corrélation sécurisée. Surface de méta-données sensible accrue en cas de fuite de logs.

Points de vigilance

  • Risque opérationnel sur SLA <100ms fortement dépendant de latence DB, alors que la mesure est cadrée applicativement mais pas par budget de latence par segment.
  • Risque de divergence entre observables “probatoires” et preuves réellement collectées (scans mémoire/artefacts décrits, mais protocole d’échantillonnage non borné).
  • Risque de faux sentiment de conformité lié à l’alias deriveKey (sémantique métier vs sémantique Prolog) si la gouvernance ne fige pas explicitement la source de vérité.
  • Risque de concurrence lors des transitions vers TAMPERED annoncé “SERIALIZABLE”, sans preuve de couverture de cas concurrentiels dans la matrice de tests.

Conclusion

Recommandation : Rework.