PD-103 — Dossier de conformité (Gate 5 — v1)¶
1. Documents de référence¶
- Spécification v3 :
PD-103-specification.md(2000 lignes, 35+ INV) - Tests v3 :
PD-103-tests.md(1641 lignes) - Plan :
PD-103-plan.md(359 lignes, 15 modules) - Code contracts :
code-contracts.yaml(15 modules, 35 INV mappés) - Review P1 (Claude) :
PD-103-review-step5-v1.md - Confrontation P2 (ChatGPT) :
PD-103-confrontation-step5-v1.md
2. Convergences confirmées¶
- Machine à états 8 états + gardes + terminaux : alignement Spec↔Tests↔Plan↔CC
- Pipeline crypto (SHA3-256, AES-256-GCM, RSA-OAEP, DEK wrapping, zéroïsation) : aligné
- Idempotence canonique (capture_id lowercase + fingerprint + 200/409) : aligné
- Reprise différée (JWT + URL fraîche + TTL + purge) : aligné
- Réconciliation (SEAL_DELAYED, clearing, GC orphelins S3) : aligné
- Erreurs unwrap (422/503) : aligné
3. Écarts identifiés¶
BLOQUANTS (0)¶
Aucun écart structurellement bloquant.
MAJEURS (9) — Review P1¶
| ID | Description | Résolution proposée |
|---|---|---|
| ECT-01 | Stack crypto : plan utilise @noble/hashes vs spec exige react-native-quick-crypto | Aligner plan sur §10.1 spec. @noble/hashes acceptable en fallback documenté. |
| ECT-02 | API presigned URL non contractualisée | Ajouter endpoint dans plan M9 ou documenter comme pré-requis existant |
| ECT-03 | Journal probatoire append-only vs capture_events (table mutable) | Ajouter table event_log append-only dans M13 |
| ECT-04 | SHA3-256 pur JS vs natif — risque perf P95 | Benchmark à inclure dans plan, fallback natif si > 3s |
| ECT-05 | M13 migration vs spec §5.10 "non applicable" | Corriger spec §5.10 : DDL applicable |
| ECT-06 | Scope capture non défini (quels fichiers React Native existants) | Audit codebase app requis en step 6a |
| ECT-07 | upload_object_key dans fingerprint canonique (héritage G3 ECT-01-v3) | Exclure du fingerprint |
| ECT-08 | Jest + ESM + react-native-quick-crypto compat | Documenter config Jest dans plan |
| ECT-09 | E2E SEALED→ANCHOR hors scope mais tests déclarent "testable" | Aligner posture : testable dans scope PD-103 |
DIVERGENCES Confrontation (5)¶
| ID | Description | Impact |
|---|---|---|
| DIV-01 | Spec §5.10 "DDL non applicable" vs Plan M13 migration | Périmètre livraison ambigu |
| DIV-02 | Tests "aucun bloquant" vs Plan "E2E STUB PD-55/56/41" | Posture gate ambiguë |
| DIV-03 | Spec §10.1 obligatoire vs Plan fallback @noble | Non-conformité stack |
| DIV-04 | Spec §10.2 "202/200/409/400/429" vs Tests/Plan ajoutent 422/503 | API non univoque |
| DIV-05 | Retries spec "0..5 défaut 3" vs Plan "max 3" | Bornes ambiguës |
MINEURS (6)¶
Diagramme hors scope, UPLOADED purge non visible, observabilité non détaillée, ordre waves non contractualisé, clearing 3 cycles sans timer, payload canonique moins précis dans CC que dans spec.
4. Scoring v1¶
| Critère | Score |
|---|---|
| completeness | 7.5 |
| feasibility | 7.5 |
| coherence | 7.0 |
| traceability | 8.5 |
Justification :
- completeness 7.5 : 15 modules couvrent 35 INV. Bons mappings INV→mécanismes, CA→mécanismes, TC→observables. Gaps : API presigned URL, journal append-only.
- feasibility 7.5 : Architecture solide, modules réutilisables existants identifiés. Risques crypto/perf identifiés mais mitigations à renforcer (benchmark, compat ESM/Jest).
- coherence 7.0 : 5 divergences Spec↔Plan (DDL, stack crypto, API codes, retries). Correction nécessaire mais pas de refonte.
- traceability 8.5 : Matrice complète INV→modules, CA→modules, TC→observables. Stubs tracés (PD-55/56/41).
Moyenne v1 : (7.5 + 7.5 + 7.0 + 8.5) / 4 = 7.625
5. Avis auditeur¶
Le plan est architecturalement solide avec 15 modules bien découpés, une bonne réutilisation du code existant et une traçabilité complète des invariants. Les 9 écarts MAJEURS sont des précisions/alignements, pas des remises en cause architecturales.
Les corrections prioritaires : 1. Aligner spec §5.10 (DDL applicable) et §10.2 (ajouter 422/503 aux codes API) 2. Ajouter journal probatoire append-only dans le plan M13 3. Documenter la stratégie crypto natif vs pur JS avec benchmark 4. Exclure upload_object_key du fingerprint canonique
Verdict recommandé : RESERVE — corrections localisées requises avant progression.