# Plan de correction du dossier

import { Mermaid } from "../../src/components/Mermaid";

> **En bref :**
> **Avant la restitution** : rédiger le document de compréhension, signaler formellement les failles à LPI, faire acter le porteur du service d'export, répéter les deux supports ; plus quelques corrections ponctuelles (réserve sur Nuxt 3 dans deux supports, chemin mort dans `README.md`).
> **Garde-fous** : `pnpm run check` enchaîne construction, routes et `check:dossier` (description et registre de dix règles). Le contrôle des decks, celui des pages du POC (`check-crisalid-poc-trajectory.py`) et les 28 autres scripts `check-crisalid-*` ne tournent qu'à la main, et rien ne vérifie le bloc « En bref ».
> **Ensuite** : la page « Données de Projects », la liste canonique des risques LPI, la réduction des annexes de veille, la génération de `CONTEXT.md`.

## Priorités restantes

<Mermaid
  title="Ce qui reste, classé par impact et par effort"
  caption="Position selon l'impact et l'effort ; l'ordre de réalisation est donné par les tableaux ci-dessous."
  chart={`quadrantChart
    title Impact sur le livrable et effort restant
    x-axis Effort élevé --> Effort faible
    y-axis Impact faible --> Impact élevé
    quadrant-1 Gains rapides
    quadrant-2 Gros chantiers à fort impact
    quadrant-3 Gros chantiers à faible impact
    quadrant-4 Petites améliorations
    Signalement des failles: [0.68, 0.86]
    Rédiger le document: [0.18, 0.94]
    Répéter les supports: [0.45, 0.82]
    Porteur du service d'export: [0.75, 0.78]
    Réserve Nuxt dans les supports: [0.9, 0.62]
    Relecture par un tiers: [0.55, 0.72]
    Page Données de Projects: [0.3, 0.68]
    Liste canonique des risques LPI: [0.6, 0.6]
    Règle des montants d'offre: [0.85, 0.45]
    Chaîner les contrôles manuels: [0.8, 0.35]
    Réduire les annexes de veille: [0.15, 0.25]
    Générer CONTEXT.md: [0.4, 0.2]`}
/>

## Avant la restitution

| Action | Pourquoi | Porteur | Effort |
|---|---|---|---|
| **Rédiger le document de compréhension** | C'est le premier livrable ; la matière est sur le site, le texte n'existe pas : `livrables/` ne contient que `restitution-finale/01-audit.md`, `02-proposition.md` et `annexes/` | Auteur de l'audit | 2 à 3 jours |
| **Signaler formellement les failles à LPI**, avec un délai de correction convenu | Revérifiées le 30 octobre 2026 : toujours ouvertes (`01-risques-conditions-go.mdx:7`). Aucune trace de signalement dans le dépôt ; D2 le pose en engagement (`docs/05-deck/02-atelier-qualification-lpi/deck.md:525, 542`) | Auteur, par le canal du RSSI | 30 min |
| **Faire acter le porteur du service d'export** : livré avec la vitrine et exploité par la DiBISO, 8–15 j.h en plus du lancement ([page du POC](/01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc)) | « Proposition à acter au comité » (`03-extrait-et-comparatif-du-poc.mdx:12`) ; sans porteur, la vitrine synchronisée n'a pas de source stable | Comité | Décision |
| **Remettre au responsable de l'instance le détail d'exposition** retiré du site | Le site n'en parle qu'en termes généraux (`01-risques-conditions-go.mdx:34` ; Q23 de la [grille](/04-prochaines-etapes/grille-evaluation)) ; aucune trace de remise | Auteur | 30 min |
| **Répéter les deux supports** devant un public test | Aucune trace de répétition ; `check-deck` mesure la densité, pas le déroulé | Auteur | ½ journée |
| **Faire relire le dossier par un tiers** | Cette section est une auto-relecture | Auteur | Variable |

### Corrections ponctuelles

| Fichier | Écart | Correction |
|---|---|---|
| `docs/05-deck/02-atelier-qualification-lpi/deck.md:255` | « Nuxt 3 hors support standard depuis le 31 juillet 2026 », sans la réserve que portent désormais les pages LPI (`00-avis-go-no-go.mdx:35`, `01-stack-architecture.mdx:11, 57`) et D3 (`03-architecture-crisalid/deck.md:553`) | Ajouter « (date à confirmer) » |
| `livrables/restitution-finale/01-audit.md:352` | Même affirmation sans réserve dans le deck de restitution | Ajouter « (date à confirmer) » |
| `README.md:28` | Page de référence `05-trajectoire-poc-saclay/scenario-export-statique` : ce dossier n'existe plus, et `scripts/check-crisalid-poc-trajectory.py:79` interdit son retour | Renvoyer à `01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc` |
| `scripts/generate-navigation.mjs:157`, `docs/index.mdx:46`, `docs/05-deck/02-atelier-qualification-lpi/deck.md:561` | Libellé « Questions à LPI », alors que la page s'intitule « Questions à LPI et à CRISalid » (`grille-evaluation.mdx:3`) | Aligner le libellé |
| `docs/05-deck/01-direction-restitution-audit/`, `04-securite-rgpd/`, `05-valeur-impact/`, `06-lancement-maquette/` | Dossiers vides, restes de decks supprimés, fondus ou sortis du site ([catalogue](/05-deck/catalogue)) | Supprimer les dossiers |

## Pendant la rédaction du document

