PD-252 — Specification canonique de la politique des formats de preservation SAE (v3)¶
1. Objectif¶
La User Story PD-252 doit produire une specification contractuelle du document preservation-format-policy.md pour combler le gap GAP-FINAL-004 (ISO 14641 §10.1.1), en definissant de maniere testable et non ambigue :
- les formats de preservation acceptes ;
- les niveaux de preservation associes ;
- les regles de conversion documentaire (documentaires, non implementees en PD-252) ;
- les validations d’ingestion ;
- la matrice formats × durees de conservation ;
- la tracabilite normative et la reference dans le manuel SAE (chapitre ch08).
2. Perimetre / Hors perimetre¶
Inclus¶
- Redaction d’un document normatif
preservation-format-policy.mddans le manuel SAE. - Formalisation exhaustive des formats acceptes par categorie.
- Definition formelle des niveaux
COMPLETEetBITSTREAM. - Definition des regles de conversion a l’ingestion (statut documentaire uniquement).
- Definition des criteres de validation technique a l’ingestion.
- Definition de la matrice format × duree legale.
- Referencement explicite des normes ISO/NF et du RFC interne.
- Tracabilite explicite vers
GAP-FINAL-004.
Exclu¶
- Implementation logicielle des conversions de formats.
- Modification du code backend de validation MIME.
- Deploiement/achat d’outils (VeraPDF, ClamAV).
- Migration retroactive des archives existantes.
- Toute evolution DDL (base de donnees).
- Les categories backend (
DEFAULT,B2C_EVIDENCE_MINOR) ne sont pas redefinies par cette policy. - Les bornes min/max de taille pour les categories hors
DEFAULTsont hors perimetre PD-252.
3. Definitions¶
- SAE : Systeme d’Archivage Electronique.
- Format de preservation : format explicitement autorise pour conservation long terme.
- COMPLETE : preservation de lisibilite/interpretabilite (structure + rendu + metadonnees selon format).
- BITSTREAM : preservation d’integrite binaire uniquement, sans garantie de lisibilite future.
- Validation MIME : controle MIME declare vs signature binaire (magic bytes).
- PDF/A : sous-ensemble ISO 19005 pour archivage.
- Duree legale : duree de conservation exprimee en ISO 8601 (
PnY, etc.).
4. Invariants (non negociables)¶
| ID | Regle | Justification |
|---|---|---|
| INV-252-01 | Le document preservation-format-policy.md doit exister et etre reference depuis le manuel SAE (ch08). | Exigence de conformite documentaire. |
| INV-252-02 | La liste des formats de preservation doit etre exhaustive pour les categories definies dans PD-252. | Eliminer l’ambiguite de perimetre. |
| INV-252-03 | Chaque format doit etre associe a un niveau de preservation unique (COMPLETE ou BITSTREAM). | Coherence de classification. |
| INV-252-04 | Les regles de conversion a l’ingestion sont documentees comme recommandations non bloquantes en v1. | Respect du hors perimetre implementation. |
| INV-252-05 | Les validations d’ingestion minimales doivent etre explicitement listees : MIME, PDF/A, hash SHA3-384, taille, malware. | Conformite et robustesse a l’entree. |
| INV-252-06 | Toute donnee structuree utilisee dans la policy doit avoir format/contrainte contractuels definis en §5.1 et references ailleurs sans redefinition. | Prevention des ambiguities de format. |
| INV-252-07 | Le modele d’etats de classification est explicite, avec transitions autorisees/interdites et transitions retour documentees. | Exigence “transitions inverses”. |
| INV-252-08 | Le lien explicite vers GAP-FINAL-004 doit etre present dans la policy. | Tracabilite audit ISO 14641. |
| INV-252-09 | Toute regle non testable dans cette version est marquee NON TESTABLE avec justification. | Contractualisation verifiable. |
5. Flux nominaux¶
5.1 Modele de donnees contractuel (formats et contraintes)¶
| Donnee | Format / Encodage | Longueur / Taille | Jeu de caracteres | Sensibilite casse | Regex | Comportement si invalide |
|---|---|---|---|---|---|---|
formatName | String canonique | 1..32 caracteres | ASCII imprimable | case-sensitive | ^[A-Z0-9/+.-]{1,32}$ | Rejet de l’entree de policy |
mimeType | RFC 6838 type/subtype (normalisation lowercase obligatoire avant validation) | 3..127 caracteres | ASCII lowercase + symboles RFC | comparaison et stockage en lowercase apres normalisation | ^[a-z0-9!#$&^_.+-]+/[a-z0-9!#$&^_.+-]+$ (apres normalisation) | Rejet |
preservationLevel | Enum | 1 valeur | COMPLETE|BITSTREAM | case-sensitive | ^(COMPLETE|BITSTREAM)$ | Rejet |
retentionDuration | ISO 8601 duree (sous-ensemble mono-composant) | 2..16 caracteres | ASCII uppercase + chiffres | case-sensitive | ^P(\d+Y|\d+M|\d+D)$ | Rejet |
conversionPriority | Enum | 1 valeur | P1|P2|P3 | case-sensitive | ^P[1-3]$ | Rejet |
normativeReference | String NORME §section | 8..128 caracteres | UTF-8 | case-sensitive | ^[A-Z0-9 .:_-]+ §[0-9.]+$ | Rejet |
integrityHashAlgorithm | Constante | SHA3-384 | ASCII | case-sensitive | ^SHA3-384$ | Rejet |
Notes contractuelles :
- Les durees combinees (ex:
P1Y6M) sont explicitement hors scope de ce contrat v1. - Canonicalisation des labels de formats : le nom canonique est celui utilise dans ISO 19005 et les standards respectifs ; aucun alias n’est autorise.
- Distinction normativeReference vs citations documentaires : Le champ
normativeReference(regex^[A-Z0-9 .:_-]+ §[0-9.]+$) s’applique aux references structurees avec section specifique (ex:ISO 14641 §10.1.1,NF Z42-013 §6.2.4). Les mentions de normes sans section (ex:ISO 19005-1,RFC-PV-PACK) sont des citations documentaires et ne sont PAS des valeurs du champnormativeReference. Les citations documentaires n’ont pas de regex contractuelle ; leur presence est verifiee par existence textuelle dans la policy.
5.2 Parametres numeriques contractualises¶
| Parametre | Valeur par defaut | Min | Max | Unite | Contexte | Percentile | Hors bornes |
|---|---|---|---|---|---|---|---|
Taille fichier categorie DEFAULT | 500 | 0 | 500 | MB | Validation ingestion backend (rappel — valeur definie dans DocumentCategoryConfig, relevee de 100 a 500 MB par PD-285) | N/A | Rejet ingestion |
| Duree “contrats commerciaux” | 10 | 10 | 10 | ans | Matrice legale | N/A | Rejet de la policy |
| Duree “factures” | 10 | 10 | 10 | ans | Matrice legale | N/A | Rejet de la policy |
| Duree “documents probatoires” | 30 | 30 | 30 | ans | Matrice legale | N/A | Rejet de la policy |
| Duree “preuves numeriques (mineurs)” | 30 | 30 | 30 | ans | Matrice legale | N/A | Rejet de la policy |
| Duree “donnees techniques” | 5 | 5 | 5 | ans | Matrice legale | N/A | Rejet de la policy |
5.3 SLA temporels¶
- Aucune transition temporelle d’etat technique n’est geree par PD-252 (story documentaire).
- Les durees de conservation sont des contraintes de contenu de policy (pas un moteur d’expiration implemente ici).
- Mention obligatoire :
Aucune transition temporelle identifiee(au sens SLA d’execution applicative).
5.4 Flux F1 — Catalogue des formats acceptes¶
- Definir les categories : Documents textuels, Images, Donnees structurees, Texte brut, Audio/Video.
- Pour chaque categorie, lister les formats autorises.
- Associer a chaque format un niveau
COMPLETEouBITSTREAM. - Controler unicite des noms de format.
- Pour Factur-X : utiliser la representation
PDF/A-3B avec facture XML embarquee (CII ou UBL, conforme EN 16931), niveau de preservationCOMPLETE. - Discrimination FACTUR-X / PDF/A-3B : ces deux formats partagent le meme
mimeType=application/pdf. La discrimination repose sur la detection d'un flux XML embarque conforme CII ou UBL (EN 16931). Cette detection est couverte par la validation PDF/A (PLANIFIE, PD-NEW). En attendant l'implementation, la classification repose sur leformatNamedeclare par l'utilisateur a l'ingestion.
5.4b Liste canonique des formats de preservation¶
| formatName | mimeType | preservationLevel | Categorie |
|---|---|---|---|
| PDF/A-1B | application/pdf | COMPLETE | Documents textuels |
| PDF/A-2B | application/pdf | COMPLETE | Documents textuels |
| PDF/A-3B | application/pdf | COMPLETE | Documents textuels |
| JPEG | image/jpeg | BITSTREAM | Images |
| PNG | image/png | BITSTREAM | Images |
| TIFF | image/tiff | BITSTREAM | Images |
| JSON | application/json | COMPLETE | Donnees structurees |
| XML | application/xml | COMPLETE | Donnees structurees |
| FACTUR-X | application/pdf | COMPLETE | Documents textuels |
| TXT | text/plain | BITSTREAM | Texte brut |
| CSV | text/csv | BITSTREAM | Texte brut |
| MP4 | video/mp4 | BITSTREAM | Audio/Video |
| WAV | audio/wav | BITSTREAM | Audio/Video |
| MOV | video/quicktime | BITSTREAM | Audio/Video |
5.5 Flux F2 — Regles de conversion a l’ingestion (documentaires)¶
- Lister format source et format cible de preservation.
- Associer une priorite (
P1..P3) et le statut “story separee”. - Marquer explicitement “non bloquant v1”.
- Si une implementation est planifiee mais non creee, utiliser
PLANIFIE (PD-NEW)avec la note :Story non encore creee dans le backlog. Sera creee lors de la planification du sprint suivant.
5.6 Flux F3 — Validations a l’ingestion¶
- MIME declare vs contenu reel.
- Validation PDF/A pour documents PDF/A revendiques.
- Calcul hash
SHA3-384. - Controle taille selon categorie.
- Scan malware avant stockage.
Tableau de suivi documentaire des validations :
| Validation | Regle contractuelle | Statut implementation |
|---|---|---|
| MIME declare vs contenu reel | Obligatoire | IMPLEMENTE |
| Validation PDF/A | Obligatoire pour tout format base PDF/A (PDF/A-1B, PDF/A-2B, PDF/A-3B, FACTUR-X) | PLANIFIE (PD-NEW) |
Hash integrite SHA3-384 | Obligatoire | IMPLEMENTE |
| Controle taille | Obligatoire selon categorie backend | IMPLEMENTE |
| Scan malware | Obligatoire avant stockage | PLANIFIE (PD-NEW) |
Note statuts planifies :
PD-NEW= Story non encore creee dans le backlog. Sera creee lors de la planification du sprint suivant.- Clause de non-conformite technique : Les validations en statut
PLANIFIE (PD-NEW)sont des exigences cibles documentees, et non des declarations de conformite technique. La policy reconnait explicitement le gap entre l'exigence documentee et l'implementation effective. Ce tracking constitue une mesure compensatoire de gouvernance au sens ISO 14641 §10.3 (plan d'actions correctives). En audit, la presence du statutPLANIFIEavec suivi backlog atteste de la prise en charge du gap, pas de sa resolution.
5.7 Flux F4 — Matrice formats × durees legales¶
- Pour chaque type documentaire, definir duree legale.
- Associer formats admissibles.
- Associer niveau de preservation.
- Verifier alignement avec sections normatives citees.
| Type documentaire | Duree | Formats acceptes | Niveau |
|---|---|---|---|
| Contrats commerciaux | P10Y | PDF/A-1B, PDF/A-2B, PDF/A-3B | COMPLETE |
| Factures | P10Y | PDF/A-1B, PDF/A-2B, PDF/A-3B, FACTUR-X | COMPLETE |
| Documents probatoires (textuels) | P30Y | PDF/A-1B, PDF/A-2B | COMPLETE |
| Documents probatoires (images) | P30Y | TIFF | BITSTREAM |
| Preuves numeriques (mineurs) | P30Y | JPEG, PNG, TIFF, MP4, WAV, MOV | BITSTREAM |
| Donnees techniques (structurees) | P5Y | JSON, XML | COMPLETE |
| Donnees techniques (texte brut) | P5Y | CSV, TXT | BITSTREAM |
Note duree "Preuves numeriques (mineurs)" : P30Y est la duree plafond conservatrice couvrant la majorite du mineur (18 ans) + delai de prescription legale (Code civil art. 2235). Alignee sur les documents probatoires. L'hypothese H-03 s'applique.
5.8 Modele d’etats et transitions (niveaux de preservation)¶
Etat de classification d’un document a l’issue de l’ingestion : UNCLASSIFIED, COMPLETE, BITSTREAM, REJECTED.
UNCLASSIFIED -> COMPLETE: AUTORISEE (format dont lepreservationLevelestCOMPLETEdans §5.4b).UNCLASSIFIED -> BITSTREAM: AUTORISEE (format dont lepreservationLevelestBITSTREAMdans §5.4b).UNCLASSIFIED -> REJECTED: AUTORISEE (validation echouee).COMPLETE -> *: INTERDITE (toute reclassification est hors perimetre PD-252 et necessiterait une story dediee).BITSTREAM -> *: INTERDITE (toute reclassification est hors perimetre PD-252 et necessiterait une story dediee).REJECTED -> *: INTERDITE (nouvelle ingestion requise ; reclassification hors perimetre PD-252).
Transitions inverses explicitement interdites :
COMPLETE -> BITSTREAM: INTERDITE (immutabilite de classification post-ingestion).BITSTREAM -> COMPLETE: INTERDITE (requalification hors perimetre PD-252).COMPLETE/BITSTREAM -> UNCLASSIFIED: INTERDITE.REJECTED -> UNCLASSIFIED: INTERDITE.
5.9 Mecanisme de validation¶
La conformite de la policy est verifiee par revue documentaire structuree (checklist) lors de l’audit ISO 14641. Les cas d’erreur (§6) decrivent les non-conformites detectables par cette revue. Aucun moteur applicatif de validation n’est introduit par PD-252.
5bis. Diagrammes¶
5bis.1 Diagramme d’etats — Classification de preservation (INV-252-07)¶
Modele d’etats du niveau de preservation d’un document a l’ingestion (ref. §5.8). Toutes les transitions depuis un etat terminal (COMPLETE, BITSTREAM, REJECTED) sont interdites (INV-252-07).
stateDiagram-v2
[*] --> UNCLASSIFIED : Document soumis a l’ingestion
UNCLASSIFIED --> COMPLETE : preservationLevel = COMPLETE (§5.4b)\n[INV-252-03]
UNCLASSIFIED --> BITSTREAM : preservationLevel = BITSTREAM (§5.4b)\n[INV-252-03]
UNCLASSIFIED --> REJECTED : Validation echouee (§5.6)\n[INV-252-05]
COMPLETE --> [*] : Etat terminal — immutable
BITSTREAM --> [*] : Etat terminal — immutable
REJECTED --> [*] : Etat terminal — nouvelle ingestion requise
note right of COMPLETE
Transitions interdites :
COMPLETE → BITSTREAM (INV-252-07)
COMPLETE → UNCLASSIFIED (INV-252-07)
end note
note right of REJECTED
Transition interdite :
REJECTED → UNCLASSIFIED (INV-252-07)
Nouvelle ingestion = nouveau document
end note 5bis.2 Diagramme de sequence — Validations a l’ingestion (INV-252-05)¶
Chaine de validation d’un document a l’ingestion (ref. §5.6, §5.8). Chaque validation est une etape bloquante : un echec entraine la transition vers REJECTED (ERR-252-01..08).
sequenceDiagram
participant U as Utilisateur
participant API as Backend API
participant MIME as Validation MIME
participant PDFA as Validation PDF/A
participant HASH as Hash SHA3-384
participant SIZE as Controle taille
participant AV as Scan malware
participant CLASS as Classification
U->>API: Soumission document (formatName, mimeType, fichier)
activate API
API->>MIME: Controle MIME declare vs magic bytes
alt MIME invalide (ERR-252-02)
MIME-->>API: REJET
API-->>U: REJECTED
else MIME valide
MIME-->>API: OK
end
API->>PDFA: Validation PDF/A (si format PDF/A-*)
Note over PDFA: PLANIFIE (PD-NEW)<br/>INV-252-04
alt PDF/A invalide
PDFA-->>API: REJET
API-->>U: REJECTED
else PDF/A valide ou N/A
PDFA-->>API: OK
end
API->>HASH: Calcul hash SHA3-384
Note over HASH: INV-252-05<br/>integrityHashAlgorithm = SHA3-384
HASH-->>API: hash
API->>SIZE: Controle taille (max 500 MB categorie DEFAULT)
alt Taille hors bornes (§5.2)
SIZE-->>API: REJET
API-->>U: REJECTED
else Taille conforme
SIZE-->>API: OK
end
API->>AV: Scan malware avant stockage
Note over AV: PLANIFIE (PD-NEW)<br/>INV-252-05
alt Malware detecte
AV-->>API: REJET
API-->>U: REJECTED
else Clean
AV-->>API: OK
end
API->>CLASS: Classification selon preservationLevel (§5.4b)
alt preservationLevel = COMPLETE (INV-252-03)
CLASS-->>API: COMPLETE
else preservationLevel = BITSTREAM (INV-252-03)
CLASS-->>API: BITSTREAM
end
API-->>U: Document classe (COMPLETE | BITSTREAM)
deactivate API 6. Cas d’erreur¶
Regle generale de granularite :
- Chaque cas d’erreur s’applique au niveau de l’entree concernee (ligne/format).
- La policy dans son ensemble est declaree non conforme tant qu’au moins un cas d’erreur non resolu subsiste.
| ID | Cas | Regle de reponse |
|---|---|---|
| ERR-252-01 | Format non liste dans la policy | Rejet de l’entree concernee ; policy non conforme tant que non corrige |
| ERR-252-02 | mimeType non conforme RFC/regex (apres normalisation lowercase) | Rejet |
| ERR-252-03 | Niveau de preservation hors enum | Rejet |
| ERR-252-04 | Duree non ISO 8601 (sous-ensemble mono-composant) ou hors matrice attendue | Rejet |
| ERR-252-05 | Reference normative absente/mal formee | Rejet |
| ERR-252-06 | Conversion definie sans priorite | Rejet |
| ERR-252-07 | Transition d’etat non documentee | Rejet |
| ERR-252-08 | Reference manquante a GAP-FINAL-004 | Rejet |
7. Criteres d’acceptation (testables)¶
| ID | Critere | Observable |
|---|---|---|
| CA-01 | Le document preservation-format-policy.md existe | Fichier present a docs/sae-manual/preservation-format-policy.md |
| CA-02 | Le tableau des formats est exhaustif | 5 categories presentes et liste canonique exacte de 14 formats (§5.4b) |
| CA-03 | Les niveaux COMPLETE/BITSTREAM sont definis formellement | Definitions explicites + mapping format->niveau |
| CA-04 | Les conversions a l’ingestion sont documentees | Tableau source/cible/priorite/story separee |
| CA-05 | Les validations d’ingestion sont listees | 5 validations minimales presentes + statut implementation |
| CA-06 | La matrice format × duree legale est presente et coherente | Tableau complet avec valeurs exactes (§5.7) |
| CA-07 | References normatives et citations documentaires presentes | References structurees (avec §section) conformes a la regex §5.1 + citations documentaires (ISO 19005-½/3, RFC-PV-PACK) presentes textuellement |
| CA-08 | Le chapitre ch08 du manuel SAE reference la policy | Lien explicite ch08 -> policy |
| CA-09 | La tracabilite GAP-FINAL-004 est explicite | Mention textuelle + lien de tracabilite |
| CA-10 | Les formats/contraintes de donnees sont definis une seule fois | §5.1 contient toutes les definitions, autres sections referencent |
| CA-11 | Les transitions retour sont explicitees/interdites | Tableau/enumeration des transitions present |
| CA-12 | Les parametres numeriques identifies ont bornes et unites | §5.2 complet sans valeur implicite |
8. Scenarios de test (Given / When / Then)¶
-
GWT-01 — Exhaustivite formats
Given la policy est redigee
When on verifie les categories de formats et la liste canonique
Then les 5 categories attendues sont presentes avec la liste exacte des 14 formats de §5.4b. -
GWT-02 — Niveaux de preservation
Given un format liste dans la policy
When on consulte son entree
Then un niveau unique (COMPLETEouBITSTREAM) est defini. -
GWT-03 — Conversions documentees
Given la section conversion
When on lit une ligne de conversion
Then format source, cible, priorite et statut “story separee” sont presents. -
GWT-04 — Validations ingestion
Given la section validation
When on compare avec la liste contractuelle
Then MIME, PDF/A, SHA3-384, taille et malware sont tous presents. -
GWT-05 — Matrice legale
Given la matrice format × duree
When on verifie les types documentaires demandes
Then chaque type a duree, formats et niveau renseignes avec les valeurs exactes de §5.7. -
GWT-06 — Normes et tracabilite
Given la section references
When on audite les citations normatives
Then ISO 14641 §10.1.1, NF Z42-013 §6.2.4, ISO 19005-1, ISO 19005-2, ISO 19005-3 et RFC-PV-PACK sont presents, ainsi queGAP-FINAL-004. -
GWT-07 — Contraintes de donnees
Given un champmimeTypeinvalide (ex.application)
When la policy est validee
Then l’entree est rejetee. -
GWT-08 — Transitions inverses
Given un document classeCOMPLETE
When une transition versBITSTREAMest demandee
Then la transition est rejetee comme interdite.
9. Hypotheses explicites¶
| ID | Hypothese | Impact si faux |
|---|---|---|
| H-01 | Les categories actuelles de formats sont stables pour v1 | Revision de la policy et des CA |
| H-02 | Le hash d’integrite de reference reste SHA3-384 | Mise a jour invariants + tests |
| H-03 | Les durees legales fournies dans le besoin sont validees juridiquement | Risque de non-conformite reglementaire |
| H-04 | Le chapitre ch08 est modifiable pour ajouter la reference | Tracabilite documentaire incomplete |
| H-05 | La policy DOCUMENTE les validations attendues. Si certaines ne sont pas encore implementees, la policy le signale avec la story de destination (ex: PD-NEW, story non encore creee dans le backlog ; creation prevue au sprint suivant). La policy ne constitue pas une declaration de conformite technique. | Ecart entre cible documentaire et etat technique reel (a suivre via backlog) |
10. Points a clarifier¶
10.1 Contraintes techniques du projet cible (obligatoire)¶
- Projet cible principal :
ProbatioVault-doc(documentation du manuel SAE, artefact Markdown). - Chemin cible fige :
docs/sae-manual/preservation-format-policy.md. - Stack reelle concernee par PD-252 : documentation Markdown + structure documentaire du manuel SAE.
- References techniques connexes (non modifiees par PD-252) :
ProbatioVault-backend: NestJS + TypeORM + PostgreSQL (source des regles MIME/taille deja implementees).- Aucune implementation applicative dans cette story.
10.2 Clarifications ouvertes¶
| ID | Point a clarifier | Donnee manquante / impact |
|---|---|---|
| Q-252-05 | Modalite de lien tracable vers GAP-FINAL-004 (URL, identifiant audit, annexe) | Verifiabilite d’audit (forme de preuve) — NON TESTABLE tant que la forme n’est pas figee |
References¶
- Epic : Reference epique (non fournie dans l’expression de besoin)
- JIRA :
PD-252 - Repos concernes :
ProbatioVault-doc,ProbatioVault-backend(reference de regles existantes) - Documents associes :
preservation-format-policy.md(a produire)- Manuel SAE (ch08)
- ISO 14641:2018 §10.1.1
- NF Z42-013:2020 §6.2.4
- ISO 19005-1
- ISO 19005-2
- ISO 19005-3
- RFC interne
RFC-PV-PACK.md - Audit PD-244 (
GAP-FINAL-004)