Aller au contenu

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.