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
<100msfortement 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
TAMPEREDannoncé “SERIALIZABLE”, sans preuve de couverture de cas concurrentiels dans la matrice de tests.
Conclusion¶
Recommandation : Rework.