PD-249 — Plan d'implementation du manuel technique SAE consolide¶
1. Resume¶
Objectif¶
Produire un manuel technique SAE consolide en 10 chapitres Markdown integre a ProbatioVault-doc (MkDocs Material + Mermaid), a partir des artefacts existants disperses sur 3 projets (doc, backend, infra). Ce manuel unique doit permettre aux auditeurs externes (ISO 14641:2018, NF Z42-013:2020) de mener un audit complet sans naviguer entre repos, et servir de reference technique interne pour le RSSI, les equipes conformite et ingenierie.
Justification¶
Le gap GAP-FINAL-001 (PD-244) identifie la documentation technique fragmentee comme bloqueur de certification. Le score global est de 72.98% (PARTIEL) avec 15 gaps. La consolidation dans un document unique est un prerequis a toute demarche de certification ISO 14641.
Perimetre technique¶
- Projet cible : ProbatioVault-doc
- Stack : Markdown + Mermaid + MkDocs Material + plugin with-pdf
- Aucune implementation logicielle : pas de code backend/infra/app, pas d'API, pas de schema DB
- 10 chapitres contractuels + glossaire SAE + integration MkDocs
2. Architecture documentaire¶
Emplacement des fichiers¶
Le manuel sera structure en fichiers separes dans un dossier dedie, permettant une navigation granulaire dans MkDocs et une generation PDF via le plugin with-pdf.
_build/docs/
sae-manual/
index.md # Page d'index du manuel (introduction + ToC)
ch01-introduction.md # Chapitre 1 — Introduction et vue d'ensemble
ch02-architecture.md # Chapitre 2 — Architecture du SAE
ch03-securite.md # Chapitre 3 — Modele de securite
ch04-stockage.md # Chapitre 4 — Stockage et immutabilite
ch05-chaine-preuve.md # Chapitre 5 — Chaine de preuve
ch06-cycle-vie.md # Chapitre 6 — Cycle de vie des documents
ch07-tracabilite.md # Chapitre 7 — Tracabilite et audit
ch08-conformite.md # Chapitre 8 — Conformite normative
ch09-procedures.md # Chapitre 9 — Procedures operationnelles
ch10-feuille-route.md # Chapitre 10 — Feuille de route
glossaire.md # Glossaire SAE complet
Justification du choix multi-fichiers : MkDocs Material traite chaque fichier comme une page navigable avec son propre ancrage dans la barre laterale. Un fichier unique de ~200 pages serait penalisant pour la navigation, le rendu HTML et le temps de chargement. Le plugin with-pdf genere le PDF a partir de l'ensemble de la navigation, donc la separation n'impacte pas la sortie PDF.
Integration dans la navigation MkDocs¶
Le manuel sera ajoute en section top-level dans mkdocs.yml, positionne entre "Site" et "Extra". Justification : un document de reference normative transverse ne releve pas d'un projet specifique (infra, backend, app) — il les couvre tous.
Note docs_dir : Le projet ProbatioVault-doc utilise docs_dir: _build/docs dans mkdocs.yml. Les chemins de navigation ci-dessous sont relatifs a docs_dir, donc sae-manual/... correspond physiquement a _build/docs/sae-manual/....
# Ajout dans mkdocs.yml nav:
- Manuel SAE:
- Manuel SAE: sae-manual/index.md
- Introduction et vue d'ensemble: sae-manual/ch01-introduction.md
- Architecture du SAE: sae-manual/ch02-architecture.md
- Modele de securite: sae-manual/ch03-securite.md
- Stockage et immutabilite: sae-manual/ch04-stockage.md
- Chaine de preuve: sae-manual/ch05-chaine-preuve.md
- Cycle de vie des documents: sae-manual/ch06-cycle-vie.md
- Tracabilite et audit: sae-manual/ch07-tracabilite.md
- Conformite normative: sae-manual/ch08-conformite.md
- Procedures operationnelles: sae-manual/ch09-procedures.md
- Feuille de route: sae-manual/ch10-feuille-route.md
- Glossaire SAE: sae-manual/glossaire.md
3. Contraintes techniques¶
Dependances inter-PD (sources a lire)¶
| Story | Statut | Nature de la dependance | Fichiers sources |
|---|---|---|---|
| PD-244 | DONE | Scores audit, matrices ISO/NF, gaps, reconciliation | PD-244-reconciliation.yaml, PD-244-gaps.yaml, PD-244-compliance-dashboard.md, matrices *-claude.yaml |
| PD-250 | DONE | Destruction avec bordereau probatoire | Specification PD-250, artefacts backend |
| PD-251 | EN COURS | Verification d'integrite periodique | Specification PD-251 (partiel — statut explicite requis) |
| PD-1 | DONE | Architecture Zero-Knowledge | infra/architecture/overview.md |
| PD-⅘/6 | DONE | Stockage WORM, Glacier, CRR | infra/architecture/storage/*.md |
| PD-⅞ | DONE | HSM PKCS#11, Vault | Specs PD-7/PD-8, backend/architecture/PHASE4*.md |
| PD-19 | DONE | Piste d'audit append-only | Specs backend audit module |
| PD-33/34 | DONE | Chaine de preuve (Argon2id, derivation cles) | Specs PD-33/PD-34 |
| PD-36 | DONE | Client HSM PKCS#11 | Specs PD-36 |
| PD-60 | DONE | Proxy Re-Encryption (PV-PRE) | docs/normes/pv-pre/RFC-PV-PRE.md |
Regle : Toutes les dependances sont DONE sauf PD-251 (en cours). Pour PD-251, le chapitre 6 documentera l'etat partiel avec statut explicite "En cours" et horizon "Q1 2026" conformement a INV-249-08.
Framework documentaire¶
- MkDocs Material : Moteur de publication, themes light/dark, navigation tabs sticky
- Mermaid : Via extension
pymdownx.superfencesavec custom fencemermaid(deja configure dans mkdocs.yml) - with-pdf : Plugin PDF active via
ENABLE_PDF_EXPORT=1 - Extensions pertinentes :
admonition,def_list,tables,toc(permalink, depth 3),pymdownx.tabbed,pymdownx.details
Convention Mermaid pour les diagrammes¶
Chaque diagramme Mermaid dans le manuel DOIT respecter les conventions suivantes :
- Type de diagramme par usage :
- Architecture logique/physique :
graph TBougraph LR(C4-style) - Flux de donnees :
sequenceDiagram - Cycle de vie / etats :
stateDiagram-v2 - Composants et deployement :
graph TBavec sous-graphes (subgraph) -
Chronologie :
timeline -
Lisibilite :
- Maximum 15 noeuds par diagramme (au-dela : decomposer en sous-diagrammes)
- Labels en francais, identifiants techniques en anglais (ex:
HSM["HSM PKCS#11"]) -
Couleurs via
stylepour distinguer les couches (securite, stockage, crypto) -
Maintenabilite :
- Pas d'images statiques (INV-249-03, CON-249-03)
- Chaque diagramme precede d'un titre
### Diagramme : {nom}et suivi d'une legende textuelle
Dependances de build¶
| Outil | Version min | Usage |
|---|---|---|
| Python | 3.10+ | MkDocs runtime |
| mkdocs-material | 9.x | Theme |
| mkdocs-with-pdf | 0.9+ | Export PDF |
| Chromium | any | Headless pour PDF |
Compatibilite ESM/CJS¶
Non applicable (projet documentaire Markdown, pas de code JavaScript/TypeScript).
Framework de test¶
Non applicable au sens unitaire. Les tests (TC-NOM-, TC-ERR-, TC-NR-, TC-NEG-) sont des verifications documentaires executees par revue humaine, revue LLM et build MkDocs.
4. Taches¶
TASK-01 — Chapitre 1 : Introduction et vue d'ensemble¶
Description : Rediger le chapitre introductif du manuel SAE. Presente l'objet du document, son perimetre, le positionnement normatif (ISO 14641, NF Z42-013, eIDAS, RGPD), et la liste des composants SAE avec leur statut. Inclut un diagramme de contexte systeme.
Fichiers crees :
_build/docs/sae-manual/ch01-introduction.md
Sections attendues :
- Objet du manuel
- Perimetre du SAE ProbatioVault — incluant un tableau de couverture transverse :
composant → chapitre → diagramme(s)(requis par TC-NOM-02) - Positionnement normatif (ISO 14641:2018, NF Z42-013:2020, eIDAS, RGPD)
- Table des composants SAE avec statut (DONE / En cours / Planifie)
- Modele d'etats documentaire (DRAFT -> REVIEWED -> PUBLISHED -> ARCHIVED) avec prerequis de transition explicites conformement au flux F5 de la specification :
- DRAFT -> REVIEWED : prerequis completude des chapitres 1-10
- REVIEWED -> PUBLISHED : prerequis validation RSSI + Compliance (tags Git)
- PUBLISHED -> ARCHIVED : prerequis remplacement par version plus recente
- Transitions retour autorisees : REVIEWED -> DRAFT, PUBLISHED -> REVIEWED
- ARCHIVED = etat terminal (aucune transition sortante)
- Conventions du document (typographie, references croisees, conventions de statut, badges)
- Diagramme Mermaid : contexte systeme SAE (acteurs, systemes externes, perimetre)
- Diagramme Mermaid : stateDiagram-v2 des etats documentaires avec transitions et prerequis
Sources : PD-249-besoin.md (section Perimetre), infra/architecture/overview.md, PD-244 resultats
Invariants couverts : INV-249-01, INV-249-02, INV-249-06, INV-249-07, INV-249-08, INV-249-11 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-04, TC-NOM-10, TC-NOM-11 Dependances : Aucune
TASK-02 — Chapitre 2 : Architecture du SAE¶
Description : Decrire l'architecture logique et physique du SAE ProbatioVault. Composants principaux, interfaces, flux de donnees. Diagrammes C4-style (contexte, conteneurs, composants) et diagramme de deploiement multi-cloud.
Fichiers crees :
_build/docs/sae-manual/ch02-architecture.md
Sections attendues :
- Architecture logique (composants SAE et leurs responsabilites)
- Architecture physique (infrastructure OVH + AWS)
- Interfaces entre composants
- Diagramme Mermaid : architecture C4 niveau conteneurs
- Diagramme Mermaid : deploiement multi-cloud (OVH Paris / AWS Frankfurt)
Sources : infra/architecture/overview.md, infra/architecture/data-flows.md, backend/architecture/overview.md, infra/architecture/storage/storage-architecture.md
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-10 Dependances : Aucune
TASK-03 — Chapitre 3 : Modele de securite¶
Description : Documenter le modele de securite du SAE : defense-in-depth (5 couches), chiffrement client-side zero-knowledge, gestion des cles HSM PKCS#11, controle d'acces (RLS, RBAC). Un diagramme par couche de securite.
Fichiers crees :
_build/docs/sae-manual/ch03-securite.md
Sections attendues :
- Defense-in-depth : les 5 couches cryptographiques
- Zero-Knowledge : chiffrement client-side (PD-1)
- Gestion des cles HSM PKCS#11 (PD-⅞, PD-36)
- Key wrapping et hierarchie des cles
- Controle d'acces : RLS PostgreSQL + RBAC
- Proxy Re-Encryption PV-PRE (PD-60)
- Diagramme Mermaid : couches defense-in-depth
- Diagramme Mermaid : hierarchie des cles HSM
Sources : infra/architecture/overview.md, infra/architecture/crypto-model.md, backend/architecture/crypto-model.md, docs/normes/pv-pre/RFC-PV-PRE.md, specs PD-⅞/36/60
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-10 Dependances : Aucune
TASK-04 — Chapitre 4 : Stockage et immutabilite¶
Description : Documenter l'architecture de stockage WORM (S3 Object Lock COMPLIANCE), la strategie multi-cloud (OVH HOT + AWS Glacier COLD), la replication cross-region, la retention et les legal holds.
Fichiers crees :
_build/docs/sae-manual/ch04-stockage.md
Sections attendues :
- Architecture WORM : S3 Object Lock COMPLIANCE mode
- Stockage actif OVH (region Paris, buckets S3)
- Archivage froid AWS Glacier Deep Archive (region Paris + CRR Frankfurt)
- Replication cross-region (PD-6)
- Politique de retention et legal holds
- Durabilite et SLA
- Diagramme Mermaid : flux de stockage (ingestion -> OVH -> Glacier -> CRR)
- Diagramme Mermaid : architecture multi-cloud
Sources : infra/architecture/storage/storage-architecture.md, infra/architecture/storage/cold.md, infra/architecture/storage/glacier-crr.md, infra/architecture/storage/worm.md, infra/architecture/worm-proof.md, specs PD-⅘/6
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-10 Dependances : Aucune
TASK-05 — Chapitre 5 : Chaine de preuve¶
Description : Documenter la chaine de preuve probatoire complete : empreinte SHA3-256, arbre de Merkle, horodatage TSA RFC 3161, ancrage blockchain, enveloppe probatoire PV-Envelope.
Fichiers crees :
_build/docs/sae-manual/ch05-chaine-preuve.md
Sections attendues :
- Empreinte documentaire SHA3-256 (PD-38)
- Arbre de Merkle et batch cryptographique
- Horodatage TSA RFC 3161 (PD-39)
- Ancrage blockchain (preuve publique verifiable)
- Enveloppe probatoire PV-Envelope (PD-36)
- Diagramme Mermaid : flux de scellement (sequence diagram)
- Diagramme Mermaid : structure de l'arbre de Merkle
Sources : backend/architecture/refs/crypto.md, backend/architecture/refs/composite-proof.md, docs/normes/pv-envelope/RFC-PV-ENVELOPE.md, docs/normes/pv-proof/RFC-PV-PROOF.md, docs/normes/pv-anchor/RFC-PV-ANCHOR.md, specs PD-33/34/38/39
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-10 Dependances : Aucune
TASK-06 — Chapitre 6 : Cycle de vie des documents¶
Description : Documenter le cycle de vie complet d'un document dans le SAE : ingestion et scellement, consultation et verification, destruction controlee (PD-250), verification d'integrite periodique (PD-251, etat partiel).
Fichiers crees :
_build/docs/sae-manual/ch06-cycle-vie.md
Sections attendues :
- Ingestion et scellement (upload, chiffrement, empreinte, stockage WORM)
- Consultation et verification (dechiffrement, verification d'integrite)
- Destruction controlee avec bordereau probatoire (PD-250) — statut : DONE
- Verification d'integrite periodique (PD-251) — statut : En cours (Q1 2026)
- Diagramme Mermaid : cycle de vie complet (stateDiagram-v2)
- Diagramme Mermaid : flux de destruction (sequence diagram)
Sources : Specs PD-250 (backend), specs PD-251 (backend, partiel), backend/architecture/data-flows.md
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07, INV-249-08 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-04, TC-NOM-10 Dependances : Aucune
TASK-07 — Chapitre 7 : Tracabilite et audit¶
Description : Documenter les mecanismes de tracabilite : piste d'audit append-only, journalisation des evenements, bordereau de destruction, rapports d'integrite. Signature HSM des journaux d'audit.
Fichiers crees :
_build/docs/sae-manual/ch07-tracabilite.md
Sections attendues :
- Piste d'audit append-only (PD-19)
- Journalisation des evenements (types, format, retention)
- Signature HSM des journaux (PD-37)
- Bordereau de destruction (PD-250)
- Rapports d'integrite (PD-251, partiel)
- Diagramme Mermaid : flux d'audit (event -> log -> signature -> verification)
- Diagramme Mermaid : architecture du module audit
Sources : Specs PD-19, PD-37, docs/normes/pv-audit/RFC-PV-AUDIT.md, backend/architecture/probatoire/audit-signing/, module audit backend (typedoc)
Invariants couverts : INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-02, TC-NOM-10 Dependances : Aucune
TASK-08 — Chapitre 8 : Conformite normative¶
Description : Produire les matrices de conformite ISO 14641:2018 et NF Z42-013:2020 article par article, avec references de preuves tracables. Reprendre les scores et gaps PD-244 sans alteration et documenter le plan de remediation.
Fichiers crees :
_build/docs/sae-manual/ch08-conformite.md
Sections attendues :
- Matrice ISO 14641:2018 (article par article, statut, preuve, reference)
- Matrice NF Z42-013:2020 (article par article, statut, preuve, reference)
- Scores PD-244 repris fidelement (ISO 77.78%, NF 68.18%)
- Gaps identifies (15 gaps PD-244) avec reconciliation
- Plan de remediation par gap (priorite, horizon, story associee)
- Diagramme Mermaid : couverture normative par composant SAE
Sources : PD-244-reconciliation.yaml, PD-244-gaps.yaml, PD-244-compliance-dashboard.md, matrices PD-244-iso-14641-matrix-claude.yaml, PD-244-nf-z42-013-matrix-claude.yaml (reference apres reconciliation)
Invariants couverts : INV-249-01, INV-249-04, INV-249-05, INV-249-06, INV-249-07, INV-249-08 Tests couverts : TC-NOM-01, TC-NOM-03, TC-NOM-08, TC-NOM-10 Dependances : Aucune (PD-244 est DONE, artefacts disponibles)
TASK-09 — Chapitre 9 : Procedures operationnelles¶
Description : Documenter les procedures d'exploitation quotidienne, maintenance, gestion des incidents et plan de continuite (PCA/PRA) lies au SAE.
Fichiers crees :
_build/docs/sae-manual/ch09-procedures.md
Sections attendues :
- Exploitation quotidienne (monitoring, alertes, metriques)
- Maintenance et mises a jour (rotation cles HSM, mise a jour certificats TSA)
- Gestion des incidents (procedure de reponse, escalade)
- Plan de continuite (PCA/PRA) : basculement multi-cloud, restauration Glacier
- Diagramme Mermaid : procedure de gestion d'incident SAE
Sources : infra/reference/infra/runbooks/, infra/reference/infra/operations/, infra/security-compliance/, documentation monitoring
Invariants couverts : INV-249-01, INV-249-06, INV-249-07 Tests couverts : TC-NOM-01, TC-NOM-10 Dependances : Aucune
TASK-10 — Chapitre 10 : Feuille de route¶
Description : Documenter les composants SAE planifies avec statut explicite et horizon temporel. Distinguer clairement les elements implementes (DONE) des elements en cours et planifies.
Fichiers crees :
_build/docs/sae-manual/ch10-feuille-route.md
Sections attendues :
- Synthese des composants implementes (DONE)
- Composants en cours (PD-251, horizon Q1 2026)
- Composants planifies :
- Signature qualifiee eIDAS (Q2-Q3 2026)
- Horodatage qualifie eIDAS (Q2-Q3 2026)
- Politique d'archivage formalisee PAE (Q2 2026)
- Programme d'audit periodique (Q3 2026)
- Certification SecNumCloud (Q4 2026)
- Planning de certification et jalons
- Evolutions architecturales
- Diagramme Mermaid : timeline de la feuille de route
Sources : PD-249-besoin.md (section Composants SAE planifies), roadmaps infra/backend
Invariants couverts : INV-249-01, INV-249-02, INV-249-06, INV-249-07, INV-249-08 Tests couverts : TC-NOM-01, TC-NOM-04, TC-NOM-10 Dependances : Aucune
TASK-11 — Integration MkDocs (navigation, build, PDF)¶
Description : Integrer le manuel dans la navigation MkDocs, verifier le build HTML et la generation PDF. Creer la page d'index du manuel avec table des matieres et liens vers les chapitres.
Fichiers crees :
_build/docs/sae-manual/index.md
Fichiers modifies :
mkdocs.yml(ajout section "Manuel SAE" dansnav)
Sections de index.md :
- Titre et objet du manuel
- Table des matieres (liens vers les 10 chapitres + glossaire)
- Informations de version (etat documentaire : DRAFT, version : 1.0.0-draft)
- Avertissement legal (ce document ne constitue pas une certification)
Processus de publication (CA-249-06) : Le processus de validation publication est decrit dans index.md (section "Informations de version") et execute post-redaction :
- L'ensemble des chapitres est redige et revise (transition DRAFT -> REVIEWED)
- Le RSSI valide le contenu et appose le tag Git
approved-by-rssisur le commit de publication - Le Responsable Compliance valide le contenu et appose le tag Git
approved-by-compliancesur le commit de publication - La presence des deux tags declenche la transition REVIEWED -> PUBLISHED
- La verification (TC-NOM-06) valide la presence des deux tags sur le meme commit
Verifications :
mkdocs buildsans erreur- Navigation visible dans le rendu HTML
ENABLE_PDF_EXPORT=1 mkdocs buildpour verification PDF- Liens internes entre chapitres fonctionnels
- Ancres de section navigables
- Presence des tags Git
approved-by-rssietapproved-by-compliancesur le commit de publication (post-redaction)
Invariants couverts : INV-249-10 Tests couverts : TC-NOM-05, TC-NOM-06, TC-ERR-06, TC-NR-08, TC-NR-09 CA couverts : CA-249-05, CA-249-06 Dependances : TASK-01 a TASK-10 (tous les chapitres doivent exister pour valider la navigation)
TASK-12 — Glossaire SAE¶
Description : Produire un glossaire complet couvrant tous les termes normatifs (ISO 14641, NF Z42-013, eIDAS, RGPD) et les termes ProbatioVault (PV-Envelope, PV-PRE, defense-in-depth, etc.) utilises dans le manuel.
Fichiers crees :
_build/docs/sae-manual/glossaire.md
Structure :
- Termes normatifs (ISO 14641, NF Z42-013)
- Termes techniques SAE (WORM, Object Lock, TSA, Merkle, etc.)
- Termes ProbatioVault (PV-Envelope, PV-PRE, defense-in-depth, K_master, etc.)
- Termes reglementaires (eIDAS, RGPD, CNIL, SecNumCloud)
- Acronymes et abreviations
Methode : Extraire tous les termes techniques et acronymes utilises dans les chapitres 1-10, verifier que chacun est defini. Completer avec les definitions existantes dans infra/meta/glossary.md et backend/meta/glossary.md.
Sources : Glossaires existants (infra/meta/glossary.md, backend/meta/glossary.md, app/meta/glossary.md), definitions de la specification PD-249 (section 3)
Invariants couverts : INV-249-09 Tests couverts : TC-NOM-07, TC-ERR-08, TC-NR-07, TC-NEG-06 Dependances : TASK-01 a TASK-10 (le glossaire doit couvrir tous les termes utilises dans les chapitres)
5. Mapping INV/CA -> Taches -> Tests¶
Mapping des Invariants¶
| Invariant | Regle | Taches couvrant | Tests couvrant |
|---|---|---|---|
| INV-249-01 | 10 chapitres exactement, ordre conforme | TASK-01 a TASK-10, TASK-11 | TC-NOM-01, TC-ERR-03, TC-NEG-01, TC-NR-01 |
| INV-249-02 | Chaque composant SAE documente dans >= 1 chapitre | TASK-02, TASK-03, TASK-04, TASK-05, TASK-06, TASK-07, TASK-10 | TC-NOM-02, TC-NR-02 |
| INV-249-03 | >= 1 diagramme Mermaid par composant implemente | TASK-02, TASK-03, TASK-04, TASK-05, TASK-06, TASK-07, TASK-08 | TC-NOM-02, TC-ERR-04, TC-NR-02 |
| INV-249-04 | Matrices ISO/NF avec preuves tracables | TASK-08 | TC-NOM-03, TC-ERR-05, TC-NR-03, TC-NEG-03 |
| INV-249-05 | Scores/gaps PD-244 repris sans alteration | TASK-08 | TC-NOM-08, TC-NR-04 |
| INV-249-06 | <= 30% verbatim par chapitre par source | TASK-01 a TASK-10 | TC-NOM-09, TC-NEG-02 |
| INV-249-07 | Exploitable sans acces code source | TASK-01 a TASK-10 | TC-NOM-10, TC-NR-05 |
| INV-249-08 | Statut explicite (DONE / En cours / Planifie) | TASK-01, TASK-06, TASK-10 | TC-NOM-04, TC-ERR-07, TC-NR-06, TC-NEG-04 |
| INV-249-09 | Glossaire SAE exhaustif | TASK-12 | TC-NOM-07, TC-ERR-08, TC-NR-07, TC-NEG-06 |
| INV-249-10 | Build MkDocs HTML + PDF sans rupture | TASK-11 | TC-NOM-05, TC-ERR-06, TC-NR-08, TC-NEG-07 |
| INV-249-11 | Modele d'etats documentaire avec transitions | TASK-01 | TC-NOM-11, TC-NEG-05 |
Mapping des Criteres d'acceptation¶
| CA | Critere | Taches couvrant | Tests couvrant |
|---|---|---|---|
| CA-249-01 | Manuel unique, 10 chapitres | TASK-01 a TASK-11 | TC-NOM-01, TC-ERR-03, TC-NEG-01 |
| CA-249-02 | Composants SAE decrits avec diagrammes Mermaid | TASK-02 a TASK-08 | TC-NOM-02, TC-ERR-04 |
| CA-249-03 | Matrices ISO/NF avec preuves | TASK-08 | TC-NOM-03, TC-ERR-05 |
| CA-249-04 | Roadmap avec statut et horizon | TASK-01, TASK-06, TASK-10 | TC-NOM-04, TC-ERR-07 |
| CA-249-05 | Integration MkDocs (nav + HTML + PDF) | TASK-11 | TC-NOM-05, TC-ERR-06 |
| CA-249-06 | Validation RSSI + Compliance (tags Git) | TASK-11 (processus de publication) | TC-NOM-06, TC-NR-09 |
| CA-249-07 | Glossaire SAE complet | TASK-12 | TC-NOM-07, TC-ERR-08 |
Verification de completude¶
- INV sans tache : Aucun (11/11 couverts)
- CA sans tache : Aucun (7/7 couverts) — CA-249-06 couvert par TASK-11 (processus de publication)
- CA sans test : Aucun (7/7 couverts)
- INV sans test : Aucun (11/11 couverts)
6. Code contracts¶
Chaque fichier Markdown du manuel suit un contrat de structure. L'agent qui redige un chapitre DOIT respecter ce contrat.
Contract CC-01 : ch01-introduction.md¶
file: ch01-introduction.md
chapter: 1
title: "Introduction et vue d'ensemble"
invariants: [INV-249-01, INV-249-02, INV-249-06, INV-249-07, INV-249-08, INV-249-11]
sections:
- id: "1.1"
title: "Objet du manuel"
content: "Description du but et du public cible du manuel (auditeurs, RSSI, equipes)"
required: true
- id: "1.2"
title: "Perimetre du SAE ProbatioVault"
content: "Liste des composants SAE avec statut (DONE/En cours/Planifie) + tableau de couverture transverse"
required: true
constraint: "Deux tableaux obligatoires: (1) Composant, Stories, Statut, Chapitre — (2) Couverture transverse: Composant, Chapitre, Diagramme(s)"
- id: "1.3"
title: "Positionnement normatif"
content: "ISO 14641:2018, NF Z42-013:2020, eIDAS, RGPD — description concise du cadre"
required: true
- id: "1.4"
title: "Modele d'etats documentaire"
content: "Machine a etats DRAFT -> REVIEWED -> PUBLISHED -> ARCHIVED avec prerequis de transition"
required: true
constraint: |
Transitions autorisees avec prerequis explicites:
- DRAFT -> REVIEWED: completude chapitres 1-10
- REVIEWED -> PUBLISHED: validation RSSI + Compliance (tags Git approved-by-rssi, approved-by-compliance)
- PUBLISHED -> ARCHIVED: remplacement par version plus recente
Transitions retour: REVIEWED -> DRAFT, PUBLISHED -> REVIEWED
ARCHIVED = etat terminal (aucune transition sortante)
- id: "1.5"
title: "Conventions du document"
content: "Conventions typographiques, references croisees, badges de statut, acronymes"
required: true
diagrams:
- type: "graph TB"
title: "Contexte systeme SAE"
description: "Acteurs (auditeur, utilisateur, RSSI), systemes (backend, infra, app), perimetre SAE"
required: true
- type: "stateDiagram-v2"
title: "Etats documentaire avec prerequis"
description: "DRAFT -> REVIEWED -> PUBLISHED -> ARCHIVED avec transitions retour et prerequis annotes"
required: true
max_verbatim_per_source: 30%
Contract CC-02 : ch02-architecture.md¶
file: ch02-architecture.md
chapter: 2
title: "Architecture du SAE"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07]
sections:
- id: "2.1"
title: "Architecture logique"
content: "Composants SAE et responsabilites (backend, infra, app, crypto)"
required: true
- id: "2.2"
title: "Architecture physique"
content: "Infrastructure OVH (Paris) + AWS (Glacier Paris + CRR Frankfurt)"
required: true
- id: "2.3"
title: "Interfaces entre composants"
content: "API internes, flux de donnees, protocoles"
required: true
diagrams:
- type: "graph TB"
title: "Architecture C4 niveau conteneurs"
description: "Backend NestJS, App React Native, Infra OVH/AWS, HSM, PostgreSQL, Redis, S3"
required: true
- type: "graph TB"
title: "Deploiement multi-cloud"
description: "OVH Paris (hot) + AWS Paris (glacier) + AWS Frankfurt (CRR)"
required: true
max_verbatim_per_source: 30%
Contract CC-03 : ch03-securite.md¶
file: ch03-securite.md
chapter: 3
title: "Modele de securite"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07]
sections:
- id: "3.1"
title: "Defense-in-depth"
content: "5 couches cryptographiques detaillees"
required: true
- id: "3.2"
title: "Zero-Knowledge"
content: "Chiffrement client-side, le serveur ne voit jamais les donnees en clair"
required: true
- id: "3.3"
title: "Gestion des cles HSM PKCS#11"
content: "AWS CloudHSM, hierarchie des cles, rotation"
required: true
- id: "3.4"
title: "Key wrapping"
content: "AES-KW, enveloppes de cles, multi-device"
required: true
- id: "3.5"
title: "Controle d'acces"
content: "RLS PostgreSQL, RBAC, middleware"
required: true
- id: "3.6"
title: "Proxy Re-Encryption (PV-PRE)"
content: "Partage delegue sans dechiffrement serveur"
required: true
diagrams:
- type: "graph TB"
title: "Couches defense-in-depth"
description: "5 couches: Transport, Application, Stockage, Cle, Hardware (HSM)"
required: true
- type: "graph TB"
title: "Hierarchie des cles"
description: "K_master -> K_encryption -> K_doc, wrapping HSM, multi-device"
required: true
max_verbatim_per_source: 30%
Contract CC-04 : ch04-stockage.md¶
file: ch04-stockage.md
chapter: 4
title: "Stockage et immutabilite"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07]
sections:
- id: "4.1"
title: "Architecture WORM"
content: "S3 Object Lock COMPLIANCE mode, immutabilite garantie"
required: true
- id: "4.2"
title: "Stockage actif OVH"
content: "Region Paris, buckets S3, configuration"
required: true
- id: "4.3"
title: "Archivage froid AWS Glacier"
content: "Deep Archive, region Paris, cout, delai restauration"
required: true
- id: "4.4"
title: "Replication cross-region"
content: "CRR Paris -> Frankfurt, resilience geographique"
required: true
- id: "4.5"
title: "Retention et legal holds"
content: "Politique de retention, legal holds, duree"
required: true
- id: "4.6"
title: "Durabilite et SLA"
content: "11 nines S3, SLA OVH/AWS"
required: true
diagrams:
- type: "graph LR"
title: "Flux de stockage"
description: "Ingestion -> chiffrement -> OVH S3 WORM -> replication Glacier -> CRR Frankfurt"
required: true
- type: "graph TB"
title: "Architecture multi-cloud"
description: "OVH Paris HOT, AWS Paris COLD, AWS Frankfurt CRR"
required: true
max_verbatim_per_source: 30%
Contract CC-05 : ch05-chaine-preuve.md¶
file: ch05-chaine-preuve.md
chapter: 5
title: "Chaine de preuve"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07]
sections:
- id: "5.1"
title: "Empreinte documentaire SHA3-256"
content: "Hash sur document chiffre, determinisme"
required: true
- id: "5.2"
title: "Arbre de Merkle"
content: "Batch cryptographique, preuve d'inclusion"
required: true
- id: "5.3"
title: "Horodatage TSA RFC 3161"
content: "TSA qualifie, token d'horodatage, verification"
required: true
- id: "5.4"
title: "Ancrage blockchain"
content: "Preuve publique verifiable, immutabilite"
required: true
- id: "5.5"
title: "Enveloppe probatoire PV-Envelope"
content: "Structure de l'enveloppe, metadonnees, verification"
required: true
diagrams:
- type: "sequenceDiagram"
title: "Flux de scellement"
description: "Document -> SHA3 -> Merkle -> TSA -> Anchor -> PV-Envelope"
required: true
- type: "graph TB"
title: "Structure arbre de Merkle"
description: "Feuilles (hash docs) -> noeuds intermediaires -> racine -> TSA"
required: true
max_verbatim_per_source: 30%
Contract CC-06 : ch06-cycle-vie.md¶
file: ch06-cycle-vie.md
chapter: 6
title: "Cycle de vie des documents"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07, INV-249-08]
sections:
- id: "6.1"
title: "Ingestion et scellement"
content: "Upload, chiffrement client-side, hash, stockage WORM, preuve"
required: true
- id: "6.2"
title: "Consultation et verification"
content: "Dechiffrement client-side, verification d'integrite, preuve"
required: true
- id: "6.3"
title: "Destruction controlee"
content: "PD-250 — bordereau probatoire, processus irremediable"
required: true
constraint: "Statut: DONE"
- id: "6.4"
title: "Verification d'integrite periodique"
content: "PD-251 — verification programmee des documents archives"
required: true
constraint: "Statut: En cours (Q1 2026) — documenter explicitement l'etat partiel"
diagrams:
- type: "stateDiagram-v2"
title: "Cycle de vie document"
description: "Ingestion -> Scelle -> Consulte -> [Verification] -> [Destruction]"
required: true
- type: "sequenceDiagram"
title: "Flux de destruction"
description: "Demande -> Validation autorite -> Suppression S3 -> Bordereau -> Audit"
required: true
max_verbatim_per_source: 30%
Contract CC-07 : ch07-tracabilite.md¶
file: ch07-tracabilite.md
chapter: 7
title: "Tracabilite et audit"
invariants: [INV-249-01, INV-249-02, INV-249-03, INV-249-06, INV-249-07]
sections:
- id: "7.1"
title: "Piste d'audit append-only"
content: "PD-19 — journal immutable, schema, stockage"
required: true
- id: "7.2"
title: "Journalisation des evenements"
content: "Types d'evenements, format, retention"
required: true
- id: "7.3"
title: "Signature HSM des journaux"
content: "PD-37 — signature ECDSA via HSM, verification"
required: true
- id: "7.4"
title: "Bordereau de destruction"
content: "PD-250 — format, contenu, preuve de destruction"
required: true
- id: "7.5"
title: "Rapports d'integrite"
content: "PD-251 — format des rapports (partiel, statut En cours)"
required: true
diagrams:
- type: "sequenceDiagram"
title: "Flux d'audit"
description: "Evenement -> AuditLog -> Canonicalize -> HSM Sign -> Verification"
required: true
- type: "graph TB"
title: "Architecture module audit"
description: "AuditService, AuditSignatureService, HSMService, BullMQ processors"
required: true
max_verbatim_per_source: 30%
Contract CC-08 : ch08-conformite.md¶
file: ch08-conformite.md
chapter: 8
title: "Conformite normative"
invariants: [INV-249-01, INV-249-04, INV-249-05, INV-249-06, INV-249-07, INV-249-08]
sections:
- id: "8.1"
title: "Matrice ISO 14641:2018"
content: "Article par article, statut, preuve, reference"
required: true
constraint: "Chaque ligne = article ISO + statut (Conforme/Partiel/Non conforme) + preuve tracable"
- id: "8.2"
title: "Matrice NF Z42-013:2020"
content: "Article par article, statut, preuve, reference"
required: true
constraint: "Chaque ligne = article NF + statut + preuve tracable"
- id: "8.3"
title: "Scores d'audit PD-244"
content: "ISO 77.78%, NF 68.18% — repris sans alteration"
required: true
constraint: "Valeurs identiques a PD-244-reconciliation.yaml. Toute divergence tracee."
- id: "8.4"
title: "Gaps identifies"
content: "15 gaps PD-244, reconciliation, analyse"
required: true
- id: "8.5"
title: "Plan de remediation"
content: "Par gap: priorite, horizon, story associee, statut"
required: true
constraint: "Distinguer DONE/En cours/Planifie"
diagrams:
- type: "graph LR"
title: "Couverture normative par composant"
description: "Composants SAE -> articles ISO/NF couverts"
required: true
max_verbatim_per_source: 30%
Contract CC-09 : ch09-procedures.md¶
file: ch09-procedures.md
chapter: 9
title: "Procedures operationnelles"
invariants: [INV-249-01, INV-249-06, INV-249-07]
sections:
- id: "9.1"
title: "Exploitation quotidienne"
content: "Monitoring, alertes, metriques, indicateurs"
required: true
- id: "9.2"
title: "Maintenance et mises a jour"
content: "Rotation cles HSM, certificats TSA, patchs"
required: true
- id: "9.3"
title: "Gestion des incidents"
content: "Procedure de reponse, escalade, communication"
required: true
- id: "9.4"
title: "Plan de continuite (PCA/PRA)"
content: "Basculement multi-cloud, restauration Glacier, RTO/RPO"
required: true
diagrams:
- type: "graph TB"
title: "Procedure gestion incident SAE"
description: "Detection -> Classification -> Reponse -> Restauration -> Post-mortem"
required: true
max_verbatim_per_source: 30%
Contract CC-10 : ch10-feuille-route.md¶
file: ch10-feuille-route.md
chapter: 10
title: "Feuille de route"
invariants: [INV-249-01, INV-249-02, INV-249-06, INV-249-07, INV-249-08]
sections:
- id: "10.1"
title: "Composants implementes (DONE)"
content: "Synthese exhaustive des composants SAE en production"
required: true
- id: "10.2"
title: "Composants en cours"
content: "PD-251 verification integrite periodique — Q1 2026"
required: true
constraint: "Statut: En cours + horizon explicite"
- id: "10.3"
title: "Composants planifies"
content: "eIDAS, PAE, audit programme, SecNumCloud"
required: true
constraint: "Chaque entree avec statut Planifie + horizon temporel"
- id: "10.4"
title: "Planning de certification"
content: "Jalons ISO 14641, NF Z42-013, SecNumCloud"
required: true
- id: "10.5"
title: "Evolutions architecturales"
content: "Evolutions prevues du SAE a moyen terme"
required: true
diagrams:
- type: "timeline"
title: "Feuille de route SAE"
description: "Q1 2026 -> Q2 2026 -> Q3 2026 -> Q4 2026 avec jalons"
required: true
max_verbatim_per_source: 30%
Contract CC-11 : index.md (page d'index)¶
file: index.md
chapter: 0
title: "Manuel technique SAE — ProbatioVault"
invariants: [INV-249-10]
sections:
- id: "0.1"
title: "Titre et objet"
content: "Manuel technique du Systeme d'Archivage Electronique ProbatioVault"
required: true
- id: "0.2"
title: "Table des matieres"
content: "Liens vers les 10 chapitres et le glossaire"
required: true
- id: "0.3"
title: "Informations de version"
content: "Etat documentaire: DRAFT, date, version"
required: true
- id: "0.4"
title: "Avertissement"
content: "Ce document ne constitue pas une certification"
required: true
diagrams: []
max_verbatim_per_source: null
Contract CC-12 : glossaire.md¶
file: glossaire.md
chapter: null
title: "Glossaire SAE"
invariants: [INV-249-09]
sections:
- id: "G.1"
title: "Termes normatifs"
content: "Definitions ISO 14641, NF Z42-013"
required: true
- id: "G.2"
title: "Termes techniques SAE"
content: "WORM, Object Lock, TSA, Merkle, SHA3, etc."
required: true
- id: "G.3"
title: "Termes ProbatioVault"
content: "PV-Envelope, PV-PRE, defense-in-depth, K_master, etc."
required: true
- id: "G.4"
title: "Termes reglementaires"
content: "eIDAS, RGPD, CNIL, SecNumCloud, PAE"
required: true
- id: "G.5"
title: "Acronymes et abreviations"
content: "Table alphabetique des acronymes"
required: true
diagrams: []
constraint: "Chaque terme utilise dans un chapitre DOIT avoir une entree. Aucune entree vide ou circulaire."
max_verbatim_per_source: null
7. Ordonnancement et dependances¶
graph LR
T01[TASK-01<br>Ch.1 Introduction] --> T11[TASK-11<br>Integration MkDocs]
T02[TASK-02<br>Ch.2 Architecture] --> T11
T03[TASK-03<br>Ch.3 Securite] --> T11
T04[TASK-04<br>Ch.4 Stockage] --> T11
T05[TASK-05<br>Ch.5 Chaine preuve] --> T11
T06[TASK-06<br>Ch.6 Cycle de vie] --> T11
T07[TASK-07<br>Ch.7 Tracabilite] --> T11
T08[TASK-08<br>Ch.8 Conformite] --> T11
T09[TASK-09<br>Ch.9 Procedures] --> T11
T10[TASK-10<br>Ch.10 Feuille route] --> T11
T01 --> T12[TASK-12<br>Glossaire]
T02 --> T12
T03 --> T12
T04 --> T12
T05 --> T12
T06 --> T12
T07 --> T12
T08 --> T12
T09 --> T12
T10 --> T12 Parallelisable : TASK-01 a TASK-10 sont independantes entre elles et peuvent etre executees en parallele.
Sequentiel : TASK-11 (integration MkDocs) et TASK-12 (glossaire) dependent de la completion de TASK-01 a TASK-10.
Ordre recommande pour execution agent :
- Phase 1 : TASK-01 a TASK-10 (parallele, 10 agents)
- Phase 2 : TASK-12 (glossaire — necessite lecture de tous les chapitres)
- Phase 3 : TASK-11 (integration MkDocs — necessite tous les fichiers)
8. Regles transversales de redaction¶
Consolidation vs duplication (INV-249-06)¶
Chaque chapitre DOIT consolider et synthetiser les sources, pas les dupliquer. Le seuil de 30% de contenu verbatim par chapitre et par source unique est un invariant non negociable. La methode est :
- Lire la source originale
- Extraire les informations cles
- Reformuler dans le contexte du manuel SAE
- Ajouter une reference explicite vers la source (
voir: storage-architecture.md, section X)
Methode de verification (TC-NOM-09) : Lors de la phase d'acceptabilite (etape 7), chaque chapitre sera soumis a une revue LLM incluant une verification de similarite textuelle par rapport aux sources originales. La revue identifiera les passages reprenant plus de 30% de contenu verbatim d'une source unique. Si un seuil est depasse, l'agent devra reformuler les passages concernes.
Exploitabilite sans code (INV-249-07)¶
Le manuel DOIT etre comprehensible par un auditeur qui n'a pas acces aux repos de code. Cela implique :
- Decrire les mecanismes, pas les implementations
- Inclure les regles et parametres (ex: "retention minimale 7 ans", "SHA3-256 sur document chiffre")
- Fournir les preuves sous forme documentaire (reference a des artefacts, pas a des fichiers source)
Statuts explicites (INV-249-08)¶
Chaque composant mentionne dans le manuel DOIT porter un statut :
| Statut | Signification | Representation |
|---|---|---|
| DONE | Implemente et en production | Badge vert ou mention explicite |
| En cours | Implementation en cours | Badge orange + story + horizon |
| Planifie | Dans la roadmap, non commence | Badge gris + horizon temporel |
Diagrammes Mermaid (INV-249-03)¶
- Minimum 1 diagramme par composant SAE implemente
- Pas d'images statiques (CON-249-03)
- Maximum 15 noeuds par diagramme
- Syntaxe Mermaid compatible MkDocs Material (custom fence
mermaid)
9. Phase 0 — Go/No-Go¶
Verification des hypotheses critiques¶
| Hypothese | Verification | Resultat | Action |
|---|---|---|---|
| H-249-01 : Sources accessibles | ls sur les dossiers infra, backend, doc des projets | A verifier au lancement | Si KO : marquer "donnee manquante" (E-249-01) |
| H-249-02 : PD-244 reference officielle | Artefacts PD-244 presents dans le dossier legal-compliance | OK (artefacts presents) | -- |
| H-249-03 : Projet cible = ProbatioVault-doc | mkdocs.yml confirme la stack MkDocs Material | OK (confirme) | -- |
| H-249-04 : Validations RSSI/Compliance tracables | Processus via tags Git | A verifier post-implementation | Si KO : CA-249-06 non verifiable |
| H-249-05 : Stories dependantes fournissent artefacts | PD-250 DONE, PD-251 en cours, PD-⅞ DONE | OK (avec reserve PD-251 partiel) | PD-251 documente avec statut explicite |
Verdict Go/No-Go : GO — Toutes les hypotheses critiques sont satisfaites ou gerees (PD-251 partiel = stub documente avec story destination).
10. Estimation¶
| Tache | Complexite | Estimation |
|---|---|---|
| TASK-01 (Ch.1 Introduction) | Moyenne | 1h |
| TASK-02 (Ch.2 Architecture) | Haute | 2h |
| TASK-03 (Ch.3 Securite) | Haute | 2h |
| TASK-04 (Ch.4 Stockage) | Moyenne | 1.5h |
| TASK-05 (Ch.5 Chaine preuve) | Haute | 2h |
| TASK-06 (Ch.6 Cycle de vie) | Moyenne | 1.5h |
| TASK-07 (Ch.7 Tracabilite) | Moyenne | 1.5h |
| TASK-08 (Ch.8 Conformite) | Haute | 3h |
| TASK-09 (Ch.9 Procedures) | Moyenne | 1.5h |
| TASK-10 (Ch.10 Feuille route) | Faible | 1h |
| TASK-11 (Integration MkDocs) | Faible | 0.5h |
| TASK-12 (Glossaire) | Moyenne | 1.5h |
| Total | ~19h |
La complexite de TASK-08 (Conformite) est la plus elevee car elle requiert la reprise fidele des matrices PD-244 (2 normes, ~50 articles) avec references de preuves tracables et reconciliation.