Aller au contenu

PD-46 — Confrontation Gate 3

Date : 2026-02-11 PMO : Claude Opus 4.5 (orchestrateur)


Confrontation des écarts

ECT-01 : Ambiguïté modèle d'authentification

Statut: INFIRMÉ
Gravité ajustée: N/A
Justification: La spec section 2 définit explicitement :
- "JWT ProbatioVault pour iOS/PWA"
- "OAuth 2.0 / OIDC pour l'API B2B"
La section 3 (Définitions) détaille chaque terme. Les flux nominaux (section 5) confirment l'utilisation de JWT pour Flux 1-2 et OIDC pour Flux 3.
Cette définition est suffisamment précise pour l'implémentation.

ECT-02 : Zero-Knowledge partiellement testable

Statut: PARTIELLEMENT CONFIRMÉ
Gravité ajustée: Mineur
Justification: La matrice indique "Partiel" pour INV-46-06, ce qui est correct.
CEPENDANT : Le test TC-ZK-01 vérifie que "le backend ne proxy pas le contenu" et que "le client télécharge directement depuis S3".
Ces observables sont suffisants pour valider le Zero-Knowledge au niveau architectural.
Le test complet (vérification du contenu déchiffré côté client uniquement) nécessiterait un environnement E2E avec client réel, ce qui est hors scope des tests contractuels.
Gravité réduite de Majeur à Mineur car testable indirectement.

ECT-03 : Test CA-46-03 non explicitement couvert

Statut: INFIRMÉ
Gravité ajustée: N/A
Justification: Vérification de la matrice de couverture :
- INV-46-02 est lié à CA-46-03, CA-46-04 via TC-INV-02, TC-REV-01
- Le test TC-ERR-02 couvre explicitement le cas "utilisateur non owner et pas de partage actif → HTTP 403"
- Le test TC-ERR-03 couvre "partage révoqué → HTTP 403"
CA-46-03 est donc couvert par TC-ERR-02 + TC-ERR-03. L'écart est une erreur de lecture de la matrice.

ECT-04 : Questions non résolues (Q-46-03, Q-46-04)

Statut: PARTIELLEMENT CONFIRMÉ
Gravité ajustée: Mineur
Justification: Les questions en section 10 sont des "Points à clarifier", pas des lacunes bloquantes :
- Q-46-03 (Glacier) : Explicitement hors périmètre dans la section 2 (Exclu)
- Q-46-04 (OVH vs AWS) : Configuration, pas spécification fonctionnelle
Ces points peuvent être résolus à l'étape 4 (plan d'implémentation) sans impact sur la spec.
Gravité réduite de Majeur à Mineur.

ECT-05 : TTL configurable par environnement non clarifié

Statut: INFIRMÉ
Gravité ajustée: N/A
Justification: La spec définit clairement "TTL 5 minutes" (section 4, INV-46-01 et section 5 flux nominaux).
La question Q-46-02 porte sur la flexibilité des tests, pas sur un risque de sécurité.
Le TTL de 5 minutes est un invariant contractuel. La configurabilité par environnement est une décision d'implémentation qui ne change pas la valeur contractuelle (5 min en production).

ECT-06 : Contournement Zero-Knowledge potentiel

Statut: PARTIELLEMENT CONFIRMÉ
Gravité ajustée: Majeur (réduit de Bloquant)
Justification: INV-46-06 est explicite : "Le contenu déchiffré n'est jamais exposé côté serveur".
Le flux nominal confirme que le client télécharge directement depuis S3 (pas de proxy backend).
CEPENDANT : L'invariant pourrait être renforcé avec un observable explicite :
"Le backend NE DOIT PAS accéder au bucket S3 en lecture pour le compte du client".
Ce renforcement peut être ajouté à la spec sans changer la sémantique.
Gravité réduite de Bloquant à Majeur car l'invariant est clair sur l'intention.

Synthèse de la confrontation

Écart Statut Gravité initiale Gravité ajustée
ECT-01 INFIRMÉ Majeur N/A
ECT-02 PARTIELLEMENT CONFIRMÉ Majeur Mineur
ECT-03 INFIRMÉ Majeur N/A
ECT-04 PARTIELLEMENT CONFIRMÉ Majeur Mineur
ECT-05 INFIRMÉ Majeur N/A
ECT-06 PARTIELLEMENT CONFIRMÉ Bloquant Majeur

Résultat après confrontation

  • Bloquants : 0
  • Majeurs : 1 (ECT-06 - renforcement observable Zero-Knowledge)
  • Mineurs : 2 (ECT-02, ECT-04)
  • Infirmés : 3

Recommandation PMO

RESERVE - La spec est globalement conforme mais nécessite un ajustement mineur sur INV-46-06 pour renforcer l'observable Zero-Knowledge.

Proposition de correction (non appliquée) :

INV-46-06 (actuel) : "Aucun téléchargement ne doit permettre de contourner le modèle Zero-Knowledge. Le contenu déchiffré n'est jamais exposé côté serveur." INV-46-06 (renforcé) : "Aucun téléchargement ne doit permettre de contourner le modèle Zero-Knowledge. Le contenu déchiffré n'est jamais exposé côté serveur. Le backend ne lit pas le contenu du fichier ; il génère uniquement une URL de redirection vers S3."