Aller au contenu

PD-279-specification-review

Type : Contradiction Référence : PD-279-specification-v2.md §6.1 (ordre normatif), §4 INV-279-03-return-guards, §5.4 (retour sans garde geo_copy_count) Description : L'ordre normatif est déclaré obligatoire pour tous les endpoints de restitution/retour et inclut la vérification geo_copy_count et legal_lock, alors que le retour RESTITUTED -> SEALED est défini sans contrôle geo_copy_count et sans garde legal_lock. Impact : Contrat de validation incohérent sur POST /documents/:id/return-from-restitution, impossible à implémenter de manière unique. Gravité : Bloquant

Type : Contradiction Référence : PD-279-specification-v2.md §6.2 (423 Locked + DOCUMENT_UNDER_LEGAL_LOCK), §8 ST-279-03; PD-279-tests.md matrice §2 (TC-ERR-07), TC-ERR-07 Description : La spécification canonique exige un rejet 423 sur legal_lock=true, tandis que les tests contractuels attendent 409 pour le même cas. Impact : Verdict QA non déterministe et non-conformité contractuelle automatique d'un des deux artefacts. Gravité : Bloquant

Type : Contradiction Référence : PD-279-specification-v2.md §7 CA-279-13, §8 ST-279-13; PD-279-tests.md §7 TC-NEG-02 Description : La spec impose l'idempotence du rejeu return-from-restitution avec HTTP 200, alors que TC-NEG-02 attend HTTP 409 pour ce même rejeu. Impact : Incompatibilité directe Spec↔Tests sur un comportement d'API critique. Gravité : Bloquant

Type : Contradiction Référence : PD-279-specification-v2.md §7 CA-279-13, §5.3 (idempotence restitution); PD-279-tests.md §7 TC-NEG-01 Description : La spec décrit le rejeu sur document déjà RESTITUTED comme idempotent HTTP 200, alors que le test concurrent impose "autres requêtes rejetées 409". Impact : Contrat incohérent sur concurrence/idempotence, entraînant résultats incompatibles selon implémentation. Gravité : Majeur

Type : Contradiction Référence : PD-279-specification-v2.md §3 (DocumentStatus), §5.1 (status à 4 valeurs), §5.2 (RESTITUTED -> ... DISPOSED) Description : Le type de statut ne contient pas DISPOSED, mais la matrice de transitions emploie explicitement une transition vers DISPOSED (interdite). Impact : Incohérence terminologique interne du modèle d'états, source d'ambiguïté contractuelle. Gravité : Majeur

Type : Contradiction Référence : PD-279-specification-v2.md §4 INV-279-04-traceability, §7 CA-279-07, §10.2 Q-279-03; PD-279-tests.md §9 (règle security_level) Description : security_level est exigé pour chaque attestation (invariant/critère), mais la section de clarification maintient une obligation conditionnelle "si requis par contrat existant". Impact : Le contenu probatoire minimal n'est pas contractuellement stable. Gravité : Bloquant

Type : Ambiguïté Référence : PD-279-specification-v2.md §5.2 (PENDING -> * "interdite dans ce périmètre" + "hors périmètre inchangé"), §4 INV-279-07 Description : La spécification interdit globalement les sorties de PENDING "dans ce périmètre" tout en indiquant que les transitions hors restitution restent inchangées. Impact : Double lecture possible (blocage global vs non-impact hors périmètre), avec risque de divergence d'implémentation. Gravité : Majeur

Type : Non testable Référence : PD-279-specification-v2.md §6.2 (422 Unprocessable Entity ou échec validation config), §7 CA-279-10; PD-279-tests.md TC-ERR-09 Description : Le comportement attendu en cas de config SLA invalide est alternatif (422 ou erreur de chargement) sans condition de choix normative. Impact : Oracle de test non déterministe, PASS/FAIL non tranchable a priori. Gravité : Majeur

Type : Incohérence Spec↔Tests Référence : PD-279-specification-v2.md §4 INV-279-11-destruction-checkpoint-uniqueness, §5.5 (3 routes protégées), §7 CA-279-08; PD-279-tests.md §2 (matrice), TC-NOM-05 Description : L'invariant impose deux checkpoints batch (inclusion + exécution) et la route DELETE /documents/:id, mais les tests contractuels centraux ne formalisent qu'un scénario générique unique (endpoint destruction) sans preuve explicite des trois chemins. Impact : Cohérence probatoire incomplète entre exigence normative et preuve attendue. Gravité : Majeur

Type : Incohérence Spec↔Tests Référence : PD-279-specification-v2.md (document canonique v2); PD-279-tests.md §1 Références ("PD-279-specification.md") Description : Le document de référence de test pointe PD-279-specification.md et non PD-279-specification-v2.md. Impact : Risque d'audit sur mauvaise version normative et de faux écarts de conformité. Gravité : Majeur

Type : Hypothèse dangereuse Référence : PD-279-specification-v2.md §5.6 (configurable runtime), §5.3 (deadline calculée à la restitution), §9 H-279-05 Description : L'effet d'un changement runtime de restitution_max_duration sur les restitutions déjà ouvertes n'est pas explicitement borné. Impact : Risque de recalculs non uniformes des deadlines et d'émissions SLA incohérentes selon nœud/instant. Gravité : Majeur

Type : Risque sécu/conformité Référence : PD-279-specification-v2.md §6.1 (ordre des gardes), §6.2 (404 Not Found), PD-279-tests.md TC-ERR-02, TC-ERR-03, TC-ERR-04 Description : La place normative de 404 n'est pas ordonnée par rapport à 403 dans le flux de contrôle, alors que les deux existent dans le contrat. Impact : Risque de comportement divergent d'anti-énumération (fuite d'existence de document) et incohérence d'audit sécurité. Gravité : Majeur

Type : Ambiguïté Référence : PD-279-specification-v2.md §5.8 (audit/event "at-least-once"), §7 CA-279-10; PD-279-tests.md TC-NOM-03, TC-INV-09B Description : Les garanties async sont formulées en "at-least-once"/rattrapage, tandis que certains tests exigent une émission "exactement une fois". Impact : Sémantique de preuve temporelle ambiguë, susceptible de verdicts contradictoires sur doublons. Gravité : Majeur