← Cockpit

ADR-0016 — Export et import de l’audit en fichier JSON : sauvegarde locale, validation stricte, jamais d’écrasement sans filet

Accepted · 15/10/2026 · Claude (délégation, ADR-0001)

Contexte

L’ADR-0005 garde les audits dans le navigateur. Sa conséquence assumée, c’est que changer de navigateur ou effacer ses données fait perdre le travail si l’on n’a pas exporté. L’export et l’import sont donc la sauvegarde de l’utilisateur, et sa seule manière de transmettre un audit, par exemple à un prestataire. Un fichier de session importé vient de l’extérieur de l’application, comme le rapport de la CLI (ADR-0014).

Décision

  1. Export : un bouton « Télécharger l’audit (JSON) » produit le fichier audit-<site>-<date>.json dans le navigateur (Blob et lien de téléchargement), sans serveur. Le contenu est la session complète, avec son schemaVersion et tool: { name: "@rampe/site" }.

  2. Import : un champ fichier étiqueté. La taille est vérifiée avant lecture (64 Mo au plus : ce que l’export peut produire aux bornes, 50 000 indices aux descriptions CJK compris). La validation est stricte, sur le même modèle que l’ADR-0014 §4 :

    • liste blanche des champs, types et bornes ;
    • critères existants dans le référentiel ;
    • identifiants de page au format UUID ;
    • URL http(s) ;
    • lecture par Object.hasOwn uniquement ;
    • refus de __proto__, constructor et prototype ;
    • caractères de contrôle et bidi retirés ;
    • tout ou rien ;
    • message en clair, puis le détail technique replié.

    Une session d’une version future est refusée avec « créée par une version plus récente de Rampe ». Les versions antérieures sont migrées.

  3. Jamais d’écrasement sans filet : importer remplace l’audit en cours. Si l’audit courant contient au moins une évaluation ou une page, Rampe demande confirmation et propose d’abord de télécharger l’audit actuel. Après l’import, « Annuler cet import » restaure l’audit précédent, selon le même mécanisme que l’ADR-0014 §5.

  4. Rappel de sauvegarde : l’interface rappelle, de façon sobre et non intrusive, que l’audit n’existe que dans ce navigateur. Elle indique la date du dernier export, ou « jamais exporté ».

Conséquences

Voir la source sur GitHub