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."