PD-103 — Rapport de confrontation (Étape 5)¶
Ce rapport est produit par l'orchestrateur Claude avant chaque gate PMO.
Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.
1. Sources confrontées¶
- SPECIFICATION — PD-103-specification.md (v3).
- TESTS — PD-103-tests.md (v3).
- PLAN — PD-103-plan.md.
- CODE CONTRACTS — PD-103-code-contracts.yaml.
2. Convergences¶
- Alignement global sur la machine à états et les états terminaux (
INV-103-20..29,INV-103-38), avec couverture dans TESTS, implémentation prévue dans PLAN (M1/M6) et contractualisationCC-1. - Alignement sur le pipeline crypto et key exchange (
SHA3-256local,AES-256-GCM,dek_wrapped_b64,kek_id, zéroïsage, nonce CSPRNG) entre SPEC, TESTS, PLAN (M2/M11) et CODE CONTRACTS (CC-2,CC-11). - Alignement sur l’idempotence canonique (
capture_idlowercase + fingerprint déterministe +200/409) entre SPEC (INV-103-31/37), TESTS (TC-NOM-15,TC-INV-06,TC-ERR-13), PLAN (M10) et CODE CONTRACTS (CC-10). - Alignement sur la reprise différée (JWT valide + URL pré-signée fraîche + TTL + purge) entre SPEC, TESTS, PLAN (M6/M7) et CODE CONTRACTS (
CC-6,CC-7). - Alignement sur la réconciliation (
SEAL_DELAYED, clearing 3 cycles conformes, GC orphelins S3) entre SPEC (INV-103-33/35/36), TESTS (TC-INV-08/11/14), PLAN (M12) et CODE CONTRACTS (CC-12,CC-15). - Alignement opérationnel sur la distinction
422 UNWRAP_DEK_FAILEDvs503 KEY_SERVICE_UNAVAILABLEdans SPEC normatif, TESTS, PLAN et CODE CONTRACTS.
3. Divergences¶
⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
-
DIV-01 : Stratégie DDL contradictoire. Source A (SPECIFICATION §5.10) : “Stratégie de migration DDL : non applicable à cette story”. Source B (PLAN §1.2, M13) : migration
CreateCaptureEventsprévue avec nouvelles colonnes. Source C (CODE CONTRACTSCC-13) : migration explicitement contractualisée. Impact : périmètre de livraison non univoque (story sans DDL vs avec DDL). -
DIV-02 : Statut de testabilité gate contradictoire sur
SEALED/ANCHOR_CONFIRMED. Source A (TESTS §10) : “Testable contractuellement (aucun bloquant ouvert)”. Source B (PLAN §12 + HT-103-03) : E2EUPLOADED -> SEALED -> ANCHOR_CONFIRMEDhors scope/STUB, dépendances PD-56/PD-55/PD-41 non livrées. Source C (SPECIFICATION H-103-04) : pipeline supposé opérationnel. Impact : posture gate ambiguë (prêt sans bloquant vs dépendances non livrées). -
DIV-03 : Contrat de stack crypto mobile contradictoire (obligatoire vs fallback). Source A (SPECIFICATION §10.1) :
react-native-quick-crypto+react-native-get-random-valuesobligatoires. Source B (PLAN §2.1 + HT-103-01) : hash prévu via@noble/hashes/sha3, fallback possible (@noble,expo-crypto, module custom). Impact : risque de non-conformité technique et d’écart de perf/sécurité. -
DIV-04 : Contrat HTTP
POST /documents/captureincohérent dans la SPEC et divergent avec les autres docs. Source A (SPECIFICATION §10.2, Q-103-03) : contrat fixé202/200/409/400/429. Source B (SPECIFICATION §5.12 + §6) : inclut422et503. Source C (TESTSTC-ERR-16/17, PLAN §6, CODE CONTRACTSCC-9) : attendent explicitement422/503. Impact : référentiel API non univoque pour validation QA/API. -
DIV-05 : Bornes de retries incohérentes. Source A (SPECIFICATION §5.2) : retries configurables
0..5(défaut3). Source B (CODE CONTRACTSCC-4+ TESTSTC-NEG-16) : clamp/rejet selon §5.2, borne haute 5. Source C (PLAN §6) : “Retry borné (max 3)”. Impact : ambiguïté sur le comportement attendu en résilience réseau.
4. Zones d'ombre¶
- Transition d’état client non explicitée pour les réponses
422/503pendantUPLOADING(état cible mobile non contractualisé). - Clarifications encore ouvertes :
Q-103-01,Q-103-02,Q-103-04,Q-103-05,Q-103-06. - Distribution authentique de la clé publique backend côté mobile (
H-103-09) reste au niveau hypothèse, sans mécanisme de confiance détaillé de bout en bout. - Déclinaison implémentation (PLAN/CODE CONTRACTS) du payload canonique d’idempotence moins précise que la définition normative SPEC §5.12 (liste exacte des champs à comparer).
5. Recommandation¶
- Procéder — convergence confirmée, aucun conflit bloquant
- Rework nécessaire — divergences à résoudre avant de continuer
- Escalade — décision humaine requise sur un point structurant