1. Documents de référence
- Spécification v2 :
PD-103-specification.md (534 lignes, corrections K_doc/DEK, session upload, INV-103-29/30) - Tests v2 :
PD-103-tests.md (741 lignes, GIVEN/WHEN/THEN, multipart, 409) - Review P1 v2 (Claude) :
PD-103-review-step3-v2.md (16KB)
2. Corrections v1→v2 appliquées
| Écart v1 | Statut v2 |
| ECT-01 K_doc/DEK non défini | CORRIGÉ — §3bis, §5.4bis, INV-103-30 |
| ECT-02 Transmission DEK | CORRIGÉ — dek_wrapped_b64 dans modèle données |
| ECT-03 Session upload différé | CORRIGÉ — session = JWT auth, URL pré-signée renouvelée |
| DIV-01 Regex timestamp | CORRIGÉ — (?:\.\d{1,6})? + skew ±300s |
| DIV-02 Multipart non documenté | CORRIGÉ — §5.5bis flux multipart |
| DIV-03 UPLOADING→CANCELLED sans INV | CORRIGÉ — INV-103-29 |
| DIV-04 Diagramme séquence | PARTIELLEMENT — diagramme non mis à jour (voir MIN-01 v2) |
| DIV-05 INV-103-09 non testable | CORRIGÉ — mécanisme RSA-OAEP key wrapping |
| DIV-08 Tests INV sans GIVEN/WHEN/THEN | CORRIGÉ |
| DIV-09 Intégrité ciphertext S3 | PARTIELLEMENT (voir MIN v2) |
| DIV-10 Skew timestamp | CORRIGÉ — ±300s + 400 |
| DIV-11 Code 409 | CORRIGÉ |
3. Nouveaux écarts v2
BLOQUANTS (3)
| ID | Description |
| ECT-01-v2 | "payload canonique identique" (idempotence 200 vs 409) jamais défini — non implémentable |
| ECT-11-v2 | Échec unwrap DEK backend (corruption/rotation KEK) — aucun cas d'erreur |
| ECT-19-v2 | Q-103-07 (conservation locale post-TTL) classé Bloquant par tests mais non résolu en spec |
MAJEURS (9)
| ID | Description |
| ECT-07-v2 | SHA3-256 et RSA-OAEP-SHA256 non disponibles nativement en React Native/Expo |
| ECT-05-v2 | Effacement DEK mémoire impossible en JS (garbage collector) |
| ECT-06-v2 | Orphelins S3 (crash entre PUT S3 et POST backend) non couverts par réconciliation |
| ECT-08-v2 | Clearing conditionnel (SEAL_DELAYED) non testable — "cycle conforme" indéfini |
| ECT-02-v2 | "ReKey" dans INV-103-09 — terme fantôme, non défini |
| ECT-03-v2 | capture_id case-insensitive vs comparaison canonique — faux 409 |
| ECT-13-v2 | Effacement DEK mobile non testé |
| ECT-17-v2 | Captures UPLOAD_DEFERRED indéchiffrables après rotation KEK |
| ECT-09-v2 | Conditions de déclenchement clearing absentes |
MINEURS (10)
Diagrammes incomplets, tolérance skew configurable vs tests figés, sanitisation ocr_text, nonce CSPRNG non contractualisé, URL pré-signée sans protection MITM.
4. Scoring v2
Tous les bloquants v1 sont corrigés. 3 nouveaux bloquants apparaissent, plus fins. Amélioration significative sur completeness et testability.
| Critère | Score v1 | Score v2 | Delta |
| completeness | 5.0 | 6.5 | +1.5 |
| testability | 5.0 | 6.5 | +1.5 |
| clarity | 6.0 | 7.0 | +1.0 |
| traceability | 7.0 | 8.0 | +1.0 |
Moyenne v2 : (6.5 + 6.5 + 7.0 + 8.0) / 4 = 7.0 Moyenne v1 : 5.75 Delta : +1.25 (amélioration significative)