Identifier une compilation, pas seulement un dépôt
Ce parcours aide les responsables Node.js à constituer un dossier de revue avant une publication précise. Réunissez l’artefact exact, la révision source, package.json, le verrouillage et le SBOM produit à l’extérieur. Consignez générateur, paramètres et inclusion éventuelle des dépendances de développement. Calculez une empreinte de chaque original et documentez le lien avec la compilation. Le verrouillage décrit une résolution ; regroupement, exclusions et dépendances optionnelles ou propres à une plateforme peuvent modifier le contenu livré. Sans lien vérifiable, la couverture reste incomplète.
Vérifiez l’autorisation avant d’envoyer des noms privés ou adresses internes. N’incluez jamais de jeton de registre. Les copies expurgées ont leurs propres empreintes et une correspondance contrôlée avec les originaux. Ce parcours n’installe rien, ne génère pas de SBOM, n’inspecte pas l’archive finale et ne recherche pas de vulnérabilités.
Distinguer déclarations, versions résolues et schéma
L’auditeur examine package.json et peut construire un arbre depuis package-lock.json de npm ou yarn.lock de Yarn v1. Un verrouillage pnpm ou Bun demande un lecteur externe. Le convertir pour satisfaire le formulaire ne prouve pas une couverture identique. Sans verrouillage exploitable, les résultats concernent les déclarations uniquement. Conservez origine, profondeur maximale et avertissements : un arbre vide après une erreur n’est pas une preuve d’absence de dépendances.
Ainsi, ^2.4.0 est une plage déclarée et 2.4.3 une version concrète. Réservez SemVer à cette dernière et documentez séparément références Git, espaces de travail et étiquettes. Le validateur JSON nécessite un schéma correspondant et un dialecte pris en charge. Une structure valide ne prouve ni exhaustivité ni exactitude des licences. L’auditeur de politique accepte SPDX 2.3 JSON et CycloneDX 1.5 JSON/XML. Les branches de validation et comparaison JSON ne couvrent pas XML : conservez-le et prévoyez les contrôles externes adaptés.
Figer la politique avant de conclure
Enregistrez les réglages réels : profil, tolérance copyleft, listes d’autorisation et d’interdiction, traitement des licences inconnues. Un simple nom de profil peut devenir ambigu avec une nouvelle version. Gardez le rapport Markdown ou SARIF. Si les deux sont nécessaires, exécutez chaque format avec les mêmes entrées et réglages. Conservez l’expression de licence entière, y compris AND, OR et WITH, et faites examiner les textes et obligations applicables. Un fragment permissif ne représente pas toute l’expression.
Examinez chaque composant signalé et son chemin lorsqu’il existe. L’absence de chemin peut révéler un SBOM sans relations suffisantes, pas un composant sans effet. Comparez les JSON avec la référence approuvée, puis rapprochez identité, version et licence manuellement. Ordre des tableaux, identifiants générés et horodatages peuvent brouiller les différences ; l’outil n’assure pas un rapprochement sémantique des paquets. Expliquez ajouts, retraits et changements inattendus. Toute exception doit comporter responsable, justification, publication concernée, périmètre et échéance.
Livrer un dossier qui conserve les incertitudes
Tenez un registre Markdown distinct : identité de publication, empreintes artefact et SBOM, révision de politique, composant, version, expression exacte, chemin ou absence, preuve, décision et responsable. Il s’agit de champs recommandés, pas de données toutes promises par le rapport. Une pièce manquante reste en attente ou bloquante. Relancez les contrôles après modification d’entrée ou de politique et conservez les rapports précédents.
Le contrôle Markdown améliore la lisibilité, pas la justesse juridique. Pour un PDF facultatif, vérifiez tableaux, avertissements, identifiants et chemins longs ; gardez la source intégrale si la pagination masque une preuve. Archivez rapports bruts, fichiers locaux et empreintes finales : un lien temporaire ne constitue pas une archive. SARIF seul ne configure aucune barrière CI. Le parcours conteneur traite Dockerfile et environnement, celui des différences élargit les comparaisons et celui des signatures sert à vérifier l’auteur lorsque l’égalité des octets ne suffit pas.