Aller au contenu

Je vais analyser la spécification et les tests de PD-252 en mode auditeur indépendant.


PD-252 — Specification Review

Constats

1. Contradiction — mimeType : case-insensitive vs regex lowercase-only

Type : Contradiction
Référence : Spec §5.1 (mimeType), TC-NEG-02
Description : §5.1 déclare mimeType "case-insensitive en comparaison, stocké lowercase", ce qui implique une normalisation à l'entrée. Mais la regex ^[a-z0-9!#$&^_.+-]+/[a-z0-9!#$&^_.+-]+$ rejette toute entrée contenant des majuscules. TC-NEG-02 confirme le rejet de Application/PDF. Si la comparaison est case-insensitive, l'entrée devrait être normalisée puis stockée lowercase — pas rejetée. Soit la regex accepte les majuscules (et normalise), soit la mention "case-insensitive en comparaison" est retirée.
Impact : Comportement ambigu pour un implémenteur — normaliser ou rejeter ?
Gravité : Majeur

2. Ambiguïté — B2C_EVIDENCE_MINOR non défini

Type : Ambiguïté
Référence : Spec §5.2 (paramètre "Nombre de formats B2C_EVIDENCE_MINOR"), TC-NOM-02
Description : Le paramètre impose exactement 7 éléments pour B2C_EVIDENCE_MINOR, mais ce concept n'est jamais défini. §5.4 liste 5 catégories de formats (Documents textuels, Images, Données structurées, Texte brut, Audio/Vidéo) — aucune ne porte ce nom. Est-ce une sous-catégorie ? Un cas d'usage ? La liste des 7 formats n'est pas énumérée. TC-NOM-02 exige la vérification de cette cardinalité sans savoir quels sont ces 7 formats.
Impact : Impossible de vérifier le paramètre sans connaître la liste.
Gravité : Bloquant

3. Contradiction — retentionDuration "ISO 8601" vs regex restrictive

Type : Contradiction
Référence : Spec §5.1 (retentionDuration), TC-NEG-03
Description : Le format est déclaré "ISO 8601 durée" mais la regex ^P(\d+Y|\d+M|\d+D)$ n'accepte que les durées mono-composant (P10Y, P6M, P30D). ISO 8601 autorise les durées combinées (P1Y6M). TC-NEG-03 rejette P1Y2M conformément à la regex, mais la mention "ISO 8601" est trompeuse — c'est un sous-ensemble strict, non documenté comme tel.
Impact : Un auditeur ou implémenteur pourrait considérer P1Y6M comme valide en se basant sur la mention ISO 8601.
Gravité : Majeur

4. Ambiguïté — Mécanisme de "validation de la policy" non défini

Type : Ambiguïté
Référence : Spec §6 (ERR-252-01 à ERR-252-08), Tests §3-§4
Description : Les cas d'erreur décrivent des "rejets" et les tests vérifient des "verdicts de validation documentaire". Mais ni la spec ni les tests ne définissent qui ou quoi valide la policy. Est-ce une revue humaine structurée ? Un script automatisé ? Un audit formel ? Le terme "rejet" implique un automate, mais PD-252 est une story documentaire sans implémentation.
Impact : L'observable des tests (conforme/rejeté) n'a pas de mécanisme d'exécution défini.
Gravité : Majeur

5. Ambiguïté — Granularité du rejet : ligne vs document

Type : Ambiguïté
Référence : Spec §6 (ERR-252-01 vs ERR-252-02), TC-ERR-01 vs TC-ERR-03
Description : ERR-252-01 indique "Rejet de conformité du document de policy" (document entier). ERR-252-02 indique "Rejet" (ambigu). TC-ERR-03 précise "Absence d'effet de bord sur les autres lignes conformes" (rejet par ligne). TC-ERR-02 dit "La policy est non conforme tant que l'erreur persiste" (document-level). La spec mélange rejet ligne-par-ligne et rejet global sans règle claire.
Impact : Un auditeur ne sait pas si une seule erreur invalide tout le document ou seulement l'entrée fautive.
Gravité : Majeur

6. Incohérence Spec↔Tests — normativeReference et ISO 19005

