Il existe deux façons de signaler un problème dans une pull request. La première consiste à dire : « cela ne semble pas conforme ». La seconde : « cela supprime le journal d'audit pour une action privilégiée, que l'ISO 27001 A.8.15 exige de conserver ». La première est du bruit. La seconde est quelque chose qu'un ingénieur peut traiter ou contester. La différence réside dans la clause.
Citer la clause exacte est au cœur de la manière dont heygrc signale une non-conformité, et c'est aussi une contrainte que nous acceptons : lorsque nous ne pouvons pas nommer la clause, nous préférons nous taire. Voici pourquoi.
Une non-conformité vague est pire que le silence
Une non-conformité sans clause impose au lecteur le travail que nous avons évité. Est-ce réel ? Quelle règle ? Où puis-je vérifier ? La première fois, ils cherchent. Après quelques fausses alertes, ils cessent de lire les non-conformités, y compris les vraies. Un réviseur de conformité qui crie au loup ne mérite pas une seconde chance, il est ignoré.
La ressource rare n'est pas la couverture. C'est la confiance, et une non-conformité vague la gaspille.
Une citation est une affirmation vérifiable
Nommer la clause exacte transforme une impression en une affirmation vérifiable. Elle indique au lecteur quel contrôle, à un niveau de détail qu'il peut vérifier, et l'invite à contester. C'est la fonctionnalité, pas un effet secondaire : une non-conformité que l'on peut réfuter est une non-conformité en laquelle on peut avoir confiance lorsqu'elle est valide.
async function runExport(userId, rows) {- await audit.log("data.export", { userId, count: rows.length }) return write(rows)}Pas « cela semble non conforme ». L'affirmation précise : cela supprime l'enregistrement d'une exportation massive de données, le type d'événement que l'A.8.15 exige de journaliser. Vous pouvez ouvrir l'A.8.15, examiner le diff et décider par vous-même si l'affirmation est valide. C'est l'objectif.
Le niveau de détail est la partie difficile
La clause doit être au bon niveau de détail. « Cela concerne l'ISO 27001 » est presque aussi inutile que le silence ; « cela supprime la journalisation demandée par l'A.8.15 » est actionnable. Y parvenir signifie associer le changement réel, le comportement modifié dans le diff, au contrôle spécifique qui le régit. Pas le cadre, pas la famille de contrôles, la clause.
La majeure partie de la difficulté à construire un réviseur de conformité réside ici. Remarquer qu'un changement a eu lieu est la partie facile. Nommer exactement quel contrôle a été affecté, correctement, est le travail.
Lorsque nous ne pouvons pas citer, nous restons silencieux
C'est le compromis que nous faisons, surtout au début : la précision plutôt que l'exhaustivité. Si nous ne pouvons pas associer un changement à une clause spécifique dont nous sommes sûrs, nous n'émettons pas un avertissement plus doux et vague par précaution. Une non-conformité erronée ou invérifiable coûte plus de confiance qu'une non-conformité manquée, et la confiance est ce qui permet aux vraies non-conformités d'être prises au sérieux.
Le silence est une fonctionnalité lorsque l'alternative est le bruit. Un réviseur gagne le droit d'être cru en se taisant lorsqu'il n'est pas sûr.
Cela compte davantage lorsque le lecteur est un agent
Lorsque c'est un agent de codage qui lit la non-conformité, un « cela semble non conforme » invérifiable est encore pire : l'agent ne peut ni raisonner à son sujet ni agir, il l'ignore donc ou devine. Une non-conformité qui nomme le contrôle et la clause est quelque chose qu'un humain et un agent peuvent tous deux utiliser : consulter le contrôle, voir ce qu'il exige, décider. La citation est l'interface.
La règle est simple à énoncer et difficile à respecter : chaque non-conformité cite la clause, ou il n'y a pas de non-conformité. La mesure honnête de notre respect de cette règle est l'exactitude du niveau de détail de nos citations sur de vrais diffs, quelque chose que nous publierons à partir de nos propres évaluations lorsque nous les aurons exécutées, avec des chiffres ou pas du tout.