Aller au contenu

ADR 0040 – js-yaml pour tester les règles de synchronisation

Statut : Décidée. Date : 01/10/2026. Lot 1, séquence A9.

Les règles de synchronisation PowerSync sont un fichier YAML (infra/powersync/sync-config.yaml). Elles décident quelles données quittent le serveur pour chaque téléphone : une erreur de filtre est une fuite de données entre groupements ou entre organisations. Leur test automatique doit les lire : vérifier chaque requête (une table, pas de jointure, colonnes listées, aucune colonne générée ou sensible), les exécuter contre une base pour contrôler le périmètre rendu, et mesurer le volume descendu. Node n’a pas d’analyseur YAML.

js-yaml (4.3.2), en dépendance de développement du dépôt racine, utilisée seulement par infra/powersync/*.mjs et db/demo/volume.mjs. Aucun code d’exécution (API, applications, paquets) ne la charge. Elle était déjà dans l’arbre par transitivité (outils de lint) : la rendre explicite fixe sa version et évite de dépendre d’un paquet qu’un autre outil pourrait retirer.

  • Lire le YAML par expressions régulières : aucune dépendance, mais fragile (une indentation ou un commentaire change le résultat) pour un fichier dont dépend l’isolation des données. Un faux négatif du test serait pire que l’absence de test.
  • Écrire les règles en JSON : lisible sans bibliothèque, mais le service PowerSync et sa documentation attendent du YAML ; on s’écarterait du format que le prototype a validé avec le service réel.
  • yaml : aussi bien, mais pas déjà présent dans l’arbre.

Une ligne dans devDependencies du package.json racine. Aucune dépendance d’exécution ajoutée, aucun poids dans les livrables.

Retirer la dépendance et les trois scripts qui l’importent (regles.test.mjs, generer-contrat.mjs, volume.mjs), ou la remplacer par yaml : l’API de lecture est une seule fonction (load), appelée à un seul endroit (infra/powersync/emulation.mjs).