Type : Incohérence Spec↔Tests
Référence : Spec §5.1 (regex normativeReference), TC-NOM-09, CA-07
Description : La regex exige le format ^[A-Z0-9 .:-]+ §[0-9.]+$ (NORME §section). Or la spec §7 CA-07 et TC-NOM-09 exigent la présence de "ISO 19005 (½/3)". La notation "(½/3)" n'a pas de §section et ne matche pas la regex. Les parenthèses ne sont pas dans le jeu de caractères [A-Z0-9 .:-]. Il faudrait trois références distinctes (ISO 19005-1 §X.Y, etc.) ou adapter la regex.
Impact : La policy ne peut pas simultanément satisfaire la regex de §5.1 et la référence attendue par CA-07.
Gravité : Bloquant

7. Ambiguïté — Taille fichier DEFAULT dans une story documentaire

Type : Ambiguïté
Référence : Spec §5.2 (paramètre "Taille fichier catégorie DEFAULT = 100 MB")
Description : Ce paramètre concerne la "Validation ingestion backend" qui est explicitement hors périmètre PD-252 (§2 Exclu). Son inclusion dans les paramètres contractualisés de PD-252 est contradictoire avec le périmètre. Le test TC-NOM-10 vérifie sa présence, mais la spec ne dit pas si ce paramètre documente une règle existante ou en crée une nouvelle.
Impact : Confusion entre documentation d'un existant et spécification d'un nouveau paramètre.
Gravité : Mineur

8. Ambiguïté — "résolution manuelle uniquement"

Type : Ambiguïté
Référence : Spec §5.8 (COMPLETE -> * : "résolution manuelle uniquement")
Description : La mention "résolution manuelle uniquement" pour les états terminaux n'est pas définie. Quel processus manuel ? Par qui ? Avec quel audit trail ? Si c'est hors périmètre PD-252, la mention crée une attente non spécifiée. Si c'est en périmètre, le processus manque.
Impact : Un auditeur ISO pourrait demander la documentation de ce processus manuel.
Gravité : Mineur

9. Incohérence Spec↔Tests — INV-252-09 terminologie

Type : Incohérence Spec↔Tests
Référence : Spec INV-252-09, TC-INV-09
Description : INV-252-09 exige que les règles non testables soient marquées "hors périmètre". TC-INV-09 exige qu'elles soient marquées "NON TESTABLE/hors périmètre". Le document de tests §9 les marque effectivement "non testable" avec un impact, mais pas "hors périmètre". Les termes ne sont pas interchangeables : une règle peut être non testable tout en restant dans le périmètre.
Impact : Ambiguïté sur le statut des règles non testables — sont-elles abandonnées (hors périmètre) ou reportées ?
Gravité : Mineur

10. Hypothèse dangereuse — H-05 validations existantes non vérifiées

Type : Hypothèse dangereuse
Référence : Spec §9 H-05
Description : H-05 suppose que "Les validations MIME/PDF-A/malware existent déjà côté système". Si cette hypothèse est fausse, la policy documente des contrôles inexistants, créant un écart entre la documentation normative et la réalité technique. Aucun test ne vérifie cette hypothèse. L'impact est qualifié de "hors PD-252" mais le risque est qu'un auditeur ISO considère la policy comme fausse déclaration.
Impact : Risque de non-conformité si la policy affirme des contrôles non implémentés.
Gravité : Majeur

11. Non testable — Q-252-01 à Q-252-04 bloquent 4 invariants

Type : Non testable
Référence : Spec §10.2 (Q-252-01 à Q-252-04), Tests §9
Description : Les clarifications Q-252-01 (chemin), Q-252-02 (bornes taille), Q-252-03 (canonicalisation) et Q-252-04 (Factur-X) sont toutes marquées "Majeur" dans les tests §9. Leur non-résolution rend partiellement non testables INV-252-01 (chemin), INV-252-02 (exhaustivité), INV-252-05 (validations complètes) et la matrice légale. Quatre clarifications ouvertes "Majeur" non résolues est un volume significatif pour une Gate 3.
Impact : Le verdict QA ne peut être que "partiel" tant que ces points restent ouverts.
Gravité : Majeur


Synthèse : 2 bloquants (#2, #6), 6 majeurs (#1, #3, #4, #5, #10, #11), 3 mineurs (#7, #8, #9). Les bloquants concernent un concept non défini (B2C_EVIDENCE_MINOR) et une incompatibilité regex/référence normative. La spec nécessite des corrections avant soumission Gate 3.