| Action | Pourquoi | Porteur |
|---|---|---|
| Ajouter une page « Données de Projects » | La partie LPI n'a aucune page sur ce critère, pondéré à 15 % ([Lisibilité](./01-lisibilite-et-structure)) | Auteur |
| Fixer la liste canonique des risques LPI | Trois décomptes : 8 risques LPI et 5 transverses (`01-risques-conditions-go.mdx:15-34`), 3 rangs (`00-avis-go-no-go.mdx:22-37`, repris par D2 `deck.md:232`), « quatre risques » (`01-audit.md:339-346`). Les niveaux concordent, la liste non | Auteur |
| Demander à la DiBISO l'écart entre 235 et 248 unités (Q19) | Il touche la complétude (`grille-evaluation.mdx:39`) | DiBISO |
| Demander une contre-expertise des coûts « depuis le socle » | Projection d'un intéressé ; condition posée par `00-methode-estimation.mdx:60, 78` | DSI |

## Après la restitution

| Chantier | Gain attendu | Porteur |
|---|---|---|
| Réduire les annexes de veille à une ligne par plateforme | Les 9 pages de `docs/01-cadrage-saclay/03-veille/` comptent 21 570 mots bruts ; environ 15 000 de moins | Auteur |
| Exécuter le parcours des tutoriels de bout en bout sur un environnement isolé | Parcours prouvé, plus seulement écrit : il est « Non exécuté » (`preparer-donnees-et-pile.mdx:9, 88`) | Auteur |
| Générer `CONTEXT.md` par script | Fin des divergences du fichier de reprise ; aucun générateur dans `scripts/` | Auteur |
| Étendre `check:dossier` au bloc « En bref » | Règle du `README.md:36` tenue sans contrôle ponctuel ; le script ne la vérifie pas (`scripts/check-dossier.mjs:27-45`) | Auteur |
| Étendre la règle des montants d'offre | Elle ne couvre que deux des montants de la proposition (`scripts/chiffres-cles.json`, entrée « Montants de la proposition »), pas le montant de l'étape 1 ni le cumul (`livrables/restitution-finale/02-proposition.md`). Aucun de ces montants n'est aujourd'hui dans `docs/` | Auteur |
| Chaîner `check-crisalid-poc-trajectory.py` dans `pnpm run check` | Il passe (3/3) et ne demande aucun service, mais aucune commande de `package.json` ne le lance | Auteur |

## Les garde-fous désormais en place

<Mermaid
  title="Ce que vérifie pnpm run check, et ce qui reste manuel"
  caption="Source : package.json:10-18 et scripts/."
  chart={`flowchart LR
    subgraph AUTO["pnpm run check"]
      B["build<br/>navigation générée"] --> R["check:routes<br/>menu, pages, liens"] --> D["check:dossier<br/>description, registre"]
    end
    subgraph MAIN["À la main"]
      K["check-deck.mjs<br/>decks"]
      P["check-crisalid-poc-trajectory.py<br/>pages du POC"]
      C["28 autres scripts check-crisalid<br/>contrats CRISalid, données des tutoriels"]
    end
    classDef auto fill:#DCFCE7,stroke:#16A34A,color:#14532D
    classDef manual fill:#FFEDD5,stroke:#EA580C,color:#7C2D12
    class B,R,D auto
    class K,P,C manual`}
/>

| Garde-fou | Où | Lancé par | Effet |
|---|---|---|---|
| Navigation et liens | `scripts/check-routes.mjs` | `pnpm run check` (`package.json:15-16`) | Échec si une entrée du menu n'a pas de page, si une page est publiée hors menu et hors redirection, ou si un lien interne de `docs/` n'aboutit pas |
| Description obligatoire | `scripts/check-dossier.mjs:30-33` | `pnpm run check` (`package.json:16-17`) | Échec si une page de `docs/` n'en a pas ; les aperçus de `docs/05-deck/` sont exemptés |
| Registre des chiffres clés | `scripts/chiffres-cles.json` | Même script | Dix règles : coût de la Partie 1, anciens scénarios, vocabulaire de la décision, unités, disponibilité, licences, instance, failles LPI, montants d'offre, défauts de sécurité et détails de machine CRISalid |
| Formulations retirées | Même registre | Même script | « jamais lancée », « aucune instance Paris-Saclay trouvée », valeurs abandonnées |
| Détails de faille | Même registre, règles `partout` | Même script | Les deux règles de sécurité valent aussi pour les decks et cette section ; les huit autres les exemptent (`chiffres-cles.json`, liste `exemptions`) |
| Séparation des supports | Même registre | Même script | Montants de la proposition interdits dans tout `docs/`, pages d'audit et decks compris (voir l'extension à faire ci-dessus) |
| Date de mise à jour | `recit.config.ts:63` (`showLastModified`) | Affichage du site | Date tirée de Git, sous chaque page |
| Pages du POC | `scripts/check-crisalid-poc-trajectory.py` | À la main | Échec si une page du POC manque ou si l'ancien dossier de trajectoire revient |
| Densité et accessibilité des decks | `scripts/check-deck.mjs` | À la main (`README.md:14`) | Santé, mots par diapositive, durée estimée |

Limites de ces contrôles :

- `check-dossier.mjs` ne parcourt que `docs/` (`scripts/check-dossier.mjs:22`) : `CONTEXT.md`, `README.md` et `livrables/` échappent au registre.
- Aucun script ne vérifie le bloc « En bref », ni l'exactitude d'un chiffre hors des dix règles du registre.
- Les 29 scripts `check-crisalid-*` ne contrôlent pas tous des contrats du code CRISalid : la plupart le font, mais `check-crisalid-poc-trajectory.py` vérifie des pages du site et un exemple d'export (docstring, l.2-11), et `check-crisalid-tutorial-data.py` les données de démonstration des tutoriels. Aucun n'est lancé par `pnpm run check`.
